Neuigkeiten:

Am Sonntag den 8.12.2024 kann es ab ca. 8:00 Uhr zu kurzzeitigen Einschränkungen / Ausfällen bei den Diensten des FHEM Vereines kommen.
Die Server müssen mal gewartet und dabei neu gestartet werden ;)

Hauptmenü

[gelöst] ESPEasy in fhem auf Synology DS918+ im Container-Manager

Begonnen von Wiesenfreund, 29 Mai 2024, 09:02:16

Vorheriges Thema - Nächstes Thema

Wiesenfreund

Hallo,
ich versuche ESPEasy und ESPEasy-Device auf einer Synology DS918+ im Container-Manager (Docker) zu betreiben. Der ESPEasy-Server ist ein ESP8266 mit der Firmware Build mega-20240414 mit der Adresse 192.168.178.64. Im Docker verwende ich fhem (aktuell). Dort ist im ESPEasy-bridge autocreate auf 1. Das entsprechende Device wird auch in fhem automtisch angelegt. Ich kann jedoch keine Befehle an den ESPEasy-Server senden und die Zustandsänderung der Ports auf dem ESP 8266 wird auch nicht gemeldet.

Im ESPEasy-Server ist die IP-Adresse der DS918+ in der Controller-IP angegeben. Die Ports stimmen überein. In Docker ist der Port 8383 ebenfalls angelegt.

Im Logfile ist folgender Eintrag:
ESPEasy ESPEasy_Garage_Rel1: set ESPEasy_Garage_Rel1 gpio 0 off
Es scheint alles in Ordnung.

Meine Vermutung:
Im fhem-Modul im ESPEasy-Device ist eine HOST-Adresse angegeben. Diese ist mit der internen Dockeradresse identisch und zeigt nicht auf den Host (ESP8266). Ich vermute, dass dies der Fehler ist.

List des Device:
Internals:
   DEF        172.17.0.1 80 ESPBridge Garage_Rel1
   FUUID      6656bab8-f33f-4323-a78c-d9f3991d4750dfd3
   FVERSION   34_ESPEasy.pm:0.186080/2019-02-16
   HOST       172.17.0.1
   IDENT      Garage_Rel1
   INTERVAL   300
   IODev      ESPBridge
   MAX_CMD_DURATION 1
   NAME       ESPEasy_Garage_Rel1
   NOTIFYDEV  global
   NR         66
   NTFY_ORDER 50-ESPEasy_Garage_Rel1
   PORT       80
   STATE      on
   SUBTYPE    device
   TYPE       ESPEasy
   VERSION    2.18
   eventCount 11
   READINGS:
     2024-05-29 08:12:20   IODev           ESPBridge
     2024-05-29 07:32:07   Rel1            on
     2024-05-29 08:47:44   presence        absent
     2024-05-29 08:12:20   state           Initialized
   helper:
     fpc        1716963146.02464
     pm:
       Encode     1
       JSON       1
     received:
   sec:
     admpwd    
Attributes:
   Interval   300
   devStateIcon on:ios-on-green:off off:ios-off:on absent:10px-kreis-rot:statusRequest
   eventMap   /gpio 0 on:on/gpio 0 off:off/
   group      ESPEasy Device
   presenceCheck 1
   readingSwitchText 1
   room       ESPEasy
   setState   0
   stateFormat Rel1
   webCmd     on:off

Zwischen fhem auf einem Raspberry und dem ESPEasy-Server funktioniert alles wie es soll.

