FHEM: Max!-Heizungsthermostate steuern

2015-03-14_fhem_maxIn der Hausautomatisierung ist die Heizungssteuerung eines der Grundelemente. Das Einsparen von Energie ist hier nur ein Teilaspekt, es geht auch um den Luxus, noch während man unterwegs ist das Wohnzimmer vorzuheizen. Es gibt diverse Anbieter, die hierfür Lösungen schaffen. Wie schon in vorherigen Artikeln geschrieben, war es ein geschenktes Max!-Thermostat, dass mich auf FHEM aufmerksam machte, welches mich wiederum zum Besitzer einer Banana Pro – Einplatinencomputers machte. Also wurde dies auch mein System zur Heizungssteuerung.

Wie installiert man so ein System? Im Grunde ist es recht einfach und erfordert keine tiefgreifenden Eingriffe: Zunächst werden die Heizungsthermostate durch digitale Thermostate ersetzt. Schon hier ergibt sich ein gewisses Einsparpotential, da ein Thermostat nicht mehr ständig auf höchster Stufe steht sondern den Zufluss zur Heizung je nach eingestellter Temperatur regelt. Zwar funtkionieren die Thermostate autark, doch ist es wesentlich cooler sie fernsteuern zu können. Hierfür wird eine zentrale Komponente benötigt, in diesem Fall der Max!Cube. Dieser kleine Würfel ist mit Strom und Netzwerk zu versorgen, dann verbindet er sich zu einer Windows-Software und – wenn aktiviert – in eine Cloud. Aber wer will das schon, wenn man doch FHEM hat ;-).

Einrichtung in FHEM

Schließt man den Max!Cube an sein Netzwerk an, so wird diesem eine IP-Adresse zugeteilt. Nun gibt es zwei Wege, das Max!-Netzwerk einzurichten: Entweder man nutzt die Windows-Software, oder man hangelt sich durch den FHEM. Die Windows-Software durchsucht das Netzwerk nach dem Cube. Dies führt nur dann zum Erfolg, wenn man wirklich im selben Netzwerk ist und nicht etwa in einer Virtualbox arbeitet. In letzterem Fall kommt man auch dann nicht auf die Oberfläche, wenn man die IP-Adresse von Hand eingibt. Wird das Gerät gefunden, so ist der Rest schnell zusammengeklickt. Wo zu klicken ist versteht man, wenn man denn weiterliest: Ab hier geht es nun nur noch um FHEM.

Eine MAXLAN-Definition stellt unserem FHEM den Max!Cube vor:

define MAXCube MAXLAN <IP> 180 ondemand

Diese sagt aus, dass der Cube alle 180 Sekunden abgefragt werden soll und – das besagt das ondemand-Flag – das auch andere Systeme wie die Windows-Software oder die Cloud mitreden dürfen. Gerade letzteres kann sinnvoll sein, da es für Mobiltelefone einfach schönere Apps gibt.

Geräte anlernen

Jetzt, wo FHEM das Max!-System grundsätzlich kennt, müssen die Thermostate hinzugerufen werden. Der Befehl

set MAXCube pairmode 60

lässt unseren Würfel nach neuen Geräten suchen, die auch gerade auf Partnersuche sind. Bei den Thermostaten drückt man den „Boost“-Knopf länger als 3 Sekunden, um eine 30-sekündige Partnersuche auszulösen. Geht alles nach Plan, so erkennen der Cube und FHEM das neue Gerät und benennen es sechstellig hexadezimal. Das ist für uns Menschen freilich nicht schön. Darum passen wir die neue Konfiguration in FHEM einfach an. Ich editiere dazu immer die Konfigurationsdatei auf der Konsole, das hilft mir, den Überblick zu behalten. Ein definiertes Thermostat sieht demnach wie folgt aus:

define wohnzimmer MAX HeatingThermostat 0fc3a7
attr wohnzimmer IODev MAXCube

Dabei ist „heizung_wohnzimmer“ meine eigene Definition und kann bei jedem anders heißen. Das Thermostat heißt in Wirklichkeit „0fc3a7“. Das Attribut „IODev“ erklärt, dass dieses Thermostat an das oben definierte Gerät „MAXCube“ angelernt wurde.

