Warum nicht ein Adapter?

Nachdem ich immer wieder Probleme mit den mit HeatingControl Adapter hatte
und auch die Menge an zu pflegenden Datenpunkten mir etwas zu viel waren, habe ich meine Heizungssteuerung mit einen JS-Script innerhalb von ioBroker umgesetzt.

Was kann das JS-Script?

  • Global:
    • die Heizperiode zum an oder abschalten
    • die Austemperatur
    • Anwesenheit die beschrieben werden kann durch z.B. Traccar
  • Pro Raum:
    • eine Heiz Temperatur
    • eine Nachtabsenkung Temperatur
    • Verzögerung für Heizunterbrecher
    • pro Wochentag eine von bis Heiz Zeit (z.B. 06:00-22:00)
  • Es kann die Anwesenheit von Personen berücksichtigen
  • Fenster und Tür Kontakte können auch berücksichtig werden

Was für Voraussetzungen brauche ich?

  • Soll ein Heizkörperthermostat von den JS-Script gesteuert werden
    • muss dieser einen Raum zugeordnet werden
    • muss die Funktion Heizung (ID: heating) zugeordnet sein
      • diese erstellt man unter Aufzählung (enums)
  • Wenn das Heizen von einen Fenster/Tür Kontakt unterbrochen werden soll
    • muss dieser einen Raum zugeordnet werden
    • muss die Funktion HeatingBreaker (ID: heating_breaker) zugeordnet sein
      • diese erstellt man unter Aufzählung (enums)

Wie geht der JS-Script vor?

Das JS-Script sucht beim Start nach allen Räumen die ein Heizkörperthermostat haben die mit Funktion Heating belegt ist.

Danach sucht das JS-Script im jedem Raum im dem es passendes Heizkörperventil gefunden hat nach einen oder mehreren HeatingBreaker wie in meinen Fall Fenster und Tür Kontakte.

Wenn ein HeatingBreaker aktiviert wird (z.B. Fenster geöffnet) schaltet er in den Raum die Heizung ab.
Auch wenn der Datenpunkt für die Abwesenheit gesetzt wird die Temperatur auf die Nachtabsenkung Temperatur gesenkt.

Script:

Das JS-Script finden ihr hier im verlinkten Repo.

Meine Hardware:

Ich setzt fast ausschließlich Zigbee Komponenten, daher hier meine Zigbee lastige Hardware :o)

Mit * markierte Links sind Amazon ParnerNet Affiliate Links


16 Kommentare

Thomas · 4. Januar 2022 um 23:57

Ich habe vor ein paar Tagen das Script gefunden und versuche es seid dem zum laufen zu bekommen. Leider kenne ich mich mit JS nicht aus und kann die Fehler daher nicht zuordnen.

Alle Heizkörperthermostate sind Räumen zugeordnet und die Funktion Heizung ist angelegt Die Fensterkontakte sind als HeatingBraker angelegt.
Beim Start werden nur die Dantenpunke 0_userdata.0.Heating.heating_period, off_temp und present angelegt, das wars aber auch schon.

Es werden zwei Fehler im JS angezeigt:
Zeile 99:
Argument of type ‚{ common: { name: string; }; type: „folder“; }‘ is not assignable to parameter of type ‚(Omit & { _id?: string; acl?: StateACL; }) | (Omit & { _id?: string; acl?: ObjectACL; }) | … 10 more … | (Omit & { …; })‘.
Type ‚{ common: { name: string; }; type: „folder“; }‘ is not assignable to type ‚Omit & { _id?: string; acl?: ObjectACL; }‘.
Property ’native‘ is missing in type ‚{ common: { name: string; }; type: „folder“; }‘ but required in type ‚Omit‘.(2345)

Zeile 123:
Argument of type ‚{ common: { name: any; }; type: „folder“; }‘ is not assignable to parameter of type ‚(Omit & { _id?: string; acl?: StateACL; }) | (Omit & { _id?: string; acl?: ObjectACL; }) | … 10 more … | (Omit & { …; })‘.
Type ‚{ common: { name: any; }; type: „folder“; }‘ is not assignable to type ‚Omit & { _id?: string; acl?: ObjectACL; }‘.
Property ’native‘ is missing in type ‚{ common: { name: any; }; type: „folder“; }‘ but required in type ‚Omit‘.(2345)

    Avatar-Foto

    IdleBit · 11. Januar 2022 um 12:01

    Hi Thomas, den „Fehler“ kannst Du ignorieren.
    Was für Thermostate nutzt du denn?

      Thomas · 11. Januar 2022 um 15:24

      Danke für die Antwort.
      Ich benutze TuYa TS0601_Thermostate und TuYa TV02-Zigbee Thermostate.

      Leider kann ich hier keine Bilder anfügen sonst hätte ich ein Screeshot von den Einstellungen beigefügt.

      Gruß Thomas

