|
|
# RaspberryMatic
|
|
|
|
|
|
## Überblick
|
|
|
|
|
|
RaspberryMatic ist ein alternatives Betriebssystem für eine freie, OpenSource-basierte "homematic-ip-Zentrale". Das Ziel ist hierbei den kompletten Funktionsumpfang einer Homematic-CCU-Zentrale für eine Cloudfreie Nutzung von Homematic Geräten für frei erwerbbare Single-Board-Computer(SBC) Nutzbar zu machen. Außerdem ist das ganze auch als virtuelle Variante vorhanden für bspw. VirtualBox. Es bringt auf diversen Ebenen (WebUI, Betriebssystem, etc.) Verbesserungen und Bugfixes mit sich, die in der originalen CCU3 Firmware noch nicht vorhanden sind.
|
|
|
|
|
|
RaspberryMatic wird als komplettes Image herausgegeben und kann mit geeigneten Tools (z.B. Raspberry PI Imager) somit auf eine microSD-Karte oder auch auf einem USB-Stick/Festplatte genutzt werden. Dementsprechend kann es als Betriebssystem für die Kommunikation und Steuerung/Konfiguration von Homematic-Geräten zum Einsatz kommen. Hierbei wird der Ansatz einer selbstständigen Distributions verfolgt, was bedeuetet, dass kein Host-Betriebssystem benötigt wird. Dies bringt einige Vorteile sowie auch Nachteile mit sich:
|
|
|
|
|
|
Vorteile:
|
|
|
+ höhere Stabilität
|
|
|
+ bessere Performance
|
|
|
|
|
|
Nachteile:
|
|
|
+ Installation von Drittanbietersoftware (z.B. apache/mysql) nur mit "CCU-Addon" möglich
|
|
|
|
|
|
## RaspberryMatic auf Raspberry PI
|
|
|
|
|
|
Das Betriebssystem kann per microSD-Karte installiert werden. Außerdem wird per USB-Anschluss oder GPIO-BUS ein Homematic-Funkmodul angeschlossen. Nachdem man nun den Raspberry PI am Netzwerk angeschlossen hat und gestartet hat kann man sich über eine WebUI verbinden und mit der Homematic Konfiguration beginnen. Für weitere Informationen gerne in die RaspberryMatic Dokumentation schauen [https://github.com/jens-maus/RaspberryMatic/wiki/Installation-RaspberryPi]
|
|
|
|
|
|
## RaspberryMatic auf Docker
|
|
|
|
|
|
Es ist möglich RaspberryMatic auf einem Docker Container, in einem existierenden amd64, aarch64/arm64 oder arm-basierenden System zu nutzen. Docker kommt mit den meisten Funktionalitäten die ein "normales" RaspberryMatic System bereits hat außer mit wenigen Ausnahem wie z.B. Network-Setup oder auf der WebUI basierende Updatemechanismen. Der Grund dafür ist, dass das Host-System selbst die Updates macht. Die Kernel-Driver für bspw. RPI-RF-MOD, HM-MOD-RPI-PCB, HmIP-RFUB, HB-RF-USB/HB-RF-USB2 und HB-REF-ETH müssen auf dem System installiert werden.
|
|
|
|
|
|
### Debian/Ubuntu Host-System
|
|
|
|
|
|
#### Vorbereitung des Host-Systems
|
|
|
|
|
|
+ 1. Sichergehen das Docker installiert ist
|
|
|
```shell
|
|
|
curl -fsSL https://get.docker.com -o get-docker.sh
|
|
|
sudo sh get-docker.sh
|
|
|
```
|
|
|
|
|
|
+ 2. User adden unter dem Docker laufen soll
|
|
|
```shell
|
|
|
sudo usermod -aG docker $USER
|
|
|
```
|
|
|
|
|
|
+ 3. Sichergehen das die Docker-Umgebung vernünftig läuft, indem man
|
|
|
```shell
|
|
|
docker run hello-world
|
|
|
```
|
|
|
|
|
|
+ 4. Installattion der Kernel Driver
|
|
|
```shell
|
|
|
sudo apt install wget ca-certificates build-essential bison flex libssl-dev gpg
|
|
|
wget -qO - https://www.pivccu.de/piVCCU/public.key | gpg --dearmor -o /usr/share/keyrings/pivccu-archive-keyring.gpg
|
|
|
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/pivccu-archive-keyring.gpg] https://www.pivccu.de/piVCCU stable main" >/etc/apt/+ + + sources.list.d/pivccu.list'
|
|
|
sudo apt update
|
|
|
sudo apt install pivccu-modules-dkms
|
|
|
```
|
|
|
|
|
|
+ 5. Wenn man einen Raspberry PI und RPI-RF-MOD oder HM-MOD-RPI-PCB zum GPIO nutzen möchten
|
|
|
+ 5.1 Installation der nötigen Device-Tree-Patches
|
|
|
```shell
|
|
|
sudo apt install pivccu-modules-raspberrypi
|
|
|
```
|
|
|
+ 5.2 Ausschalten von Bluetooth
|
|
|
```shell
|
|
|
sudo bash -c 'cat <<EOT >>/boot/config.txt
|
|
|
dtoverlay=disable-bt
|
|
|
EOT'
|
|
|
systemctl is-active --quiet hciuart.service && sudo systemctl disable hciuart.service
|
|
|
```
|
|
|
+ 5.3 Ausschalten der Serial Console
|
|
|
```shell
|
|
|
sudo sed -i /boot/cmdline.txt -e "s/console=\(serial0\|ttyAMA0\),[0-9]\+ //"
|
|
|
```
|
|
|
|
|
|
+ 6. Wenn man HmIP-RFUSB, sichergehen das /etc/udev/rules.d/10-hmiprfusb.rules nicht installiert ist. Ansonsten dies löschen.
|
|
|
```shell
|
|
|
sudo rm -f /etc/udev/rules.d/10-hmiprfusb.rules
|
|
|
```
|
|
|
|
|
|
+ 7. Installation eq3_char_loop kernel_module for automatic module load section
|
|
|
```shell
|
|
|
sudo sh -c 'echo eq3_char_loop >/etc/modules-load.d/eq3_char_loop.conf'
|
|
|
```
|
|
|
|
|
|
+ 8. Starten aller Kernel modules auf dem Host
|
|
|
```shell
|
|
|
sudo service pivccu-dkms start
|
|
|
sudo modprobe eq3_char_loop
|
|
|
```
|
|
|
## Deploy.sh - Installation in einem Docker-Container
|
|
|
|
|
|
Zur Installation wird das deploy.sh Script genutzt, welches unter folgendem Link gedownloaded werden kann:
|
|
|
|
|
|
wget -qO - https://raw.githubusercontent.com/jens-maus/RaspberryMatic/master/buildroot-external/board/oci/deploy.sh | bash -
|
|
|
|
|
|
Es könnte sein, dass sudo-Rechte zum Ausführen benötigt werden.
|
|
|
Das Skript startet den Container im Daemon-Mode mit Default-Einstellungen.
|
|
|
|
|
|
|
|
|
## Docker Pull - Neueste Version von Raspberrymatic
|
|
|
|
|
|
Um die aktuellste Raspberrymatic-Version zu erhalten, nutzt man folgenden Befehl:
|
|
|
|
|
|
```shell
|
|
|
docker pull ghcr.io/jens-maus/raspberrymatic:latest
|
|
|
```
|
|
|
|
|
|
Um diese zu installieren, führt man folgende Kommandos aus:
|
|
|
|
|
|
```shell
|
|
|
docker run --tty --interactive --name ccu \
|
|
|
--volume ccu_data:/usr/local:rw --volume /lib/modules:/lib/modules:ro \
|
|
|
--volume /run/udev/control:/run/udev/control \
|
|
|
--publish 8080:80 --privileged --restart always --stop-timeout 30 \
|
|
|
--hostname homematic-raspi ghcr.io/jens-maus/raspberrymatic:latest
|
|
|
```
|
|
|
|
|
|
|
|
|
## Docker Load - Neuestes docker/oci Image von Raspberrymatic
|
|
|
|
|
|
Das neueste Image erhält man über folgenden Befehl:
|
|
|
|
|
|
```shell
|
|
|
wget https://github.com/jens-maus/RaspberryMatic/releases/download/3.XX.XX.YYYYMMDD/RaspberryMatic-3.XX.XX.YYYYMMDD-oci_amd64.tgz
|
|
|
```
|
|
|
|
|
|
Anschließend wird der Download mittels docker load in den Docker-Container geladen
|
|
|
|
|
|
```shell
|
|
|
docker load < RaspberryMatic-3.XX.XX.YYYYMMDD-oci_amd64.tgz
|
|
|
```
|
|
|
|
|
|
Docker wieder starten:
|
|
|
|
|
|
```shell
|
|
|
docker run --tty --interactive --name ccu \
|
|
|
--volume ccu_data:/usr/local:rw --volume /lib/modules:/lib/modules:ro \
|
|
|
--volume /run/udev/control:/run/udev/control \
|
|
|
--publish 8080:80 --privileged --restart always --stop-timeout 30 \
|
|
|
--hostname homematic-raspi raspberrymatic:amd64-latest
|
|
|
```
|
|
|
|
|
|
##Anpassungen im docker-compose.yml
|
|
|
|
|
|
Folgendes wird zum docker-compose.yml hinzugefügt
|
|
|
|
|
|
```shell
|
|
|
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:
|
|
|
```
|
|
|
|
|
|
Starten der docker compose Umgebung mittels folgendem Befehl:
|
|
|
|
|
|
```shell
|
|
|
docker-compose up -d
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|