NEWS
Zentral Status Licht
-
Hallo zusammen, ich habe folgendes Blockly Skript gebaut um Eine zentrale Gruppen Adresse zu steuern. Leider funktioniert es nicht und ich bin nicht dahinter gekommen, was der Fehler sein könnte… Vielleicht die Nullwerte mancher Gruppenadressen? Oder habe ich einen kompletten Gedankenfehler?
Danke für eure Hilfe
-
@ft-knorr sagte: kompletten Gedankenfehler?
Man kann IDs nicht per Oder verknüpfen.
Ob alle Lichter aus sind, kann man in einer Schleife prüfen. Prinzip: -
@ft-knorr Schau Dir mal den Szenen-Adapter an. Der ist genau für sowas gemacht.
Gruss, Jürgen
-
@ft-knorr sagte in Zentral Status Licht:
Hallo zusammen, ich habe folgendes Blockly Skript gebaut um Eine zentrale Gruppen Adresse zu steuern. Leider funktioniert es nicht und ich bin nicht dahinter gekommen, was der Fehler sein könnte… Vielleicht die Nullwerte mancher Gruppenadressen? Oder habe ich einen kompletten Gedankenfehler?
Danke für eure Hilfe
Da hast du eine unnötige Fleißarbeit verrichtet. Du kannst es mit einer Wildcard-Abfrage auch einfacher haben.
z. B. für Zigbee (funktioniert aber auch mit allen anderen Objekten)
-
Ich hatte einfach alle Objekte mit einer Funktion in einem Objekt gesammelt (triggern) lassen und das gesamte Objekt mit JSONATA ausgewertet.
Hier mal ein Beispiel - da ich die function Licht (light nicht konsequent) genutzt habe, hier nur exemplarisch. Ausserdem habe ich das Gesamtobjekt Lichter nicht gespeichert, beim Neustart baut sich das Objekt also auf. Man kann das auch abspeichern.
Ich habe mal die function Licht genommen und die ID On - man kann halt nun über den Selector ggf. das alles generisch machen.
Alle Trigger werden in einem Objekt gesammelt:
Und zum Schluss wird das ganze ausgewertet und der Gesamtstatus Licht an/aus ausgegeben. Licht aus, wenn jede Eigenschaft des Objektes false ist, und true wenn auch nur eine Eigenschaft true ist.
Hier zum Import:
Der Riesenvorteil eines Objektes gegenüber einer Liste ist halt, dass das Objekt einerseits flexibel und variabel ist, zum anderen aber die Eigenschaft nach der ID aktualisiert und nicht dazu genommen wird.
-
@paul53 Habe deine Lösung ausprobiert. Es funktioniert super.. einzig folgende Fehlermeldung
javascript.0 23:43:10.268 warn at Object.<anonymous> (script.js.Master_Licht_Status:12:9)
Könnte das von den Nullwerten kommen?
-
@ft-knorr sagte in Zentral Status Licht:
Könnte das von den Nullwerten kommen?
das könnte man vielleicht sagen wenn man dein Blockly und den erzeugten javascript Code kennen würde.
-
@ft-knorr sagte: folgende Fehlermeldung
Im Tab "Protokolle" findet man weitere Informationen. Vermutung: Der Ziel-Datenpunkt ist nicht vom Typ "Logikwert" (boolean).
-
@paul53
im Log steht folgendesjavascript.0 2024-06-24 00:07:58.230 warn at process.processImmediate (node:internal/timers:476:21) javascript.0 2024-06-24 00:07:58.229 warn at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/build/lib/adapter/adapter.js:8489:62) javascript.0 2024-06-24 00:07:58.229 warn at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:641:29) javascript.0 2024-06-24 00:07:58.229 warn at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1396:38) javascript.0 2024-06-24 00:07:58.228 warn at Object.<anonymous> (script.js.Master_Licht_Status:12:9) javascript.0 2024-06-24 00:07:58.227 warn getState "knx.0.Licht.Rückmeldung_Schalten_(Ein_Aus_1_Bit).EG_-_Wohnzimmer_Kü_-_LED_Arbeitsfläche_-_Rückmeldung_Schalten" not found (3) states[id]=null javascript.0 2024-06-24 00:07:58.227 warn at process.processImmediate (node:internal/timers:476:21) javascript.0 2024-06-24 00:07:58.226 warn at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/build/lib/adapter/adapter.js:8489:62) javascript.0 2024-06-24 00:07:58.226 warn at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:641:29) javascript.0 2024-06-24 00:07:58.226 warn at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1396:38) javascript.0 2024-06-24 00:07:58.225 warn at Object.<anonymous> (script.js.Master_Licht_Status:12:9) javascript.0 2024-06-24 00:07:58.223 warn getState "knx.0.Licht.Rückmeldung_Schalten_(Ein_Aus_1_Bit).EG_-_Kind_-_Leuchten_Bett_Li_-_Rückmeldung_Schalten" not found (3) states[id]=null
DANKE!
-
@ft-knorr sagte in Zentral Status Licht:
2024-06-24 00:07:58.227 warn getState "knx.0.Licht.Rückmeldung_Schalten_(Ein_Aus_1_Bit).EG_-Wohnzimmer_Kü-LED_Arbeitsfläche-_Rückmeldung_Schalten" not found (3) states[id]=null
und der eigentliche Fehler ist nicht im verkürzten log zu sehen
-
@homoran said in Zentral Status Licht:
Gibt der Fehler nicht an, dass er keinen Wert bei dem Objekt findet? Ich verstehe nur noch nicht, wie ich in dem Skript sagen kann, dass er Nullwerte ignorieren soll.
-
@ft-knorr sagte: sagen kann, dass er Nullwerte ignorieren soll.
Das sind keine Nullwerte, sondern der Datenpunkt hat keinen Zustand, da anscheinend "expire" verwendet wurde. Da hilft nur eine JS-Funktion mit Ergebnis:
if(existsState(id)) return getState(id).val;