Hauptmenü

DevIO Problemchen

Begonnen von Sidey, 30 November 2020, 23:39:15

Vorheriges Thema - Nächstes Thema

Sidey

Hi Rudi,

ich habe da vielleicht eine Problem in DevIO entdeckt.
So ganz sicher bin ich aber auch nicht.

Folgende Komponenten sind beteiligt:

1. Ein TCP Endpunkt, der bei einem Verbindungsaufbau mit "Port already in use" antwortet und anschließend die Verbindung beendet.
2. Ein Modul, welches an DevIo_OpenDev die Parameter und $initfn und $callback übergibt.

Im Modul 00_CUL.pm tritt der Fehler nicht auf und ich habe den Verdachte es könnte an $callback liegen.


Der Fehler stellt sich so dar, dass nextOpenDelay nicht berücksichtigt wird und stattdessen sofort einen neuen Verbindungsaufbau initiiert. Das ganze führt dann dazu, dass das Logfile vollgeschrieben wird und das erst ein Ende nimmt, wenn kein Platz mehr auf der Partition ist.
Ab da hängt dann aber ggf. auch das komplette System :(

1.
Nachstellen kann man den Fehlerzustand mit ser2net und z.B. folgender Konfiguration in ser2net.conf:
45022:raw:600:/dev/tty1:115200 NONE 1STOPBIT 8DATABITS HANGUP_WHEN_DONE

2.
Die Schnittstelle wird anschließend via telnet belegt: telnet localhost 45022

3.
Anschließend legt man z.B. einen signalduino in FHEM an
defmod testSD SIGNALduino 10.2.11.61:45022


2020.11.30 22:48:12 3: Opening testSD device 10.2.11.61:45022
2020.11.30 22:48:12 5: HttpUtils url=http://10.2.11.61:45022/
2020.11.30 22:48:12 4: IP: 10.2.11.61 -> 10.2.11.61
2020.11.30 22:48:27 1: testSD : DoInit, 10.2.11.61:45022
2020.11.30 22:48:27 3: testSD device opened
2020.11.30 22:48:27 4: testSD : Read, msg: Port already in use
2020.11.30 22:48:27 5: testSD : Parse, noMsg: Port already in use
2020.11.30 22:48:27 5: testSD : Read, msg: regexp=V\s.*SIGNAL(?:duino|ESP|STM).*(?:\s\d\d:\d\d:\d\d) cmd=version msg=Port already in use
2020.11.30 22:48:27 1: 10.2.11.61:45022 disconnected, waiting to reappear (testSD )

2020.11.30 22:48:27 5: HttpUtils url=http://10.2.11.61:45022/
2020.11.30 22:48:27 4: IP: 10.2.11.61 -> 10.2.11.61
2020.11.30 22:48:27 1: testSD : DoInit, 10.2.11.61:45022
2020.11.30 22:48:27 1: 10.2.11.61:45022 reappeared (testSD )


Vielleicht hast Du ja eine Idee ob das in DevIO oder außerhalb liegt.

Grüße Sidey

Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

rudolfkoenig

Die Ursache ist, dass SIGNALduino_DoInit nicht an DevIo zurueckmeldet, dass mit der Verbindung was nicht stimmt, deswegen DevIo $hash->{NEXT_OPEN} nicht setzt, und damit wird der naechste Aufruf in DevIo nicht ignoriert.

Da CUL im CUL_DoInit mit der Schnittstelle "redet", wird da ein Problem rechtzeitig entdeckt.

Bin nicht ganz sicher, die Ablaeufe in ein paar hundert KB an Perl code zu durchblicken ist nicht ganz einfach.

Sidey

Zitat von: rudolfkoenig am 01 Dezember 2020, 12:50:17
Die Ursache ist, dass SIGNALduino_DoInit nicht an DevIo zurueckmeldet, dass mit der Verbindung was nicht stimmt, deswegen DevIo $hash->{NEXT_OPEN} nicht setzt, und damit wird der naechste Aufruf in DevIo nicht ignoriert.
Danke für die schnelle Antwort.

Wie und was genau muss denn zurück gemeldet werden?
Ich habe das auf Anhieb nicht gefunden .


Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

rudolfkoenig

Wenn man in 00_CUL.pm sucht, sieht man: irgendeine Fehlermeldung.

Sidey

Verstehe, die Fehlermeldung muss an DevIo_OpenDev().
Ich habe die Initialisierungsequenz nicht FHEM blockieren gestaltet. Daher klappt das so nicht.

Zumindest weiss ich jetzt, dass nextOpen delay nur greift, wenn an DevIo_OpenDev() eine FM gesendet wird und nicht grundsätzlich für einen erneuten Aufruf von DevIo_OpenDev().

Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker