Offizielles FHEM Docker Basis Image für verschiedene Plattformen

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

Vorheriges Thema - Nächstes Thema

geohem

Hallo,
ich habe nun auch meine zweite fhem Instanz auf Docker umgestellt.
Dort benutze ich die i2c Schnittstelle für ein USV Akkupack.
Um i2c zu nutzen muss ich nach jedem Start des Containers den Besitzer bzw die Gruppe von /dev/i2c* ändern auf root:dialout.

Kann ich das /pre-start.sh Script dafür nutzen?
Wo finde ich das und wie binde ich das ein? Ist dasDockerspezifisch?
Fhem auf bpi2mu - Fhem Remote auf Raspberry2
hmlan - hmuartlgw - culmax -yeelightbridge-jeelink-cul

Loredo

Zitat von: Holzlenkrad am 27 Januar 2019, 05:49:40
Das Docker Image (fhem/fhem) muss HINTER die Optionen, ansonsten wird z.B. die Angabe des Volumes ignoriert. Vielleicht kann @Loredo das in seinem Readme anpassen?


Ah, manchmal übersieht man solche Dinge einfach :-) Danke!


Zitat von: Holzlenkrad am 27 Januar 2019, 05:49:40Inwiefern unterscheidet sich denn die alexa-fhem Version in dem neuen Docker Container von dem alexa-fhem node.js Modul, dass im "alten" Image schon mitgeliefert wird?


Die Frage kann André besser beantworten. Konkret das Startverhalten war und ist für fhem-docker unwichtig, eine Rolle spielt es beim separaten alexa-fhem-docker Image, da dort kein FHEM dazwischen ist, sondern der Daemon direkt von Docker gestartet wird. Ansonsten sind in den neueren Version gewiss viele Detailverbesserungen für einen robusteren Betrieb, das sind aber alles alexa-fhem Spezifika und relativ unwichtig für fhem-docker, da dort die Basis ja auf einem verlässlichen Stand ist, der schon funktioniert.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Loredo

Zitat von: geohem am 27 Januar 2019, 09:42:18
Um i2c zu nutzen muss ich nach jedem Start des Containers den Besitzer bzw die Gruppe von /dev/i2c* ändern auf root:dialout.

Kann ich das /pre-start.sh Script dafür nutzen?
Wo finde ich das und wie binde ich das ein? Ist dasDockerspezifisch?


Das Script existiert nur, wenn du selbst eines schreibst und es per "-v" Parameter als Volume mit in den Container legst. Dort muss es unter /pre-start.sh zu finden sein:



-v /path/on/host/pre-start.sh:/pre-start.sh:ro



Die Besitzrechte kann ich aber auch im Entry Script direkt anpassen. Bisher war mir diese Notwendigkeit nicht bekannt, da ich natürlich nicht sämtliche Funktionen in FHEM selbst benutze oder testen kann :-)
Ich bin aber nicht sicher, was alles notwendig ist bzw. scheinen mir nach kurzer Recherche hier auch eine Menge Halbwahrheiten zu kursieren (bspw. gibt es eigentlich dedizierte System Gruppen "gpio" und "i2c" für diese Dinge, anstatt dialout zu verwenden).
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Loredo

Ich habe jetzt mal einen Wurf zur Korrektur der Berechtigungen im Entwickler-Image implementiert:
https://github.com/fhem/fhem-docker/blob/959b9120c9e403fdf0f1f13013356b07a1ef97ac/src/entry.sh#L131-L151


Dabei wird absichtlich nicht auf die Gruppe dialout gesetzt, sondern getrennt auf i2c und gpio. Allerdings werden diese Gruppen IDs dynamisch bei der Installation des Docker Host Systems vergeben, weshalb die GIDs in Docker dann per Default anders lauten. Da ich innerhalb des Docker Containers aber nicht nachschauen kann, welche GIDs das Hostsystem verwendet, müssen diese GIDs bei der Erstellung des Docker Containers als Umgebungsvariable übergeben werden (siehe README.md).
Diese Vorgehensweise vermeidet, dass man per chown auch die Besitzrechte ändert, um die Abgrenzung zwischen den verschiedenen Use Cases weiterhin zu gewährleisten und die Sicherheit des Host Systems zu erhöhen.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

