Raspberrymatic CCU Docker Installation

Warum sollte man Raspberrymatic als Docker Container laufen lassen? Ich hatte vor kurzem ein Projekt bei dem ich 4 Raspberry Pi´s in ein Gehäuse gebaut habe und jeden einzelnen Raspberry mit einem System Monitor (0,96″ OLED Display) ausstatten wollte. Auf einem Raspberry war RaspberryPi OS installiert somit kein Problem, auf dem zweiten openhabian das ja auch auf RaspberryPi OS aufbaut somit auch kein Problem, beim dritten lief HASSIO bei dem es nicht möglich war das OLED Display anzusteuern und auf dem vierten lief Raspberrymatic als Standalone wo das Ansprechen bzw. eine weitere Konfiguration auch nicht möglich war. Das war der Grund warum ich mich jetzt für eine Docker Installation von Raspberrymatic entschieden habe.

Vom Verhalten bzw. von der Leistung merke ich keinen Unterschied. Leider war das einspielen eines Backups von der Standalone Lösung nicht möglich bzw. es hat zwar funktioniert aber die Steuerung war sehr träge und somit nicht zu gebrauchen. Eigentlich auch verständlich da die Systeme grundsätzlich unterschiedlich arbeiten. So nun zu Installation.

Natürlich benötigt Ihr Docker um hier Raspberrymatic im Container zu starten. Wie Ihr Docker installiert habe ich schon in einem anderen Beitrag behandelt.

1. Docker Benutzer hinzufügen:

Evtl. müsst Ihr dann noch euren Benutzer den Ihr auf dem Raspberry nutzt zur Docker Gruppe hinzufügen.

sudo usermod -aG docker $USER

Hier einfach das $USER mit euren Benutzer austauschen.

2. piVCCU installieren:

piVCCU ist ein Projekt mit dem die original Homematic CCU3 Firmware auf z.b. Raspberry Pi´s installiert werden kann. Diese Kernel Module pivccu-modules-dkms könnt Ihr mit diesen Befehlen installieren.

sudo apt install wget ca-certificates
wget -q -O - https://www.pivccu.de/piVCCU/public.key | sudo apt-key add -
sudo sh -c 'echo "deb https://www.pivccu.de/piVCCU stable main" >/etc/apt/sources.list.d/pivccu.list'
sudo apt update
sudo apt install build-essential bison flex libssl-dev
sudo apt install pivccu-modules-dkms

3. Falls Ihr GPIO Homematic Module benutzt:

Wenn Ihr den Raspberry Pi mit dem RPI-RF-MOD/HM-MOD-RPI-PCB über die GPIO´s benutzt müsst Ihr noch weitere Skripte installieren. Falls Ihr USB Sticks (HB-RF-USB, HB-RF-USB-2, HB-RF-ETH) benutzt benötigt Ihr diese Schritte nicht und könnt mit Schritt 4. fortfahren.

sudo apt install pivccu-modules-raspberrypi

3.1 Bluetooth ausschalten:

sudo bash -c 'cat <<EOT >>/boot/config.txt
dtoverlay=pi3-disable-bt
EOT'
sudo systemctl disable hciuart.service

3.2 Serielle Konsole ausschalten:

sudo sed -i /boot/cmdline.txt -e "s/console=serial0,[0-9]\+ //"
sudo sed -i /boot/cmdline.txt -e "s/console=ttyAMA0,[0-9]\+ //"

4. Kernel Modul ep3_char_loop installieren:

sudo sh -c 'echo eq3_char_loop >/etc/modules-load.d/eq3_char_loop.conf'

5. Dann laden und starten wir alle benötigten Kernel mit:

sudo service pivccu-dkms start
sudo modprobe eq3_char_loop

6. Docker Compose Datei erstellen:

Nun könnt Ihr schon eine docker-compose.yml Datei erstellen. Ich speichere diese .yml Datei in /home/pi/docker-compose/raspberrymatic ab.

version: "3.8"
services:
  raspberrymatic:
    image: ghcr.io/jens-maus/raspberrymatic:latest
    container_name: ccu
    hostname: homematic-raspi
    privileged: true
    restart: unless-stopped
    stop_grace_period: 30s
    volumes:
      - ccu_data:/usr/local:rw
      - /lib/modules:/lib/modules:ro
      - /run/udev/control:/run/udev/control
    ports:
      - "8080:80"
      - "2001:2001"
      - "2010:2010"
      - "9292:9292"
      - "8181:8181"
volumes:
  ccu_data:

Dann geht ihr mit cd /home/pi/docker-compose/raspberrymatic in das Verzeichnis und startet diesen Container mit:

Beim ersten Start kann das schon eine Weile dauern je nach Internet Verbindung, da die Dateien erst runtergeladen werden müssen.

#ohne Logfile
docker-compose up -d
#mit Logfile
docker-compose up

