Im tiefen Tal der Tränen: MAX!Cube mit a-culfw flashen und an HomeGear anbinden
Gleich vorweg: dieser Beitrag kann spuren eines Rants enthalten.
Nachdem mein MAX!Cube vor ein paar Tagen spontane Amnesie erlitten hat und jegliche Konfiguration verloren hat und das System vom Hersteller e-Q3 abgekündigt wurde, hab ich dann die Gelegenheit genutzt das Teil mit einer offenen Firmware zu versehen. Nein lieber Hersteller, ich möchte die Geräte nicht gegen Homematic IP tauschen. Der Homematic IP Access Point ist ohne eure Cloud komplett nutzlos und die CCU wollt ihr ja leider nicht rabattieren. Anyway …
Schritt 1: a-culfw auf den Cube bekommen
Dafür müssen zwei Schritte gegangen werden:
- Bootloader flashen
- Firmware flashen
Den Bootloader kann man auf dem Mac mit bossa flashen, die Firmware dann mit minicom. Grundsätzlich ist das im Tinkerblog gut beschrieben. Leider ist die aktuellste Version der a-culfw 1.26, während Upstream culfw schon weiter ist.
Schritt 2: culfw konfigurieren
Das ist nur notwendig, wenn übers Netz auf den Cube zugegriffen werden soll. Es geht auch via USB, da sich der Cube als serielles Device meldet - das hab ich aber nicht in eine VM auf ESXi reinbekommen. Das serielle Device erscheint zwar, ist aber “tot”.
Kurzform: screen /dev/cu.usbmodem14201 38400
V output version, e.g. V 1.39 CUN
Wid00 disable DHCP
Rid
Wia192.168.31.126 set IP address
Ria
Wig192.168.31.1 set gateway
Rig
Win255.255.255.0 set netmask
Rin
WiN192.168.31.2 set NTP server
RiN
Wio02 set time zone offset
Rio
En request time from NTP server
c03 show date and timeslot (not available in a-culfw 1.26)
Schritt 3: HomeGear installieren
OpenHAB, FHEM und HomeAssistant können zwar alle mit dem Cube/CUL sprechen, aber nur HomeGear kann auch Heizprogramme in die Thermostate programmieren und die Fensterkontakte mit ihnen verbinden. So funktioniert das System auch wenn die Zentrale mal nicht mag.
Wir haben 2021, also zieht euch einfach den Docker Container:
docker run -d --restart unless-stopped -v homegear_etc:/etc/homegear:Z -v homegear_lib:/var/lib/homegear:Z -e TZ=Europe/Berlin -p 2001:2001 -p 2002:2002 -p 2003:2003 --name homegear homegear/homegear:stable
HomeGear öffnet in der Standardkonfiguration diverse Ports:
Port | Protokoll | Anmerkung |
---|---|---|
8080 | http | nur UI, kein RPC Server |
8443 | https | nur UI, kein RPC Server |
2001 | http | UI und RPC Server |
2002 | https | UI und RPC Server |
2003 | https mit basic auth | UI und RPC Server |
Die TLS Ports sind zwar immer geöffnet, geben aber ein connection refused bis man sich über http einmal ins Admin UI eingelogged und ein self signed Zertifikat erzeugt hat. Steht natürlich wieder nirgends und einfach von selbst das self signed zu erzeugen will man wohl auch nicht. Ich mein … ach egal! $SpracheDieIchNichtMag
nutzen.
Bis auf Port 2003 (basic auth) wird eine Login Maske präsentiert. Ist also nicht so, dass die anderen Ports also einfach offen Zugriff auf irgendwas geben. Per default landet man in /ui/
, wobei mir nicht ganz klar ist wofür dieses Interface gut sein soll. Es gibt aber noch /admin/
über das man so gut wie alles tun kann, außer Geräte miteinander verlinken. Dazu komme ich später noch.
Schritt 4: Heizköperthermostate und Fensterkontakte anlernen
Zunächst müssen die Geräte auf Werkseinstellungen zurückgesetzt werden. Weil mich das diverse Versuche und Stunden meines Lebens gekostet hat, achtet auf folgendes:
- Batterien entfernen
- Batterien mit ALLEN drei Tasten gedrückt wieder einlegen. Auf dem Display muss kurz
rES
angezeigt werden! Die Thermostate gehen zwar auch ohne in den Pair Mode, quittieren anlernversuche aber mitF4
. - Adaptierfahrt durch drücken der Boost Taste durchführen. Die Thermostate gehen zwar auch vorher in den Pair Mode, aber werden sich nicht anlernen lassen!
Anlernen geht entweder übers Admin UI oder über das CLI:
# Debug Level erhöhen, falls irgendwas nicht tun sollte
dl 10
families select 4
pon
# Anlernen, sollte mit AC im Display bestätigt werden
ls
poff
Achtung: ggf. genügt die Stromversorgung übers Laptop nicht um den Anlernvorgang auch abzuschließen, weil der Cube neustartet. Die Thermostate sind zwar Angelernt, nur weis der Cube/HomeGear nix davon. Mit etwas Glück sieht man im Log ein connection refused oder timeout bevor die Verbindung wieder steht.
Schritt 5: Fensterkontakte mit Thermostaten verbinden
Damit die Fensterkontakte den Heizkörperthermostaten auch selbständigmitteilen, wenn ein Fenster geöffnet oder geschlossen wurde muss man diese verlinken. Natürlich kann man sich auch einen Workflow in NodeBLUE erstellen, aber das funktioniert dann wieder nicht autarg. Aus Gründen geht das noch nicht im Webinterface, nur per CLI:
docker exec -it homegear homegear -r
rc '$hg->addLink(8, 1, 7, 4)'
Dabei sind senderId (8) und receiverId (7) entsprechend auszutauschen. Sender sind die Fensterkontakte und Empfänger die Heizkörperthermostate. Die IDs zeigt das Admin UI oder ein ls
im CLI. Die Channels sind fix. Siehe auch HomeGear RPC Doku.
Schritt 5: Wochenprogramm der Heizkörperthermostate erstellen
Dafür es verschiedene Wege: per CLI ein PHP Dict tippen und laden, das selbe per Homematic Manager oder original Homematic Software - HomeGear ist ja eine Software CCU. Oder wenn man den Button findet, im Admin UI: Inventar - Geräte - Edit - Heizprogramme bearbeiten - z.B. http://HomeGearIP:2001/admin/inventory/devices/edit/heatingprograms/1
Dieser Weg scheint auch schon wieder deprecated, weil man jetzt alles per NodeBLUE machen sollen. Ja nur, dass das Programm dann wieder nicht in die Thermostate programmiert wird. Autarg und so. Und es gibt auch keinen vorgefertigten Workflow, der dann auch Fensterkontakte berücksichtigen würde.
Schritt 5: Home Assistant mit HomeGear verbinden
Wie bereits erwähnt ist HomeGear eine Software CCU, also kann sie auch wie eine angesprochen werden:
homematic:
local_ip: 192.168.123.45
local_port: 36845
interfaces:
wireless:
host: 192.168.123.45
port: 2001
callback_ip: 192.168.123.45
callback_port: 36845
resolvenames: metadata
username: ha_user
password: foobarbaz
Dabei sind local_port
und callback_port
tatsächlich wichtig, wenn sowohl HomeGear als auch HomeAssistant in Docker laufen. Natürlich kann man die beiden auch übers Docker interne Netz miteinander kommunizieren lassen.
Schritt 6: profit
Na, war doch gar nicht so schwer, oder? ;-) Damit sollten sich die MAX! Geräte noch einige Jahre nutzen lassen. Und wenn man den Preis für den man die Teile zwischenzeitlich bekommen hat im Hinterkopf behält, ist das auch ne ganz ordentliche Lösung. Klar, besser geht immer. Kost dann aber auch.