NEWS
[Gelöst] Trigger auf mehrere Statuswerte möglich?
-
Hallo,
ich nutze einen Osram Smart Switch Mini um in einem Zimmer mehrere Lampen in unterschiedlichen Konfigurationen zu schalten.
Der Switch reagiert auf einen einfachen Klick und auf ein "Halten". Doppelklick gibt es bei dem nicht
Das Blockly-Skript reagiert immer nur auf die "Press" Statusänderung, nie auf die Änderung des "Hold", was einigermaßen
verwunderlich ist, da jeder Teil für sich funktioniert, soll heissen, wenn ich nur auf "Hold" triggere, dann funktioniert es.
Funktioniert ein solcher "Mehrfachtrigger" generell nicht oder habe ich einfach einen Fehler gemacht? Hier noch der Code
des Triggers:
on({id: new RegExp('zigbee\.0\.000d6f000edcddda\.hold' + "|" + 'zigbee\.0\.000d6f000edcddda\.state'), change: "ne"}, async function (obj)Vielen Dank im Voraus
-
Sicher bin ich nicht warum das Skript sich so verhält, allerdings empfehle ich statt der ganzen "wert von xxx" Bausteine diesen Baustein aus dem Trigger Bereich einzusetzen und auf "wert" umzustellen:
-
@asgothian
habe ich probiert, da reagiert das Skript auf garnichts. Man sieht, daß im JS Skript dann der
if (getState("zigbee.0.000d6f000edcddda.release").val == 'up')
getState "Befehl" einfach nicht da ist sondern es so drin steht
if ('zigbee.0.000d6f000edcddda.state' == 'up')Ich habe es jetzt in 2 getrennte Blöcke in ein "Skript" gepackt, das funktioniert
-
@asgothian eine Frage die ich mir dabei schon öfter gestellt habe: das geht doch nur, wenn oben im Trigger-Block auch nur ein Trigger steht, richtig? "wert" bezieht sich auf den Trigger, aber wenn das zwei sind geht das doch nicht!? Man muss es dann in zwei Blöcke aufteilen, oder gibt es eine andere Möglichkeit?
-
@lobomau Muss man nicht, das ist ja das schöne. Der Baustein "wert" beinhaltet immer den Wert des Datenpunktes der den Trigger ausgelöst hat. Damit muss man da nicht explizit schauen welchen wert man sich holt.
Ob das Sinn macht hängt letztendlich immer von den triggernden Datenpunkten ab. Das Trennen ist sowieso immer dann sinnvoll wenn unterschiedliche 'trigger' auch unterschiedliche Aktionen auslösen sollen.
Zu den beiden getrennten Skripten von @Dilldappe-io
Das du im Skript 3 mal den Wert vom gleichen Datenpunkt aus der Objekt-datenbank holst ist eigentlich nicht gut. Je nach Last auf dem System und Aktion die ggf. extern laufen kann es passieren das die einzelnen Aufrufe unterschiedliche Werte zurück liefern. Deswegen ist eine Umstellung auf den "wert" Baustein sinnvoll. Hintergrund ist das ein "wert von ObjektID xxx" immer eine Anfrage an die Objektdatenbank beinhaltet, die ggf. nicht in 0-Zeit abgearbeitet wird, und die insbesondere bei grossen Objektbäumen auch Systemlast erzeugt. -
@asgothian Aaaah... DAS ist wirklich schön. Wieder was gelernt. Nun werde ich einige Scripte verbessern/vereinfachen können
-
@asgothian said in [Gelöst] Trigger auf mehrere Statuswerte möglich?:
Das ist richtig, war noch ein Überbleibsel vom Versuch alles in einem Block abzuhandeln, ich habe es auf "Wert" geändert und es funktioniert weiterhin.