Bei einem erfolgreichen Start des Containers/Skript bekommt Ihr eine Statusanzeige (#mit Logfile) wie diese ausgegeben:

7. Homematic CCU aufrufen:

Um jetzt die CCU im Browser aufzurufen gebt Ihr http://eureIPAdresse:8080 ein und werden dann mit der Erstkonfiguration bzw. dem Willkommens Screen begrüßt. Nun habt Ihr Raspberrymatic/CCU3 auf einem Raspberry Pi mittels eines Docker Container installiert. Ihr könnt diesen Container natürlich nach belieben updaten, stoppen, starten, löschen, etc.

19 Gedanken zu “Raspberrymatic CCU Docker Installation

  1. Danke für die Anleitung – war erfolgreich und es läuft.
    Habe es zuerst nach der Anleitung von Stefan vom http://www.verdrahtet.info installiert. Er verweist seinerseits auf alexreinert vom https://github.com/alexreinert/piVCCU/blob/master/docs/setup/raspberrypi.md. Da hatte ich Probleme, dass ich die IP-Adresse vom Homematic nicht gefunden habe. Wieso habe ich nicht herausgefunden.
    Ich wollte es aber auf einem Raspberry Pi 4 mit externer USB SSD Boot und Docker laufen haben (nicht mit IOBroker). Arbeite viel mit Node-Red, Mosquitto, influxdb und Grafana. Portainer hilft managen.
    Nach dem Suchen einer Lösung im Internet habe ich Deine Seite gefunden. Nach der Installation konnte ich erfolgreich Homematic bzw. RaspberryMatic aufstarten. Besten Dank

    1. Servus Bruno, Danke für die Infos, das freut mich dass es geklappt hat. Bin gerade am Aufbau eines Clusters da dachte ich mir da könnt ich doch alles ein bisschen dokumentieren;-)
      weiterhin viel Erfolg und beste Grüße!

  2. Servus, ich versteh grad nicht genau warum erst pivccu von Alex Reinert und dann raspberrymatic von Jens Maus installiert wird. Sprich ab Schritt 6 dann Raspberrymatic, davor war es pivccu.
    Könntest du das evtl. nochmals darstellen?
    Ich bin auch grad auf der Suche nach dem Optimum für mich. Derzeit betreibe ich recht stabil die pivccu3 auf nem Rpi4. Da demnächst ne SSD an die Rpi kommt, wollte ich auf Docker umsteigen und alle Apps (IOBroker, Grafana, Influx, Homematic) via Docker managen (Visualisierung via Portainer). Ich steh quasi jetzt am Punkt, welche Homematic Version am besten via Docker zu managen ist wenn ein HB-RF-USB verwendet wird.
    meric dir

      1. Danke dir, jetzt hab Ichs verstanden. Wenn die USB-Variante, dann die PIVCCU Treiber. Super, probier ich aus. Auch dank deines Videos zum Argon one M.2 und der SSD designe ich meinen Pi grad neu und versuche mal den Ansatz alles in Container zu packen.

        1. Hallo,
          bin mir nicht ganz sicher ob ichs richtig versteh. Ich möchte raspberrymatic auf Docker installieren. Muss ich um auf einen HM-MOD-RPI-PCB auf GPIO zuzugreifen die pivccu Installation auf dem Host durchführen, oder in dem raspberrymatic Container?

  3. Vielen Dank für die Anleitung, funktioniert grandios!
    Zwei kleine Anmerkungen:
    1) Bei mir hat es ganz am Schluss noch einen restart des Systems gebraucht bevor raspberrymatic auf das Funkmodul zugreifen konnte.
    2): Falls jemand wie ich einen HmIP-HAP als LAN-Router verbinden möchte (siehe https://technikkram.net/blog/2020/09/27/homematic-ip-access-point-als-lan-router-auf-ccu3-installieren-und-anlernen/): Man muss mehr Ports in der docker-compose.yml freigeben. Ausreichend sind neben 8080:80 noch das direkte forwarden von 443, 1999-2001, 2010, 8181, 9292, 32001,32010,41999-42001,42010,48181. Welche davon alle tatsächlich nötig sind, hab ich nicht ausprobiert, aber auf diese greift der AccessPoint + RaspberryMatic zu. Es kann sein, dass er zum erstmaligen pairen noch mehr braucht, dafür hatte ich statt der einzelnen Port-Weiterleitungen schlicht network_mode: “host” aktiviert.

  4. Hallo!
    Deine Anleitung hat auch bei mir super funktioniert. So kann ich meinen Homebridge-Server und Raspberrymatic auf einem Gerät betreiben und die performance ist absolut zufriedenstellend (RaspberryPi3 B+).

    Was ich vermisse: Kannst du nochmal auf den Punkt “Neue Firmware / Aktualisieren” eingehen mit Docker-compose? Ich finde mich da nicht zurecht in den vielen Anleitungen zu anderen Anwendungen. Eine simple Schritt-für-Schritt Anleitung für das stoppen, ziehen des neuen Raspberrymatic-Image und wieder starten wäre super. Ich vermute, der Raspberrymatic ist danach quasi “wie neu” und es muss ein Backup eingespielt werden. Richtig? Was passiert mit den Addons?

    Vielen Dank!

    1. Servus Jan,
      super freut mich das alles soweit funktioniert.
      Also ich habe bisher immer die Container so geupdatet:
      – in den Container Ordner gehen
      dann: docker-compose down
      – Update durchführen mit: docker-compose pull
      – Container neu starten: docker-compose up oder docker-compose up -d
      Die Daten bzw. die Einstellungen von Raspberrymatic bleiben erhalten du musst da nicht zwingend ein Backup einspielen.
      Natürlich schadet es nie hinundwieder ein Backup zu machen 😉
      Aber grundsätzlich sind ja die Daten in den Volumes hinterlegt (siehe docker-compose datei oben: ccu_data)
      Ich teste gerade das Watchtower “Programm” um verschiedene Container updaten zu können dazu werde ich dann auch einen Bericht schreiben.
      Hoffe das hat dir weitergeholfen.
      Grüße
      Michi

  5. Hallo, vielen Dank für dieses Howto. Endlich jemanden gefunden der ein ähnliches Problem hatte. Ich habe den Raspberrymatic allerdings aufgrund einer Gateway funktion nutzen wollen/müssen. Es funktioniert 1A. Allerdings habe ich noch den Port 2000 mit gemappt. Ob der jetzt gebraucht wurde kann ich gar nicht so genau sagen, aber erst seit dem der Port 2000 auch vom dockerhost gemappt wird funktionierts und die RSSI anzeige in der zweiten Homematic zeigt auch die Kanalnutzung an. um dier Datei usr/local/HMLGW anzulegen habe ich zusätzlich noch den ssh Zugang mit 2222:22 gemappt. Funktioniert astrein. – Sogar mit Arm64 RasbianOS. hätte ich zwar auch direkt über docker machen können… aber seis drum. Vielen Dankl

  6. Ich habe es aktuell auf Pi4 probiert, eingesetztes Modul auf HM-MOD-RPI-PCB. Ein reboot ist zur Erkennung des RF Moduls notwendig. Der Parameter zum deaktivieren von BT ist beim Pi4 “dtoverlay=disable-bt”.
    Leider funkionieren bei mir die RF Module nicht mit HB-RF-USB-2, das liegt aber nicht an der Installation.

    Danke für die tolle Anleitung

  7. Hmm, mal von meinem letzten Kommentar abgesehen (BT da geht auch der alte Befehl), habe ich Problem den Pi4 nach dem erneuten Reboot ans Netz zu bekommen. Vom Grundsatz war der Pi4 auf statische IP gestellt, er zeigt beim IFCONFIG eth0 keine mehr an, wlan auch nicht mehr. Da habe ich noch keine Idee für.

  8. Hi,

    vielen Dank für die einfache und gut funktionierende Anleitung!

    Kleiner Tipp für diejenigen, die Bluetooth weiter benutzen wollen. In der config.txt, statt:

    dtoverlay=pi3-disable-bt

    folgendes
    dtoverlay=pi3-miniuart-bt
    enable_uart=1

    eintragen (für Pi4 kann man das “pi3-” weglassen 😉 )

  9. Ich bekomm es leider nicht zum Laufen.

    Ich habe aktuell ein Ubuntu Server auf dem Raspi laufen. Darauf läuft ioBroker.

    Der Plan ist, Raspberrymatic auf selber Maschine als Docker Container laufen zu lassen. Der Cointainer an sich funktioniert aber ich bekomme den HmIP-RFUSB zum verrecken nicht im Docker ans Laufen.

    Bei mir ist der pivccu-dkms.service immer inactive (dead).

    Nach 5 Stunden gebe ich für heute erst mal auf 🙁

  10. Ich habe heute deine Anleitung auf einem frisch installierten Raspberry OS 64-bit versucht. 2 Punkte waren leicht unterschiedlich, vielleicht magst du deine Anleitung anpassen:
    1. docker-compose ließ sich bei mir nicht installieren mit dem Hinweis “externally managed”. Ich habe es nach mehreren Versuchen mit diversen Anleitungen sein lassen, “docker compose” bringt docker mittlerweile direkt mit.
    2. der Befehl zum Starten lautet nun “docker-compose up”

    Keine Ahnung, ob meine misslungenen Installationsversuche Müll verursacht haben, ich werde es bei Gelegenheit neu versuchen ohne “docker-compose”. Brauche ich dann eigentlich noch python?

Schreibe einen Kommentar zu Chris Antworten abbrechen

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