Offizielles FHEM Docker Basis Image für verschiedene Plattformen

Begonnen von Loredo, 28 Juli 2018, 21:24:57

Vorheriges Thema - Nächstes Thema

rabehd

Bei mir funktioniert ghcr.io/fhem/fhem-docker:4-bullseye mit echodevice, wie mir damals von passibe empfohlen.
Gibt es was neueres, was ich ohne großen Aufwand nehmen kann? Ich bin ungern in der Konsole unterwegs.
Auch funktionierende Lösungen kann man hinterfragen.

passibe

#2266
Ohne größeren Aufwand: Spontan fällt mir nichts ein. Vielleicht genügt es, npm über ein selbst gebautes image hinzuzufügen?
Habe gerade aber keine Zeit, das zu testen.

@Sidey, eigentlich wäre es zu erwägen, alexa-cookie2 samt dependencies mit in das image zu packen? Es benutzen ja doch recht viele Leute echodevice (es ist jedenfalls in der Top 100). Und für andere, auch deutlich unbeliebtere Module, werden die dependencies ja auch mitgeliefert.

Auch wenn echodevice inzwischen sicherlich ein überarbeitungsbedürftiges Modul ist, ist es nicht unbedingt absehbar, dass man, selbst mit einer Überarbeitung, von alexa-cookie2 loskommt. Jedenfalls solange man echodevice nicht mit einer Einbindung auf einem ganz anderen Weg ersetzt (z.B. via fhempy o.ä.).

rabehd

Zitat von: passibe am 08 April 2026, 20:31:02npm über ein selbst gebautes image hinzuzufügen?
Das übersteigt aktuell meine Fähigkeiten, aber wenn mich jemand unterstützt/anleitet.
Auch funktionierende Lösungen kann man hinterfragen.

Sidey

Zitat von: passibe am 08 April 2026, 20:31:02@Sidey, eigentlich wäre es zu erwägen, alexa-cookie2 samt dependencies mit in das image zu packen?

Das werde ich eher nicht machen. Der ganze node(JS) Kram machte ärger und daher wurde es entfernt.

Sinnvoll wäre alexa-cookie in einem eigenen Container unterzubringen:

[Docker Network]

 ┌──────────────────────┐
 │   FHEM Container     │
 │  (echodevice)        │
 └─────────┬────────────┘
           │ REST / File
           ▼
 ┌──────────────────────┐
 │ Alexa Cookie Service │
 │ (Node + Express)     │
 │                      │
 │  - Login             │
 │  - Refresh           │
 │  - API               │
 └─────────┬────────────┘
           │ HTTPS
           ▼
 ┌──────────────────────┐
 │   Amazon Alexa       │
 └──────────────────────┘
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker, WebAuth

passibe

Zitat von: Sidey am 08 April 2026, 23:20:36Der ganze node(JS) Kram machte ärger
Das verstehe ich, ich frage mich nur, wieso node dann noch da ist? Dann wäre es ja konsequent, das auch zu entfernen.

Der Gedanke mit alexa-cookie2 im Container kam mir eben nur deshalb, weil node noch da ist (und nur npm fehlt).

Zitat von: Sidey am 08 April 2026, 23:20:36Sinnvoll wäre alexa-cookie in einem eigenen Container unterzubringen
Ja, das stimmt natürlich. Ehrlich gesagt würde ich dann aber einfach alexapy benutzen und das mit fhempy machen. Dann kann man von deren Entwicklungseffort profitieren.
alexapy benutzen auch die Home Assistant Leute für alexa_media_player.

Sidey

Zitat von: Sidey am 08 April 2026, 23:20:36Sinnvoll wäre alexa-cookie in einem eigenen Container unterzubringen:

Ich habe einen erstellt:
https://github.com/fhem/alexa-cookie-service

Ob das mit dem echodevice so funktioniert müsste aber jemand anderes mal testen, ich habe es nicht getestet.

Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker, WebAuth

passibe

Cool, danke!

Habe selbst keinen direkten Nutzen dafür, weil das bei mir inzwischen über Home Assistant läuft (und deshalb keinen Zeitdruck), aber wenn ich in den nächsten Wochen mal etwas Zeit finde, probiere ich das mal aus.

Sidey

Zitat von: passibe am 11 April 2026, 12:37:28Cool, danke!

Habe selbst keinen direkten Nutzen dafür, weil das bei mir inzwischen über Home Assistant läuft (und deshalb keinen Zeitdruck), aber wenn ich in den nächsten Wochen mal etwas Zeit finde, probiere ich das mal aus.

