Auswertung in Blockly

Fragen zum Skripten mit ioBroker.javascript
Antworten
lt1014
Beiträge: 6
Registriert: 01.08.2018, 20:38

Auswertung in Blockly

Beitrag von lt1014 » 09.08.2018, 20:48

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:

Code: Alles auswählen

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

bassface
starter
Beiträge: 16
Registriert: 18.06.2018, 21:04

Re: Auswertung in Blockly

Beitrag von bassface » 10.08.2018, 07:25

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?

lt1014
Beiträge: 6
Registriert: 01.08.2018, 20:38

Re: Auswertung in Blockly

Beitrag von lt1014 » 10.08.2018, 12:33

bassface hat geschrieben:
10.08.2018, 07:25
du willst hier auf den direkten Input des RFlinks zugreifen oder?
Ja wieso, geht das nicht?
bassface hat geschrieben:
10.08.2018, 07:25
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

Benutzeravatar
AlCalzone
guru
Beiträge: 2501
Registriert: 01.03.2016, 15:16

Re: Auswertung in Blockly

Beitrag von AlCalzone » 10.08.2018, 12:56

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:

Code: Alles auswählen

// 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.
Meine Adapter:
IKEA Trådfri: GitHub | Test & Hilfe
G-Homa: GitHub | Test & Hilfe

lt1014
Beiträge: 6
Registriert: 01.08.2018, 20:38

Re: Auswertung in Blockly

Beitrag von lt1014 » 10.08.2018, 15:08

AlCalzone hat geschrieben:
10.08.2018, 12:56
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

Benutzeravatar
AlCalzone
guru
Beiträge: 2501
Registriert: 01.03.2016, 15:16

Re: Auswertung in Blockly

Beitrag von AlCalzone » 13.08.2018, 07:33

lt1014 hat geschrieben:
10.08.2018, 15:08
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.
Meine Adapter:
IKEA Trådfri: GitHub | Test & Hilfe
G-Homa: GitHub | Test & Hilfe

lt1014
Beiträge: 6
Registriert: 01.08.2018, 20:38

Re: Auswertung in Blockly

Beitrag von lt1014 » 13.08.2018, 11:16

Danke AlCalzone du hast mir sehr geholfen. Mit Hilfe deines Beispielcodes bin ich weitergekommen.

Antworten