Dieser Beitrag beschreibt die Einbindung von MAX! Heizkörperthermostaten und Zubehör in ioBroker.
Hierfür wird der MAX! Cube LAN Gateway benötigt. Zur Anbindung an ioBroker nutzen wir den Adapter Max! Cube.
Installation des Adapters
Die Installation des Adapters Max! Cube erfolgt nicht über den Standardweg, sondern über GitHub. Dies ist erforderlich, da nur so an die aktuelle Version des Adapters (v1.0.2) kommen. Bei der über die Repositories verfügbaren Version v0.1.2 sind noch einige Fehler enthalten und beispielsweise das Setzen neuer Solltemperaturen würde nicht funktionieren.
Für die Installation von GitHub wählen wir in der Administrationsoberfläche unter Adapter oben den Button Installieren aus eigener URL. In dem sich öffnenden Fenster suchen wir im Reiter von GitHub nach maxcube, wählen diesen dann aus und klicken auf Installieren.
Im Anschluss an die Installation öffnet sich wie gewohnt die Adapterkonfigurationsseite. Auf dieser tragen wir die IP-Adresse oder den Hostnamen des MAX! Cube ein und bestätigen mit Speichern und Schließen.

Nun sollte die Adapterinstanz starten und eine Verbindung zum MAX! Cube herstellen.
Objekte des MAX! Cube
Bei erfolgreicher Verbindung mit dem MAX! Cube werden von dem Adapter automatisch alle im Cube bekannten Thermostate und Sensoren unter maxcube.0.devices.*
sowie einige allgemeine Informationen unter maxcube.0.info.*
angelegt.

Sollte bei einem Gerät error
auf true
gesetzt sein, so hilft oftmals ein Neustart des MAX! Cube.
Die unter temp
enthaltene Temperatur stellt die am Thermostat gemessene ist-Temperatur dar. Bei den Heizkörperthermostaten wird diese Temperatur immer nur bei einer Änderung (Modus, Ventilstand, …) übertragen und kann unter Umständen auch mal fälschlicherweise 0 °C betragen. Dies hängt mit dem Cube und der Kommunikation zwischen dem Cube und den Thermostaten zusammen und ist kein Fehler des Adapters.
Einbindung in VIS

