Weiter zum Inhalt

Skripten / Logik

16.7k Themen 215.6k Beiträge

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

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    3k 50k
    3k Themen
    50k Beiträge
    D
    @maxclaudi sagte: Allen einen wunderschönen, sonnigen guten Morgen, @Rico-Sander sagte: Vieles was hier diskutiert wird im Zusammenhang mit der Firmware- und HEMS-Aktualisierung trifft für mich nicht zu. habe auch kein Update durchgeführt. Weil ich kein HEMS nutze, ist es für mich nicht wichtig. Von den letzten Updates war ich mehr enttäuscht. Echte Verbesserungen gab es - für mich - nicht. Für mich waren es mehr Reglementierungen. @Rico-Sander sagte: Laden über AC-Anschluss, Entladen über AC-Anschluss - sonst nix. Bypass-Funktion und Grid-Dose benötige ich nicht. Selbst wenn Du mehr benötigen würdest, wüsste ich nicht was aktuell unter API 2 dagegen spricht. Die größten Veränderungen/Neuerungen durch das aktuelle Update sind bisher die Einführung von HEMS2 und Umstellung auf TLS. Zendure schreibt zwar: X bekannte Probleme behoben, jedoch welche das sein sollen, wird nicht erwähnt. Bei meinem Gerät sollen es 2 Probleme sein. Kann aber kein Problem feststellen und HEMS nutze ich nicht. @Rico-Sander sagte: Daher: Kann ich gefahrlos bei Verwendung des HTTP-Scriptes die Updates fahren oder gibt es Probleme mit dem SSL- und Port-Problem? Vermutlich nicht, da ich ja kein MQTT nutze - richtig? SSL mit Port:8883 ist nur für (nicht offizilles , Cloud-) MQTT Das Script nutzt reines HTTP mit dem Webserver des Zendure-Geräts. Zendure-Gerät und App nutzen zusätzlich "nicht offizielle" MQTT-Verbindung zur Cloud. Für das Script bedeutet das: Wenn Zendure durch die Firmware zenSDK nicht auch reglementiert oder grundlegend was verändert hat, dann funktioniert es wie zuvor. Es gab mit dem Update ein paar Änderungen und ein zusätzlicher Key. Bisher wurden mir keine Einschränkungen gemeldet. @Daniel-8 sagte: Bei mir ist alles gut. Hey, freut mich. @Daniel-8 sagte: ...hat Zendure bei Hems 2 und den neuen Firmwares was geändert. Ich habe noch kein Update gemacht. Bin etwas vorsichtig, da im Zendure Forum sehr viele Probleme haben. warte auch ab. Evtl. benötige ich keins. @Daniel-8 sagte: Was ist eigentlich der socCompSwitch? Das ist nicht bekannt und noch nicht dokumentiert. Habe eine Vermutung und kann es - ohne Update -nicht testen. socCompSwitch, bedeutet wahrscheinlich: State of Charge Compilation Switch. Denke es wird sich um einen neuen Schalter handeln, der eine Kalibrierung manuell auslösen wird. Damit man die automatische (wöchentliche oder monatliche) SoC-Kalibrierung zu nicht gewollten Zeiten beeinflussen, verhindern oder vorziehen kann? Das ist nur meine Vermutung -reine Spekulation - ! Habe den Schalter mal hinzugefügt, falls jemand auf eigene Gefahr und eigenes Risiko selbst testen möchte, was der Schalter bewirkt. Unter API 2 habe ich den Schalter schon gesetzt und getestet. Befehl wird abgeschickt und Empfang bestätigt. Auswirkungen hatte es bei mir überhaupt keine. War zu erwarten, weil socCompSwitch in der API2-Firmware nicht implementiert ist. Konnte den Schalter mehrmals - unter API 2 - gefahrlos bei meinem 1600AC+ setzen - ohne jede Veränderung. Funktionieren oder was bewirken wird der Schalter (sehr wahrscheinlich nur) erst nach Firmware-Update auf zenSDK API Version: 3. Noch einmal: Alles zu socCompSwitch sind nur Vermutungen aufgrund von Tests und Beobachtungen. edit: Falls jemand set socComp nach Update mit zenSDK API Version: 3 testen sollte, wäre ich über Rückmeldungen sehr dankbar. Habe mich heute doch mal getraut mein Solarflow 800 Pro auf die Firmware 2.0.1 upzudaten. Habe dann mal den setsocComp auf 1 und 2 geschrieben. Konnte aber keinerlei Veränderung feststellen
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    amg_666A
    @emil70 sagte: httpGet(url=http://125.123.6.5/snap.jpeg, error=timeout of 2000ms exceeded) Der erste Fehlereintrag im Log, also der ganz unten, sage, dass das httpGet nicht geklappt hat. Ich würde mal mit den 2 Sekunden im Blockly rumspielen, also erstmal höhersetzen auf 3 Sekunden und dann schauen, obs klappt. Achtung: Bei dem http(Get) im Blockly stehen bei dir Timeout 2 Sek, wenn dud as auf 3 änderst musst du auch das Intervall (das grüne "Ausführen" höher setzen
  • Hilfe für Skripterstellung mit Node-RED

    961 13k
    961 Themen
    13k Beiträge
    Marc BergM
    Man kann einen Flow von außen neu starten, indem man ihn per API deaktiviert und wieder aktiviert. Nicht sehr elegant, aber geht. Hier ein Flow dazu, das könnte man auch im Skript abbilden (hostname und Flow-ID im Inject Node anpassen: [ { "id": "0101b52dd8b0e69c", "type": "inject", "z": "tab_restart", "name": "Flow neu starten", "props": [ { "p": "baseUrl", "v": "http://nuc.fritz.box:1880", "vt": "str" }, { "p": "flowId", "v": "56a35d28dbb8d4c1", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": "", "topic": "", "x": 160, "y": 140, "wires": [ [ "ffb73632947a1b74" ] ] }, { "id": "ffb73632947a1b74", "type": "http request", "z": "tab_restart", "name": "GET /flow/:id", "method": "GET", "ret": "obj", "paytoqs": "ignore", "url": "{{{baseUrl}}}/flow/{{flowId}}", "tls": "", "persist": false, "proxy": "", "insecureHTTPParser": false, "authType": "", "senderr": false, "headers": [], "x": 370, "y": 140, "wires": [ [ "78e47724692d9c26" ] ] }, { "id": "78e47724692d9c26", "type": "change", "z": "tab_restart", "name": "deaktivieren", "rules": [ { "t": "set", "p": "flow", "pt": "msg", "to": "payload", "tot": "msg" }, { "t": "set", "p": "flow.disabled", "pt": "msg", "to": "true", "tot": "bool" }, { "t": "set", "p": "payload", "pt": "msg", "to": "flow", "tot": "msg" }, { "t": "set", "p": "headers", "pt": "msg", "to": "{}", "tot": "json" }, { "t": "set", "p": "headers.content-type", "pt": "msg", "to": "application/json", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 570, "y": 140, "wires": [ [ "b570b346c80301a6" ] ] }, { "id": "b570b346c80301a6", "type": "http request", "z": "tab_restart", "name": "PUT (aus)", "method": "PUT", "ret": "obj", "paytoqs": "ignore", "url": "{{{baseUrl}}}/flow/{{flowId}}", "tls": "", "persist": false, "proxy": "", "insecureHTTPParser": false, "authType": "", "senderr": false, "headers": [], "x": 770, "y": 140, "wires": [ [ "a062c2baa0932d3e" ] ] }, { "id": "a062c2baa0932d3e", "type": "delay", "z": "tab_restart", "name": "1s warten", "pauseType": "delay", "timeout": "1", "timeoutUnits": "seconds", "rate": "1", "nbRateUnits": "1", "rateUnits": "second", "randomFirst": "1", "randomLast": "5", "randomUnits": "seconds", "drop": false, "outputs": 1, "x": 960, "y": 140, "wires": [ [ "664a32887d83b305" ] ] }, { "id": "664a32887d83b305", "type": "change", "z": "tab_restart", "name": "aktivieren", "rules": [ { "t": "set", "p": "flow.disabled", "pt": "msg", "to": "false", "tot": "bool" }, { "t": "set", "p": "payload", "pt": "msg", "to": "flow", "tot": "msg" }, { "t": "set", "p": "headers", "pt": "msg", "to": "{}", "tot": "json" }, { "t": "set", "p": "headers.content-type", "pt": "msg", "to": "application/json", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 140, "y": 220, "wires": [ [ "83d399c90d46240f" ] ] }, { "id": "83d399c90d46240f", "type": "http request", "z": "tab_restart", "name": "PUT (ein)", "method": "PUT", "ret": "obj", "paytoqs": "ignore", "url": "{{{baseUrl}}}/flow/{{flowId}}", "tls": "", "persist": false, "proxy": "", "insecureHTTPParser": false, "authType": "", "senderr": false, "headers": [], "x": 320, "y": 220, "wires": [ [ "529c0e1896d1f278" ] ] }, { "id": "529c0e1896d1f278", "type": "debug", "z": "tab_restart", "name": "Ergebnis", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "targetType": "full", "statusVal": "", "statusType": "auto", "x": 480, "y": 220, "wires": [] } ]
  • Klingel soll 2h aus, wenn Kinderzimmertüren zu

    6
    0 Stimmen
    6 Beiträge
    443 Aufrufe
    S
    @paul53 hab das mal so umgesetzt und mir einen Debuglog eingebaut, wenn der Timer neu startet. Sieht sehr vielversprechend aus! Besten Dank! Melde mich wieder bei dir, wenn der Postbote die Schratzen nicht mittagsschlafen lässt oder die Feuerwehr nachts vergeblich klingelt, weil mein Auto brennt :-) VG Schnuckman79
  • Datenpunkte filtern (rolling average)

    28
    0 Stimmen
    28 Beiträge
    6k Aufrufe
    P
    Da das aktuelle Problem mit dem ursprünglichen Thema nichts zu tun hat, habe ich das Thema ausgegliedert. Hier geht es weiter. Vielen Dank an alle - vor allem an @paul53 der so lange drangeblieben ist.
  • [Gelöst] Smart Button Wert auslesen und Datenpunkt ändern

    4
    1
    0 Stimmen
    4 Beiträge
    300 Aufrufe
    arteckA
    @paul53 sagte in Smart Button Wert auslesen und Datenpunkt ändern: Wenn es "lang" gibt, müsste es auch "release" (loslassen) geben? ne nicht zwingend notwendig.. zumindest nicht als einzelnes Datenpunkt
  • Script so ändern das die Lautstärke wieder neutral ist

    7
    1
    0 Stimmen
    7 Beiträge
    731 Aufrufe
    crunchipC
    @kusselin sagte in Script so ändern das die Lautstärke wieder neutral ist: Ok und warum muss der in den block vom cron…? Da ist ja schon gesprochen.. ne, nachts spricht ja keiner, du setzt ja erstemal um 6 auf falsch, die Lautstärke wird dann um 6 ebenfalls auf die gewünschte Lautstärke gesetzt.
  • Hilfe bei der Skripterstellung Push Safer

    3
    1
    0 Stimmen
    3 Beiträge
    439 Aufrufe
    P
    @padi0-000 sagte in Hilfe bei der Skripterstellung Push Safer: Hallo Zusammen, ich habe mir ein Skript erstellt, (mit Blocky) was mir Nachrichten über Push Safe sendet. Wenn ich die Alarmanlage auf scharf stelle bekomme ich eine Push Nachricht " Alarmanlage Scharf Fenster ist Offen " wenn dabei ein Fenster offen ist. Nun würde ich gerne eine Push Nachricht bekommen in der steht welches Fenster offen ist. Da ich aber nur einen Text einfügen kann, würde ich gerne wissen wie ich das eventuell in Java lösen kann, dass der Text der mit Push Safe gesendet wird als Variable eingetragen wird. Z.B "FENSTER BADE GEKIPPT". [image: 1719873511786-unbenannt.png] <block xmlns="https://developers.google.com/blockly/xml" type="on_ext" id="M19}z-zpHhduZ[~?ho9E" x="-713" y="1450"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="FPQd%Qs:{W2$t2lRMqXc"> <field name="oid">0_userdata.0.DG_Technik.SMS/Push_Alarm_Fenster_Offen_Wenn_Alarm_scharf</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="h*KGiKlf[$.B.ZC13y_i"> <value name="IF0"> <block type="logic_compare" id="wOZxbnQ_B=_$ijhr$Tua"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="osejG8PRco%~Ir+x~xRV"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.DG_Technik.SMS/Push_Alarm_Fenster_Offen_Wenn_Alarm_scharf</field> </block> </value> <value name="B"> <block type="text" id=".?jy=vn!:1;!Ov+p~Wv7"> <field name="TEXT">1</field> </block> </value> </block> </value> <statement name="DO0"> <block type="pushsafer" id="[?9y8$7nf3*~G:TfM-C]"> <field name="INSTANCE">.1</field> <field name="SOUND">8</field> <field name="VIBRATION">3</field> <field name="PRIORITY">2</field> <field name="ANSWER">0</field> <field name="LOG"></field> <value name="MESSAGE"> <shadow type="text" id="xB[Wm#jBdQ:NemA48;c)"> <field name="TEXT">Alarmanlage Scharf Fenster ist Offen </field> </shadow> </value> <value name="DEVICE"> <block type="text" id="cy.pYtseY`l.6V72qe|3"> <field name="TEXT">XXXXX</field> </block> </value> </block> </statement> </block> </statement> </block> Ich hoffe es kann mir jemand helfen. VG Patrick Danke für die Hilfen nur leider kann ich das Textfeld nicht ersetzen. habe es aber mit Java hin bekommen. // @ts-nocheck on({ id: [].concat(['0_userdata.0.DG_Technik.SMS/Push_Alarm_Fenster_Offen_Wenn_Alarm_scharf']), val: true }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; if (getState('0_userdata.0.Fenster_Kontakte.DG.Tür/Fenster_Wohnzimmer_Strasse_1_Offen').val == '1') { sendTo("pushsafer.1", "send", { message: 'DG Tür/Fenster Wohnzimmer Strasse 1 Offen ', sound: "8", vibration: "3", device: 'XXXXX', }); } if (getState('0_userdata.0.Fenster_Kontakte.DG.Tür/Fenster_Wohnzimmer_Strasse_1_Gekippt').val == '1') { sendTo("pushsafer.1", "send", { message: 'DG Tür/Fenster Wohnzimmer Strasse 1 Gekippt ', sound: "8", vibration: "3", device: 'XXXXX', }); }
  • Dieses Thema wurde gelöscht!

    1
    0 Stimmen
    1 Beiträge
    18 Aufrufe
    Niemand hat geantwortet
  • Warmwasser und Auto laden

    56
    0 Stimmen
    56 Beiträge
    7k Aufrufe
    MichaelFM
    @paul53 Danke für die Antwort, ich teste morgen mit "delayOn" auf 5 Minuten und 1500W für den Überschuss.
  • [Gelöst]Umstellung Request auf Axios

    3
    0 Stimmen
    3 Beiträge
    445 Aufrufe
    BoronsbruderB
    @mcu Vielen Dank, du bist mein Held!
  • Zigbee Status der LED

    7
    0 Stimmen
    7 Beiträge
    929 Aufrufe
    J
    @arteck Die Version des Zigbee Adapters ist die 1.10.4 (GIT Version) Mein Koordinator ist ein SLZB-06. Hier die entsprechende Kachel. [image: 1719342849452-screenshot_20240625-211115.png] Und die Kachel von den Lampen. [image: 1719342918691-screenshot_20240625-211034.png]
  • Zentral Status Licht

    12
    1
    0 Stimmen
    12 Beiträge
    1k Aufrufe
    paul53P
    @ft-knorr sagte: sagen kann, dass er Nullwerte ignorieren soll. Das sind keine Nullwerte, sondern der Datenpunkt hat keinen Zustand, da anscheinend "expire" verwendet wurde. Da hilft nur eine JS-Funktion mit Ergebnis: if(existsState(id)) return getState(id).val; [image: 1719212377475-blockly_temp.jpg]
  • Vorheriger Wert Baustein

    3
    1
    0 Stimmen
    3 Beiträge
    410 Aufrufe
    AsgothianA
    @darkdevil sagte in Vorheriger Wert Baustein: ich dachte das es eine gute Idee wäre auf den vorherigen Wert zu triggern. Wenn dieser von 0 (alles dunkel ) stammt müsste der Script ja nur bei aufgehender Sonne auslösen. Wenn du mit einem Vergleich von Wert und vorheriger Wert arbeitest solltest du immer darauf achten das es keine Lücken gibt. In Deinem Beispiel das Falls also so aufbauen: [image: 1718866258510-screenshot-2024-06-20-at-08.50.52.png] Insbesondere solltest du wenn du schon den "vorheriger Wert" Baustein benutzt auch den "Wert" Baustein nutzen, und den Wert nicht neu holen via Wert von Objekt ID ... Zusätzlich würde ich in Deinem Fall gleich den Trigger noch auf "ist grösser als vorher" setzen - dann löst der generell nur aus wenn es heller wird. A.
  • Rollosteuerung für Fortgeschrittene

    3
    1
    0 Stimmen
    3 Beiträge
    478 Aufrufe
    icebearI
    @adnim Ah, verstehe, da hab ich ja garnich dran gedacht, also quasi unten auswählen (Schreibe 1-x Zahl in einen DP) und über die Sichtbarkeit kann ich ja dann steuern welche von den 1-x Steuerelementen aktiv sind. Schau ich mal ob ich das so hinbekomme. Danke für den Tipp
  • Script auslösen wenn Timestamp älter als x ist

    6
    0 Stimmen
    6 Beiträge
    715 Aufrufe
    G
    Danke euch für die Antworten. Denke es wäre sowohl mit der von @OliverIO beschriebenen Methode gut möglich, allerdings werde ich mal die von @paul53 umsetzten, da es ein "Last Sync Objekt" im Adapter gibt 👌. @crunchip auch gute Idee, allerdings ist mir nur ein Datenpunkt "Online" aufgefallen. Ich werde mal im Auge behalten, ob hier der Adapter oder das Modul direkt im Adapter gemeint ist. Grüße Phil
  • JSON Datenpunkt auslesen - Problem : Doppelpunkt im Namen

    23
    0 Stimmen
    23 Beiträge
    3k Aufrufe
    paul53P
    @ralf-8 sagte: Hier ist mein Alias Richtig: Zustandstyp: Zahl nicht Writable Rolle: value.power Unit: W
  • Abfrage "wenn innerhalb von X Sekunden Wert wahr" *gelöst*

    10
    0 Stimmen
    10 Beiträge
    838 Aufrufe
    paul53P
    @surfer09 sagte: müsste ich dann nach "0" und "1" abfragen ... oder auf "ist größer als letztes" triggern - wie gezeigt. @surfer09 sagte in Blockly Abfrage "wenn innerhalb von X Sekunden Wert wahr": Den Briefkasten Status lasse ich noch in eine separate Variable schreiben Der Datenpunkt muss auch wieder zurück gesetzt werden. [image: 1718525629907-blockly_temp.jpg]
  • Telegram Bilder - Es kommt immer der Bilder Link mit

    14
    1
    0 Stimmen
    14 Beiträge
    1k Aufrufe
    S
    @haus-automatisierung Ähm ja klar [image: 1718436717500-screenshot_2024-06-15-09-31-17-271_com.android.chrome-edit.jpg] Einziges Manko, wenn nach 4000ms das Bild noch nicht gesendet wurde ( warum auch immer ) dann kommt halt erst in 8000ms das nächste Bild. Kann man eine Abfrage einbauen um zu prüfen ob das Bild schon gesendet wurde?
  • Strom Verbrauch und separat Überschuss berechnen

    155
    1
    0 Stimmen
    155 Beiträge
    39k Aufrufe
    DuffyD
    @heidepower Klappt es jetzt ?
  • Dynamisches Licht - Farbverlauf Tag/Nacht

    javascript template
    104
    5 Stimmen
    104 Beiträge
    24k Aufrufe
    D
    Hi, ich habe mir erlaubt noch ein weiteres Skript für TUYA RGBCCT Leuchten zu schreiben, die die Farbtemperatur in einem Wert von 0-1000 darstellen. Falls es jemand benötigt: // Funktion, die den Wert liest, umrechnet und schreibt function processValue() { // Lese den Wert aus ioBroker (ersetze 'javascript.0.Dynamisches_Licht.Hilfswert_Kelvin' durch die tatsächliche Objekt-ID) let sourceValue = getState('javascript.0.Dynamisches_Licht.Hilfswert_Kelvin').val; // Kelvin range typically 2700K to 6500K const minKelvin = 2200; const maxKelvin = 6500; // Tuya temperature range 0 to 1000 const minTuyaTemp = 0; const maxTuyaTemp = 1000; // Ensure the Kelvin value is within the expected range if (sourceValue < minKelvin) sourceValue = minKelvin; if (sourceValue > maxKelvin) sourceValue = maxKelvin; // Convert Kelvin to Tuya temperature const convertedValue = ((sourceValue - minKelvin) * (maxTuyaTemp - minTuyaTemp)) / (maxKelvin - minKelvin) + minTuyaTemp; // Schreibe den umgerechneten Wert zurück zu ioBroker (ersetze 'javascript.0.Dynamisches_Licht.Hilfswert_Tuya' durch die tatsächliche Ziel-Objekt-ID, die Du noch erstellen musst) setState('javascript.0.Dynamisches_Licht.Hilfswert_Tuya', Math.round(convertedValue)); console.log(`Wert von ${sourceValue} umgerechnet zu ${Math.round(convertedValue)} und geschrieben zu javascript.0.Dynamisches_Licht.Hilfswert_Tuya`); } // Setze das Update-Intervall auf eine Minute (60.000 Millisekunden) setInterval(processValue, 60000); // Starte den Prozess sofort, ohne auf das erste Intervall zu warten processValue();
  • Frage zum Wandeln / Importieren eines Scriptes

    4
    0 Stimmen
    4 Beiträge
    374 Aufrufe
    crunchipC
    @tritanium es gibt noch den statistics Adapter
  • Tasmota Rule für Port Expander (PCF8574)

    2
    1
    0 Stimmen
    2 Beiträge
    345 Aufrufe
    oberfraggerO
    Rule1 ON PCF8574-1_INP#D0=0 DO Power3 1 ENDON ON PCF8574-1_INP#D0=1 DO Power3 0 ENDON ON PCF8574-1_INP#D1=0 DO Power5 1 ENDON ON PCF8574-1_INP#D1=1 DO Power5 0 ENDON ON PCF8574-1_INP#D2=1 DO publish stat/Schuppen/RESULT {"Tuer_SchuppenHinten_Offen":"1"} ENDON ON PCF8574-1_INP#D2=0 DO publish stat/Schuppen/RESULT {"Tuer_SchuppenHinten_Offen":"0"} ENDON ON PCF8574-1_INP#D3=1 DO publish stat/Schuppen/RESULT {"Tuer_SchuppenVorne_Offen":"1"} ENDON ON PCF8574-1_INP#D3=0 DO publish stat/Schuppen/RESULT {"Tuer_SchuppenVorne_Offen":"0"} ENDON Backlog Rule1 1 Rule1 1 Rule2 ON analog#a0=1024 DO publish stat/Schuppen/RESULT {"Keypad":"1"} ENDON ON analog#a0=816 DO publish stat/Schuppen/RESULT {"Keypad":"2"} ENDON ON analog#a0=547 DO publish stat/Schuppen/RESULT {"Keypad":"3"} ENDON ON analog#a0=289 DO publish stat/Schuppen/RESULT {"Keypad":"4"} ENDON ON analog#a0=246 DO publish stat/Schuppen/RESULT {"Keypad":"5"} ENDON ON analog#a0=216 DO publish stat/Schuppen/RESULT {"Keypad":"6"} ENDON ON analog#a0=161 DO publish stat/Schuppen/RESULT {"Keypad":"7"} ENDON ON analog#a0=148 DO publish stat/Schuppen/RESULT {"Keypad":"8"} ENDON ON analog#a0=134 DO publish stat/Schuppen/RESULT {"Keypad":"9"} ENDON ON analog#a0=103 DO publish stat/Schuppen/RESULT {"Keypad":"0"} ENDON ON analog#a0=110 DO publish stat/Schuppen/RESULT {"Keypad":"*"} ENDON ON analog#a0=98 DO publish stat/Schuppen/RESULT {"Keypad":"#"} ENDON Backlog Rule2 1 Rule2 1

215

Online

33.0k

Benutzer

83.4k

Themen

1.3m

Beiträge