Howto für die Entwicklung von Addons für die Homematic CCU und RaspberryMatic
WORK IN PROGRESS. EVERYONE IS INVITED TO PARTICIPATE! PULL REQUESTS WELCOME!
- Einführung
- Struktur eines Addons
- update_script
- rc_script
- ...
- Button in Systemsteuerung
- Update Check
- UI, tcl cgi scripts
- Binaries portieren/bauen
- Hardwarekompatibilität, rpi0/armv6, rpi3/armv7, rpi4/arm64(?), debmatic/x86, ...
- Individuelle Webserver Konfiguration
- Cronjobs
- Backup-Ausnahmen (RaspberryMatic)
- Monit (RaspberryMatic)
- Dateien in Readonly Partition patchen
- Best Practices
- Buildautomatisierung
- Continuous Integration mit Travis
- Lizenzierung
- Versionierung
- Tipps zu Dokumentation und Support
- ...
- ...
- Weiterführende Links
- Lizenz
...Erläuterung Buildroot basierte Systeme vs. Paketmanagement a la apt/rpm/...
Eine Addon Datei ist eine .tar.gz Datei die auf oberster Ebene ein Shellscript update_script
enthält. Dieses wird
bei der Addon Installation ausgeführt.
Im Folgenden wird ein minimales Addon namens "foobar" beschrieben.
ccu-addon-foobar-1.0.tar.gz
foobar
|- file1
|- file2
|- ...
- update_script
- rc_script
#!/bin/sh
ADDONS_PATH=/usr/local/addons/
RC_PATH=/usr/local/etc/config/rc.d/
mount | grep /usr/local 2>&1 >/dev/null
if [ $? -eq 1 ]; then
mount /usr/local
fi
cp -af foobar $ADDONS_PATH
cp -f rc_script $RC_PATH/foobar
sync
exit 0
RaspberryMatic bietet die Möglichkeit über den Exit Code des update_script zu steuern ob ein Addon nach der Installation
einen Reboot benötigt. Wird das update_script mit exit 0
verlassen macht RaspberryMatic keinen Reboot, wird ein Reboot
benötigt kann dies über exit 10
erzwungen werden. Die CCU3 Firmware bietet dieses Feature nicht, hier wird immer ein
Zwangsreboot nach Verlassen des update_script durchgeführt.
Das rc_script dient dazu Informationen und Buttons in der Systemsteuerung/Zusatzsoftware bereitzustellen sowie (falls vorhanden) Services des Addons beim Systemstart zu starten.
Commands:
- info
- uninstall
- start (optional)
- stop (optional)
- restart (optional)
#!/bin/sh
Zum Anlegen und Entfernen von Buttons im WebUI unter Systemsteuerung ...
RaspberryMatic bietet die Möglichkeit Verzeichnisse aus dem Backup auszunehmen. Wird in einem Verzeichnis eine Datei
mit dem Namen .nobackup
angelegt wird RaspberryMatic dieses Verzeichnis beim Backup nicht sichern. Die CCU3 bietet
diese Feature (leider, noch?) nicht.
- Dokus, Wiki, Projekte, ...