NEWS
Homematic Heizkörperthermostate gehen in Auto-Modus
-
Guten Abend,
zur Steuerung meiner Homematic Heizkörperthermostate anhand des Status der Fenster im Raum, habe ich eigene Funk-Fensterkontakte entwickelt. Ich weiß es gibt auch welche von Homematic, welche ich auch erst im Einsatz hatte, aber nach und nach möchte ich Homematic durch eine Eigenentwicklung ablösen.
Der Fensterkontakt liefert dem ioBroker je nach Fensterstatus ein "close" oder "open". Für jeden Raum in meinem Haus gibt es dann eine zusammenfassende User-Variable (wichtig für Räume mit mehreren Fenstern), welche auf 0 gesetzt wird sobald ein Fenster auf ist und auf 1 sobald alle Fenster wieder zu sind. Abhängig von dem Status dieser Raum-Variablen setze ich die Heizkörperthermostate im Raum entweder auf 5°C wenn die Fenster auf sind oder auf den Auto-Modus wenn die Fenster zu sind.// Bath downstairs on({id: [].concat(['0_userdata.0.Window.BathDownstairs']), change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("0_userdata.0.Window.BathDownstairs").val == '0') { setStateDelayed('hm-rpc.0.MEQ1587544.4.MANU_MODE', 5, false, parseInt(((0) || "").toString(), 10), false); setStateDelayed('hm-rpc.0.MEQ1587544.4.CONTROL_MODE', "MANU-MODE", false, parseInt(((0) || "").toString(), 10), false); } else if (getState("0_userdata.0.Window.BathDownstairs").val == '1') { setStateDelayed('hm-rpc.0.MEQ1587544.4.AUTO_MODE', true, false, parseInt(((0) || "").toString(), 10), false); } });
Für Räume mit nur einem Heizkörperthermostat funktioniert das auch sehr gut und das schon seit einigen Wochen.
Problematisch ist es jedoch bei Räumen, in denen mehrere Heizkörperthermostate und ein Raumthermostat (auch Homematic) sind. Für das Wohnzimmer sieht das Skript da z.B. so aus:
// Livingroom/kitchen on({id: [].concat(['0_userdata.0.Window.Livingroom']), change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("0_userdata.0.Window.Livingroom").val == '0') { setStateDelayed('hm-rpc.0.NEQ0311531.4.AUTO_MODE', false, false, parseInt(((0) || "").toString(), 10), false); setStateDelayed('hm-rpc.0.LEQ1200930.4.AUTO_MODE', false, false, parseInt(((0) || "").toString(), 10), false); setStateDelayed('hm-rpc.0.MEQ1587567.4.AUTO_MODE', false, false, parseInt(((0) || "").toString(), 10), false); setStateDelayed('hm-rpc.0.LEQ1200913.4.AUTO_MODE', false, false, parseInt(((0) || "").toString(), 10), false); setStateDelayed('hm-rpc.0.MEQ0048839.2.AUTO_MODE', false, false, parseInt(((0) || "").toString(), 10), false); setStateDelayed('hm-rpc.0.NEQ0311531.4.MANU_MODE', 5, false, parseInt(((0) || "").toString(), 10), false); setStateDelayed('hm-rpc.0.LEQ1200930.4.MANU_MODE', 5, false, parseInt(((0) || "").toString(), 10), false); setStateDelayed('hm-rpc.0.MEQ1587567.4.MANU_MODE', 5, false, parseInt(((0) || "").toString(), 10), false); setStateDelayed('hm-rpc.0.LEQ1200913.4.MANU_MODE', 5, false, parseInt(((0) || "").toString(), 10), false); setStateDelayed('hm-rpc.0.MEQ0048839.2.MANU_MODE', 5, false, parseInt(((0) || "").toString(), 10), false); setStateDelayed('hm-rpc.0.NEQ0311531.4.CONTROL_MODE', "MANU-MODE", false, parseInt(((0) || "").toString(), 10), false); setStateDelayed('hm-rpc.0.LEQ1200930.4.CONTROL_MODE', "MANU-MODE", false, parseInt(((0) || "").toString(), 10), false); setStateDelayed('hm-rpc.0.MEQ1587567.4.CONTROL_MODE', "MANU-MODE", false, parseInt(((0) || "").toString(), 10), false); setStateDelayed('hm-rpc.0.LEQ1200913.4.CONTROL_MODE', "MANU-MODE", false, parseInt(((0) || "").toString(), 10), false); setStateDelayed('hm-rpc.0.MEQ0048839.2.CONTROL_MODE', "MANU-MODE", false, parseInt(((0) || "").toString(), 10), false); } else if (getState("0_userdata.0.Window.Livingroom").val == '1') { setStateDelayed('hm-rpc.0.NEQ0311531.4.AUTO_MODE', true, false, parseInt(((0) || "").toString(), 10), false); setStateDelayed('hm-rpc.0.LEQ1200930.4.AUTO_MODE', true, false, parseInt(((0) || "").toString(), 10), false); setStateDelayed('hm-rpc.0.MEQ1587567.4.AUTO_MODE', true, false, parseInt(((0) || "").toString(), 10), false); setStateDelayed('hm-rpc.0.LEQ1200913.4.AUTO_MODE', true, false, parseInt(((0) || "").toString(), 10), false); setStateDelayed('hm-rpc.0.MEQ0048839.2.AUTO_MODE', true, false, parseInt(((0) || "").toString(), 10), false); } });
In den meisten Fällen funktioniert es einfach gar nicht und die Heizkörperthermostate bleiben einfach in dem Zustand in dem sie gerade sind. Wenn es jedoch doch funktioniert, dann setzen sich die Heizkörperthermostate nach kurzer oder etwas längerer Zeit von selbst wieder zurück auf die im Auto-Modus eingestellte Temperatur. Der Manu-Modus bleibt jedoch aktiviert.
Könnt ihr mir da weiterhelfen?
-
Hast du mal probiert die ganzen Thermostate als Gruppe zu schalten?
Ich habe zwar nur 3 Thermostate in meiner größten Gruppe, jedoch klappt da alles wenn ich es in meiner Visualisierung über die Gruppe stelle.
-
Ich habe sie zwar gruppiert, aber noch nicht versucht es darüber zu machen. Bisher konnte ich die Gruppe noch nicht offensichtlich im ioBroker Adapter finden. Ist denn mein grundsätzliches Vorgehen so richtig? Also das ich erstmal den Auto-Modus wieder auf "false" setze, dann die Manu-Temperatur einstelle und dann noch den Manu-Modus aktiviere? Oder ist das theoretisch alles doppelt gemoppelt?
-
@jens-kathe sagte: Auto-Modus wieder auf "false" setze, dann die Manu-Temperatur einstelle und dann noch den Manu-Modus aktiviere?
Nur MANU_MODE aktivieren! Die Rückmeldung erfolgt im CONTROL_MODE und in SET_TEMPERATURE. Der CONTROL_MODE ist "read only".
-
@jens-kathe sagte in Homematic Heizkörperthermostate gehen in Auto-Modus:
Ich habe sie zwar gruppiert, aber noch nicht versucht es darüber zu machen. Bisher konnte ich die Gruppe noch nicht offensichtlich im ioBroker Adapter finden. Ist denn mein grundsätzliches Vorgehen so richtig? Also das ich erstmal den Auto-Modus wieder auf "false" setze, dann die Manu-Temperatur einstelle und dann noch den Manu-Modus aktiviere? Oder ist das theoretisch alles doppelt gemoppelt?
Für die Gruppen musst du eine eigene Instanz vom rpc anlegen.
Dort als Daemon "Virtual Devices" auswählen.
-
@jens-kathe sagte: auf 0 gesetzt wird sobald ein Fenster auf ist und auf 1 sobald alle Fenster wieder zu sind.
Als Zahl oder als String? Mit Zahl:
-
@paul53 Als Zahl.
Ich werde das nachher mal ausprobieren und gebe euch dann Rückmeldung -
@jens-kathe sagte in Homematic Heizkörperthermostate gehen in Auto-Modus:
Ich weiß es gibt auch welche von Homematic, welche ich auch erst im Einsatz hatte, aber nach und nach möchte ich Homematic durch eine Eigenentwicklung ablösen.
Warum wechselst du zu deiner Eigenentwicklung wenn Homatic bereits verbaut war?
Läuft bei mir sowas von stabil, dass mir eigentlich kein Grund einfällt (abgesehen vom Preis). -
@david-g Der Spaß es selbst zu machen