Synology Container zusammenspiel fhem und zigbee2mqtt

Begonnen von roemi, 26 März 2024, 20:18:28

Vorheriges Thema - Nächstes Thema

roemi

Hallo und nein, du trittst mir nicht zu nahe und ja, ich taste mich langsam ran an das Thema.
Nochmal mein Problem:
Beide Container, Fhem und z2m, liegen im gleichen Docker Netz.
Ich muss aber leider in die configuration.yaml vom z2m Container immer die exakte Container IP vom Fhem Container angeben damit dieser startet.
mqtt:
  base_topic: zigbee2mqtt
  server: mqtt://172.17.0.2:1884
  client_id: zigbee_pi
  keepalive: 60
  reject_unauthorized: true
  version: 4
Wenn aber Docker kompl. neu gestartet wird, vergibt das Management von Synology Docker den Containern neue IPs.
In folge dessen startet der z2m Container erst wenn ich die IP angepasst habe.
Gemeint sind damit die IPs im Docker Netz
Es funktioniert nicht den Namen des Fhem Container oder die Gateway IP zu nehmen.
Portainer werde ich installieren und mir anschauen.

Danke Euch und ich bin für jede Hilfe/Idee dankbar

Römi

https://www.roemi.de ... von einem, der auszog, 5000 deutsche Biere zu probieren

juemuc

Hallo Römi,

hier ein Beispiel, wie du in Portainer die IP-Adresse des Containers festlegen kannst. Zu dem Thema gibt es viele gute youtube-Anleitungen.
Du darfst diesen Dateianhang nicht ansehen.

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

Otto123

#17
Hi,

also ich nehme z.B. in der docker-compose.yml
- SONOS2MQTT_MQTT=mqtt://fhem:1883Ich vergebe immer containernamen:
  fhem:
    container_name: fhem
    image: fhem/fhem:latest
Ich bin mir jetzt nicht ganz sicher und finde die Stelle in der Doku nicht. Aber ich meine im (default) container network geht die Namensauflösung mit container- (und ev. sogar mit service- ) namen. Allerdings nur innerhalb eines docker netzwerkes / Stacks
Beispiel, ping auf den deconz Container:
docker exec -i fhem bash -c "ping deconz"
Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

roemi

@juemuc: Ich drücke mich evtl. falsch aus. Leider weiß ich aber auch nicht wie ich es besser erklären kann. Meine Container sind von außen erreichbar. Mir geht es einzig um die Kommunikation unter den Container selbst. Und hier auch nur um zwei Container. Nämlich fhem und z2m.

"Hallo" @Otto  :) : An sich haben die Container Namen und z.B. die Datenbank spreche ich auch über diesen an. Läuft problemlos. Die Docker interne IP kann dabei lauten wie auch immer sie will. Synology empfiehlt auch für die Kommunikation der Container untereinander den Namen zu verwenden.
Koenkk empfiehlt "If you run the MQTT-Server on the same host (localhost) you could use the IP of the docker0 bridge to establish the connection: server: mqtt://172.17.0.1"
Aber beides will nicht funktionieren.

Da mein Fhem Container den irren Namen fhem-fhem-minimal-1 hat, habe ich schon überlegt ob z2m damit nicht zurechtkommt. Das wäre dann aber auch wieder ein seltsame Sache denn der xampp Container trägt den Namen tomsik68-xampp-1 und ist, wie gesagt, darüberansprechbar.


Ich habe Portainer installiert und werde damit ein wenig spielen/testen.

Römi
https://www.roemi.de ... von einem, der auszog, 5000 deutsche Biere zu probieren

Otto123

Du betreibst den MQTT auf dem Host und nicht im docker?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

roemi

Doch, im Docker.  :o
Opps ... ich meinte natürlich das die Container nur innerhalb einer Docker bridge per Name ansprechbar sind.

RÖmi
https://www.roemi.de ... von einem, der auszog, 5000 deutsche Biere zu probieren

roemi

Vielleicht wird das ganze so etwas verständlicher
Du darfst diesen Dateianhang nicht ansehen.
Du darfst diesen Dateianhang nicht ansehen. 
https://www.roemi.de ... von einem, der auszog, 5000 deutsche Biere zu probieren

