Skip to content

Skripten / Logik

Hilfe zu JavaScript, Blockly, TypeScript, Node-RED, Scenes und text2command

16.6k Themen 213.7k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Themen
    49k Beiträge
    S
    Habe mal denn Umgang mit dem Limit optimiert (und dabei etwas weiter gemacht), da ich gestern ins Limit gelaufen bin.... die neue Version findet sich im ersten Post im "Spoiler" Falls sich Bugs eingeschlichen haben, solltet ihr vielleicht die letzte 1.9.2 Version erstmal irgendwo zwischenspeichern ;-) Der API-KEY und die anzahl der Tage werden nun auch in Datenpunkten eingegeben... Spoiler Changelog: Wetter.com Forecast API (v1.9.2 ➔ v2.6.1) Dieser Bericht dokumentiert die Evolution des Skripts von einem einfachen API-Abruf hin zu einer performanten, typsicheren und ausfallsicheren ioBroker-Infrastruktur-Komponente. ⚙️ v2.6.x – Perfektionierung & Usability 2.6.1 (Hotfix): * Fix: Konfigurations-Datenpunkte (api_key, forecast_days) werden nun mit write: true angelegt. Retroaktiver Fix: Ein extendObjectAsync entsperrt automatisch Bestandsdatenpunkte, die in Vorversionen als Read-Only angelegt wurden. 2.6.0 (Ultra-Performance): * RAM-Cache (ensuredPaths): Eliminiert hunderte synchrone existsObject()-Aufrufe an die JS-Engine. I/O-Overhead beim Struktur-Check sinkt nach dem ersten Lauf auf nahezu null. Zero-Latency: Die künstliche Drosselung wcomWait() wurde vollständig entfernt, da das System durch Caching und Batching überlastungsfrei agiert. Memory-Management: Timeout-Clearing im HTTP-Request integriert, um Speicherlecks zu verhindern. Semantischer Fallback: wind_speed_max fällt auf wind.avg zurück, falls die API sporadisch den Maximalwert weglässt. 🚀 v2.5.x – Batching & Deadlock-Schutz 2.5.0: State-Write-Batching: Schreibvorgänge (setStateChangedAsync) eines Tages werden in einem internen Puffer gebündelt und per Promise.all simultan abgesetzt. Lock-Härtung: Der HTTP-Call ist nun in ein Promise.race mit einem 10-Sekunden-Timeout gekapselt. Verhindert unendliche Blockaden des isFetching-Locks bei fehlerhaften API-Servern. Type-Safety: Optionale Verkettung (data.hourly ?? []) schützt vor unvollständigen JSON-Antworten. API-Resilienz: Erweiterte isNaN-Prüfung in wcomExtractValue(), um korrupte Strings der API abzufangen. ✨ v2.3.x bis v2.4.x – Dynamisierung 2.4.0 (Dynamische Tage): * FORECAST_DAYS aus dem Code in den Datenpunkt info.forecast_days ausgelagert. Auto-Trigger: Das Skript reagiert sofort auf Änderungen dieses Wertes, passt den Abruf an und löscht überschüssige Tagesordner (cleanupObsoleteDays) rekursiv. 2.3.0 (API-Key Trigger): * Neuer on()-Trigger für info.api_key. Bei Eingabe eines neuen Keys wird sofort ein Test-Abruf (source: 'key_update') erzwungen, der den regulären Restart-Blocker überspringt. 🛡️ v2.1.x bis v2.2.x – Systemhärtung & Controller-Entlastung 2.2.0: Zeitzonen-Fix: new Date() statt toISOString() behebt falsche Tageswechsel-Berechnungen auf Systemen mit UTC-Offset. I/O-Reduktion: Einführung von wcomEnsureState() zur Minimierung von createStateAsync-Spam. 2.1.0: Zero-Churn (Hourly): Das destruktive, rekursive Löschen (deleteObjectAsync) von Stundenwerten wurde durch sauberes Überschreiben abgelöst. Verhindert massive Object-Events und Controller-Spikes. Null-Safety: wcomExtractValue() gibt strikt 0 statt null zurück, was Typerrors in Number-States verhindert. Koordinaten-Fix: Längen- und Breitengrade von exakt 0 (Äquator/Nullmeridian) werden nicht mehr als false verworfen. Native Logs: Das Log-Level debug wird nun korrekt an die ioBroker-Engine durchgereicht. 🔒 v2.0.x – Security & Architektur-Refactoring 2.0.1: Standardisierung des Key-Speicherorts auf 0_userdata.0.wetter_com.info.api_key. 2.0.0: * Security: API-Key aus dem Klartext-Quellcode entfernt. Semaphore (isFetching): Verhindert Race-Conditions und Doppel-Abrufe, wenn Timer und manuelle Trigger gleichzeitig feuern. Async-HTTP: httpGet wurde in ein asynchrones Promise gekapselt, um Netzwerkfehler im zentralen try/catch sicher fangen zu können. Daily-Reset: Fehleranfälliger Mitternachts-Cron für requests_today wurde durch datumsbasierte, asynchrone Prüfung vor jedem API-Call ersetzt. 📉 v1.9.3 – Budget-Stabilität 1.9.3: * Restart-Schutz: Skript-Neustarts lösen keinen API-Call mehr aus, wenn am selben Tag bereits Daten abgerufen wurden (schützt das 100-Calls/Monat Limit bei der Entwicklung). Erweiterter Economy-Mode: Unterscheidung der Trigger-Quellen (morning, afternoon, start). Notlauf-Modus: Fällt das Budget auf einen kritischen Wert, wird nur noch jeden zweiten Tag aktualisiert.
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Themen
    79k Beiträge
    T
    Wie meinst du das mit DEBUG-output mit "SONOS im Detail? [image: 1772019823209-c7e6ea8c-329f-4dda-9cd5-e36507e5a076-image.png] Anstatt "test" deine Variable Sonos damit du siehst ob wirklich "Wahr" rauskommt Ich habe jetzt folgendes Blockly Script: [image: 1772049019480-bildschirmfoto-2026-02-25-um-20.50.10.png] Und folgende Protokolleinträge. Soweit ich es erkennen kann, ist die Wenn-Bedingung nicht erfüllt. [image: 1772048976956-bildschirmfoto-2026-02-25-um-20.47.28.png] Was mir nicht klar ist, warum ich die interne Variable SONOS an den debug Output hänge? Diese Variable ist wahr und wird auch korrekt gesetzt, da der Sonos Lautsprecher entsprechend EIN und wieder AUSGESCHALTET wird. Danke für deine Hilfe.
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Themen
    13k Beiträge
    Marc BergM
    Es gibt in der Verson 1.3.0 einen neuen Node: iob-setObject (Stand 10.02.26 noch beta) Mit dem neuen Node kann man ioBroker-Objektdefinitionen (Metadaten) direkt schreiben und ändern. Hauptfunktionen: Instanz-Konfigurationen ändern - z.B. MQTT publish-Pattern, Intervalle, etc. Objekt-Eigenschaften aktualisieren - Namen, Rollen, Einheiten, Min/Max-Werte ändern es gibt zwei Modi: Merge-Modus : Ändert nur die angegebenen Eigenschaften, alle anderen bleiben erhalten Replace-Modus: Überschreibt das komplette Objekt Typischer Workflow: Objekt mit iob-getobject holen Mit Change-Node gewünschte Properties ändern Mit iob-setobject zurückschreiben
  • Wie Object erzeugen für Abfrage nodered Variable

    Verschoben
    1
    1
    0 Stimmen
    1 Beiträge
    215 Aufrufe
    Niemand hat geantwortet
  • Probleme mit Hue-Scripten

    Verschoben
    10
    0 Stimmen
    10 Beiträge
    603 Aufrufe
    C
    Ok, jetzt scheint es zu funktionieren, ich danke dir vielmals <emoji seq="1f60d">😍</emoji>
  • Mehrfachstart vom Script verhindern.

    Verschoben
    7
    0 Stimmen
    7 Beiträge
    922 Aufrufe
    H
    Ok jetzt bin ich wieder raus. Aber naja es funktioniert erstmal so.. Der rest kommt hoffe ich step by step. Danke.
  • In Blockly Variable in Homematic beschreiben?

    Verschoben
    3
    1
    0 Stimmen
    3 Beiträge
    788 Aufrufe
    J
    Der Datenpunkt des DWD wird bereits als String/Zeichenkette bereitgestellt und muss nicht umgewandelt werden. Leider liegen in meinem Gebiet keine Warnungen vor und ich kann es nicht testen, aber so müsste es klappen: [image: 6696_dwdtext.jpeg]
  • Szene mit true/false

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    474 Aufrufe
    Niemand hat geantwortet
  • Fehler beim Auslesen

    Verschoben
    13
    1
    0 Stimmen
    13 Beiträge
    2k Aufrufe
    Mr. BurnsM
    Hi, Einen Drucktransmitter 4..20mA, einen Wandler von 4..20mA auf 0..10V, Eingang auf das 12/14 Modul. Ich hab ein Röhrchen, welches bis zum Tankboden geht. Oben ist ein T-Stück, an welchem der Drucktransmitter sitzt. auf dem anderem Anschluss des T-Stücks ist eine Membranpumpe (alte Aquarium Luftpumpe) und ein Nadelventil. Nach der Einperlmethode messe ich den Druck am Boden des Tanks. Mittlerweile messe ich aber direkt über eine SPS und übergebe den Wert an den ioBroker. Parallel messe ich noch den Durchfluss über ein Braun Ölzähler, auch an direkt an der SPS… Gruß Thomas
  • Probleme mit Telegram in Scripten

    Verschoben
    3
    1
    0 Stimmen
    3 Beiträge
    280 Aufrufe
    apollon77A
    Diese Hellen Blöcke sind default Blöcke. Den text kannst Du aber an sich ändern. Sonst einfach einen Text-Block nehmen und an die gleiche Stelle hängen.
  • Daten aus einer URL in eine Variable schreiben

    Verschoben
    28
    0 Stimmen
    28 Beiträge
    5k Aufrufe
    R
    Danke ruhr70, so funktioniert es. (Besser später als nie bendanken ;-) )
  • [GELÖST] Skript ruft Skript auf (Blockly)

    Verschoben
    7
    0 Stimmen
    7 Beiträge
    2k Aufrufe
    B
    Ich habe eine Lösung mit Blockly gefunden. Folgende Ausgangssituation: Der Block mit der Ansteuerung der Rollladen kommt mehrfach vor. [image: 5625_ursprung.jpg] Man klickt rechts oberhalb vom Fenster auf den Button "Code anzeigen" und kann sich dort den sich wiederholen Part rauskopieren. Nun fügt man einen Funktion-Block hinzu, gibt ihm einen Namen in meinen Fall "Rollladen" und fühlt in mit dem Code. [image: 5625_funktionsblock.jpg] Im Anschluss gibt es im Reiter der Funktion-Blöcken einen neuen Block der genau die Funktion enthält die man vorher als Code eingegeben hat. [image: 5625_funktion.jpg] Genau was ich wollte :)
  • Blockly "$('[state.id=.." Syntax

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    285 Aufrufe
    Niemand hat geantwortet
  • Begrüßung durch Echo Dot bei Haustüröffnung und Anwesenheit

    Verschoben
    9
    0 Stimmen
    9 Beiträge
    2k Aufrufe
    J
    oder man verbaut eben billige Türkontakte und fragt die als UND zur Anwesenheit ab, nimmt dann die durchschnittliche Zeit bis man in Hörweite des Echo steht und gibt die als Verzögerung zur Begrüßen dazu und schon ist die Frau überrascht, wenn sie nach hause kommt :lol:
  • Node-red Wemo Emulator -Zustände nach Neustart

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    941 Aufrufe
    MichaM
    Morgen, Um wieviel wemos handelt es sich ? Du kannst den letzten Zustand in eine Datei schreiben, dann hast du einen festen Speicherplatz dafür. Ist sicherlich nicht der schönste Weg aber es würde gehen. VG Micha
  • HTTP POST an CCU in Javascript

    Verschoben
    16
    0 Stimmen
    16 Beiträge
    3k Aufrufe
    K
    Hi, ich muss dass hier leider mal aufwärmen, da ich nicht durchsteige. Hintergrund: Ich möchte die Wochenprogramme meiner Heißkörperthermostate via ioBroker durchschalten. Wie? :-D okay hab da jetzt was zusammengepfluckt was zu funktionieren scheint: `// Konstanten für CCU Push var http = require('http'); var path = "/blabla.exe"; function setCCUscript (sDevice,wochenprog) { var data = 'object o1= devices.Get("' + sDevice + '");'; data +='string s2="";'; data +='if (o1) {'; data += 'xmlrpc.PutParamset (o1.Interface(), o1.Address(), "MASTER", "WEEK_PROGRAM_POINTER", '+ wochenprog.toString () +'); s2="SET";'; data += '} else { s2 = "NO DEVICE"; }'; return data } function setPushVar (data) { var options = { host: getObject('system.adapter.hm-rpc.0').native.homematicAddress, port: 8181, path: path, method: 'POST', headers: { 'User-Agent' : 'Mozilla/5.0', 'Content-Type': 'text/plain', 'Content-Length': data.length, } }; return options; } function httpPost (options,data) { var req = http.request(options, function(res) { var body=''; res.on('data', function(d) { body += d.toString (); }); res.on('end', function() { }); }); req.on('error', function(e) { log('ERROR: ' + e.message,"warn"); }); (data ? req.write(data) : log("Daten: keine Daten angegeben")); req.end(); } on ({id: "javascript.0.Heizung_Energiesparmodus", change: 'ne'}, function(obj) { if (getState ("javascript.0.Heizung_Energiesparmodus").val ==1) { var array = ["Wohnzimmer Heizung Gruppe", "Schlafzimmer Heizung Gruppe", "Küche Heizung Gruppe", "Büro Heizung Gruppe", "Kinderzimmer Heizung Gruppe", "Hauswirtschaftsraum Heizung Gruppe", "Badezimmer Wanne Heizung Gruppe", "Badezimmer Dusche Heizung Gruppe", "Flur Heizung Gruppe"]; var i; log ("Heizung_Energiesparmodus ist an"); for (i = 0; i < array.length; i++) { var script = setCCUscript (array[i], 2); httpPost (setPushVar (script),script); } } else { var array = ["Wohnzimmer Heizung Gruppe", "Schlafzimmer Heizung Gruppe", "Küche Heizung Gruppe", "Büro Heizung Gruppe", "Kinderzimmer Heizung Gruppe", "Hauswirtschaftsraum Heizung Gruppe", "Badezimmer Wanne Heizung Gruppe", "Badezimmer Dusche Heizung Gruppe", "Flur Heizung Gruppe"]; var i; log ("Heizung_Energiesparmodus ist aus"); for (i = 0; i < array.length; i++) { var script = setCCUscript (array[i], 0); httpPost (setPushVar (script),script); } } });` Grüße Kevin[/i][/i]
  • Blockly Zeitenstempel prüfen

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    360 Aufrufe
    Dr. BakteriusD
    Ich mache das so: [image: 6909_abfrage.png]
  • Mit Blocky übergeben

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    236 Aufrufe
    Q
    Funktioniert der Link, den du übergeben willst im Browser, wenn du ihn dort einfach eingibst und absendest? Hast du im javascript Adapter denn einen Haken excect und http request gemacht? Versuch mal den http request: https://github.com/ioBroker/ioBroker.j … equest-url Gesendet von iPhone mit Tapatalk
  • Grundsätzliche Frage zu Javascript bzw. Blockly

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    275 Aufrufe
    apollon77A
    Mal javascript Adapter neu gestartet? Oder server rebooted? Falls da noch was laufen sollte geht es damit weg.
  • Fehler im Javascript Adapter bei compareTime ???

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    668 Aufrufe
    paul53P
    Das kann ich bei mir nicht nachvollziehen: [image: 493_test_comparetime_astro.jpg] Reiter "Log": javascript.1 2018-08-13 21:06:33.643 info script.js.common.Test3: registered 0 subscriptions and 0 schedules javascript.1 2018-08-13 21:06:33.643 info script.js.common.Test3: false javascript.1 2018-08-13 21:06:33.640 info Start javascript script.js.common.Test3 javascript.0 2018-08-13 21:06:33.638 info Stop script script.js.common.Test3 javascript.1 2018-08-13 21:06:33.636 info Stop script script.js.common.Test3 Host: 1.4.2 Javascript: 3.6.4
  • Script zur Abfrage und Variable schreiben

    Verschoben
    7
    0 Stimmen
    7 Beiträge
    939 Aufrufe
    M
    @AlCalzone ja, mache ich später :-) Ich hab gerade nämlich noch etwas geändert und dabei ist mir was aufgefallen: Problem ist: Wenn iibroker frisch gestartet wurde hat die Balkontüre keinen Status. Erst wenn sie das erste mal verändert wurde ändert sich der Status zu einem gültigen Status. Jetzt dachte ich mir ich nehme einfach mal noch die Aktualisierungszeit vom Homepilot dazu als Trigger. Das funktioniert auch, bei der ersten Änderung bekomme ich für die Balkontüre den korrekten Status angezeigt, ABER es erscheint auch eine Warnung im Log mit der ich nichts anfangen kann. 13:33:27.798 [warn] javascript.0 at Object. (script.js.Homepilot.Balkontuere:12:5) ````//aus dem Script Editor javascript.0 2018-08-13 13:33:27.796 warn at Object. <anonymous>(script.js.Homepilot.Balkontuere:12:5) javascript.0 2018-08-13 13:33:27.791 warn Wrong type of javascript.0.scriptEnabled.Homepilot.Balkontuere: "string". Please fix, while deprecated and will not work in next versions.</anonymous> Jetzt ist das genau die Stelle an der das Script 'geschlossen' schreibt und der Status bereits 'geschlossen' ist. Hängt das damit zusammen ? Aber die Fehlermeldung hat ja etwas mit 'String' zun tun … :?: Eines jedenfalls ist sicher, es kommt durch die hinzugefügte object.ID homepilot.uws.aktualisiert Hier noch das script <xml xmlns="http://www.w3.org/1999/xhtml"><block type="comment" id="PV@wi;P(7Or}IFr]G;w#" x="-462" y="-413"><field name="COMMENT">Variable erzeugen</field> <next><block type="create" id="hugGY.kjQ/6JbAbp0Coq"><field name="NAME">scriptEnabled.Homepilot.Balkontuere</field> <next><block type="comment" id="RpMUzedZCNLNs1nvcTPp"><field name="COMMENT">Trigger auf beide Sensoren</field> <next><block type="on_ext" id="fvW|9PA`%/Ku(:D{Ja*]"><mutation items="3"></mutation> <field name="CONDITION">ne</field> <value name="OID0"><shadow type="field_oid" id="9MI^=*PdUsRSBiUgrdTM"><field name="oid">parser.0.homepilot.fenstersensor.balkontüre-oben</field></shadow></value> <value name="OID1"><shadow type="field_oid" id="c|b?yGNJrfUJHum.{_vw"><field name="oid">parser.0.homepilot.fenstersensor.balkontüre-unten</field></shadow></value> <value name="OID2"><shadow type="field_oid" id="K%VOr7K8/vt-1ZLkZ{5m"><field name="oid">parser.0.homepilot.uws.aktualisiert</field></shadow></value> <statement name="STATEMENT"><block type="comment" id="4{-X-xbR}W-oA.g80Rj)"><field name="COMMENT">geklappt, offen, geschlossen</field> <next><block type="controls_if" id="8.Y]Z%8a[u@``jU=KJn0"><mutation elseif="2"></mutation> <value name="IF0"><block type="logic_operation" id="6#2g!iIGE*p(|-pLgwc;"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="Xr07{sCUI~9=X.S-YKGM"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="0}BQ|J#W|Vw/tT(bNjt%"><field name="ATTR">val</field> <field name="OID">parser.0.homepilot.fenstersensor.balkontüre-oben</field></block></value> <value name="B"><block type="logic_boolean" id="s]6]r!8A:yN,*bvr6f+{"><field name="BOOL">FALSE</field></block></value></block></value> <value name="B"><block type="logic_compare" id="e98Sejq:A3AQ:A#GS@.C"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="QfR[~u%#|Ls}hkSe{w8h"><field name="ATTR">val</field> <field name="OID">parser.0.homepilot.fenstersensor.balkontüre-unten</field></block></value> <value name="B"><block type="logic_boolean" id="^H![P|cPcmdge|+.*yo%"><field name="BOOL">TRUE</field></block></value></block></value></block></value> <statement name="DO0"><block type="update" id="a6_rcw(oeo?0R{!KboQ]"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.scriptEnabled.Homepilot.Balkontuere</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="Z5rAFVN;NX`P8HwBhMQZ"><field name="TEXT">geklappt</field></block></value></block></statement> <value name="IF1"><block type="logic_operation" id="k@q5C{Lpaee|s*mt8+^a"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="]7Lkad!(T0p={_+_HwXF"><field name="OP">EQ</field> <value name="A"><block type="get_value" id=".K^*@R+;*QibAU[0.9+_"><field name="ATTR">val</field> <field name="OID">parser.0.homepilot.fenstersensor.balkontüre-oben</field></block></value> <value name="B"><block type="logic_boolean" id=",tO!n!:nl,[Ip/aL!wX)"><field name="BOOL">FALSE</field></block></value></block></value> <value name="B"><block type="logic_compare" id="Ro%]a)~T2f1ssk7p-H~3"><field name="OP">EQ</field> <value name="A"><block type="get_value" id=".0M-VQgDL)ad3(R^d(VN"><field name="ATTR">val</field> <field name="OID">parser.0.homepilot.fenstersensor.balkontüre-unten</field></block></value> <value name="B"><block type="logic_boolean" id="yD/JCW`;myUubZxKZ@(L"><field name="BOOL">FALSE</field></block></value></block></value></block></value> <statement name="DO1"><block type="update" id="W5tQbsYs9^`ZWjx]`OBn"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.scriptEnabled.Homepilot.Balkontuere</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="IT`QVa.4WL1^LFH;@9%9"><field name="TEXT">offen</field></block></value></block></statement> <value name="IF2"><block type="logic_operation" id="m:]a)s.C{D;7o~JJ27L@"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="^PqvNp!a_YLTXW=eMf{P"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="N}L}/|]wJ@7K7v*wMq-F"><field name="ATTR">val</field> <field name="OID">parser.0.homepilot.fenstersensor.balkontüre-oben</field></block></value> <value name="B"><block type="logic_boolean" id="dL!C)uUUW+/FN+-z,0.6"><field name="BOOL">TRUE</field></block></value></block></value> <value name="B"><block type="logic_compare" id="j0xXDheR61i8vDfT8vn4"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="u22,f18P,,#F~P;FRVK?"><field name="ATTR">val</field> <field name="OID">parser.0.homepilot.fenstersensor.balkontüre-unten</field></block></value> <value name="B"><block type="logic_boolean" id="=1dQnj(#f]Auc.^}hE+2"><field name="BOOL">TRUE</field></block></value></block></value></block></value> <statement name="DO2"><block type="update" id="0z~WEv|~p-dn4hXzA_!s"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.scriptEnabled.Homepilot.Balkontuere</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="QhMt4p4iTcaD!{AxyiH5"><field name="TEXT">geschlossen</field></block></value></block></statement></block></next></block></statement></block></next></block></next></block></next></block></xml> Hat jemand eine Idee ? vg, Marc
  • [gelöst] [Blockly]Lampen aus, wenn 15 Minuten keine Bewegung

    Verschoben
    24
    2
    0 Stimmen
    24 Beiträge
    4k Aufrufe
    AlCalzoneA
    Prima, dann markiere das Thema im Titel des 1. Beitrags bitte als gelöst.
  • Auswertung in Blockly

    Verschoben
    7
    0 Stimmen
    7 Beiträge
    855 Aufrufe
    L
    Danke AlCalzone du hast mir sehr geholfen. Mit Hilfe deines Beispielcodes bin ich weitergekommen.

357

Online

32.7k

Benutzer

82.4k

Themen

1.3m

Beiträge