Diese Schritte sind mit allen Max!-Geräten zu wiederholen, bis FHEM sie alle anzeigt.

IST-Temperatur anzeigen

Klickt man im Web-Interface auf eines der Thermostate und schaut sich dessen Readings an, so fällt ein Parameter auf: temperature. Im Gegensatz zu vielen anderen Thermostaten liefern die von Max! eine tatsächlich gemessene Temperatur zurück. Allerdings geschieht diese Rückmeldung nur, wenn sowieso mit dem Gerät kommuniziert wird. Schön wäre ja, wenn man die Temperatur in den Räumen ständig überwachen könnte. Zumindest den Nerd begeistert das ;-). Hier kommt ein FHEM-Modul zum Einsatz: 99_UtilsMaxScan.pm.

Unter dem angegebenen Link kann das gleichnamige Modul heruntergeladen werden. Geladen wird es, wenn es in den Ordner FHEM kopiert wird. Für die Max!-Thermostate, für die es aktiviert wird, liefert es ein regelmäßiges Temperatur-Update. Dazu muss es regelmäßig etwas am Thermostat ändern, um dieses zum Senden der Temperatur zu bewegen. Hier bietet es sich an, das Thermostat zwischen den Modi „Manu“ (Temperatur bleibt wie eingestellt) und „Auto“ (Temperatur wird nach einem Zeitplan eingestellt) umzuschalten. Jede Umschaltung liefert die aktuelle Temperatur. Motiviert wird das System dazu durch die folgenden Attribute:

attr wohnzimmer scanTemp 1
attr wohnzimmer userReadings onlyAutoMode { return „0“;;}

Das erste Attribut aktiviert das hinzugefügte Modul, das zweite wählt den Modus zum Triggern aus. Setzt man anstelle der 0 eine 1, so wird die Solltemperatur regelmäßig um 0,5° nach oben und wieder nach unten korrigiert. Für mich scheint die Umschaltung zwischen Auto und Manu gut zu funktionieren. Details sind hier nachzulesen.

Übertriebenes Logging

Das angelernte Gerät loggt nun munter vor sich dahin und zwar neben der IST- und der SOLL-Temperatur auch eine ganze Menge unnötiger Daten. Hier muss optimiert werden. Dazu führte ich die folgenden Parameter ein:

attr wohnzimmer event-min-interval \
desiredTemperature:720,temperature:720,valveposition:720
attr wohnzimmer event-on-change-reading \
desiredTemperature,temperature,valveposition

Das „\“ gibt nur an, dass dies in der Konfigurationsdatei eine zusammenhängende Zeile ist. Die beiden event-Trigger funktionieren, wie im vorherigen FHEM-Artikel beschrieben. Für mich sind die drei angegebenen Werte die einzigen, die von Interesse sind: desiredTemperature ist der SOLL-Wert, temperature ist der IST-Wert und valveposition ist in Prozent angegeben die Öffnung des Ventils.

Ventilöffnungs-Voodoo: Überblick über alles

Ich finde es spannend zu sehen, wie stark im Haus geheizt wird. Dazu könnte ich mir jetzt die einzelnen Ventilpositionen aller Thermostate ansehen. Aber es geht auch einfacher. Ich lasse FHEM all‘ diese Werte addieren und plotte das Resultat. Dazu habe ich die folgenden Definitionen eingeführt:

define valve_sum dummy
attr valve_sum event-min-interval state:720
attr valve_sum event-on-change-reading state

define valve_sum_zaehler at +*00:03:00 {\
my $sum=0;;\
my $sum=$sum+ReadingsVal(„zimmer1″,“valveposition“,0);;\
my $sum=$sum+ReadingsVal(„zimmer2″,“valveposition“,0);;\
fhem(„set valve_sum $sum“);;\
}

Die erste Definition schafft einen Dummy-Wert. Dieser gehört zu keinem Gerät, wird aber geloggt. Die zweite Definition befüllt diesen Dummy-Wert. Das „at +*00:03:00“ ruft die Funktion alle 3 Minuten auf. Diese wiederum initialisiert die Variable $sum mit 0 und addiert in jeder Zeile die Ventilposition eines Thermostats hinzu. Letztendlich setzt die fhem-Funktion den Dummy-Wert auf den der Variable $sum.