geohem

Fhem auf bpi2mu - Fhem Remote auf Raspberry2
hmlan - hmuartlgw - culmax -yeelightbridge-jeelink-cul

Loredo

Prima, danke für das Feedback!
Musstest du dafür die GIDs anpassen?
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

geohem

Nein das ist auf Standard. Glücklicherweise musste ich da nicht dran. Ehrlicherweise muss ich zugeben, dass ich da auch nicht gewusst hätte, was zu tun ist. :)
Fhem auf bpi2mu - Fhem Remote auf Raspberry2
hmlan - hmuartlgw - culmax -yeelightbridge-jeelink-cul

Loredo

Ok :-)


Habe es somit in die Produktivversion übernommen, die nun gerade baut.
Änderungen in v1.7.1:


- Berechtigungen für Bluetooth, GPIO und I2C Zugriff
- rpi.gpio hinzugefügt (nur ARM Plattformen)
- Python Layer umgestaltet: Alle Pakete werden per pip3 installiert statt über Debian Pakete
- Node.js Layer: alexa-cookie2 hinzugefügt (für echodevice Modul)
- Perl Layer: Pakete hinzugefügt: libio-all-perl, libtypes-path-tiny-perl, libutf8-all-perl
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

ChrisW

habe das ganze mal im Docker auf meiner Synology laufen. Wie kann ich nun die USB Ports da "durchschleifen" ?
Raspberry PI3 mit allem möglichen.

kadettilac89


ChrisW

Okay Danke nur wie kann ich das USB Gerät per Seriennummer oder ähnliches anbinden ? So wäre es doch auf den Port beschränkt ? Habe da so einen passiven 4er USB Port dran und 2 Sticks
Raspberry PI3 mit allem möglichen.

kadettilac89

#161
Zitat von: ChrisW am 29 Januar 2019, 20:22:50
Okay Danke nur wie kann ich das USB Gerät per Seriennummer oder ähnliches anbinden ? So wäre es doch auf den Port beschränkt ? Habe da so einen passiven 4er USB Port dran und 2 Sticks

wenn das device eine eindeutige id hat dann kannst du auch das durchreichen. auf dem rpi3 ist es ...


ls -l /dev/serial/by-id


damit bekommst du alle angeschlossenen usb-devices mit der eindeutigen id

/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A7031TM7-if00-port0   ist z. B. mein CUL.

in docker compose sagst du dann

- /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A7031TM7-if00-port0:/dev/ttyUSB0

im container wäre bei dem beispiel der CUL unter /dev/ttyUSB0 ansprechbar. musst mal prüfen, bin mir grad nicht sicher ob die syntax passt. beispiel von mir ist <device_host>:<device_container>   bin mir grad nicht sicher ob das docker-device vor oder nach dem doppelpunkt ist.

ach ja ... vorteil von serial/by-id ... es ist egal an welchem usb-port du ansteckst.

ChrisW

schade das geht auf dem synology wohl nicht. kein Serial Ordner zu finden.
Ich habe dort den Docker mit hohen Privilegien gestartet so schleift er von selbst alles durch und Fhem findet es von selbst due CULs sind nun in Fhem und laufen. Trotzdem das "feste" hinterlegen wäre schon schön da am NAS öfters mal die Ports wechseln wie ich mitbekommen habe.
Raspberry PI3 mit allem möglichen.

Schlimbo

Hallo Loredo,

ware es möglich im DockerImageInfo Modul noch ein Reading wie zum Beispiel "updatesAvailable" und/oder "image.latest" zu integrieren?
So dass man sich über FHEM einfach benachrichtigen könnte, sobald ein neues Docker Image verfügbar ist.

FunkOdyssey

Kurze Frage: Hast sich im Master-Branch des Docker-Images irgendetwas an den Multicast-Paketen geändert?
Ich habe gestern das Image neu gepullt und vermutlich seitdem folgenden Fehler in FHEM:

Messages collected while initializing FHEM:
configfile: install IO::Socket::Multicast to use autodiscovery
Please define HarmonyController 5c42dca7-f33f-47ae-93f7-xxxxxxxxxx first


Im Changelog zu FHEM und https://github.com/fhem/fhem-docker konnte ich jedoch nichts in dieser Richtung finden.