Änderungen

Update components/Raspberrymatic erstellt von cstieglitz's avatar cstieglitz
# 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
```