FHEM zu Siemens-LOGO geht nicht mehr (44_S7_S7Client.pm)

Begonnen von luckygrey, 25 September 2022, 22:05:56

Vorheriges Thema - Nächstes Thema

luckygrey

Liebes Forum:
Ich betreibe seit 2012 eine Siemens-LOGO-0BA7 als Steuerung einer Zentralspeicherheizung und hinzugefügter Wärmepumpe.
Anfänglich habe ich die Werte von der LOGO mit einem Python-Script ausgelesen, zu "FileLog"s aufbereitet und so als SVG-Plots in FHEM dargestellt.
Als ich festgestellt habe, dass man mit S7/FHEM direkt aus FHEM auf die LOGO zugreifen kann habe ich das entsprechend umgestellt und lese die Werte nun direkt mit FHEM aus.
Nun hat sich der eigenständige Mischer/Heizungsregler verabschiedet und ich wollte die darin enthaltene Aufgabe Vorlauftemperatursteuerung/Mischermotor(neu) in die LOGO verlagern.
Als erste Änderung des Programms habe ich versucht die Messung der Aussentemperatur zu dämpfen und habe einen zusätzlichen Analogfilter eingebaut. Der hat zwar nichts gebracht, aber das grössere Problem war, dass das FHEM nun nicht mehr mit der LOGO kommunizieren konnte. Auch das Aufspielen der alten Version von der SD-Karte half nicht.

Einige OneWire Temperaturfühler sowie einige Aussentemperaturfühler werden mit je einem Raspberry abgefragt und mit FHEM2FHEM und OWServer vom FHEM auf den Mini geholt.
Interessant ist, dass die ehemaligen Python-Scripts auf diesen Raspberrys immer noch auf die LOGO zugreifen können. In den Raspberry-Scripts wird jedoch der Port 10001 verwendet und nicht der Port 102 wie im 44_S7_S7Client.pm.
Wenn ich im 44_S7_S7Client.pm den isotcp (ISOTCP Port) auf 10001 abändere wird meist ein Socket erstellt, aber das Programm stirbt an einer anderen Stelle. Es werden aber nie Werte eingelesen.

Wenn ich versuche mit FHEM auf einem Raspberry mit dem LOGO zu verbinden geht das auch nicht.

Logfile auf Mini mit isotcp Port 102:
2022.09.25 19:07:01 3: HeizungLOGO is disconnected ? --> reconnect
2022.09.25 19:07:01 2: HeizungLOGO S7 disconnected
2022.09.25 19:07:04 0: S7_connect: ERROR in Socket Creation: Connection refused at FHEM/44_S7_S7Client.pm line 528.
2022.09.25 19:07:04 2: S7_connect: HeizungLOGO Could not connect to PLC (-1)


Logfile auf Mini mit isotcp Port 10001:
2022.09.14 22:02:46 3: HeizungLOGO S7_connect: connect to PLC with maxPDUlength=240
2022.09.14 22:02:46 3: HeizungLOGO S7_Attr: setting Intervall= 300
2022.09.16 22:30:39 3: HeizungLOGO S7_connect: connect to PLC with maxPDUlength=240
2022.09.16 22:30:39 3: HeizungLOGO S7_Attr: setting Intervall= 300
2022.09.19 10:02:36 3: HeizungLOGO S7_ReadBlockFromPLC ReadArea error: 3=A timeout occurred waiting a reply.
2022.09.19 10:02:36 2: HeizungLOGO S7 disconnected
2022.09.19 10:03:55 2: S7_connect: HeizungLOGO Could not connect to PLC (-1)


Logfile auf Raspberry isotcp 102:
2022.09.24 23:59:10 2: S7_connect: HeizungLOGO Could not connect to PLC (-1)
2022.09.24 23:59:10 3: HeizungLOGO S7_Attr: setting Intervall= 300
2022.09.25 00:00:38 2: S7_connect: HeizungLOGO Could not connect to PLC (8)
2022.09.25 00:00:38 3: HeizungLOGO S7_Attr: setting Intervall= 300


FHEM (Latest Revision: 26440) läuft auf Mac Mini M1, macOS Monterey, 12.6
44_S7_S7Client.pm 15511 2017-11-27 21:13:16Z charlie71
Für das LOGO Programm wird LOGOcomfort 8.2/Version 18.0 verwendet

Mini-M1:
kurt@Mini-M1 ~/fhem% uname -a
Darwin Mini-M1.local 21.6.0 Darwin Kernel Version 21.6.0: Mon Aug 22 20:20:05 PDT 2022; root:xnu-8020.140.49~2/RELEASE_ARM64_T8101 arm64

