Skip to content

Commit 6b2cc8a

Browse files
committed
Post ioBroker MAX! Heizungssteuerung
1 parent 2d31c85 commit 6b2cc8a

16 files changed

+133
-0
lines changed
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
---
2+
title: ioBroker MAX! Heizungssteuerung
3+
author:
4+
name: Peter Müller
5+
link: https://crycode.de
6+
banner: banner.webp
7+
date: 2019-09-20 12:00:00
8+
updated: 2024-04-21 20:22:10
9+
categories:
10+
- [ioBroker]
11+
- [HomePi]
12+
tags:
13+
- ioBroker
14+
- Heizungssteuerung
15+
- MAX!
16+
- Skripte
17+
---
18+
19+
Dieser Beitrag beschreibt die Einbindung von [MAX! Heizkörperthermostaten und Zubehör](https://www.eq-3.de/produkte/max.html) in ioBroker.
20+
21+
Hierfür wird der *MAX! Cube LAN Gateway* benötigt. Zur Anbindung an *ioBroker* nutzen wir den Adapter [Max! Cube](https://github.com/ioBroker/ioBroker.maxcube).
22+
23+
<!-- more -->
24+
25+
> [!NOTE]
26+
> Die MAX! Serie wurde leider vom Hersteller 2023 eingestellt und die zugehörige Cloud wird nicht weiter betrieben.
27+
> Die hier gezeigte Lösung arbeitet unabhängig von externen Diensten rein lokal und funktioniert damit auch weiterhin noch völlig problemlos. 🙂
28+
29+
<!-- toc Inhalt -->
30+
31+
## Installation des Adapters
32+
33+
Die Installation des Adapters [Max! Cube](https://github.com/ioBroker/ioBroker.maxcube) erfolgt wie gewohnt über die Adminoberfläche von *ioBroker*.
34+
35+
{% grid 2 %}
36+
{% img adapter-maxcube-suche.webp thumb: Suche nach dem Max! Cube Adapter %}
37+
{% img adapter-maxcube-installation.webp thumb: Installation vom Max! Cube Adapter %}
38+
{% endgrid %}
39+
40+
Im Anschluss an die Installation öffnet sich die Konfigurationsseite der Adapterinstanz. Auf dieser tragen wir die IP-Adresse oder den Hostnamen des *MAX! Cube* ein und bestätigen mit *Speichern und Schließen*.
41+
42+
{% img adapter-maxcube-einstellungen.webp thumb: Einstellungen vom Max! Cube Adapter %}
43+
44+
Nun sollte die Adapterinstanz starten und eine Verbindung zum *MAX! Cube* herstellen, was wie üblich am grünen Statussymbol in der Liste der Adapterinstanzen zu sehen ist.
45+
46+
## Objekte des MAX! Cube Adapters
47+
48+
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.
49+
50+
{% img adapter-maxcube-objekte.webp thumb: Auszug aus dem Objektbaum %}
51+
52+
Sollte bei einem Gerät `error` auf `true` gesetzt sein, so hilft oftmals ein Neustart des *MAX! Cube*.
53+
54+
Die unter `temp` enthaltene Temperatur stellt die am Thermostat gemessene *ist*-Temperatur dar.
55+
56+
> [!IMPORTANT]
57+
> Bei den Heizkörperthermostaten wird die ist-Temperatur immer nur bei einer Änderung (Modus, Ventilstand, …) übertragen und kann unter Umständen auch mal fälschlicherweise 0&nbsp;°C betragen. Dies hängt mit dem Cube und der Kommunikation zwischen dem Cube und den Thermostaten zusammen und ist kein Fehler des Adapters.
58+
59+
## Einbindung in VIS
60+
61+
{% img vis.webp right:true Anzeige in VIS %}
62+
Für die Einbindung in VIS empfehle ich den Adapter [Hochwertige Widgets (vis-hqwidgets)](https://github.com/ioBroker/ioBroker.vis-hqwidgets) 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.
63+
64+
Für die Umschaltung des Modus bietet sich beispielsweise das Widget *Zustände steuern* als Typ *radio* an.
65+
66+
{% grid 2 %}
67+
{% img vis-editor-1.webp thumb: VIS Editor Thermostat %}
68+
{% img vis-editor-2.webp thumb: VIS Editor Thermostat Modus %}
69+
{% endgrid %}
70+
71+
## Moduswechsel bei manueller Solltemperaturänderung
72+
73+
> [!NOTE]
74+
> 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.
75+
76+
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.
77+
78+
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 Skript 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.
79+
80+
{% codefile js iobroker-skript-automatikmodus.js ioBroker Skript zum Wiederherstellen des Automatikmodus %}
81+
82+
Das Skript kann direkt so übernommen werden. Lediglich die IDs der ignorierenden Thermostate müssen gegebenenfalls angepasst werden.
83+
84+
Die grundlegende Verwendung von Skripten habe ich im Beitrag [ioBroker Skripte](/iobroker-skripte) beschrieben.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
22.6 KB
Binary file not shown.
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/**
2+
* ioBroker Skript zum automatischen Zurücksetzen des Modus von MAX! Thermostaten
3+
* auf Auto, wenn die Solltemperatur im Auto-Modus geändert wurde.
4+
*
5+
* Dies ist erforderlich, da die Thermostate durch den Max! Cube Adapter bei einer
6+
* manuellen Änderung der Solltemperatur immer in den manuellen Modus versetzt werden.
7+
* Dieses Skript erkennt diese Änderung und setzt den Modus zurück auf Auto.
8+
*
9+
* Copyright (c) 2019-2024 Peter Müller (https://crycode.de)
10+
*/
11+
12+
/**
13+
* Liste an Thermostaten, die ignoriert werden sollen.
14+
* Dies können z.B. Wandthermostate sein, da diese zusammen mit dem zugehörigen
15+
* Heizkörperthermostat arbeiten.
16+
*/
17+
const thermostatIgnore = [
18+
'thermostat_18abcd'
19+
];
20+
21+
// Auflistung aller Thermostate holen
22+
const devices = $('maxcube.0.devices.thermostat_*.mode');
23+
24+
// Alle Thermostate durchgehen
25+
devices.each((id) => {
26+
id = id.replace(/\.mode$/, '');
27+
28+
// Prüfen ob das aktuelle Thermostat ignoriert werden soll
29+
const rfId = id.split('.')[3];
30+
if (thermostatIgnore.indexOf(rfId) !== -1) return;
31+
32+
log('setup mode switch back for ' + id);
33+
34+
// Handler für einen Moduswechsel anlegen
35+
on({ id: id + '.mode', change: 'ne' }, (obj) => {
36+
// AUTO(0) -> MANUAL(1) ?
37+
if (obj.newState.val === 1 && obj.oldState.val === 0) {
38+
// Letzte Sollwertänderung laden und Zeitpunkt prüfen
39+
getState(id + '.setpoint', (err, state) => {
40+
// Wechsel des Modus innerhalb von 10 Sekunden nach dem Wechsel des Sollwerts?
41+
if (state.ts > obj.newState.ts - 10000) {
42+
// Modus zurück auf Auto setzen
43+
log('switching ' + id + ' back to auto mode');
44+
setState(id + '.mode', 0);
45+
}
46+
});
47+
}
48+
});
49+
});
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
6.66 KB
Binary file not shown.

0 commit comments

Comments
 (0)