Achso. Naja ich habe es ausprobiert. Musste noch ein bisschen was anpassen.

Für weiteres Feedback und Ideen habe ich einen neuen Beitrag gestartet: https://forum.fhem.de/index.php?topic=144449.0
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker, WebAuth

ch.eick

#2273
Hallo zusammen,
ich habe da ein kleines Problem, da Soap::Lite wohl nicht im Basis Image ist.

2026.04.16 13:51:56.205 1: [ZentrumRepeater03 | 0000 | none | Define.1387] - ERROR:ERROR: Cannot define a FRITZBOX device. Perl modul Soap::Lite  is missing.
2026.04.16 13:51:56.206 1: define ZentrumRepeater03 FRITZBOX 192.168.178.4: ERROR: Cannot define a FRITZBOX device. Perl modul Soap::Lite  is missing.

Im Modul 72_FRITZBOX.pm ist folgendes zu finden, dafür müsste aber dann der Suchpfad für Perl im Container geändet werden.
eval "use SOAP::Lite;1"     or $missingModul .= "Soap::Lite ";       # sudo apt-get install libsoap-lite-perl

Hier meine Versuche im Container zum Testen
root@raspberrypi:/opt/fhem# apt-get install libsoap-lite-perl
# Es wurde hier installiert
 root@raspberrypi:/opt/fhem# dpkg -L libsoap-lite-perl | grep Lite.pm
/usr/share/perl5/SOAP/Lite.pm

# Jedoch verwendet FHEM diesen Suchpfad
 root@raspberrypi:/opt/fhem# perl -e "print join(\"\n\", @INC);"
/usr/src/app/core/lib/perl5/aarch64-linux-gnu
/usr/src/app/core/lib/perl5
/usr/src/app/3rdparty/lib/perl5/aarch64-linux-gnu
/usr/src/app/3rdparty/lib/perl5
/usr/local/lib/perl5/site_perl/5.38.5/aarch64-linux-gnu
/usr/local/lib/perl5/site_perl/5.38.5
/usr/local/lib/perl5/vendor_perl/5.38.5/aarch64-linux-gnu
/usr/local/lib/perl5/vendor_perl/5.38.5
/usr/local/lib/perl5/5.38.5/aarch64-linux-gnu
/usr/local/lib/perl5/5.38.5

# Wenn man es dann mit cpan im Container installiert dann kommt es zum Schluss zu einem loop
# mit strg C abgebrochen ist es dann aber trotzdem verfügbar

# In der docker-compose.yml finde ich jedoch nicht die richtige Stelle zum Nachinstallieren.

# So hat es wohl keine Wirkung
environment:
      CPAN_PKGS: SOAP::Lite


# Da ich noch eh einiges nachinstallieren muss habe ich es auch hier versucht

services:
  fhem:
    build:
      context: .
      dockerfile_inline: |
        FROM ghcr.io/fhem/fhem-docker:latest
        RUN <<EOF
          LC_ALL=C DEBIAN_FRONTEND=noninteractive apt-get update
          LC_ALL=C DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends python3-pandas python3-pymysql python3-sqlalchemy python3-sklearn python3-sklearn-lib
          LC_ALL=C DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends libcryptx-perl libpbkdf2-tiny-perl libcrypt-urandom-perl

          # Hier wird es installiert, liegt aber wie gesagt im falschen Pfad
          LC_ALL=C DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends libsoap-lite-perl

          # Alternativ hier: CPAN statt APT für dieses Modul
          # Dann läuft cpan wohl ebenfalls in den loop und man muss den build abbrechen
          cpan SOAP::Lite

          LC_ALL=C apt-get autoremove -qqy && LC_ALL=C apt-get clean
          pip3 install fhem --break-system-packages
        EOF
    pull_policy: build

Nun ist wieder die Frage, was mache ich falsch :-)

VG  Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

passibe

72_FRITZBOX.pm muss zu 72_FritzSmart.pm geändert werden, siehe https://forum.fhem.de/index.php?topic=144055.0

Einfach in DEF zu FritzSmart ändern müsste reichen, glaube ich

ch.eick

Zitat von: passibe am 16 April 2026, 16:17:5572_FRITZBOX.pm muss zu 72_FritzSmart.pm geändert werden, siehe https://forum.fhem.de/index.php?topic=144055.0