Fine-Tuning

Gegebenenfalls möchte man die Temperaturen und Ventilstellungen plotten. Wie das geht, ist in meinem Artikel über den JeeLink nachzulesen.

Ich behalte – wie oben schon beschrieben – in meinen Konfigurationsdateien gern die Übersicht. Deswegen pflege ich für mein Max!-System alle Werte in einer fhem.max.cfg-Datei und binde diese per „include ./fhem.max.cfg“ in die eigentliche fhem.cfg-Datei ein.

Außerdem habe ich tatsächlich bei allen Geräten die ich sehen möchte die Definition

attr wohnzimmer room Heizung

hinzugefügt. Somit legt FHEM einen „Raum“ – also ein eigenes Submenu – für all‘ diese Geräte an.

Weiterführende Links

http://fhem.de/commandref_DE.html#MAX: Die FHEM-Befehlsreferenz. Parameter und deren Beschreibung findet man hier auf Deutsch und Englisch.

http://www.fhemwiki.de/wiki/MAX: Das sehr gut gepflegte und oft helfende Wiki des FHEM-Projektes.

http://forum.fhem.de/: Hier findet man eine sehr aktive Community, die Fragen binnen Stunden beantwortet. Aber Achtung: Wie bei jeder Community befreit auch diese nicht vom Selbstdenken! Also: Erst recherchieren, dann fragen.

http://www.elv.de: Anbieter von Max!-Komponenten mit einem Fundus an Dokumentationen

Mein Artikel: Erfahrungen mit Max!-Thermostaten und FHEM

8 Gedanken zu „FHEM: Max!-Heizungsthermostate steuern

  • 7. Februar 2016 um 11:52
    Permalink

    Solche Thermostate würde ich mir auch gerne anschaffen wollen. Da ich meine Heizkörper auch steuern möchte. Nur verwende ich auf meinem PC das Betriebssystem Linux. Wissen Sie ob diese Windowsanwendung für die Thermostate auch auf Linux laufen?

    LG

    Antworten
    • 7. Februar 2016 um 21:53
      Permalink

      Moin,

      die Windows-Anwendung ist unter Linux kaum benutzbar. Was ich hinbekommen habe, ist diese auf einem Windows-PC zu installieren und dort die Erstkonfiguration durchzuführen. Wenn man danach die Steuerung über die MAX-Cloud aktiviert, können Einstellungen per Browser auch unter Linux vorgenommen werden. Mehr Spaß machts aber mit FHEM ;-).

      Antworten
  • 15. November 2016 um 08:54
    Permalink

    Du kannst dir die Mac Version von Max herunterladen. Diese dann entpacken und die Java Version starten. Funktioniert unter Linux einwandfrei.

    Antworten
  • 9. Januar 2017 um 00:48
    Permalink

    Hallo,

    sehr gute Beschreibung! Danke dafür.
    Allerdings bekomme ich, immer wenn ich die Temperatur eine Thermostats einstellen will, die Meldung „MAXLAN_SimpleWrite:Not connected“ kannst du dir da einen Reim drauf machen?

    Antworten
  • 22. Januar 2017 um 11:41
    Permalink

    Hallo,
    ich hätte ein Frage zur Synchronisation zwischen dem Cube und dem Pi.
    Kann man das Intervall heruntersetzen?(Wenn ja wie ohne den Cube neu zu integrieren) Ich möchte gerne Fensterkontakte in Echtzeit Synchronisieren.
    Vielen Dank für einmal im vorraus.

    Antworten
    • 24. Januar 2017 um 19:14
      Permalink

      Hi,

      in der Zeile „define MAXCube MAXLAN 180 ondemand“ ist die „180“ das Abfrageintervall in Sekunden. Achte aber auf den Duty-Cycle (siehe Erfahrungen mit Max!-Thermostaten und FHEM)! Frage dochj sicherheitshalber noch einmal im FHEM-Forum nach …

      Edit: Ach und eines noch: Wenn Du Fensterkontakte und Thermostate koppelst, dann passiert alles ohne Pi und in Echtzeit.

      Antworten

Schreibe einen Kommentar

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