Für die Einbindung in VIS empfehle ich den Adapter hqwidgets style Widgets zu installieren. Dieser bietet unter anderem ein schönes Widget für die Innentemperatur, über welches sich die aktuelle Temperatur, die Solltemperatur, der Ventilstand und gegebenenfalls eine Batteriewarnung ablesen lassen. Zudem ist es über das Widget möglich die Solltemperatur anzupassen.
Für die Umschaltung des Modus bietet sich beispielsweise das Widget Radiobuttons ValueList an.
Moduswechsel bei manueller Solltemperaturänderung
Wenn sich ein Thermostat im Automatikmodus befindet und über ioBroker die Solltemperatur geändert wird, dann versetzt der Adapter das Thermostat automatisch in den manuellen Modus.
Dieses Verhalten finde ich eher unpraktisch, da man damit bei jeder manuellen Änderung auch wieder daran denken muss, das Thermostat anschließend zurück in den Automatikmodus zu schalten.
Damit der Modus nach einer manuellen Änderung der Solltemperatur wieder auf Auto gestellt wird, habe ich ein kleines Skript erstellt. In ioBroker eingebunden stellt dieses Script dann kurz nach der Änderung wieder auf den Automatikmodus zurück, sofern dieser vorher aktiv war. Die zuvor manuell eingestellte Solltemperatur bleibt dabei bis zur nächsten automatischen Anpassung erhalten.
/**
* ioBroker Skript zum automatischen Zurücksetzen des Modus von MAX! Thermostaten
* auf Auto, wenn die Solltemperatur im Auto-Modus geändert wurde.
*
* Dies ist erforderlich, da die Thermostate durch den Max! Cube Adapter bei einer
* manuellen Änderung der Solltemperatur immer in den manuellen Modus versetzt werden.
* Dieses Script erkennt diese Änderung und setzt den Modus zurück auf Auto.
*
* Copyright (c) 2019-2021 Peter Müller (https://crycode.de)
*/
/**
* Liste an Thermostaten, die ignoriert werden sollen.
* Dies können z.B. Wandthermostate sein, da diese zusammen mit dem zugehörigen
* Heizkörperthermostat arbeiten.
*/
const thermostatIgnore = [
'thermostat_18abcd'
];
// Auflistung aller Thermostate holen
const devices = $('maxcube.0.devices.thermostat_*.mode');
// Alle Thermostate durchgehen
devices.each((id) => {
id = id.replace(/\.mode$/, '');
// Prüfen ob das aktuelle Thermostat ignoriert werden soll
const rfId = id.split('.')[3];
if (thermostatIgnore.indexOf(rfId) !== -1) return;
log('setup mode switch back for ' + id);
// Handler für einen Moduswechsel anlegen
on({ id: id + '.mode', change: 'ne'}, (obj) => {
// AUTO(0) -> MANUAL(1) ?
if (obj.newState.val === 1 && obj.oldState.val === 0) {
// Letzte Sollwertänderung laden und Zeitpunkt prüfen
getState(id + '.setpoint', (err, state) => {
// Wechsel des Modus innerhalb von 10 Sekunden nach dem Wechsel des Sollwerts?
if (state.ts > obj.newState.ts - 10000) {
// Modus zurück auf Auto setzen
log('switching ' + id + ' back to auto mode');
setState(id + '.mode', 0);
}
});
}
});
});
Das Skript kann direkt so übernommen werden. Lediglich die IDs der ignorierenden Thermostate müssen gegebenenfalls angepasst werden.
Die grundlegende Verwendung von Skripten habe ich im Beitrag ioBroker Skripte beschrieben.
19. Okt. 2019 um 10:28
Hallo,
Bin gerade über diese Seite gestoßen, weil ich eine Umschaltung des Modezustandes suche.
Hatte mich schon auf eine Lösung gefreut , allerdings habe ich meine !Max Thermostate noch in FHEM integriert und greife mit dem FHEM Adapter auf die Werte in FHEM zu, da es mir mit dem !Max Scanner erlaubt die Temperatur alle 3 min auszulesen.
Könnte man das evtl. auch mit einem Script in IoBroker realisieren ohne das die Duty Cycle in höhe gehen?
19. Okt. 2019 um 13:59
Hallo,
das sollte machbar sein.
Ich werde es in den nächsten Tagen mal testen und dann berichten. 🙂
19. Okt. 2019 um 18:54
Das wäre super, danke.
24. Okt. 2019 um 21:37
Ich habe das Ganze jetzt mal versucht mit einem ioBroker Skript und dem Maxcube Adapter nachzubilden, jedoch mit leider bislang recht erfolglos.
Per Skript habe ich den Modus von zwei Thermostaten alle 10 Minuten auf Manuell und wieder zurück auf Auto schalten lassen, wobei der Duty Cycle auf rund 55% hoch ging.

