Autor Thema: fhem mit sonos im docker container Problem  (Gelesen 1183 mal)

Offline FunkOdyssey

  • Sr. Member
  • ****
  • Beiträge: 951
Antw:fhem mit sonos im docker container Problem
« Antwort #15 am: 01 September 2017, 14:47:49 »
Ich habe bei mir auch noch das Problem, dass sich die fhem_sonos-Instanz irgendwann irgendwie zerlegt und in einer CPU-Last im Host mit 100% endet.
Noch spiele ich mit Docker und habe aktuell folgende Container eingeplant:

- Fhem
- eBusd
- Fhem_sonos (Host-Modus)
- Ha-bridge (Host-Modus)
- Hmcfgusb (privileged=true)
- Homebridge
- ReverseProxy mit SSL (Passwort und Client-Zertifikat)

Dabei habe ich mich an deiner Vorarbeit und der des Foren-Users pipp37 orientiert.
Mit dem Proxy bin ich noch gar nicht angefangen. Der Rest scheint schon zu laufen.
Ich traue mich nur noch nicht, den Hebel umzulegen und das RasPi durch meine neue Hardware zu ersetzen.
Außerdem will ich vorher noch das Host-Betriebssystem wieder wechseln. Ich habe derzeit Debian9Stretch und will wieder zu Ubuntu 16.04 LTS.

Wenn ich fertig bin, werde ich das auch in ein GitHub-Repository packen. Aber noch ist mir das zu sehr gepfuscht.

Es würde mich freuen, wenn du deine Neuerungen auch ins Repo committen könntest.



Frage am Rande: Ich sehe in vielen Fhem-Docker-Images, dass supervisord genutzt wird. Ist das überhaupt notwendig? Nice to have und praktisch, wenn man Fhem eigentlich nur als Daemon laufen lassen kann. Aber irgendwie ist mir das zu viel (ich nenne es mal) "Overhead".
FHEM@RasPi

Offline Erdmännchen

  • New Member
  • *
  • Beiträge: 10
Antw:fhem mit sonos im docker container Problem
« Antwort #16 am: 01 September 2017, 16:24:10 »
Bevor ich mit der HA-Bridge anfange, habe ich mal meinen aktuellen Stand hoch geladen.

https://github.com/3rdmaennchen/docker_test

Sorry hab mich noch nicht mit supervisord beschäftigt, kann ich nichts zu sagen.

mfg
« Letzte Änderung: 01 September 2017, 16:32:35 von Erdmännchen »

Offline Erdmännchen

  • New Member
  • *
  • Beiträge: 10
Antw:fhem mit sonos im docker container Problem
« Antwort #17 am: 03 September 2017, 11:41:27 »
Lieber dev0,

könntest du bitte auf deine Antwort https://forum.fhem.de/index.php/topic,71191.msg627802.html#msg627802
näher eingehen.
Ihr werdet nicht drum herumkommen Euch mit Multicast auseinander zu setzen. Sonos benutzt 239.255.255.250/1900.
Out of the box funktioniert es nicht, aber je nachdem wie Du das Netz segmentiert hast, kannst Du IGMP oder einen Multicast/Bonjour-Proxy einsetzen.

Was genau muss ich in Docker machen, damit Multicast für Sonos funktioniert?

Mein Traumszenario ist ein FHEM Container mit integriertem "Sonos-Server" ohne host mode.
Ist das überhaupt möglich, wenn man in docker das Netzwerk richtig einrichtet?
In etwa so, wie im Abschnitt "Custom Networks":
https://runnable.com/docker/docker-compose-networking

Momentan habe ich einen Fhem Container im network mode bridge und einen Sonos Container als host.
Damit FHEM den Sonos Container sieht, muss ich den Sonos Server als hart verdrahtete IP definieren.

Es ist keine schöne Lösung, da sich die Container intern nicht sehen.
Vielleicht mit einem Overlay Network https://www.youtube.com/watch?v=nGSNULpHHZc
oder "verlinken" des Containers, wie ich es mit dem mysql Server gemacht habe. https://docs.docker.com/compose/compose-file/#links

Wie schon gesagt, am liebsten hätte ich nur einen Container mit FHEM und Sonos. Aber ich weiss nicht genau, was ich machen muss.
Ich habe versucht deine Aussage mit der Multicast Adresse von Sonos zu verstehen.
Wenn ich das richtig verstanden habe kann man mit einer Multicast Adresse bestimmte Geräte im Netzwerk ansprechen.
Die Multicast Adresse setzt sich aus der IP Adresse und dem MAC-Adress-Bereich der Geräte zusammen.
Da ich kein Netzwerk Profi bin, ist das alles nur gefährliches Halbwissen.

Hier meine aktuelle Docker Umgebung https://github.com/3rdmaennchen/docker_test

