FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: jw2013 am 11 Dezember 2025, 17:35:30

Titel: FHEM auf OpenWrt
Beitrag von: jw2013 am 11 Dezember 2025, 17:35:30
Hi,

ich bin schon seit einiger Zeit dabei, FHEM in OpenWrt zu integrieren. Und das meine ich nicht im Sinne von "zum Laufen bringen", sondern das soll so sauber mit eingebunden werden, dass es wahlweise als OpenWrt Paket installiert, oder sogar ins OpenWrt ROM eingebunden werden kann (OpenWrt Imagebuilder).

Über den Sinn und Zweck könnte ich mich jetzt stundenlang auslassen. Kurzfassung, ich verwende sehr gerne Debian auf Servern, und in Form von LMDE auch auf dem Desktop! Aber für viele Zwecke im Zusammenhang mit IoT und Messungen halte ich OpenWrt für besser geeignet (Netzwerk/VPN-Konfiguration), und in vielen Fällen spart man zusätzliche Endgeräte (z.B. wenn FHEM direkt auf den WLAN Access Points läuft).

Eines der Haupt-Probleme ist der Resourcen-Verbrauch. Das fhem-6.4 Paket belegt nach dem Entpacken über 100 MB auf der Platte. Bei OpenWrt wird um jedes Kilobyte gekämpft, und große Distributionen werden auf möglichst viele kleinere Einheiten zerlegt. Das kann man z.B. schön am Linux-Kernel nachvollziehen, da wurde fast jedes Kernel-Modul ein eigenes, optionales Paket.

Ich bin soweit, dass ich mein Konzept als Proof-of-Concept umgesetzt habe. Die Paket-Definitionen (Makefiles) bei OpenWrt sind fast so gut lesbar wie sendmail.cf, aber irgendwann ergaben auch die einen Sinn. Ich habe meinen aktuellen Stand mal auf Github hochgeladen, falls jemand Interesse hat, sich das anzuschauen:

https://github.com/jw2013/openwrt-packages/tree/master/fhem

An den Paket-Definitionen hatte ich lange überlegt, und diverse Makros für das OpenWrt Build System geschrieben, so dass man jetzt FHEM Module per Einzeiler zum Paket machen kann:

https://github.com/jw2013/openwrt-packages/blob/master/fhem/modules.mk

Wer OpenWrt in der Version 24.10 installiert hat, kann das auch ohne Build-System gerne mal testen, sofern wenigstens 32 MB Speicher im ROM/SD und RAM frei sind.
Ich habe ein fertiges OpenWrt-Paket-Repository für FHEM angelegt, das zu allen Architekturen kompatibel ist:

# SSL Support for wget
opkg install libustream-mbedtls

# My public key for package signature check
wget https://jw2013.github.io/openwrt-packages/public.key
opkg-key add public.key

# My public repository for OpenWrt 24.10 FHEM packages
echo 'src/gz fhem https://jw2013.github.io/openwrt-packages/fhem/24.10/all' >> /etc/opkg/customfeeds.conf
opkg update

# This will also install all dependencies for perl, fhem-bin and fhem-service
opkg install fhem-mod-fhemweb
Danach sollte FHEM auf Port 8083 erreichbar sein.

Falls Interesse besteht, bei dem Projekt mitzumachen, gerne melden!

Viele Grüße aus dem Saarland
- jens
Titel: Aw: FHEM auf OpenWrt
Beitrag von: betateilchen am 11 Dezember 2025, 20:19:16
Gute Arbeit!

Die Installation hat mit Deiner Anleitung auf jeden Fall auf Anhieb funktioniert.

Bei mir läuft OpenWRT 24.10 als AccessPoint in einer VM unter Proxmox.
Da habe ich das FHEM jetzt einfach dazu installiert.

Dann hat mir telnet als Notfallzugang gefehlt - aber auch das gibt es schon zum Nachinstallieren.
Installation war ok, aber dann hat es doch eine Weile gedauert, bis ich das telnet device tatsächlich in FHEM verfügbar hatte.


---
Titel: Aw: FHEM auf OpenWrt
Beitrag von: jw2013 am 11 Dezember 2025, 20:49:25
Danke fürs erste Testen @betateilchen ! Ich gehe davon aus, Du hast das Modul über die Weboberfläche von OpenWrt oder per

opkg install fhem-mod-telnet
nachinstalliert.

Momentan ist es so, dass nach der ersten Installation FHEM nicht automatisch neugestartet wird, wenn weitere Module installiert werden.
Die werden erst nach einem

service fhem restart
oder Reboot gefunden. (gilt übrigens auch für einfache Module wie fhem-mod-help)

Das Paket legt die Datei /etc/config/fhem/mod.cfg.d/98_telnet.cfg an, diese wird zunächst aber nicht eingebunden.
Erst beim Neustart vom fhem Service wird die Datei /etc/config/fhem/mod.cfg (von fhem.cfg inkludiert) neu erzeugt, und läd dann ihrerseits /etc/config/fhem/mod.cfg.d/98_telnet.cfg nach.

Dadurch reicht für den speziellen Fall auch ein shutdown restart nicht aus.

Das wäre anders, wenn der FHEM include Befehl Verzeichnisse wie /etc/config/fhem/mod.cfg.d/ akzeptieren würde, dann bräuchte ich auch den Umweg über /etc/config/fhem/mod.cfg nicht mehr.

Ich hätte auch die Möglichkeit, dass Module, die eine eigene Config mitbringen, einen Restart veranlassen. Darauf habe ich aus einem anderen Grund verzichtet:

In OpenWrt nimmt man generell Rücksicht auf die Flash Speicher, und schreibt dort nur so wenig wie nötig rein. Also Autosave => OFF
Umgekehrt will ich aber auch nicht, dass eine Modul-Installation alle ungespeicherten Konfigurationen verwirft.

Was meinst Du?