NEWS
Xiaomi Fensterkontakt und Comet Dect
-
Wow!
Danke, dass ihr so schnell geantwortet habt.Ich möchte eure Ansätze möglichst schnell umsetzen und werde danach nochmals eine Rückmeldung geben. Vorher habe ich aber noch eine Frage was mögliche Handeingriffe in die Steuerung direkt an den Thermostaten betrifft.
In der Beschreibung der Comet Dect Thermostate wird beschrieben, dass ein Handeingriff immer möglich ist. Wird in einem Zeitraum von z.B. 06:00 - 18:00 Uhr über die Fritzbox auf 22°C geheizt und jemand dreht am Thermostat um 09:00 Uhr auf 23°C hoch bleiben die 23°C der neue Sollwert bis der nächste programmierte Schaltpunkt um 18:00 Uhr eintritt. Am nächsten Tag wiederholt sich das Programm wieder mit 22°C.
Das funktioniert aktuell genau so und so ist es auch gut. Ich gebe den Sollwert in der Fritzbox vor, meine Frau kann wenn alleine zu Hause immer die Heizung "langfristig" also für den restlichen Tag verstellen.Wie verhält sich das bei Euren Steuerungen @Chaot @vikk88 ? Was passiert wenn um 09:00 Uhr manuell der Thermostat aufgedreht wird - um 09:15 Uhr synchronisiert sich die Fritzbox das nächste mal mit dem Thermostat... Wird der Sollwert dann durch die Fritzbox wieder nach unten korrigiert?
@Chaot said in Xiaomi Fensterkontakt und Comet Dect:
@_tobias_ Ich nutze für die Fenstererkennung UND für die Boost Funktion die direkte Ansteuerung des Mode (einzelne Scripte).
In der Fritzbox habe ich die Zeitsteuerung deaktiviert (alles auf Tag oder Absenkung) und so wird nur aus dem ioBroker geregelt.Ach so: Heizungssteuerung mache ich über den "heatingcontrol" Adapter.
Danke. Du hattest mir schonmal vorgeschlagen den mode zu nutzen und erklärt, dass das Thermostat im Blockly Skript nichts verloren hat. Ich finde aber nicht, wie das Skript anders aufgebaut werden kann. Könntest Du bitte dein Skript hier zur Orientierung posten oder mir per Nachricht schicken? Ich weiß, dass du kein Blockly verwendest, aber vielleicht kann ich ja trotzdem etwas damit lernen.
-
@_tobias_
Ich denke ich habe das sogar noch als altes Blockly vorliegen:
-
@_tobias_ said in Xiaomi Fensterkontakt und Comet Dect:
Wie verhält sich das bei Euren Steuerungen @Chaot @vikk88 ? Was passiert wenn um 09:00 Uhr manuell der Thermostat aufgedreht wird - um 09:15 Uhr synchronisiert sich die Fritzbox das nächste mal mit dem Thermostat... Wird der Sollwert dann durch die Fritzbox wieder nach unten korrigiert?
Also bei meiner Steuerung ist es so, dass nur dann geschaltet wird wie es auch im Skript steht. Wenn das Thermostat sich um 6 Uhr auf 20 Grad stellt und ich stelle es eine Minute später manuell auf 16 Grad bleibt es bis zu nächsten Schaltzeit auf dem Wert.
-
@vikk88 said in Xiaomi Fensterkontakt und Comet Dect:
@_tobias_ said in Xiaomi Fensterkontakt und Comet Dect:
Wie verhält sich das bei Euren Steuerungen @Chaot @vikk88 ? Was passiert wenn um 09:00 Uhr manuell der Thermostat aufgedreht wird - um 09:15 Uhr synchronisiert sich die Fritzbox das nächste mal mit dem Thermostat... Wird der Sollwert dann durch die Fritzbox wieder nach unten korrigiert?
Also bei meiner Steuerung ist es so, dass nur dann geschaltet wird wie es auch im Skript steht. Wenn das Thermostat sich um 6 Uhr auf 20 Grad stellt und ich stelle es eine Minute später manuell auf 16 Grad bleibt es bis zu nächsten Schaltzeit auf dem Wert.
Ok, beruhigend, danke
@vikk88 said in Xiaomi Fensterkontakt und Comet Dect:
Ich habe zwar nicht die Fritz Thermostate sondern die Max aber ich habe dies auf dem Manual Modus laufen und habe meine Zeitpläne über Blockly konfiguriert. So zum Beispiel.
Die Xiaomi Fensterkontakte habe ich auch. Diese steuere ich so.
Hier merkt er sich den zuvor eingestellten Wert, schaltet das Thermostat bei geöffnetem Fenster ab und stellt den zuvor gespeicherten Wert beim Schließen wieder ein.
Noch eine Anfängerfrage... Beide von dir gezeigten Skripte beziehen sich ja (u.a.) auf die Heizung im Bad. Schreibt man sowas als zwei separate Skripte oder hast du ein Skript angelegt und darin einmal den Zeitplan und einmal den Falls Objekt Trigger für die Fensterkontakte eingefügt?
-
@Chaot Danke! Erstmal verstehe ich nur Bahnhof^^ Aber ich muss mich auch erstmal damit beschäftigen.
-
@_tobias_ Ich habe zwei Skripte gemacht man kann aber auch beides in einem unterbringen. Was davon jetzt besser oder schlechter ist weiß ich auch nicht .
Wenn du willst kann ich das Blockly hochladen wenn es dir hilft. -
@vikk88
Erst mal nicht, vielen Dank. Deine Screenshots helfen schon genug und ich lerne Blockly vermutlich schneller, wenn ich die Skripte selbst schreibe und bloß kopiere.
Sehe ich es eigentlich richtig, dass du von 5 - 7 auf 20°C heizt, von 7 - 12 senkst du auf 16°C ab und ab 12 Uhr heizt du erneut - bis wann? Bis 5 Uhr morgens des Folgetages? Vermutlich hast du das nur so programmiert, weil im Laufe der Nacht sowieso die Heizung abschaltet oder möchtest du wirklich die ganze Nacht das Bad geheizt haben?
Im Zimmer von unserem Kleinen soll auch nachts leicht geheizt werden. Deshalb habe ich die Nachtabsenkung an der Heizung deaktiviert. Daher "kopiere" ich dein Skript mit einem Zeitplan mehr, der abends die Temperatur wieder absenkt. -
@_tobias_
Ne ich senke um 21 Uhr nochmal auf 16 Grad ab. Hat nur nicht mehr auf den Screenshot gepasst -
@vikk88 ^^ Alles klar
-
Ich glaube, dass es jetzt so funktioniert wie ich möchte.
Ihr seid super, vielen Dank.Zu erst hatte ich versucht die Steuerung für die Fensterkontakte von @vikk88 auf meine Comet Dects zu übertragen. Als Objekt ID habe ich den "lasttarget" verwendet, unter der Annahme, dass der sich durch das Öffnen des Fensters von 22 auf 1 reduziert. Das tut er allerdings nicht, der Lasttarget bleibt bei 22, der mode springt auf 1 = closed.
Jetzt weiß ich auch, was du meintest @chaot, als du gesagt hast, ich muss den mode nutzen.Nach ein wenig hin und her sieht ein Skript jetzt so aus und scheinbar funktioniert ist:
So muss ich noch nicht mal die Zeitsteuerung von der Fritzbox entkoppeln und in iobroker erstellen. Das hätte den Vorteil, dass das kleine lcd Diplay an den Cometen weiter anzeigt von wann bis wann der Heizzyklus programmiert ist.
Im Skript bekomme ich eine Fehlermeldung/Hinweis "javascript.0 script.js.Heizung_Gäste_WC_Test_1: Cannot parse "fritzdect.1.Comet_119630432256"SyntaxError: Unexpected token r in JSON at position 1" und das Skript läuft zwar, aber der grüne Pausebutton ist gelb dargestellt. Ich weiß nicht was das bedeutet, aber scheinbar funktioniert trotzdem alles.
-
@_tobias_ Das scheint irgendwie nicht zu stimmen.
"Steuere Targettemp mit 1" ist sicher falsch. Das sollte eigentlich
"Steuere MODE mit 1 " lauten
Der Umweltsensor wäre in deinem Fall der Fensterkontakt. -
@Chaot danke für deinen Blockly Screenshot.
Wenn ich das Skript von dir nachbaue passiert leider gar nichts.
Wenn ich die "1" bzw. "0" nicht als Textfeld anlege sondern als Zahlen aus dem Ordner Mathematik funktioniert die Fensterkontaktschaltung
Allerdings leider erneut unabhängig davon, ob bei der Fritzbox gerade eine Heizphase oder eine Sparzeit für das Thermostat hinterlegt ist.
Das wundert mich etwas, weil eigentlich sagt das Skript ja nur, dass bei geschlossenem Fenster der Thermostat in auto mode wechseln soll. Er öffnet aber unmittelbar nach der nächsten Synchronisation unabhängig davon, ob er im auto mode eigentlich zu sein sollte. Bei meinem Test eben wurde sogar am Display des Cometen angezeigt, dass nur bis 14:00 Uhr geheizt werden soll. Um 14:30 Uhr wurde das Fenster geschlossen, der Comet springt in Automode und öffnet das Thermostatventil...Scheint so also müsste ich doch die Zeitsteuerung auch über iobroker darstellen.
Noch ein anderes Problem. Kann es sein, dass ältere Bearbeitungsstände der Skripte irgendwie noch wirken können oder deaktivierte Skripte wirken können?
Nachdem ich die Probleme mit der Überlagerung der Fensterkontaktschaltersteuerung mit den Fritzbox Steuerung bemerkt habe, habe ich die Skripte der Fensterkontaktsteuerung für den Raum in nur nachts geheizt werden soll deaktiviert. Also im iobroker unter Skripte auf das Pausesymbol gedrückt. Es wird auch beschrieben "Skript läuft nicht". Nach dem Öffnen und Schließen des Fensters in diesem Raum hat das Thermostatventil trotzdem wieder geöffnet.
In einem anderem Raum ist mir etwas vergleichbares aufgefallen.Kann man den Adapter resetten oder muss ich den neu installieren? Wenn ich die Skripte als Backup exportiere, wo werden die dann gespeichert? Ich möchte nicht alle neu schreiben müssen.
-
@_tobias_
Hast du mal geschaut ob der Datenpunkt geschrieben wird?
Ich denke mal das da gar nichts geschrieben wird.Wenn du Scripte häufig startest und stoppst kann es passieren das ein Script einfach mal weiterläuft. Das habe ich auch schon erlebt. Bei mir habe ich mir angewöhnt nach mehrfachen Scriptstarts auch mal zwischendurch den IoBroker neu zu starten.
Scripte sichern?
Ich persönlich mache zwar regelmäßig ein Backup in Proxmox, aber für Scripte habe ich mir angewöhnt die zu exportieren und als Textdatei in einem eigenem Ordner auf dem PC zu lagern.
Einerseits kann ich die dann auch schnell mal editieren (Notepad++) ohne über den internen Editor zu gehen und andererseits sind die dann auch wirklich sauber gesichert unabhängig davon was mit dem ioBroker passiert. -
@Chaot Also der Wert von Mode wechselt beim Schließen des Fensters von on 0 auf 1 und beim Öffnen von 1 auf 0, falls du das mit Datenpunkt geschrieben meinst?
Zum Zeitpunkt des Screenshots ist das Fenster geöffnet.
Wenn am Fenster nicht rumgespielt wird und es geschlossen bleibt dann steht permanent eine 0 als Wert drin. Unabhängig davon, ob über die Fritzbox das Thermostatventil aktuell angesteuert wird oder nicht.Wenn ich bei geschlossenem Thermostatventil, außerhalb der programmierten Heizzeit das Fenster schließe, wechselt der Wert von 1 auf 0 aber das Thermostat öffnet trotzdem.
-
@_tobias_ Wenn der Wert im Thermostat auf 0 wechselt ist er dann doch im Automatikmodus. Das er dann öffnet ist doch normal.
Nur zum Verständnis:
Du kannst an den DECT Thermostaten keine manuelle Regelung einrichten. Wenn du den Thermostat auf irgendeinen Modus schaltest wird das bei der nächsten Kommunikation mit der Fritzbox wieder aufgehoben.
Ebenso dauert die Übertragung zum Thermostat bis zu 30 Minuten.
Deshalb ist eine Fenstererkennung mit den DECT Thermostaten eigentlich Blödsinn. Aber das habe ich ja schon mal geschrieben. -
@Chaot nochmals danke für die ganze Zeit die du damit verwendest mir zu helfen. Aber ich glaube auch, dass wir etwas an einander vorbei geredet haben. Das liegt vermutlich an meiner laienhaften Fehlerbeschreibung.
Ich versuche es mit einem Beispiel:Ja der Thermostat wechselt auf 0 und ist damit im Automatikmodus.
In der Fritzbox steht z.B. von 08:00 - 18:00 Uhr auf heizen.
Dann macht doch der Automatikmodus nichts anderes als von 08:00 - 18:00 Uhr zu heizen. Von 18:00 Uhr - 08:00 Uhr heizt er dementsprechend nicht. Im Automatikmodus steht immer eine 0, der Automatikmodus ist 24h aktiv.- Öffne ich das Fenster von 12:00 - 14:00 Uhr, schließt und öffnet der Fensterkontakt das Thermostatventil unter Berücksichtigung der Verzögerung die sich bei Fritz + Dect Thermostaten ergibt.
So weit so gut.
- Öffne ich das Fenster von 17:00 Uhr - 19:00 Uhr schließt und öffnet der Fensterkontakt das Thermostatventil genauso. Das Schließen des Fensterkontaktes um 19:00 Uhr (also außerhalb der Heizphase laut Automatikmodus) bewirkt also ein öffnen des Thermostates, obwohl die laut Automatik programmierte Heizphase vorbei ist.
Die Heizung heizt die ganze Nacht durch, da kein programmierter Schaltwechsel aus dem Automatikmodus heraus das Thermostat nochmal zu fährt.
Das ist das Problem, welche ich beheben möchte.
Aktuell bearbeite ich folgenden Ansatz.
Ich teste erneut mit den Targettemps, da der Ansatz mit den modes scheinbar nicht gegen ein Betätigen der Fensterkontakte außerhalb der Heizphasen schützt:Das hat eben testweise funktioniert.
Ich möchte das mit der zeitlichen Verknüpfung entsprechend der jeweiligen Heizphase im Raum optimieren. Aber dann sollte es klappen. -
@vikk88 die rot eingekringelten Elemente sind in Blockly eingefügte, selbst erstellte Variablen oder?
Falls ja, wie schafft man es, dass das in der Steuerung auch funktioniert? Hast du Datenpunkte erstellte, die genauso heißen und bei gleicher Schreibweise findet das Skript den Datenpunkt oder kommt man über den Baustein irgendwie in ein Menü, in dem man den Datenpunkt auswählt ähnlich wie bei der Auswahl einer Objekt ID?Falls außer vikk88 noch jemand eine Lösung kennt, gerne her mit den Infos ^^
-
@_tobias_
wenn du eine Variable erstellst bekommst du pro Variable folgende BausteineIn meinem Skript wird die Variable durch den Wert des Thermostates gesetzt und überall wo dieser jetzt gesetzt wird, wird jetzt der Wert vom Thermostat welcher zu dem Zeitpunkt eingestellt wird
-
@vikk88 ok, das dachte ich mir danke für deine Erklärung.
Ich habe es bei mir eigentlich genauso versucht. Einmal habe ich die Variable wie die Objekt ID "last target" des Thermostates genannt, einmal habe ich sie so benannt, wie ein im Thermostat angelegter Datenpunkt.
Beides hat nicht funktioniert.Darf ich vielleicht doch noch darauf zurück kommen, dass du mir dein Blockly mal zudendest?
-
@_tobias_ klar