NEWS
Auswertung in Blockly
-
Hi,
ich habe eine rflink instanz die mir von einem 433MHz sender folgendes liefert:
raw rx data : state : "20;25;BrelMotor;ID=e30417;SWITCH=31;CMD=UP;"
raw rx data : state : "20;29;BrelMotor;ID=182074;SWITCH=63;CMD=DOWN;"
Ich möchte diesen string auswerten und darauf reagieren.
In C würde ich das in etwa so machen:
parser(state); // erstellt die struktur state if(!strcmp(state.ID,"e30417") && !strcmp(state.CMD,"UP")) rollo_auf(); if(!strcmp(state.ID,"e30417") && !strcmp(state.CMD,"DOWN")) rollo_ab();
Kann mir bitte mal jemand helfen, wie ich das mit Blockly umsetzen kann ich habe absolut keinen Plan.
Vielen Dank dafür
Willi
-
Moin Willi,
du willst hier auf den direkten Input des RFlinks zugreifen oder?
Wurden dir unter Objekte keine Objekte für die Sensoren angelegt auf die du zugreifen kannst?
-
du willst hier auf den direkten Input des RFlinks zugreifen oder? `
Ja wieso, geht das nicht?
@bassface:Wurden dir unter Objekte keine Objekte für die Sensoren angelegt auf die du zugreifen kannst? `
Nein nur die raw Daten ändern sich und zeigen sinnvolle Werte.Es gibt da noch ein "BrelMotor 1 Blind 61" das steht aber immer auf "false"
Gruß
Willi
-
Sowas geht in JS am einfachsten per RegExp, ich fürchte dazu musst du dich von Blockly verabschieden. Als alter C-Hase dürfte das aber kein Problem sein:
// Auf Änderungen reagieren on("id-des-state", (obj) => { const value = obj.state.val; if (/ID=e30417/.test(value) && /CMD=UP/.test(value)) { // rollo auf setState("id-des-rollos", 100 /* oder korrekten Wert für auf */); } else if (/ID=e30417/.test(value) && /CMD=DOWN/.test(value)) { // rollo zu setState("id-des-rollos", 0 /* oder korrekten Wert für zu */); } });
Wie du jetzt rollo auf und zu realisierst, hängt vom Rollo und dessen Ansteuerung ab.
-
Sowas geht in JS am einfachsten per RegExp, ich fürchte dazu musst du dich von Blockly verabschieden. Als alter C-Hase dürfte das aber kein Problem sein: `
Schade, gerade wegen Blockly hatte ich vor auf den ioBroker umzusteigen. Da ich auf meine alten Tage weder Zeit noch Lust habe mich in JS einzuarbeiten wars das dann auch mit dem ioBroker.
Ich bin davon ausgegangen, dass Blockly etwas mächtiger ist und man solche einfachen Stringvergleiche auch umsetzen kann.
Da werd ich dann doch bei fhem bleiben.
Danke und Gruß
Willi
-
Ich bin davon ausgegangen, dass Blockly etwas mächtiger ist und man solche einfachen Stringvergleiche auch umsetzen kann. `
Einfache Stringvergleiche gehen, du musst die interessanten Parts jedoch aus deinem Gesamtstring extrahieren. Und eine allgemeingültige Lösung á là RegExp existiert hier jedoch nicht. -
Danke AlCalzone du hast mir sehr geholfen. Mit Hilfe deines Beispielcodes bin ich weitergekommen.