Meine Fragen:
Liege ich mit meiner Vermutung richtig, oder wo liegt der Fehler?
Kann die Adresse des HOST im ESPEasy-Device in fhem einfach geändert werden, ggf. wo?
Raspberry 4 mit fhem, Raspberry 3 mit fhem (FS20-, MAX-Schnittstellen), RaspiMatic Raspberry 3B, HM und HMW-Geräte (Heizung, Wetterstation, Fensterkontakte), Shellys (Rollladen, MQTT), ESPEasy (Energiezähler, MQTT), MAX-Taster (CUL),  FS20 Taster  (CUL), Synology NAS (Mosquitto,Chat

RappaSan

172.17.0.1 ist im B-Adressraum, 192.168.178.64 im C-Adressraum.
Für ein privates IP-Netz finde ich diese Konstellation ungewöhnlich.
Routingprobleme?

Wiesenfreund

Tut mir leid, das mit den Adressräumen verstehe ich nicht. Ich verwende fhem in Docker auf einer Synology NAS. Angelesen habe ich mir, dass in Docker eigene Adressen verwendet werden. Deshalb werden dort Ports weitergeleitet für den Zugriff von Außen, d.h. die IP-Adresse des NAS. Aus Problemen mit der Anbindung von Homematic ist mir bekannt, dass dem Server (Homematic) beim Verbindungsaufbau mitgeteilt wird, wo hin die Daten gesendet werden sollen -hier zur IP-Adress des NAS-. Könnte es sein, dass der Verbindungsaufbau zum ESPEasy-Server ähnlich funktioniert. Es gibt aber leider keine Möglichkeit für diese Verbindung die Host-Adresse anzupassen.
Raspberry 4 mit fhem, Raspberry 3 mit fhem (FS20-, MAX-Schnittstellen), RaspiMatic Raspberry 3B, HM und HMW-Geräte (Heizung, Wetterstation, Fensterkontakte), Shellys (Rollladen, MQTT), ESPEasy (Energiezähler, MQTT), MAX-Taster (CUL),  FS20 Taster  (CUL), Synology NAS (Mosquitto,Chat

marvin78

Du wirst einen Container vermutlich nicht über seine Container-IP erreichen, sondern immer über seine Host IP und einen Port, den du an den Container weiterleitest. Achte dabei auch darauf, dass die Firewall der Synology den Zugriff nicht blockt.

Wernieman

Habe mal bei mir nachgesehen, habe zwar einen eigenen fhem-Container, dürfte aber vergleichbar sein. Ich habe bei HOST "bridge" stehen .. Du hast kein List von der ESPBridge hier eingestellt. Wie sieht die bei Dir aus?

defmod ESPEasy ESPEasy bridge 8086
attr ESPEasy allowedIPs 192.168.3.0/24
attr ESPEasy authentication 1
attr ESPEasy autocreate 1
attr ESPEasy combineDevices 1
attr ESPEasy group ESPEasy Bridge
attr ESPEasy httpReqTimeout 3
attr ESPEasy room ESPEasy,IO
attr ESPEasy verbose 0

Habe nur eine Authentication und IP-Begrenzung drin, müsstest Du bei Dir anpassen (oder Weglassen)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Wiesenfreund

Hier das List der bridge:

Internals:
   CONNECTS   1
   DEF        bridge 8383
   FD         4
   FUUID      12345gelöscht
   FVERSION   34_ESPEasy.pm:0.186080/2019-02-16
   HOST       bridge
   IPV        4
   MAX_HTTP_SESSIONS 3
   MAX_QUEUE_SIZE 250
   NAME       ESPBridge
   NOTIFYDEV  global
   NR         65
   NTFY_ORDER 50-ESPBridge
   PORT       8383
   STATE      Initialized
   SUBTYPE    bridge
   TYPE       ESPEasy
   VERSION    2.18
   eventCount 1
   READINGS:
     2024-05-29 08:12:20   state           Initialized
   helper:
     maxCmdDuration:
       172.17.0.1 1
     pm:
       Encode     1
       JSON       1
     sessions:
       172.17.0.1 0
   hmccu:
Attributes:
   authentication 0
   deniedIPs  192.168.178.186
   group      ESPEasy Bridge
   room       ESPEasy

Ich habe nur eine IP-Begrenzung und vorerst keine Authentication eingestellt. Aber mein Listung ist deutlich länger, z.B. um den Teil helper. Habe ich die falsche Version??? fhem ist jedenfall auf aktuellstem Stand.
Raspberry 4 mit fhem, Raspberry 3 mit fhem (FS20-, MAX-Schnittstellen), RaspiMatic Raspberry 3B, HM und HMW-Geräte (Heizung, Wetterstation, Fensterkontakte), Shellys (Rollladen, MQTT), ESPEasy (Energiezähler, MQTT), MAX-Taster (CUL),  FS20 Taster  (CUL), Synology NAS (Mosquitto,Chat

DasQ

Darf ich fragen für was des alles gut sein soll?

Du kannst do den espeasy direkt aus Fhem ansprechen. Ohne Server oder Container
Fhem on MacMini/Ubuntu.
Absoluter Befürworter der Konsequenten-Kleinschreibung https://de.wikipedia.org/wiki/Kleinschreibung
Infos zu Klimawandel http://www.globalcarbonatlas.org

Wiesenfreund

fhem läuft im Docker-Container, deshalb die Fragen. Ich hatt schon geschrieben, dass es mit fhem auf einem Raspberry keine Probleme gibt.
Raspberry 4 mit fhem, Raspberry 3 mit fhem (FS20-, MAX-Schnittstellen), RaspiMatic Raspberry 3B, HM und HMW-Geräte (Heizung, Wetterstation, Fensterkontakte), Shellys (Rollladen, MQTT), ESPEasy (Energiezähler, MQTT), MAX-Taster (CUL),  FS20 Taster  (CUL), Synology NAS (Mosquitto,Chat

RappaSan

Ich verstehe immer noch nicht, warum es zwei verschiedene Netzwerke gibt mit unterschiedlichen Adressräumen.
Hier läuft auch ein Docker-container, aber im gleichen Netz mit der IP 192.168.0.x und einer Netzmaske 255.255.255.0. Die benötigten Ports sind im Container freigegeben.
Damit hab ich hier Platz für 254 verschiedene IP-Teilnehmer und die können sich bei Bedarf alle untereinander unterhalten.

Ein weiteres Netz mit einer IP 172.17.x.x hat gewöhnlicherweise eine Netzmaske von 255.255.0.0. Damit sind insgesamt 65535 verschiedene Teilnehmer möglich, aber ohne entsprechendes routing sind Geräte nicht im 192.168er Adressraum erreichbar.

IP-Netzwerke haben halt ihre Regeln....

Wiesenfreund

Das ist alles richtig und auch im Grunde nach kein Problem, da andere Anwendungen mit dem Docker-Container keine Probleme haben. Nochmals: Ich gehe davon aus, dass das Modul ESPEase dem "Server ESPEasy-Geräte" mitteilt, wohin die Daten zu senden sind. Da steht im Normalfall im ESPEasy-Device (fhem) die Adresse des "Server ESPEasy-Gerätes" in den Internals in fhem. Betreibe ich fhem im Docker -so zumindest bei mir- so steht dort die interne von Docker verwendete Adresse. Diese ist natürlich nicht zutreffend, da dort die Adresse der Diskstation, auf der Docker betrieben wird, stehen sollte.

Ich verwende im Container-Manager (Docker) für das Netzwerk die Funktion bridge. Es gibt dort ja auch noch die Möglichkeit host anzugeben. Habe ich aber noch nie verwendet. Was ist bei dir dort eingestellt?
Raspberry 4 mit fhem, Raspberry 3 mit fhem (FS20-, MAX-Schnittstellen), RaspiMatic Raspberry 3B, HM und HMW-Geräte (Heizung, Wetterstation, Fensterkontakte), Shellys (Rollladen, MQTT), ESPEasy (Energiezähler, MQTT), MAX-Taster (CUL),  FS20 Taster  (CUL), Synology NAS (Mosquitto,Chat

RappaSan

#10
Der container läuft hier ebenfalls in bridge modus, die Ports 8083 und 8084 sind extern unter 83 und 84 erreichbar.
Vielleicht ist wirklich im ESPeasy-Modul etwas spezielles eingearbeitet, aber ich muß gestehen, daß ich dieses Modul nicht kenne.
Woher kommt nur die Adresse "HOST       172.17.0.1" ??  ::)

Wiesenfreund

Diese Adresse wird im Container vergeben. Näheres kann ich dazu nicht sagen. Dadurch könnten wohl Container untereinander kommunizieren. Ich habe gerade noch dasselbe im host-Modus im Container versucht, dort funktioniert aber autocreate nicht und die ESPEasy-Geräte werden nicht angelegt. Auch manuelle Anlage hat nicht funktioniert.

Danke, für die Hilfe, ich möchte die Angelegenheit nicht weiter verfolgen.
Raspberry 4 mit fhem, Raspberry 3 mit fhem (FS20-, MAX-Schnittstellen), RaspiMatic Raspberry 3B, HM und HMW-Geräte (Heizung, Wetterstation, Fensterkontakte), Shellys (Rollladen, MQTT), ESPEasy (Energiezähler, MQTT), MAX-Taster (CUL),  FS20 Taster  (CUL), Synology NAS (Mosquitto,Chat

Otto123

auch wenn schon aufgegeben: ich meine die DEf ist falsch: DEF        172.17.0.1 80
Die IP die dort angegeben ist, ist doch die docker Host/Gateway Adresse vom internen docker Netzwerk?! (Der fhem container sollte .2 oder .3 oder so etwas haben.)
Zitat von: RappaSan am 30 Mai 2024, 10:44:26Woher kommt nur die Adresse "HOST       172.17.0.1" ??  ::)
Damit sieht die ESPEasy Bridge quasi die Kommunikation von der Quelle docker Host und nicht vom ESPeasy Quelldevice (Port mapping)

Du musst mMn einfach in deiner ersten DEF die Adresse auf 192.168.178.64 ändern. Autocreate wird in der Konstruktion immer "etwas" fehlschlagen, aber mit manueller Korrektur sollte es funktionieren.

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

Wiesenfreund

Danke Otto,
ich habe nochmals die Module installiert, hatte schon alles gelöscht und begonnen auf MQTT umzustellen. Es funktioniert wie von dir beschrieben. Ich hatte in DEF versuchsweise die IP der Synologie DS918 eingetragen, was nicht funktionieren konnte. Ein Satz von dir und ich habs kapiert. In allen per Autocreate erstellten Devices muss DEV auf die IP-Adresse des ESPEasy geändert werden.

Besten Dank,
Eberhard 
Raspberry 4 mit fhem, Raspberry 3 mit fhem (FS20-, MAX-Schnittstellen), RaspiMatic Raspberry 3B, HM und HMW-Geräte (Heizung, Wetterstation, Fensterkontakte), Shellys (Rollladen, MQTT), ESPEasy (Energiezähler, MQTT), MAX-Taster (CUL),  FS20 Taster  (CUL), Synology NAS (Mosquitto,Chat