kadettilac89

Zitat von: roemi am 30 März 2024, 15:32:45@juemuc: Ich drücke mich evtl. falsch aus. Leider weiß ich aber auch nicht wie ich es besser erklären kann. Meine Container sind von außen erreichbar. Mir geht es einzig um die Kommunikation unter den Container selbst. Und hier auch nur um zwei Container. Nämlich fhem und z2m.

"Hallo" @Otto  :) : An sich haben die Container Namen und z.B. die Datenbank spreche ich auch über diesen an. Läuft problemlos. Die Docker interne IP kann dabei lauten wie auch immer sie will. Synology empfiehlt auch für die Kommunikation der Container untereinander den Namen zu verwenden.
Koenkk empfiehlt "If you run the MQTT-Server on the same host (localhost) you could use the IP of the docker0 bridge to establish the connection: server: mqtt://172.17.0.1"
Aber beides will nicht funktionieren.

Da mein Fhem Container den irren Namen fhem-fhem-minimal-1 hat, habe ich schon überlegt ob z2m damit nicht zurechtkommt. Das wäre dann aber auch wieder ein seltsame Sache denn der xampp Container trägt den Namen tomsik68-xampp-1 und ist, wie gesagt, darüberansprechbar.


Ich habe Portainer installiert und werde damit ein wenig spielen/testen.



Du musst das Attribut "container_name" setzen, dann hast du keine "komischen" Namen mehr. Wenn Synology selbst keine komischen Dinge macht kennen sich die Contanier am Namen ohne dass du irgenwelche IP setzen musst wie schon geschrieben. Wenn du aktuell den MQTT auf dem Host laufen hast (was bis jetzt nicht klar kommuniziert wurde) würde ich den in einen Container verfrachten. EMQX ist z. B. ganz nett, da eine Oberfläche dabei ist mit der du alles konfigurieren kannst. Im Anschluss überall nur noch Hostnamen und keine IP mehr.

Zitat von: kadettilac89 am 30 März 2024, 12:10:00Ich würde Zigbee2Mqtt und Fhem im selben Netz lassen, dann kennen sich die hosts und du brauchst keine IP.

roemi

Hallo,

z2m läuft nicht auf dem Host sonder auch im Container und in der gleichen bridge wie fhem.

Aber wichtiger, wie darf ich das verstehen mit dem Attribut "container_name" verstehen. Ist das was anderes als der Containername (s. Anhang)
Du darfst diesen Dateianhang nicht ansehen.
Und setzte ich das als Umgebungsvariable?

Römi
https://www.roemi.de ... von einem, der auszog, 5000 deutsche Biere zu probieren

Otto123

Zitat von: roemi am 30 März 2024, 16:04:19wie darf ich das verstehen mit dem Attribut "container_name" verstehen.
oben ist ein Auszug meiner docker-compose.yml - aber die hast Du wohl nicht auf der syno?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

kadettilac89

Zitat von: roemi am 30 März 2024, 16:04:19Hallo,

z2m läuft nicht auf dem Host sonder auch im Container und in der gleichen bridge wie fhem.

Aber wichtiger, wie darf ich das verstehen mit dem Attribut "container_name" verstehen. Ist das was anderes als der Containername (s. Anhang)

Und setzte ich das als Umgebungsvariable?

Römi

Das ist die Sicht von Synology. Ob das an Docker durchgereicht wird sieht man da nicht. Wie sieht die yml-Datei aus? Du hattest vonhin mal MQTT gepostet. Zeige das mal von Fhem. Wo das in Synology gesetzt wird weiß ich nicht. In der yml-DAtei wäre es der Parameter Container_name wie geschrieben. Sieht bei mir so aus ... zumindest ein Auszug davon.

    fhem:
        image: ghcr.io/fhem/fhem-minimal-docker:4.0.0-beta7-bullseye
        container_name: fhem
        restart: always


Das hier vom Fhem-Container. Bei mqtt ist das Attribut nicht zu sehen.
Zitat von: roemi am 30 März 2024, 13:22:06mqtt:
  base_topic: zigbee2mqtt
  server: mqtt://172.17.0.2:1884
  client_id: zigbee_pi
  keepalive: 60
  reject_unauthorized: true
  version: 4