Über eine Antwort würde ich mich freuen.
Ich verlange keine Komplettlösung, nur ein paar Denkanstöße oder nähere Informationen mit welchem Thema ich mich beschäftigen muss.

Für Nähere Informationen stehe ich dir gerne zur Verfügung.

MfG Erdmännchen

Offline dev0

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2826
    • _.:|:._
Antw:fhem mit sonos im docker container Problem
« Antwort #18 am: 03 September 2017, 11:57:19 »
Was genau muss ich in Docker machen, damit Multicast für Sonos funktioniert?
Da Du mich direkt ansprochen hast (sonst hätte ich mir die Antwort verkniffen): Die bisherigen Antworten aus diesem Thread weiter verfolgen und Dich in Docker einarbeiten. Konkrete Fragen werden hier vmtl. beantwortet, auch wenn es mMn im FHEM Forum offtopic ist.

Offline Erdmännchen

  • New Member
  • *
  • Beiträge: 10
Antw:fhem mit sonos im docker container Problem
« Antwort #19 am: 03 September 2017, 12:21:01 »
Da Du mich direkt ansprochen hast (sonst hätte ich mir die Antwort verkniffen)
Danke das du dir Zeit für eine Antwort genommen hast, hat mich echt weiter gebracht.  :-\

Tut mir echt Leid, daß ich mich als Neuling hier im Forum nicht so auskenne.
Ich werde mich mal durch das Offtopic Forum klicken.

Schönen Sonntag noch.

Offline dev0

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2826
    • _.:|:._
Antw:fhem mit sonos im docker container Problem
« Antwort #20 am: 03 September 2017, 12:52:30 »
Zitat
Ich werde mich mal durch das Offtopic Forum klicken
Statt sich "irgendwo" durchzuklicken, könnte man sich auch direkt die Grundlagen der verwendeten Software/Technologie aneignen...

Offline Erdmännchen

  • New Member
  • *
  • Beiträge: 10
Antw:fhem mit sonos im docker container Problem
« Antwort #21 am: 03 September 2017, 13:03:21 »
Alles klar mach ich.
Danke für deine Zeit.

Offline FunkOdyssey

  • Sr. Member
  • ****
  • Beiträge: 951
Antw:fhem mit sonos im docker container Problem
« Antwort #22 am: 05 September 2017, 14:28:00 »
Hallo Erdmännchen, lass dich bitte nicht entmutigen. :-) Ich hatte auch ein wenig die Hoffnung, dass dev0 vielleicht eine schnelle Antwort zur Hand hat. Hätte ja sein können. Dann müssen wir uns wohl in den Docker-Foren umschauen. Die Fragen sind für ein FHEM-Forum wirklich sehr speziell. Wobei ich - ehrlich gesagt - hier noch nie an Grenzen gestoßen bin. Bisher habe ich selbst immer Hilfe zu auch offtopic-Fragen erhalten können. Nur sind die Docker-Threads hier wirklich Mangelware. :-)

Ich persönlich habe mir auch schon den Wolf gesucht und befürchte, dass MultiCast in einem bridged-Docker-Container nicht laufen wird. dev0 erwähnte ja auch bereits, dass es "out-of-the-box" nicht klappen wird. Ich finde zwar Ansätze in verschiedenen Threads dazu, mir wird eine solche Umsetzung zu komplex. Dann bleibe ich lieber im Host-Modus.



Was mich noch interessieren würde:
Ich sehe in deinem fhem_sonos-Container die relative geschickte Möglichkeit, das FHEM zu aktualisieren.
Aber wird dies nicht eigentlich nur beim Erstellen des Containers durchgeführt?
Muss ich also die Container regelmäßig löschen, wenn ich die FHEM-Instanz updaten möchte?
FHEM@RasPi

Offline Erdmännchen

  • New Member
  • *
  • Beiträge: 10
Antw:fhem mit sonos im docker container Problem
« Antwort #23 am: 07 September 2017, 18:31:20 »
Hallo FunkOdyssey,

die dockerfile erstellt ein image und daraus wird beim ersten starten des "Containers" ein container erstellt.
d.h. der erstellte Container ist direkt lauffähig für meine fhem.cfg ohne das ich Sachen aus der Config löschen oder aus kommentieren muss.

Ich benutze z.b. das ABFALL Modul, wenn ich FHEM (ohne update) das erste mal mit meiner eigenen Config laden möchte, stürtz FHEM ab, weil das Modul ABFALL nicht gefunden wurde.

FHEM hat bei der Installation nicht alle Module die ich brauche an Bord.
Bei einem update von FHEM werden diese erst geladen (Quellen stehen in der controls.txt).

Somit ist mein Container, der aus dem Image erstellt worden ist, direkt lauffähig.
Ohne das man blöd rum tricksen muss: definierte Module in der fhem.cfg aus kommentieren usw.

