[Gelöst] FHEM + MQTT + Docker, keine Verbindung möglich

Begonnen von Gear, 05 Januar 2023, 15:27:33

Vorheriges Thema - Nächstes Thema

Gear

Hallo zusammen,
nachdem ich endlich MQTT im Docker zum Laufen gebracht habe, habe ich nun das Problem mit der Verbindung.

MQTT läuft im Docker und ist über die IP des ODROID erreichbar.
FHEM läuft auf dem ODROID, hat aber seine eigene IP, dies kann nicht auf MQTT des ODROID zugreifen.
RPi FHEM kann auf ODROID MQTT verbinden.
ODROID Test FHEM mit IP des ODROID kann auf ODROID MQTT verbinden.

Laut dem was ich so im www gefunden habe, muss man  hier mqtt:mqtt nutzen, aber das funktioniert nicht.

Ich hoffe ihr versteht, was ich genau meine, ist etwas schwer zu erklären.

Danke und Grüße
Gear
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Otto123

Hi,

ZitatFHEM läuft auf dem ODROID, hat aber seine eigene IP, dies kann nicht auf MQTT des ODROID zugreifen.
Warum sollte das nicht gehen? Mit was versuchst Du von FHEM aus auf den MQTT zuzugreifen?
Kannst Du bitte noch Definitionen posten?
Also :
MQTT Container wie definiert?
FHEM Container, wie definiert?
MQTT Client in FHEM wie definiert?

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

Gear

Zitat von: Otto123 am 05 Januar 2023, 16:04:38
MQTT Container wie definiert?
FHEM Container, wie definiert?
MQTT Client in FHEM wie definiert?

Habe ich über Portainer angelegt, wie kann ich das "auslesen" um es zu schicken?
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Gear

Mein DEFINE um auf MQTT zuzugreifen.

Nutze ich so, sowohl bei dem funktionierenden FHEM und bei dem nicht funktionierenden.

[code]define Mosquitto0815 MQTT 192.168.3.3:1883
#   DEF        192.168.3.3:1883
#   DeviceName 192.168.3.3:1883
#   FUUID      63b6cf7b-f33f-1683-4781-6c9f7359642ad4e1
#   FVERSION   00_MQTT.pm:0.249810/2021-09-16
#   NAME       Mosquitto0815
#   NEXT_OPEN  1672942236.91429
#   NOTIFYDEV  global
#   NR         49
#   NTFY_ORDER 50-Mosquitto0815
#   PARTIAL   
#   STATE      disconnected
#   TYPE       MQTT
#   eventCount 1
#   msgid      1
#   timeout    60
#   READINGS:
#     2023-01-05 15:11:42   connection      disconnected
#     2023-01-05 19:09:36   state           disconnected
#   messages:
#
setstate Mosquitto0815 disconnected
setstate Mosquitto0815 2023-01-05 15:11:42 connection disconnected
setstate Mosquitto0815 2023-01-05 19:09:36 state disconnected

[/code]
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Otto123

Naja da würde zunächst mal ein Screenshot von der Übersicht in Container list als Überblick helfen. Also dort wo man Zeilenweise die Container mit den Ports usw. sieht.

Meine Meinung zu Portainer: Ich finde das nicht schlecht um drauf zu schauen.
Aber Deine Gegenfrage auf meine Frage zeigt schon genau das Problem: Etwas Nachvollziehbares hast Du damit nicht geschaffen :) Ich würde Dir raten anstatt "zusammenklicken" mit docker-compose.yml Dateien zu arbeiten. Die sind kurz und aussagekräftig, die versteht glaub ich jeder, der Dir helfen will. Und für dich ist es die "Doku" - so hast Du definiert und so läuft es auch ;)

Du kannst zwar mit Inspect einen Json Blob erzeugen, aber zum Lesen für den Helfer find ich den Bäh ;)
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

Gear

Um ehrlich zu sein.
Ich habe meinen RPi4 vor 3 Jahren mal aufgesetzt mit FHEM, MQTT, MariaDB und Zigbee2MQTT.
Vor ca. 6 Monaten kam dann Debmatic dazu.

Das einzige, was ich mache, ist updaten und ab und zu mal etwas erweitern oder verändern.

Eig. will ich vom RPi auf den ODROID umziehen, da ich dachte, mit Docker wird das ggf. einfacher, da ich zum ersten mal OMV nutze zwecks Docker.
DailyServer für DMS, SmartHome und Um mal schnell Daten zwischen WorkStation, PC und / oder Laptop hin und her zu schieben.

Bin aktuell tatsächlich an dem Punkt zu sagen, komm OMV runter und alles einfach wie beim RPI draufklatschen und fertig.

Fahre am Sonntag für längere Zeit beruflich weg und wollte das Ding bis dahin eig. schon am Laufen haben, dachte mal eben darauf machen und fertig...  :-\ ::)

