hobbyquaker / node-red-contrib-zigbee

Node-RED Nodes for ZigBee Devices 🐝
MIT License
86 stars 15 forks source link

Basic question: how start a command node (execute) #113

Closed get-command closed 4 years ago

get-command commented 4 years ago

Hallo Community, Hallo @hobbyquaker,

hier kann ich ja in Deutsch schreiben, habe ich gerade gesehen :-)

Meine Frage ist vermutlich ganz einfach, aber für mich bisher nicht zu lösen gewesen.

grafik

Wie in der Grafik zu sehen ist, kann ich die Command-Nodes starten, wenn ich direkt die Injects ausführe. Das ist ein Zeichen dafür, dass der Command-Node richtig mit der ZigBee-Lampe (Osram) konfiguriert ist. Wenn ich aber einen Switch habe, funktioniert das nicht mit diesem Gerät. Hänge ich statt dem ZigBee-Gerät ein andere Gerät an, funktioniert das auch problemlos. Das ist ein Zeichen dafür, dass der Switch-Node funktioniert. Muss ich, nachdem Switch-Node noch einen Zwischen-Node einbinden, der den Command-Node sagt "Jetzt für den Befehl aus"? Ich habe wirklich extrem viel getestet und sehr viel im Internet recherchiert. Über einen Tipp wäre ich sehr glücklich.

Vielen Dank für die Hilfe.

Sineos commented 4 years ago

Bitte mal eine Debug Node an den Switch hängen (complete message object) und zeigen was die Switch-Node ausgibt

get-command commented 4 years ago

Bitte mal eine Debug Node an den Switch hängen (complete message object) und zeigen was die Switch-Node ausgibt

Der Switch-Node gibt, abhängig vom Smartbutton-Klick (doppelt oder einfach), entweder OnOff: 0 oder OnOff:2 weiter.

Sineos commented 4 years ago

Ohne Debug Message bin ich raus

get-command commented 4 years ago

Ohne Debug Message bin ich raus

meinst das?!

grafik

Sineos commented 4 years ago

Bitte die Debug Node auf "complete Message object" setzen und ausklappen. Das Schwärzen kannst dir sparen, du postest ja nicht deinen Netzwerkschlüssel

get-command commented 4 years ago

Bitte die Debug Node auf "complete Message object" setzen und ausklappen. Das Schwärzen kannst dir sparen, du postest ja nicht deinen Netzwerkschlüssel

hab das eingestellt im debug node:

grafik

dann steht da tatsächlich mehr:

grafik

Sineos commented 4 years ago

Setze mal zwischen "Smart Button" und Switch-Node eine Function-Node mit folgendem Inhalt:

msg = {};
msg.payload = true;
return msg;
get-command commented 4 years ago

Funktioniert leider nicht

grafik

stuckis6er commented 4 years ago

Hallo, wie sieht denn der Switch aus? Es wundert mich das ein payload mit onOff 0 bei der Licht an Node ankommt.

get-command commented 4 years ago

Hallo, wie sieht denn der Switch aus? Es wundert mich das ein payload mit onOff 0 bei der Licht an Node ankommt.

grafik

Das funktioniert auch. Der Switch-Node gibt - entsprechend Tastendruck des Smartbutton - das weiter. An der Stelle, muss wahrscheinlich noch etwas dazwischen und (sage mal laienhaft) der den Wert "formatiert" (einfache wie bei einem Inject-Node) oder ein Change-Switch der in passendere Werte konvertiert.

get-command commented 4 years ago

Der Execute-Button am Zigbee-Gerät funktioniert problemlos...

grafik

stuckis6er commented 4 years ago

Tausch doch bitte mal die beiden Licht Nodes.

get-command commented 4 years ago

Ohne Debug Message bin ich raus

Meinst Du das?

Tausch doch bitte mal die beiden Licht Nodes.

Hab ich. Ändern leider nix.

Sineos commented 4 years ago

Ersetze den Inhalt der Function Node durch:

const msg2;
msg2 = {};
msg2.payload = msg.payload;
return msg2;
Sineos commented 4 years ago

Bzw. das reicht vermutlich noch nicht. Du sagst die Inject Nodes funktionieren. Was ist der Inhalt des Injects?

get-command commented 4 years ago

Bzw. das reicht vermutlich noch nicht. Du sagst die Inject Nodes funktionieren. Was ist der Inhalt des Injects?

Ich habe an den Inject-Node nichts verändern. Er sendet ja im Default ja den Timestamp. Damit gehts. Habe spaßeshalber mal auf Bolean True gestellt, auch das geht.

Der von dir o.g. Code ist fehlerhaft. Die Variable ist undefiniert oder so ähnlich war die Fehlermeldung.

Gibt es irgendwie eine Äquivalent zum Inject-Node mit einem Input?

get-command commented 4 years ago

Setze mal zwischen "Smart Button" und Switch-Node eine Function-Node mit folgendem Inhalt:

msg = {};
msg.payload = true;
return msg;

DAS WAR ES!!!!!!!!!!!!!!!!!! Was für eine schwere Geburt :-) Vielen Dank Dir und allen anderen für die Hilfe!

Ich habe diesen function-Node zwischen Switch und Lampe eingebaut. Damit hat es tatsächlich funktioniert. Danke!!danke! danke!

Sineos commented 4 years ago

Fein. Erklärung ist folgende:

Die Quelle deiner msg ist die "smartbutton zigbee" Node. Da es auch ein zigbee Gerät ist, enthalten seine msg Objekte seine endpoint, cluster, ieeeAdr usw. Informationen. Diese knallst du dann in die Osram Node und überschreibst mit diesen die Einstellungen der Osram-Node.

Der Function-Schnipsel macht nichts anderes als alle Attribute zu löschen und nur das Payload-Attribut auf true zu setzen.

Bitte hier dann zu machen wenn es für dich gelöst ist.

get-command commented 4 years ago

Bitte hier dann zu machen wenn es für dich gelöst ist.

Ich habe mir das schon, so wie Du das erklärt hast, vorgestellt. Es ist logisch und plausibel. Bin in der Thematik relativ neu noch.

Vielen Dank für die hervorragende Beschreibung!