Otto123

Zitat von: roemi am 30 März 2024, 15:32:45Da mein Fhem Container den irren Namen fhem-fhem-minimal-1 hat,
Das kommt daher, dass Du ihn nicht vergeben hast. Er wird dann aus dem Pfad für die docker-compose.yml Datei und dem Servicenamen und einer laufenden Nummer gebildet.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

roemi

Ich komme gerade vom Spanier und habt lecker Tapas und Wein hinter mir.
Davor habe ich kurz, veranlasst durch die drei letzten Posts, nach den yml Datei gesucht bzw. recherchiert. Augenscheinlich suche nicht nur ich, sondern auch andere Synology Nutzer danach.
Aber ... ich bin auf den von mir stets ignorierten Punkt "Projekte" gestoßen.
Hier kann ich Container manuell anlegt und damit ergibt "passibe" erster Post für mich Sinn.
Ich werde im laufe der nächsten Tage einen Docker Container manuell anlegen und dabei alles berücksichtigen was genannt wurde.
Kann ja nur gut gehen und schlechter kann es nicht werden.

Danke Euch und ich melde mich frohlockend oder verzweifelt.

GN8

Römi
https://www.roemi.de ... von einem, der auszog, 5000 deutsche Biere zu probieren

roemi

Frohe Ostern!!!

Ich habe nun einen Container mit folgender manuell angelegter cpmpose.yaml gestartet (und er läuft auch)
version: '2'
services:
    fhem:
        container_name: fhemtest3
        image: fhem/fhem-minimal:latest
        hostname: fhemtest3
        ports:
            - "8084:8083"
        volumes:
            - /volume1/docker/fhem-test3:/opt/fhem
        environment:
            - LOGFILE=./log/fhem-%Y-%m.log
            - FHEM_PERM_DIR:0754
            - FHEM_PERM_FILE:0644
            - UMASK=0033
            - TZ=Europe/Berlin
            - TELNETPORT=7072
        network_mode: bridge
        restart: 'always'

Folgende Ergebnisse haben die Abfragen gebracht:
michael@NAS101:~$ sudo docker container inspect fhemtest3 | grep --after 3 DNSNames

michael@NAS101:~$ sudo docker container inspect fhemtest3 | grep --after 3 IPAddress
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "a27ebc91bafcc4614eb8ca5c33dcf0955c299ccadd8b6be1f511f039a2777269",
            "Gateway": "172.17.0.1",
--
            "IPAddress": "172.17.0.5",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:05",
--
                    "IPAddress": "172.17.0.5",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                   
michael@NAS101:~$ sudo docker container inspect fhemtest3 | grep --after 3 hostname
        "HostnamePath": "/volume1/@docker/containers/babb3260b5b6b50325a3276f270c755d9bb8832274d158b2ed16882c761c26ec/hostname",
        "HostsPath": "/volume1/@docker/containers/babb3260b5b6b50325a3276f270c755d9bb8832274d158b2ed16882c761c26ec/hosts",
        "LogPath": "/volume1/@docker/containers/babb3260b5b6b50325a3276f270c755d9bb8832274d158b2ed16882c761c26ec/log.db",
        "Name": "/fhemtest3",

michael@NAS101:~$ sudo docker exec koenkk-zigbee2mqtt-1 nslookup fhemtest3.
Server:        192.168.178.1
Address:    192.168.178.1:53

** server can't find fhemtest3.: NXDOMAIN

** server can't find fhemtest3.: NXDOMAIN

Das heißt aber doch, das z2m den Namen noch immer nicht auflösen kann und ich folgerichtig kein Schritt weiter bin.
Oder bin ich jetzt zu pessimistisch?
Das alles live auszuprobieren geht erst am Dienstag wenn die Chefin nicht im Haus ist.

Römi
https://www.roemi.de ... von einem, der auszog, 5000 deutsche Biere zu probieren

Otto123

Zitatfhemtest3.
Das mit dem Punkt wird nicht gehen :)

Probier mal ein:
docker exec -i koenkk-zigbee2mqtt-1 bash -c "ping fhemtest3"
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz