NEWS
Skript "lügt" / Werte von Xiaomi Fenstersensor wird falsch ausgewertet
-
Hi,
ich frage per Skript den Status meiner Xiaomi Fenstersensoren ab. Jetzt wird mir ein Sensor als offen zurück gemeldet obwohl er geschlossen ist.Ich hab ihn unter Objekten geprüft. dort steht "isopen" = false. Trotzdem wird mir im Skript gemeldet, das er true wäre. Für alle anderen Sensoren von Xiaomi klappt es einwandfrei.
Anfangs dachte ich es wäre ein Problem des Xiaomi Gateways, aber die Überprüfung unter Objekte zeigte das es eigentlich geschlossen ist. In iobroker kommt also der korrekte Status an. Ich vermute, das die Skripte eben jenen Status im Objektbaum auch abfragen, oder ?
Das wird mir unter Objekten angezeigt
Mein Testskript:
var Status = getState("mihome.0.devices.magnet_158d0001b95702.state").val; var objektname = getObject("mihome.0.devices.magnet_158d0001b95702").common.name; var raum = getObject("mihome.0.devices.magnet_158d0001b95702","rooms").enumNames; var OffeneFenster = "\n Im " + raum + " ist " + objektname + Status + " offen."; console.log(OffeneFenster);
Ausgabe des Skripts ist:
Im [object Object] ist Xiaomi Garagentortrue offen.Interessanterweise wird auch der Name des Raums nicht ausgegeben, obwohl der Sensor einem zugeordnet ist. Wäre auch interessant warum, aber ist Prio 2.
-
Ich hab mal kurz Dein Script umgeschrieben, Du fügst ja das String " offen." immer hinzu, egal wie der Status ist.
Versuch mal:
let statePath = 'mihome.0.devices.magnet_158d0001b95702'; let objName = getObject(statePath).common.name; let raum = getObject(statePath, "rooms").enumNames; let status = 'offen'; if (! getState(statePath + ".state").val) status = 'zu'; let windowStatusText = "\n Im " + raum + " ist " + objName + ' ' + status + '.'; console.log(windowStatusText);
-
es ging nicht um das "offen" sondern um den Wert "true" davor.
-
-
@Mic said in Skript "lügt":
Ich hab mal kurz Dein Script umgeschrieben, Du fügst ja das String " offen." immer hinzu, egal wie der Status ist.
Hi Mic, das ist ok so. In dem eigentlichen Skript füge ich in einer Schleife alle Fenster zu einem Ausgabe String zusammen. Da wird vorher geprüft ob offen oder zu ist und nur bei offen werden sie hinzugefügt.
in dem Testskript hier steht das "offen" halt noch mit drin. Entscheidend ist der Status der über die Variabel ausgegeben wird.