hmpl · 7. November 2021 um 19:22

Tolles Skript, gefällt.mir sehr gut. Das einzige was ich toll finden würde, wären mehr als ein Heizintervall pro Tag. die Schlafzimmer sollen bei mir bspw. nur zwischen 6:00 und 9:00 sowie zwischen 21:00 und 23:00 geheizt werden. Sowas wäre aber ohne grössere Änderungen am skript nicht möglich,.oder? planst du zufällig eine Weiterentwicklung in diese Richtung…?

    Avatar-Foto

    IdleBit · 22. November 2021 um 21:12

    Nein, eine Weiterentwicklung in dieser Richtung ist erstmal nicht geplant.

Thomas Krebs · 6. November 2021 um 09:42

Hallo IdleBit,
ich habe mal vor einiger Zeit Dein DOIF für das Fenster-Monitoring genutzt, mittlerweile überwache ich zusätzlich damit Batterie- und Rauchmelderstatus. Klappt also perfekt. Ich nutze ioBroker eigentlich nur für Zigbee und Enocean, klappt auch super. Die eigentliche Visualisierung läuft aber über FHEM. Seit einiger Zeit versuche ich mit Blockly es zu realisieren, dass wenn Fenster auf dann Heizung aus. Bekomme das aber nicht hin. Leider kann ich mit dem JS garnichts anfangen und verstehe nicht wie und wo ich das sehe. Skript im JS einlesen klappt aber dann hört der Wissenstand schon auf. Kannst Du mir bitte eine Hilfestellung geben?

VG Thomas

    Avatar-Foto

    IdleBit · 6. November 2021 um 12:15

    Moin Thomas,

    leider wirst du das aus meinem Script so nicht für deins übernehmen können.
    Da bei mir alles er zur Laufzeit erstellt und geprüft wird und es sind mehrere Funktionen die hier ineinandergreifen.

      Thomas Krebs · 6. November 2021 um 12:28

      Das ist ja schade, dann muss ich weiter probieren. Trotzdem vielen Dank
      VG Thomas

Daniel Gruber · 29. Oktober 2021 um 08:02

Hallo,

Danke für das Skript es funktioniert auch relativ gut bekomme aber immer diese Warnung:
You are assigning a string to the state „zigbee.0.00158d00032f702c.heating_setpnt_current“ which expects a number. Please fix your code to use a number or change the state type to string. This warning might become an error in future versions.

kenne mich leider mit JS nicht aus und finde den Fehler nicht

andi · 18. September 2021 um 14:56

Hallo Dennis
Bei der Suche nach einer Alternative zum IoB Adapter Heating Controll bin ich auf diese Webseite gestossen. Mir ist der HC Adapter auch irgendwie zu schwerfällig und vor allem zu undokumentiert. Darum meine Frage: Kann man das Script anpassen, das es auch mit Enocean-Geräte funktioniert?

Ich ich habe bei mir 3 Geräte Batterieloser Heizkörperantrieb, Raumfühler und Fensterkontakt. Die sind alle im IoB bereits drin. Ebenfalls weiss ich bereits wie ich dem Antrieb die Daten übermitteln muss. Was muss ich im IoB alles für Objekte und Datenpunkte anlegen?

Grüsse aus der Schweiz
Andi
iob-forum:andibr

    Avatar-Foto

    IdleBit · 18. September 2021 um 15:17

    Hi Andi,

    wie heißt denn der State der für die Zieltemperatur bei deinen Enocean Thermostaten?

      Andi · 18. September 2021 um 15:30

      Beschreibung kommt per Mail, weil etwas grösser und aufwendiger.
      Gruss Andi

        Avatar-Foto

        IdleBit · 18. September 2021 um 15:45

        Wir könne uns auch mal in ioBroker Discord treffen.

Schreibe einen Kommentar

Avatar-Platzhalter

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.