Die aufgezeichneten Daten der Ist-Temperatur sehen dabei aber leider nicht wie gedacht aus, sondern sehr zerstückelt:
Ich denke dies liegt daran, dass die Thermostate (oder der Cube?) auch immer wieder 0 °C als Ist-Temperatur melden. Zudem scheint auch nicht bei jedem Moduswechsel die aktuelle Temperatur übertragen zu werden.
Ein weiterer Nebeneffekt des Tests war es, dass von anderen Thermostaten teilweise die Daten nicht mehr korrekt erfasst wurden und größere Lücken entstanden.
Du könntest das Thema vlt. mal im GitHub Projekt (https://github.com/ioBroker/ioBroker.maxcube) als Issue anfragen. Eventuell hat der Autor des Adapter dazu eine Idee.
25. Okt. 2019 um 15:04
Hi, danke für deinen Test,
das gleiche konnte ich auch beobachten.
Interessant, dass es mit dem !MAX Scanner irgendwie doch geht.
Aber das mit der Issue Anfrage auf GitHub könnte man mal veranlassen.
30. Okt. 2019 um 9:17
Hallo!
Super Anleitung – Vielen Dank!
Alle Werte werden angezeigt und ich kann die Modi und Temperaturen auch in Vis einstellen.
Allerdings springt alles wieder nach wenigen Sekunden auf den Ausgangswert zurück.
Was mache ich falsch?
Viele Grüße, Martin
30. Okt. 2019 um 9:47
Welche Version hast du installiert?
Oben steht ja, dass es bei der 0.1.2 Probleme beim setzen der Temperatur gibt.
30. Okt. 2019 um 10:16
Die 1.0.1 aus Github. Nachdem ich versucht habe etwas zu verstellen, erscheint noch ein kleines Zahnrädchen am Widget.
Update: Habe gerade nochmal versucht die Temperatur zu verstellen. Jetzt hat es funktioniert (kein Zahnrad danach ). Bei nächsten Versuch ging es wieder nicht. Die Temperatur ist in der Anzeige jetzt “0”. Vielleicht bin ich auch zu ungeduldig, das dauert ja manchmal recht lange, bis die Daten am Thermostat ankommen.
Wie kann ich prüfen, ob alle funktioniert, so wie es eben mit dem max cube möglich ist?
30. Okt. 2019 um 18:21
Hallo,
das kleine Zahnrad ist normal und sollte beim nächsten Update vom Cube verschwinden. Als Aktualisierungsintervall habe ich bei mir 10000 ms eingestellt. Standard war glaube ich 30000 ms.
Das von dir beschriebene Problem hatte ich ganz am Anfang auch. Geholfen hat da bei mir ein Neustart vom Cube (Strom ab und ca. 5 Sekunden später wieder ran) und anschließend ein Neustart vom Adapter.
Die Anzeige von 0 °C bei der Ist-Temperatur habe ich auch immer wieder. Soviel ich dazu bisher gelesen habe ist das wohl normal und wird vom Cube so gemeldet. Die originale Max! Software zeigt die Ist-Temperatur auch nicht an, da diese eh nur bei einer Bewegung des Ventils übermittelt wird.
Überprüfen ob es funktioniert kannst du recht einfach mit einem Blick auf das jeweilige Thermostat. Änderungen sollten hier eigentlich innerhalb weniger Sekunden (meistens sofort) übernommen werden.
30. Okt. 2019 um 23:44
Jetzt läufts!
Es dauert ein paar Sekunden, bis Änderungen an den Heizkörpern sichtbar sind.
Die 0 Grad Anzeigen auf den Heizkörpern aktualisieren sich so langsam auch.
Danke für die Unterstützung und die klasse Anleitung.
2. Dez. 2019 um 20:17
Habe per Github den Max Adapter installiert. System meldet OK, aber ich sehe den Adapter nicht in Übersicht ?
3. Dez. 2019 um 8:20
Wurde eine Instanz des Adapters hinzugefügt?
Wenn nicht, dann musst du das manuell über die Adminseite machen.
8. Apr. 2020 um 15:14
Leider kam vom Adapter Hersteller bisher noch kein Temperatur Scanner wie in FHEM oder hat sich dazu in meiner Github Anfrage dazu geäußert. Trotzdem bin ich am
überlegen ob ich FHEM bei mir in Rente schicke, denn es macht immer mehr zicken. ioBroker läuft sehr gut mit meinem Pi4 4GB.
Wird denn öfters auch eine 0° bei der Ist-Temperatur in deinem VIS angezeigt?
Wäre nicht so schön wenn es die auch anzeigt. Falls ja, wie hast du das gelöst?
Hast du dein Script für den Mode Wechsel damals mit Blocky gemacht?
Irgendwie muss das doch funktionieren.
Grüße
Tobias
10. Apr. 2020 um 20:12
Die 0°C habe ich auch immer wieder in der VIS, sowie in den aufgezeichneten Daten.
Ist nicht besonders schön, aber bislang habe ich mich damit abgefunden.
Eine Möglichkeit die 0-Werte weg zu bekommen, wäre wahrscheinlich den Adapter selbst zu modifizieren, sodass Nullen einfach ignoriert werden. Wobei man dann auch nie weiß, ob die angezeigte Temperatur aktuell ist.
Das Script für den Moduswechsel hatte ich ohne Blocky gemacht, sondern den Code direkt geschrieben.
13. Apr. 2020 um 17:13
danke dir.
Hab mir jetzt von Xiaomi/aqara die Temperaturfühler bestellt.
18. Apr. 2020 um 20:53
Hi,
hab jetzt mal auf den Max! Adapter umgestellt.
Leider wechselt er bei manchen Thermostaten (evtl. verlinkte Thermostate) auch immer in den Auto Mode zurück wenn ich auf Manuell schalte.
Hintergrund ist, dass ich jetzt meine Thermostate nach und nach ausschalte.
Um sie dauerhaft ausschalten zu können müssen sie im Manuell Modus sein, da sie sonst im Auto Modus wieder in ihr Intervall wechseln.
auch der aus Befehl ist eigentlich nur die Temperatur auf 4.5° zu stellen, wodurch das Skript auch wieder auf Auto stellt.
Kann man da was machen?
20. Apr. 2020 um 10:32
Das Script sollte den Modus nur auf auto zurück schalten, wenn auch die Solltemperatur innerhalb der letzten 10 Sekunden verändert wurde.
Wenn du also einzeln den Modus auf manuell umschaltest und dann mindestens 10 Sekunden wartest bis zum Einstellen der Soll-Temperatur, dann müssten die Thermostate im manuellen Modus bleiben.
Alternativ kannst du am Anfang vom Script beim Array `thermostatIgnore` die IDs der Thermostate hinzufügen, die vom Script nicht beachtet werden sollen.
13. Mai. 2020 um 23:44
Hallo.
ich hab alle Geräte in iobroker leider kann ich nicht die Temperatur ändern…
Was mach ich falsch?
15. Mai. 2020 um 20:09
Hast du den Adapter wie oben beschrieben von GitHub installiert?
Dann solltest du die Version 1.0.1 haben. Falls du noch die v0.1.2 hast, dann sollte die Installation von v1.0.1 helfen.
30. Sep. 2020 um 10:56
Bekommt man denn noch irgendwo die 1.0.1 Version?
Musste bei mir komischerweise die Thermostate in der !Max App komplett neu installieren.
Leider habe ich nun das Problem, dass wenn ich die Temperatur in einem Raum ändere verschiedene Thermostate in verschiedenen Räumen die Temperatur auch wechseln.
In der !MaxApp habe ich in manchen Räumen mehrere Thermostate.
1. Okt. 2020 um 13:59
Mit dem oben beschriebenen Weg solltest du inzwischen die Version 1.0.2 bekommen, die aber genauso funktionieren sollte wie die 1.0.1.
Dein Problem klingt als wäre was in der Raumzuordnung verkehrt.
Generell sollte man nicht gleichzeitig die Max App und der Adapter laufen haben, da der Cube immer nur einen Client gleichzeitig verarbeiten kann.
14. Okt. 2020 um 14:14
Hab’s rausgefunden.
Musste nicht nur den Cube resetten sondern auch die Thermostate. Diese waren wohl noch irgendwie mit den Räumen verlinkt.
Sehr komisch denn bis auf die Raumanordnung in der App blieben die Thermostate ja gleich.
14. Okt. 2020 um 11:03
Bekomme keine Verbindung zum Adapter.
Habe den Cube umgeflasht auf CULFW.
Gibt es da irgendwelche Erkentnisse?
Vielen Dank
14. Okt. 2020 um 14:07
Vermutlich hängt das mit der anderen Firmware zusammen.
Stell deine Frage am besten mal im ioBroker Forum.
27. Okt. 2020 um 16:32
Hallo Peter,
ich bin sowohl neu im ioBrocker Universum als auch beim Thema Max!Cube.
Ich wrde gern dein Skript übernehmen habe aber mit der Skripterstellung noch keine Erfahrung und bräuchte daher Hilfe, wenn das möglich ist.
Wandthermostate habe ich keine.
Wenn ich das richtig sehe müßte ich also ab Zeile 22 anfangen, richtig?
Dort wo in deine Skript die ID in Klammern steht trage ich meine device id ein?
Ab Zeile 25 trage ich untereinander alle Device id’s ein die angesprochen werden sollen?
Ich möchte keine Thermostate ignorieren.Zeile 28-32 kann ich also weglassen?
Könnte ich dir evtl. mal einen Screenshot meines Scriptes zuschicken?
30. Okt. 2020 um 9:17
Hallo Sandro,
du brauchst das Script nur genau so, wie es oben steht zu kopieren. Am besten der ersten Zeile, aber mind. ab Zeile 17.
Extra eintragen brauchst du gar nichts, da das Script über den Selector in Zeile 22 automatisch alle Thermostate erkennt und bearbeitet.
Zeile 28 bis 30, sowie 12 bis 19 könntest du weg lassen, wenn du nichts ignorieren willst. Stört aber auch nicht, wenn es drin bleibt. 🙂
30. Okt. 2020 um 12:38
Hallo Peter,
vielen Dank für Deine Antwort. Ich werde das mal testen . Falls es Probleme gibt melde ich mich wieder.
18. Jan. 2022 um 9:42
Hallo Peter,
dein Artikel ist zwar schon etwas länger her aber er hat mir sehr geholfen.
Ich befasse mich mit iobroker erst seit kurzem und habe dieses Verhalten der Thermostate versucht mit Blockly zu beheben. Leider mehr schlecht als recht.
Dein Script scheint wirklich gut zu funktionieren.
Vielen Dank dafür.