NEWS
If else if Anweisung
-
Ja das habe ich gemacht. Ist das so Richtig?
on({id: "mqtt.0.ESPURNA_CB3A71.rfin"/*ESPURNA_CB3A71/rfin*/, change: "any"}, function (obj) { const sA = "1EC800FA03027F7CE2"; //Taste A const sB = "1EC800FA03027F7CE8"; //Taste B log(obj.state.val); if (sA === getState("mqtt.0.ESPURNA_CB3A71.rfin")) { console.log(sA); setState("sonoff.0.Wohnzimmerlampe.POWER"/*Wohnzimmerlampe POWER*/,true); } if (sB === getState("mqtt.0.ESPURNA_CB3A71.rfin")) { console.log(sB); setState("sonoff.0.Wohnzimmerlampe.POWER"/*Wohnzimmerlampe POWER*/,false); } });
LOG
09:05:12.500 [info] javascript.0 Stop script script.js.common.RF_Bridge 09:05:12.526 [info] javascript.0 Start javascript script.js.common.RF_Bridge 09:05:12.527 [info] javascript.0 script.js.common.RF_Bridge: registered 1 subscription and 0 schedules 09:05:13.918 [info] javascript.0 script.js.common.RF_Bridge: 1EBE00FA03027F7CE2 09:05:18.273 [info] javascript.0 script.js.common.RF_Bridge: 1EBE00FA03027F7CE8
//edit
Habe in der if Bedingung die getState abfrage raus genommen. Dann schaltet die Lampe für einen Bruchteil einer Sek. Man hört nur ein schnelles klacken vom Relai. Beim Drücken der "aus" Taste passiert das selbe
Das steth dan im LOG - Habe nur einmal auf "A" gedrückt. Das kommt dabei raus. Beim drücken von "B" das selbe…
javascript.0 2018-08-07 09:09:45.284 info script.js.common.RF_Bridge: 1EC800FA03027F7CE8 javascript.0 2018-08-07 09:09:45.284 info script.js.common.RF_Bridge: 1EC800FA03027F7CE2 javascript.0 2018-08-07 09:09:45.283 info script.js.common.RF_Bridge: 1EC800FA03027F7CE2
-
Und da haben wirs schon…
Laut log wird "1E<u>BE00</u>FA03027F7CE2" und "1E<u>BE00</u>FA03027F7CE8" empfangen, du vergleichst aber mit "1E<u>C800</u>FA03027F7CE2" und "1E<u>C800</u>FA03027F7CE8"
Und wie ich schon sagte, nicht nochmal den State abfragen (getState), sondern den vorhandenen Wert (obj.state.val) nutzen!
on({id: "mqtt.0.ESPURNA_CB3A71.rfin"/*ESPURNA_CB3A71/rfin*/, change: "any"}, function (obj) { const sA = "1EBE00FA03027F7CE2"; //Taste A const sB = "1EBE00FA03027F7CE8"; //Taste B log(obj.state.val); if (sA === obj.state.val) { setState("sonoff.0.Wohnzimmerlampe.POWER"/*Wohnzimmerlampe POWER*/,true); } else if (sB === obj.state.val) { setState("sonoff.0.Wohnzimmerlampe.POWER"/*Wohnzimmerlampe POWER*/,false); } });
-
ok. Jetzt habe ich es auch gesehen.
Aber warum ändert sich der wert immer?
Habe die Sonoff brige mit ESPurna 1.12.3.
als FB SONOFF 433 mhz Fernbedienung
Das ist mir vorher nicht aufegefallen das sich die Werte bei jedem Tastendruck ändern. Was kann ich dagegen tun?
In ESPurna unter dem Punkt RFBRIDGE kann man Signale anlernen. Dort ändern sich der Wert auch
-
Wenn es immer nur die ersten paar Zeichen sind die sich ändern könnte man einfach prüfen ob der letzte Teil stimmt und den Anfang des empfangen Codes weglassen..
Gruß
-
Das klingt gut. Wie kann ich das machen?
Danke und gruß
-
on({id: "mqtt.0.ESPURNA_CB3A71.rfin"/*ESPURNA_CB3A71/rfin*/, change: "any"}, function (obj) { const sA = "FA03027F7CE2"; //Taste A const sB = "FA03027F7CE8"; //Taste B const val = obj.state.val; const code = val.substr(val.length - 12); if (code === sA) { setState("sonoff.0.Wohnzimmerlampe.POWER"/*Wohnzimmerlampe POWER*/,true); } else if (code === sB) { setState("sonoff.0.Wohnzimmerlampe.POWER"/*Wohnzimmerlampe POWER*/,false); } });
So ungefähr - Prüfung auf die letzten 12 Zeichen im empfangenen Wert..
Gruß
-
-
Ich danke euch. Das läuft so
Und wieder ein wenig schlauer…
Dennoch komisch. ich habe erwartet das der code der FB immer gleich ist....
-
Wahrscheinlich ist die eine Ziffer eine fortlaufende Sequenz, das ist bei dem ein oder anderen Protokoll auch so.
-
okay. Aber nun weiß ich worauf ich achten mus