Du kannst ganz normal in deinem Container "update all" machen, du brauchst den Container nicht zu löschen.
Dein container ist dann auf dem aktuellsten stand, aber dein image hat dann noch den Softwarestand vom Tag des Erstellens.

Ich hoffe du konntest folgen. Kann das irgendwie schlecht beschreiben, ist auf jeden Fall komfortabel   ;D

Habe mich ein wenig mit docker networking auseinander gesetzt.
Wenn ich das richtig verstanden habe, werden beim erstellen von Container auto. die Container an das docker bridge Netzwerk (docker0) eingebunden.
d.h. eine interne IP Adresse wird vergeben (172.17.0.x) und es wird ein Eintrag in die iptables generiert, der auf diese IP Adresse verweist, wenn eine Anfrage über das Netzwerk kommt.

Nur eine Vermutung:
Wenn du die richtigen Ports aus einem Container nach aussen mapst, kann Sonos zwar Daten senden, aber das Empfangen funktioniert nicht, weil das docker0 Netzwerk nicht weiss wohin mit den Daten.
d.h. man muss in der iptables die multicast Adresse von Sonos auf den Container verweisen.

Diese Informationen sind ohne Gewähr und verzeiht mir, wenn ich etwas falsches geschrieben habe. Dann korrigiert mich bitte, ich bin kein Profi.
Das sind alles nur Vermutungen!!!

Ich schmeisse einfach mal ein paar links in die Runde:
http://www.dasblinkenlichten.com/docker-networking-101/
http://www.dasblinkenlichten.com/docker-networking-101-host-mode/
http://www.dasblinkenlichten.com/docker-networking-101-mapped-container/
https://blog.docker.com/2016/12/understanding-docker-networking-drivers-use-cases/
https://runnable.com/docker/basic-docker-networking
https://runnable.com/docker/docker-compose-networking

Vielleicht kann man sich auch Informationen aus einem airsonos dockerfile holen:
https://github.com/justintime/docker-airsonos

Ich bleibe auch erstmal im host mode, wenn ich nochmal viel Zeit und Lust habe, werde ich mich nochmal damit beschäftigen.

Wünsche noch viel Erfolg.

Offline FunkOdyssey

  • Sr. Member
  • ****
  • Beiträge: 951
Antw:fhem mit sonos im docker container Problem
« Antwort #24 am: 08 September 2017, 15:13:46 »
Hallo FunkOdyssey,

die dockerfile erstellt ein image und daraus wird beim ersten starten des "Containers" ein container erstellt.
d.h. der erstellte Container ist direkt lauffähig für meine fhem.cfg ohne das ich Sachen aus der Config löschen oder aus kommentieren muss.

Ich benutze z.b. das ABFALL Modul, wenn ich FHEM (ohne update) das erste mal mit meiner eigenen Config laden möchte, stürtz FHEM ab, weil das Modul ABFALL nicht gefunden wurde.

FHEM hat bei der Installation nicht alle Module die ich brauche an Bord.
Bei einem update von FHEM werden diese erst geladen (Quellen stehen in der controls.txt).

Somit ist mein Container, der aus dem Image erstellt worden ist, direkt lauffähig.
Ohne das man blöd rum tricksen muss: definierte Module in der fhem.cfg aus kommentieren usw.

Du kannst ganz normal in deinem Container "update all" machen, du brauchst den Container nicht zu löschen.
Dein container ist dann auf dem aktuellsten stand, aber dein image hat dann noch den Softwarestand vom Tag des Erstellens.

Ich hoffe du konntest folgen. Kann das irgendwie schlecht beschreiben, ist auf jeden Fall komfortabel   ;D

Danke, Erdmännchen, für die ausführliche Antwort. Das hättest du dir aber sparen können. Wie der Docker-Fhem-Container funktioniert, habe ich schon verstanden. Bei mir ist es genauso. Wobei ich komplett /opt/fhem als Volume angelegt habe. Einschränken kann ich das später.

Meine Frage bezog sich eher auf die eigene FHEM-Instanz für Sonos. Hier führst du ja nur bei der Erstellung des Containers ein Update durch. Danach wird die update.cfg ja umbenannt.



Am Rande: AirSonos läuft bei mir übrigens im Host-Modus. :-)
FHEM@RasPi

Offline Erdmännchen

  • New Member
  • *
  • Beiträge: 10
Antw:fhem mit sonos im docker container Problem
« Antwort #25 am: 14 September 2017, 13:31:36 »
Hallo FunkOdyssey,

Im FHEM Sonos Container ist noch die update.cfg aktiv d.h. du musst nur Fhem einmal im Container starten.

perl fhem.pl fhem.cfg
Dann wird sich FHEM updaten und beenden.
(Hoffe ich, bis jetzt hab ich den Container & Image immer gelöscht und neu gebaut.)

Falls es zu Problemen kommt musst du den org. FHEM Container so lange beenden.

Mfg Erdmännchen

 

decade-submarginal