Ich habe so mit Docker noch nie richtig gearbeitet, da das DMS auf dem NAS schnell eingerichtet war und gelaufen ist. (Docker Neuling)
Der ODROID ist jetzt eine Lösung, da das NAS zu viel Strom verbraucht hat und der Pi vom RAM her voll ausgelastet war.

Eig wollte ich mich nicht zu sehr in das Thema einarbeiten, da keine Zeit und die Lust verfliegt langsam auch.
Sitze jetzt seit 3 Tagen an dem Teil...

-------

Anbei die drei Bilder:
FHEM : Externe IP
FHEM2 : Host IP
MQTT : Host IP

Danke Otto  ;D
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Otto123

klingt schwierig - vor allem wegen Deinem Zeitdruck.
FHEM - MyNetworkBridge ist auch ein Docker Container mit einer IP im normalen Netzwerk? Ich denke hier ist das Problem, Netzwerkfehler ?

Weil
MQTT im Docker Netzwerk läuft und ist von überall erreichbar.
FHEM im Docker Netzwerk kann auf MQTT zugreifen.

zweites FHEM mit 192.168.3.160 ist jetzt nochmal wo genau? Wozu soll das eigentlich jetzt sein?
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

binford6000

#7
Hallo Gear,
ich setze auch Docker/Portainer ein und kann es nur empfehlen! In Verbindung mit den von Otto erwähnten docker-compose.yml Files in Portainer als "Custom Template" hinterlegt macht das dann auch richtig Spaß! (kein Witz  8))
Bei mir genauso am Start:

  • FHEM
  • Mosquitto

Den Mosquitto habe ich allerdings als MQTT2-Client mit FHEM verbunden. Listings wie folgt:

FHEM:
version: "3"
services:
  fhem:
    image: fhem/fhem
    #container_name: fhem
    restart: unless-stopped
    ports:
      - 8083:8083
      - 7072:7072
      #- 1883:1883
    volumes:
      - fhem_data:/opt/fhem
    environment:
      - BLUETOOTH_GID=6001
      - CONFIGTYPE=fhem.cfg
      - FHEM_GID=6061
      - FHEM_PERM_DIR=0750
      - FHEM_PERM_FILE=0640
      - FHEM_UID=6061
      - GPIO_GID=6002
      - I2C_GID=6003
      - LANG=de_DE.UTF-8
      - LANGUAGE=de_DE:de
      - LC_ADDRESS=de_DE.UTF-8
      - LC_MEASUREMENT=de_DE.UTF-8
      - LC_MESSAGES=de_DE.UTF-8
      - LC_MONETARY=de_DE.UTF-8
      - LC_NAME=de_DE.UTF-8
      - LC_NUMERIC=de_DE.UTF-8
      - LC_PAPER=de_DE.UTF-8
      - LC_TELEPHONE=de_DE.UTF-8
      - LC_TIME=de_DE.UTF-8
      - LOGFILE=./log/fhem-%Y-%m-%d.log
      - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      - TELNETPORT=7072
      - TERM=xterm
      - TIMEOUT=10
      - TZ=Europe/Berlin
      - UMASK=0037
volumes:
  fhem_data:


Mosquitto:
services:
  mosquitto:
    image: eclipse-mosquitto:latest
    volumes:
      - mosquitto_config:/mosquitto/config/
      - mosquitto_data:/mosquitto/data/
      - mosquitto_log:/mosquitto/log/
    environment:
      - TZ=Europe/Berlin
    ports:
      - 1883:1883
      - 8883:8883
      - 9001:9001

volumes:
  mosquitto_config:
  mosquitto_data:
  mosquitto_log:


MQTT2-Client:
defmod mqtt2_client MQTT2_CLIENT 10.3.3.8:1883
attr mqtt2_client autocreate simple
attr mqtt2_client clientId fhem2
attr mqtt2_client clientOrder MQTT_GENERIC_BRIDGE MQTT2_DEVICE
attr mqtt2_client username fhemoscito


Aber ich muss gestehen dass ich mir das auch nicht mal eben kurz vorm Urlaub in drei Tagen angeeignet habe... :o

Bei Fragen einfach fragen...
VG Sebastian

binford6000

Zitat von: Otto123 am 05 Januar 2023, 20:47:07
FHEM - MyNetworkBridge ist auch ein Docker Container mit einer IP im normalen Netzwerk? Ich denke hier ist das Problem, Netzwerkfehler ?

Genau! Ist das evtl. ein isoliertes Netzwerk? Warum keine "normale" Bridge?

Gear

@binford6000
Ich will für FHEM eine eigene IP und nicht die Host IP.
Habe lange gesucht und versucht, dann heute vor meinem Post auf ein Tutorial gestoßen, welches das so erklärt hatte.

Eine "Normale" Bridge erzeugt keine eigene IP.

