/usr/home

just some random thoughts

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! Das ist halt wie dieses ganze Home Automation Zeugs von Nerds für Nerds und es fehlt wie immer an Leuten die auch beitragen anstatt nur zu nutzen. Und überhaupt muss man natürlich sein eigenes Projekt starten anstatt zu contributen, weil die anderen ja $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:

  1. Batterien entfernen
  2. 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 mit F4.
  3. 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.