Einfach in DEF zu FritzSmart ändern müsste reichen, glaube ich
Wer lesen kann ist klar im Vorteil :-) :-), aber dazu muss man ja auch mal ins Device schauen.

_BITTE_LESEN

Das Modul 72_FRITZBOX.pm wird unter dem Namen nicht mehr weiter entwickelt, da ich das Modul auf Perl Package Technologie umgestellt habe.
Die Umbenennung auf 72_FritzSmart.pm resultiert aus der Überlegung des Parallelbetriebs und der Tatsache, dass es ja nicht mehr nur die  FritzBox,
sondern mittlerweile ein ganzer Fritz-Zoo geworden ist.
Für den Umzug die 'Raw definition', ohne die 'setstate' Zeilen, kopieren, das Device löschen, die Zeilen in eine neue 'Raw definition' einfügen,
und mit der Änderung im define von 'FRITZBOX' auf 'FritzSmart' ausführen. Zum Schluss das Passwort neu setzen.

Natürlich nehme ich auch gerne Tips zum Soap::Lite an.

Danke
    Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

passibe

Für was genau brauchst du noch Soap::Lite? Das müsste hinsichtlich FritzSmart rausgenommen worden sein: https://forum.fhem.de/index.php?topic=144055.msg1360728#msg1360728

Ansonsten aber ja, irgendwas scheint da mit INC nicht zu passen. Ich habs grade auch ausprobiert und kriege es jedenfalls über apt nicht installiert. cpan läuft zwar durch, aber auch da bleibt ein perldoc -l Soap::Lite leer.

Muss Sidey sich evtl. anschauen, ich weiß leider nicht, weshalb das INC des Docker-Images so ist wie es ist. Sieht aber irgendwie so aus, als würden üblicherweise von apt genutzte Pfade fehlen.

Sidey

@ch.eik:

Nutzt Du das ARM64 Image?


@passible:
FHEM nutzt nicht die OS Pakete.
Wie CPAN Nachinstalliert wird, stehr in der Readme.
Vermutlich ist es ein Fehler, dass das Paket fehlt. Leider hat es andere Pakete auch schon erwischt. Ein Muster konnte ich da noch nicht erkennen

Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker, WebAuth

ch.eick

Hallo Sidney,

Zitat von: Sidey am 16 April 2026, 18:23:46@ch.eick: Nutzt Du das ARM64 Image?
Ja, auf nem RPI5

Zitat@passible:
FHEM nutzt nicht die OS Pakete.
Wie CPAN Nachinstalliert wird, stehr in der Readme.
Vermutlich ist es ein Fehler, dass das Paket fehlt. Leider hat es andere Pakete auch schon erwischt. Ein Muster konnte ich da noch nicht erkennen
Ich brauche das Soap::Lite nicht, es war nur in dem alten Modul. Die Fritzboxen habe ich jetzt umgestellt und morgen mache ich den Gegentest mit dem Container Buid.

VG  Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

passibe

Zitat von: Sidey am 16 April 2026, 18:23:46@passible:
FHEM nutzt nicht die OS Pakete.
Wie CPAN Nachinstalliert wird, stehr in der Readme.
Vermutlich ist es ein Fehler, dass das Paket fehlt. Leider hat es andere Pakete auch schon erwischt. Ein Muster konnte ich da noch nicht erkennen
Ah, danke, jetzt sehe ich den Hinweis, dass dort steht, dass man CPAN benutzen soll.
Wobei im Readme selbst nur ein Beispiel für apt steht, nicht für CPAN :D Aber das ist jetzt spitzfindig, der Hinweis auf die docker-compose.yml ist ja da. Dort steht dann auch was zu CPAN (bzw. cpm).

@ch.eick, nur der Vollständigkeit halber, der richtige Befehl zum Nachinstallieren wäre demnach:
cpm install --show-build-log-on-failure --configure-timeout=360 --workers=$(nproc) --local-lib-contained /usr/src/app/3rdparty/ SOAP::LiteAber wichtig: vorher muss man noch build-essential per apt installieren, sonst klappt cpm nicht.



Und mir fällt grade auf, ich war vorhin ein bisschen neben der Spur, SOAP::Lite ist ja schon per default vorhanden, jedenfalls bei amd64. Man muss SOAP nur groß schreiben ...

Also das hier ist Käse
Zitat von: passibe am 16 April 2026, 18:08:29auch da bleibt ein perldoc -l Soap::Lite leer.