Raspberry:
pi@PI-2 /opt/fhem/log $ uname -a
Linux PI-2 4.9.35+ #1014 Fri Jun 30 14:34:49 BST 2017 armv6l GNU/Linux


Ist das Ganze ein Timeout Problem? (Vor der Programmänderung ging es ja.)
Wo könnte ich das anpassen? (Bin zwar kein Perl-Freak, KnowHow in Unix, bash/zsh, python, C, Fortran)

rudolfkoenig

Zitat2022.09.25 19:07:04 0: S7_connect: ERROR in Socket Creation: Connection refused at FHEM/44_S7_S7Client.pm line 528.
"Connection Refused" bedeutet, dass der Zielrechner erreichbar ist, und unter dem angegebenen Port (102?) kein Dienst zur Verfuegung steht.
Moegliche Ursachen: die IP-Adresse ist falsch, der Dienst ist nicht gestartet, der Dienst laeuft auf einem anderen Port, oder ein Firewall steht im Weg.

Klinki

Ich weiß, passt eigentlich nicht zu diesem Thread: aber für meine Logos nutze ich seit einiger Zeit sehr erfolgreich das ModbusAttr-Modul.

Gruß,
klinki

luckygrey

Zitat von: rudolfkoenig am 26 September 2022, 09:24:38
"Connection Refused" bedeutet, dass der Zielrechner erreichbar ist, und unter dem angegebenen Port (102?) kein Dienst zur Verfuegung steht.
Moegliche Ursachen: die IP-Adresse ist falsch, der Dienst ist nicht gestartet, der Dienst laeuft auf einem anderen Port, oder ein Firewall steht im Weg.

Die IP-Adresse ist sicher richtig.
Mit den python Scripts erreiche ich vom gleichen Host (PI-2) die LOGO auf der IP-Adresse=192.168.1.101, auch kein Firewall ist dazwischen.
Der Raspberry PI-2 hängt am gleichen Switch wie die LOGO.
pi@PI-2 ~/LOGO $ nc -z -w5 -v 192.168.1.101 10001
Connection to 192.168.1.101 10001 port [tcp/*] succeeded!
pi@PI-2 ~/LOGO $ nc -z -w5 -v 192.168.1.101 102
nc: connect to 192.168.1.101 port 102 (tcp) failed: Connection refused

Der port 102 ist nicht offen auf der LOGO, Die LOGOComfort-Software benutzt den Port 10001.
Wenn ich im 44_S7_S7Client.pm den isotcp (ISOTCP Port) von 102 auf 10001 abändere (So wie in meinen python Scripts) wird ein Socket erstellt, aber das Programm stirbt an einer anderen Stelle.
2022.09.26 12:24:12 3: TCPClient RecvISOPacket PDU overflow (IP= 192.168.1.101): size = 256 , maxPDULength = 0
2022.09.26 12:24:12 2: S7_connect: HeizungLOGO Could not connect to PLC (8)
2022.09.26 12:24:12 3: HeizungLOGO S7_Attr: setting Intervall= 300


Firmwareversion der LOGO ist V01.03.32

rudolfkoenig

Vermutlich wird auf Port 10001 ein anderes Protokoll gesprochen, wie auf Port 102.

luckygrey

Zitat von: rudolfkoenig am 26 September 2022, 13:32:44
Vermutlich wird auf Port 10001 ein anderes Protokoll gesprochen, wie auf Port 102.

Ja, ich denke auch.
Im Siemens Forum hat einer geschrieben, dass er mit älteren Firmwares auf der 0BA7 Probleme hat mit FHEM. Aber mit der Firmware meiner LOGO (V01.03.32) sollte es OK sein.

Das komische ist ja, dass die ganze Geschichte mit meiner LOGO und dem FHEM noch vor einer Woche funktionierte. Erst nachdem ich eine Änderung mit LOGO!Soft-Comfort einfügte lief das ganze nicht mehr. Auch als ich das ursprüngliche Program der LOGO von der SD-Karte wieder installierte nicht.
Es geht einfach der Port 102 nicht mehr.

Bin grad etwas ratlos.

luckygrey

Problem gelöst!

Nachdem ich mit der LOGO!Comfort Software eine kleine Änderung vorgenommen und auf die LOGO! geladen habe, ging der Port 102 nicht mehr und somit auch FHEM nicht. Warum weiss ich auch nicht.
Die Lösung war, dass ich die Netzwerkverbindung noch einmal vorgenommen habe.
Also bei LOGO!Comfort Extras -> Ethernet Verbindungen eine Serververbindung herstellen.

Uff!