NEWS
Problem mit wahr/falsch abfrage
-
Hallo zusammen
Ich will über eine einfache Abfrage eines boolschen Datenpunkts einen Log-Eintrag erzeugen. Wenn der Datenpunkt wahr ist = Fenster offen, wenn der Datenpunkt falsch ist = Fenster zu. Keine Ahnung weshalb mein Log-Eintrag immer "Fenster offen" ausgibt, auch wenn der Punkt auf falsch wechselt.
Kann mir jemand sagen was ich falsch mache?
So sieht das Blockly aus:
Und das ist der Code in Javascript
on({ id: [].concat(['zigbee.0.00158d000a982045.opened']), change: 'ne' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; if (getObject('zigbee.0.00158d000a982045.opened')) { console.log('Fenster Schlafzimmer offen'); } else if (!getObject('zigbee.0.00158d000a982045.opened')) { console.log('Fenster Schlafzimmer geschlossen'); } });
Vielen Dank und beste Grüsse
Beat -
@bidu79 du musst auf den Wert des Objekts und nicht das Objekt prüfen.
-
Und statt "sonst falls" einfach "sonst".
Macht die Sache noch kompakter -
Super, vielen dank. Es funktioniert nun.
-
@bidu79
viel zu viel Script.
Einfacher, weil:
change "ne" ist Standard, also weglassen.
async: nicht notwendig.
Wert des Objektes hast du schon mit obj in der 1. Zeile
Was willst du mit dem alten Wert ? -> weg lassenFolglich so:
on({id: 'zigbee.0.00158d000a982045.opened'}, function(obj) { if (obj.state.val) { log('Fenster Schlafzimmer offen'); } else { log('Fenster Schlafzimmer geschlossen'); } });
-
Ich frage mich wo man diesen Baustein findet:
Bin ja nun wirklich kein BlocklyNewbie aber den find ich einfach nicht
-
@djmarc75 Unter System. In den aktuellsten Versionen habe ich den aber eingefärbt (selbe Farbe wie andere "Objekte"), damit man den nicht mehr versehentlich nimmt...
hab dazu aber auch Beispiele im ioBroker-Master-Kurs, was man damit machen kann.
-
@haus-automatisierung sagte in Problem mit wahr/falsch abfrage:
eingefärbt (selbe Farbe wie andere "Objekte"), damit man den nicht mehr versehentlich nimmt
Sehr gut, war etwas verwirrt - auch warum in den letzten Tagen viele User diesen Baustein in den Skripten verwenden
-
@djmarc75 Ich weiß es auch nicht... Wollte dem aber endlich mit der anderen Farbe entgegen wirken, damit man auf Screenshots auch direkt sieht dass das ein Objekt-Baustein ist und mit dem State nix zu tun hat.
Ansonsten sollte man im Beispiel oben aber eh den Wert nehmen, welcher der Trigger mitbringt. Siehe auch
-
Hallo Matthias,
ich habe gerade ein ähnliches Problem und finde den Fehler nicht.
Ich möchte das mein Garagentor wenn es auf Lüften steht und eine Bewegung auf der Auffahrt erkannt wird automatisch schließt.
Das funktioniert auch soweit.
Wenn das Tor dann geschlossen ist, soll alle x Minuten überprüft werden ob noch eine Bewegung auf der Auffahrt erkannt wird und falls nicht, soll das Tor wieder auf Lüften fahren.
Das Intervall läuft zwar, aber die Bedingung für Wert = false wird ignoriert und das Intervall läuft immer weiter. -
@triplex Wert als Parameter wird sich auch nie ändern. Klappt so nicht. Im Interval musst Du den Wert neu holen.
Hat also nichts mit dem hier beschriebenen Problem zu tun