NEWS
Fenster Öffnen/schließen steuert Heizung
-
@tdcropower Ich habe als Triggerpunkte nicht die Fenstersensoren genommen sondern die Datenpunkte des "generischen Fenster offen Skripts" Die haben eine "Entprellzeit" die einstellbar ist, bei mir sind das 10 Sekunden. So können auch alle Heizkörper eines Raumes mit mehrern Fenstern geregelt werden.
-
@tdcropower Der timeout bringt dir aber doch nichts, wenn du nicht im "falls" erneut den Wert abfragst. Aktuell nimmst ja den schon beim triggern ermittelten Wert.
-
-
@tdcropower sagte in Fenster Öffnen/schließen steuert Heizung:
Wenn man das Fenster komplett öffnet und auf gekippt umstellt, indem man den Wechsel schnell durchführt (Frauchen ist da sehr fix) bleibt die Heizung eingeschaltet, obwohl das Fenster den Status gekippt hat.
Welchen Wert hat denn der Datenbunkt bei geöffnet und welchen bei gekippt ? Zeig mal den RAW vom Datenpunkt.
Kannst ja auch mal einen debug Baustein mit Wert direkt unter dem Trigger einbauen, dann siehst Du was passiert.Edit: Wenn beides getriggert wird, also geöffnet und gekippt true als Wert haben sollten, dann wird ja der Wert nicht geändert, nur der Zeitstempel wird geändert, der Wert bleibt. (also der Trigger)
Meine Sensoren (HMIP haben drei Werte, also 0,1 oder 2, für jede Fensterstellung einen eigenen Wert) -
ja das ist schon klar, sollte der trigger tatsächlich aber nur einmal auslösen, solltest du nicht den schon beim triggern gelesenen Wert benutzen, lieber dann nach dem timeout noch mal "wert von ID" neu abfragen. sonst kannst auch den timeout weg lassen.
-
@dslraser der Sensor ist ein Aqara ZigBee Tür/Fenstersensor, der Datenpunkt ist ein boolean mit folgenden RAW Daten...
{ "type": "state", "common": { "name": "Is open", "type": "boolean", "read": true, "write": false, "role": "state" }, "native": {}, "from": "system.adapter.zigbee.0", "user": "system.user.admin", "ts": 1622678872085, "_id": "zigbee.0.00158d0001dff2ef.opened", "acl": { "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "object": 1636, "state": 1636 } }
Der Datenpunkt erkennt alle Änderungen und triggert hier jeweils ein true/false.
Also geschiet zwischen offen zu gekippt ein...
offen = true
offen -> zu = false
zu -> gekippt = true -
@tdcropower
mach einen debug Baustein mit Wert und schau was passiert.geschlossen dann offen
offen dann gekipptwird da dann immer getriggert ? (als auch von offen und dann gekippt)
-
@dslraser ja werden beide wechsel getriggert...
javascript.0
2021-10-27 10:44:56.974 error script.js.common.Heizung: truejavascript.0
2021-10-27 10:44:56.973 error script.js.common.Heizung: TEST TRIGGERjavascript.0
2021-10-27 10:44:55.897 error script.js.common.Heizung: falsejavascript.0
2021-10-27 10:44:55.896 error script.js.common.Heizung: TEST TRIGGERhier war es sogar länger als 1 Sekunde und somit hat der Timeout von 1 Sekunden nicht gegriffen.
-
@tdcropower
Ich kann Dir jetzt nicht ganz folgen. Ich sehe nur einen wechsel von false nach true. Wie sieht Dein Blockly jetzt aus ? -
@dslraser es sind 2 Debug Outputs direkt nach dem Trigger eingefügt....
edit:
ich habe mir zusätzlich noch den Wert von "Power" des HKT ausgegeben.
Hier sieht man das der Wert direkt nach dem Trigger bei beiden auf OFF steht und somit in den "else" Pfad geleitet wird.
Also ist der Wechsel von gekippt auf zu noch nicht vom HKT verarbeitet worden und läuft wahrscheinlich im Hintergrund nach.javascript.0
2021-10-27 10:57:00.425 error script.js.common.Heizung: Power: OFFjavascript.0
2021-10-27 10:57:00.424 error script.js.common.Heizung: truejavascript.0
2021-10-27 10:56:59.722 error script.js.common.Heizung: Power: OFFjavascript.0
2021-10-27 10:56:59.721 error script.js.common.Heizung: false -
@tdcropower
und was hast Du gemacht ? Nur das Fenster geöffnet oder auch auf kipp ? (ich kenne/habe diese Sensoren nicht. Sind das Türgriffe bzw. erkennen die überhaupt den Unterschied zwischen gekippt und geöffnet wenn die nur true/false haben ?) -
@dslraser die Sensoren erkennen nur Offen/Zu, also keinen Zustand wie offen/gekippt.
Das sind folgende Sensoren...
https://www.amazon.de/Aqara-MCCGQ11LM-Window-Sensor-Fensterssensor/dp/B07D37VDM3In dem Beispiel oben habe ich immer folgendes getestet und ausgegeben...
- Fenster komplett geöffnet -> "is open": true
- Fenster schließen -> "is open": false
- Fenster kippen -> "is open": true
-
@tdcropower
ich muß jetzt leider erstmal weg und kann im Moment nicht weiter lesen/schreiben. -
@dslraser keine Eile ist ja mit dem Timeout erstmal unschön gefixt ;).
Suche ja nur eine bessere Lösung das Problem abzufangen. -
@tdcropower sagte in Fenster Öffnen/schließen steuert Heizung:
@dragon welche Datenpunkte sollen das sein? Verstehe deine Erklärung nicht so recht.
Hast du das Skript installiert?
-
@dragon welches Skript soll das sein?
Ich verwende mein eigenes Skript in diesem Beispiel. -
@tdcropower Gib oben im suchfeld einfach ein was ich dir als skript vorgeschlagen habe ("generischen Fenster offen Skripts") , dann findest du es. Man muss ja nicht alles in einem Skript verpacken, sondern kann auch Dinge mit mehreren Skripten erledigen. Ich habe so viele tolle und nützliche Skripte hier gefunden, welche ich alle niemals (auch da ich kein Java kann) alleine hätte erstellen können. Einige der Funktionen meines Systems zum Beispiel nutzen im Blockly eine Funktion die über ein JavaScript zur Verfügung gestellt wird. So kann ich diese tollen Skripte aus dem Forum, welche von den Erstellern liebevoll gepflegt und debugt werden nutzen ohne Java lernen zu müssen.
-
-
-
@dragon das Skript ist in meinem Beispiel wohl eher mit Raketen auf Spatzen schießen
wobei hier eine Zeit von 10 Sekunden bei Fenstern verwendet wird...
const WindowIgnoreTime = 10000; // 10000 ms = 10 Sekunden - Zeit in ms für die kurzzeitiges öffnen/schliessen ignoriert wird
bei Türen ist es 1 Sekunde...
const DoorIgnoreTime = 1000; // 1000 ms = 1 Sekunden - Zeit in ms für die kurzzeitiges öffnen/schliessen ignoriert wird
Ist somit ja leider ähnlich gelöst wie in meinem Workaround.