Na ja, schön wäre es, wenn es Urlaub wäre, ist beruflich, werde voraussichtlich 3 bis 6 Monate im "Hotel" verbringen und arbeiten. (Neue Arbeit, evtl. mit Umzug)

MQTT brauche ich als extra Dienst, da ich das auch anderweitig nutze, was nicht mit FHEM zu tun hat, darum nutze ich kein MQTT2. :)

Da ich eig. 0-Plan habe von selber erstellen und das bis heute auch noch nie gebraucht habe, kann ich damit eig. nicht viel anfangen.

@Otto
Tatsächlich, ich sehe gerade, das Standardprofil nutzt eine andere IP, als die, die ich eingerichtet habe. :o

Ich möchte einfach für Dinge wie FHEM, DMS und co. eine eigene IP nutzen.

Das eine FHEM ist mit der Host IP und war für mich zum Testen.
Das andere FHEM mit der eigenen IP (192.168....) ist das, was ich eig. nutzen möchte.

Beide FHEM laufen auf dem gleichen Docker, nur mit anderem Netzwerk.
> Was da wohl dann der Fehler ist?

> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Gear

Ok, wenn ich das MQTT auch in das Netzwerk hole, dann kann ich darauf zugreifen.
Also habe ich mir den Fehler selbst eingebaut.  :-[

OT --------------
So am Rande, gibt es ein Tutorial, welches das simple erklärt, wie ich z.B. ein "Custom FHEM" aufbauen kann?
Würde gerne ein paar Dinge dazu installieren, welche ich für FHEM brauche.
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Otto123

#11
Kann auch sein, da steigst Du jetzt mit drei Tagen Zeit auch zu hoch ins Thema ein. ;)
ZitatIch möchte einfach für Dinge wie FHEM, DMS und co. eine eigene IP nutzen.
Tut mir leid, da weiß ich nicht ob sowas mit docker geht. Mir reicht es wenn auf dem Dockerhost alles unter der gleichen IP aber mit unterschiedlichen Ports erreichbar ist. ;D
Ich befürchte Dein Ansatz kommt jetzt wieder aus dem PC / Virtuelle Maschine Umfeld. Wie schon gesagt: so ist docker nicht.

ZitatSo am Rande, gibt es ein Tutorial, welches das simple erklärt, wie ich z.B. ein "Custom FHEM" aufbauen kann?
Würde gerne ein paar Dinge dazu installieren, welche ich für FHEM brauche.
Meinst Du damit Docker?
Ja: eine Möglichkeit ist ein eigenes Image ;) https://heinz-otto.blogspot.com/2022/03/dockerfile-image-fur-den-container.html
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

Gear

Ja, ich weiß. ;D
Ist halt etwas doof gelaufen. :( ;)

Soweit ich das jetzt verstehe, dann sind das zwei unterschiedliche Pools.
Der interne Pool, welcher über die Host-IP erreichbar ist.
Und der externe Pool, der mit IP + MAC am Router gemeldet wird.

Ich kenne das wie gesagt vom QNAP und Docker, da ist das mit Bridge, DHCP und mit MAC umsetzbar.
Evtl. ist das eine QNAP eigene Sache für Docker oder es nutzt einfach niemand so.
Bin da wohl ein Sonderfall :P

Ich schaue mal, ob ich da mehr rausfinde und kann dann gerne eine Rückmeldung geben.

Danke @Otto & @binford6000

@Otto, ich schau mal ob ich mit deinem Link (Blogeintrag) klarkomme, danke!!

Einen schönen Abend
Grüße
Gear
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Gear

@Otto
So ist es vermutlich besser, die Container anzulegen, oder? :)
Jetzt einfach mal für mich zum Verständnis und so. (Hier fehlt halt noch mein eigenes Netzwerk mit einzubinden, sollte aber auch kein Problem sein)

docker run -d --name MQTT --restart always -it -p 1883:1883 -p 9001:9001 -v /MyShare/MQTT/Config:/mosquitto/config -v /MyShare/MQTT/Data:/mosquitto/data -v /MyShare/MQTT/Log:/mosquitto/log eclipse-mosquitto
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Otto123

Guten Morgen,

eine Möglichkeit. Ich finde docker-compose.yml besser. Die Kommandozeile ist nach dem Abschicken verschwunden ;) die yml Datei bleibt.
Ich würde den Gedanken mit dem eigenen Netzwerk irgendwie auf Weihnachten verschieben :)

Was mir als Nebeneffekt vom "Zusammenklicken" auch noch aufgefallen ist: Wo sind eigentlich Deine Daten? Hast Dur Dir da Gedanken gemacht?
Die sind in deinen beiden FHEM Definitionen nämlich jetzt im Container. Damit fällt das übliche Update des Containers (Alten Container löschen und neu machen) flach, denn dann würdest Du bei null beginnen.

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