(Erledigt) ModbusAttr und das 99_myPoolControler kolidieren miteinander...

Begonnen von misux, 30 Mai 2022, 20:46:15

Vorheriges Thema - Nächstes Thema

misux

Fehler ist im Post #3 Beschrieben!


Hi!
ich habe im log alle 15 sekunden einen eintrag:

[Mon May 30 20:38:46 2022] fhem.pl: Invalid conversion in sprintf: end of string at lib/FHEM/HTTPMOD/Utils.pm line 422.
[Mon May 30 20:39:01 2022] fhem.pl: Invalid conversion in sprintf: end of string at lib/FHEM/HTTPMOD/Utils.pm line 422.
[Mon May 30 20:39:16 2022] fhem.pl: Invalid conversion in sprintf: end of string at lib/FHEM/HTTPMOD/Utils.pm line 422.
[Mon May 30 20:39:31 2022] fhem.pl: Invalid conversion in sprintf: end of string at lib/FHEM/HTTPMOD/Utils.pm line 422.
[Mon May 30 20:39:46 2022] fhem.pl: Invalid conversion in sprintf: end of string at lib/FHEM/HTTPMOD/Utils.pm line 422.
[Mon May 30 20:40:00 2022] fhem.pl: Use of uninitialized value $a[1] in subtraction (-) at ./FHEM/99_Utils.pm line 21.
[Mon May 30 20:40:00 2022] fhem.pl: Argument "null" isn't numeric in subtraction (-) at ./FHEM/99_Utils.pm line 21.
[Mon May 30 20:40:00 2022] fhem.pl: Use of uninitialized value in subroutine entry at ./FHEM/99_Utils.pm line 21.
[Mon May 30 20:40:00 2022] fhem.pl: Use of uninitialized value in subroutine entry at ./FHEM/99_Utils.pm line 21.
[Mon May 30 20:40:00 2022] fhem.pl: Use of uninitialized value in subroutine entry at ./FHEM/99_Utils.pm line 21.
[Mon May 30 20:40:00 2022] fhem.pl: Use of uninitialized value in subroutine entry at ./FHEM/99_Utils.pm line 21.
[Mon May 30 20:40:01 2022] fhem.pl: Invalid conversion in sprintf: end of string at lib/FHEM/HTTPMOD/Utils.pm line 422.
[Mon May 30 20:40:16 2022] fhem.pl: Invalid conversion in sprintf: end of string at lib/FHEM/HTTPMOD/Utils.pm line 422.
[Mon May 30 20:40:31 2022] fhem.pl: Invalid conversion in sprintf: end of string at lib/FHEM/HTTPMOD/Utils.pm line 422.
[Mon May 30 20:40:46 2022] fhem.pl: Invalid conversion in sprintf: end of string at lib/FHEM/HTTPMOD/Utils.pm line 422.
[Mon May 30 20:41:01 2022] fhem.pl: Invalid conversion in sprintf: end of string at lib/FHEM/HTTPMOD/Utils.pm line 422.


Kann vielleicht einer helfen? ich habe keine Ahnung wo das her kommt und weis ehrlichgesagt auch nicht wie ich das herausfinden kann...

Hat vielleicht jemand einen Tipp wo/wie ich anfangen sollte zu suchen? :-[ :-\

Das einzige was mir einfällt ist das ich das hier installiert habe... seitdem kommen die Logeinträge:

https://forum.fhem.de/index.php/topic,23129.msg1223397.html#msg1223397

misux

Ich habe mal sen stacktrace eingeschaltet...

Bekomme jetzt etwas mehr Informationen...

Hat vielleicht jemand dazu einen Tipp:

2022.05.31 09:11:51 1: PERL WARNING: Invalid conversion in sprintf: end of string at lib/FHEM/HTTPMOD/Utils.pm line 422.
2022.05.31 09:11:51 1: stacktrace:
2022.05.31 09:11:51 1:     main::__ANON__                      called by lib/FHEM/HTTPMOD/Utils.pm (422)
2022.05.31 09:11:51 1:     FHEM::HTTPMOD::Utils::FormatVal     called by ./FHEM/98_Modbus.pm (2681)
2022.05.31 09:11:51 1:     Modbus::CreateDataObjects           called by ./FHEM/98_Modbus.pm (2721)
2022.05.31 09:11:51 1:     Modbus::ParseDataString             called by ./FHEM/98_Modbus.pm (2240)
2022.05.31 09:11:51 1:     Modbus::HandleResponse              called by ./FHEM/98_Modbus.pm (1918)
2022.05.31 09:11:51 1:     Modbus::ReadFn                      called by fhem.pl (3949)
2022.05.31 09:11:51 1:     main::CallFn                        called by fhem.pl (781)

misux

 :o Ich habe es soweit herausgefunden!

Es kollidieren 2 Module miteinander!

Sobald ich das Modul: ModbusAttr aus diesem Post (https://forum.fhem.de/index.php/topic,92281.0.html) und das 99_myPoolControler aus diesem Post (https://forum.fhem.de/index.php/topic,23129.msg671013.html#msg671013)

zusammen nutze bekomme ich sofort im Intervall Abstand der ModbusAttr die Felhelrmeldung im FhemLog...

Beide Module funktionieren jedoch zusammen! Deinstalliere ich eines davon, sind die LogEinträge weg...

Hat jemand vielleicht jetzt eine Idee was man machen könnte? Denn jetzt bin ich wirklich am Ende meiner Zauberei...

Die Fehlermeldung laut stracktrace ist dann immer :
2022.05.31 09:11:51 1: PERL WARNING: Invalid conversion in sprintf: end of string at lib/FHEM/HTTPMOD/Utils.pm line 422.
2022.05.31 09:11:51 1: stacktrace:
2022.05.31 09:11:51 1:     main::__ANON__                      called by lib/FHEM/HTTPMOD/Utils.pm (422)
2022.05.31 09:11:51 1:     FHEM::HTTPMOD::Utils::FormatVal     called by ./FHEM/98_Modbus.pm (2681)
2022.05.31 09:11:51 1:     Modbus::CreateDataObjects           called by ./FHEM/98_Modbus.pm (2721)
2022.05.31 09:11:51 1:     Modbus::ParseDataString             called by ./FHEM/98_Modbus.pm (2240)
2022.05.31 09:11:51 1:     Modbus::HandleResponse              called by ./FHEM/98_Modbus.pm (1918)
2022.05.31 09:11:51 1:     Modbus::ReadFn                      called by fhem.pl (3949)
2022.05.31 09:11:51 1:     main::CallFn                        called by fhem.pl (781)

misux

 :-[ Hat denn niemand eine Idee? An wen müsste ich mich wenden um dieses Poblem genauer zu untersuchen?

Ich meine, es ist irgendwie ja so das ich die beiden Module nicht gleichzeitig nutzen kann ohne das der Log ohne ende zugemüllt wird... Was ja eigentlich nicht sein kann...Macht jedenfalls keinen Sinn..

Beta-User

Zitat von: misux am 03 Juni 2022, 09:48:33
:-[ Hat denn niemand eine Idee?
Wenn ich mir den Code aus der "99" so ansehen, habe ich viele Idee, angefangen damit, dass jemand meint, dort $main::sets ändern zu dürfen, und ein "DefineFn()" vorhanden ist, so dass eigentlich die "99" Unsinn sind....

Zitat
An wen müsste ich mich wenden um dieses Poblem genauer zu untersuchen?
Die Antwort ergibt sich m.E. aus o.g. Kurzkritik...

Zitat
Ich meine, es ist irgendwie ja so das ich die beiden Module nicht gleichzeitig nutzen kann ohne das der Log ohne ende zugemüllt wird... Was ja eigentlich nicht sein kann...Macht jedenfalls keinen Sinn..
So ein "Modul" in der Form zu nutzen macht m.E. keinen Sinn!

Als erste "Pflaster" kannst du ja mal versuchen, das %sets überall in diesem Code so umzubenennen, dass Doppelungen im main-Namespace ausgeschlossen sind. Dann änderst du den Dateinamen (99->98) und wirfst das unselige "use POSIX;" vorne raus. Kann sein, dass das schon reicht, um die komischsten Effekte abzufangen, aber an sich sollte sich das mal jemand grundlegend zur Brust nehmen...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

misux

Hmm... Umbenannt habe ich und das POSIX auch rausgelöscht... Habe nur Verständnisprobleme mit: Als erste "Pflaster" kannst du ja mal versuchen, das %sets überall in diesem Code so umzubenennen, dass Doppelungen im main-Namespace ausgeschlossen sind

Wie meinst du das genau? Ich benenne alles um was %sets heist in einen jeweils anderen Namen? Alao anstatt %sets schreibe ich z.b. %Funktionen und das Überall oder nur im code unterhalb diese main-Namespace?

Fakt ist: Nur umbenennen und POSIX löschen hilft nicht... Bekomme immernoch dann den Logeintrag alle 15Sek:
[Tue Jun 21 08:40:12 2022] fhem.pl: Invalid conversion in sprintf: end of string at lib/FHEM/HTTPMOD/Utils.pm line 422.
[Tue Jun 21 08:40:27 2022] fhem.pl: Invalid conversion in sprintf: end of string at lib/FHEM/HTTPMOD/Utils.pm line 422.
[Tue Jun 21 08:40:42 2022] fhem.pl: Invalid conversion in sprintf: end of string at lib/FHEM/HTTPMOD/Utils.pm line 422.
[Tue Jun 21 08:40:57 2022] fhem.pl: Invalid conversion in sprintf: end of string at lib/FHEM/HTTPMOD/Utils.pm line 422.

Beta-User

Zitat von: misux am 21 Juni 2022, 08:42:04
Habe nur Verständnisprobleme mit: Als erste "Pflaster" kannst du ja mal versuchen, das %sets überall in diesem Code so umzubenennen, dass Doppelungen im main-Namespace ausgeschlossen sind

Wie meinst du das genau? Ich benenne alles um was %sets heist in einen jeweils anderen Namen? Alao anstatt %sets schreibe ich z.b. %Funktionen und das Überall oder nur im code unterhalb diese main-Namespace?
Alles hier bezog und bezieht sich nur auf diese eine Moduldatei. Im Prinzip hast du das schon richtig interpretiert, wobei du dann noch nachsehen solltest, ob es Zugriffe auf den Hash gibt, die in etwa so aussehen können:
$sets{<xy>}
Und %Funktionen finde ich nicht so prickelnd. Zum einen ist es deutsch, und zum anderen wieder (im main-namespace gedacht) nicht zwangsläufig kollissionsfrei. Eher sowas wie "%poolcontroler_sets"

Zitat
Bekomme immernoch dann den Logeintrag alle 15Sek:
Es kann durchaus sein, dass da auch was komisches zurückkommt und es sich nur um eine seltsame Koinzidenz handelt. Dazu müßtest du ggf. in dem ModbusAttr-Gerät mal verbose erhöhen und schauen, ob dann mehr Infos im Log zu finden sind, wo das herkommt.
Das Modbus-Modul selbst ist afaik auch gepackaged (du scheinst ja eine recht neue Version im Einsatz zu haben, sonst gäbe es diese Mitverwendung von Code aus HTTPMOD gar nicht), so dass es eigentlich nicht viel mit main-namespace zu tun haben dürfte.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

marvin78

Das ist sicher nicht die aktuellste Version vom Pool-Controller.

Diese ist so aktuell, wie möglich und enthält nur ein paar kleine Anpassungen von mir (sehr kleine). use POSIX ist noch drin, das sollte aber mEn keine Probleme machen.


Beta-User

Betr. "use POSIX;":

Es ist schon klar, dass das in FHEM-Umfeld keine zusätzlichen Probleme schafft. Es ist nur
- bei "normalen" Modulen komplett überflüssig (jedenfalls solange fhem.pl sowieso "alles" nach main holt), und
- bei gepackagten Modulen insoweit überflüssig, als man in der Regel eben nicht "alles" braucht, sondern bestenfalls ein paar Funktionen daraus, die man (wie sonst auch üblich) gezielt nutzen kann...

Ergo sollte man das in solchen Fällen wie hier einfach rauslassen.
Nur meine Meinung ;) .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

marvin78

Du hast recht. Das Modul ist nicht von mir ;)

Diese Version wird aber ggf. nicht die oben genannten Probleme machen. Die Version des TE hier ist nicht die aktuellste, die man finden kann. Eher die erste.

Beta-User

Zitat von: marvin78 am 21 Juni 2022, 15:08:07
Das Modul ist nicht von mir ;)
Das war mir nach einem kurzen Blick in den Code ziemlich klar, dass du da nicht intensiver drübergegangen bist - ich wollte nur dem TE erläutern, dass das mit dem "use POSIX;" => "weg damit" durchaus einen gewissen Hintergedanken hatte...

Zitat
Diese Version wird aber ggf. nicht die oben genannten Probleme machen. Die Version des TE hier ist nicht die aktuellste, die man finden kann. Eher die erste.
Wieder ein gutes Beispiel dafür, dass es sinnvoll ist, nicht überall "irgendwelche Versionen" stehen zu lassen, wenn man was verbessert hat... Dachte mir schon sowas.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

misux

Zitat von: marvin78 am 21 Juni 2022, 14:48:52
Das ist sicher nicht die aktuellste Version vom Pool-Controller.

Diese ist so aktuell, wie möglich und enthält nur ein paar kleine Anpassungen von mir (sehr kleine). use POSIX ist noch drin, das sollte aber mEn keine Probleme machen.

KLasse! Das funktioniert! VIELEN DANK!

Ist es sehr aufwendig vielleicht noch die Sollwerte von ph und chlor mit in die readings aufzunehmen?

marvin78

Ja. Sollwerte gibt die getstate.csv nicht her. Das wäre ein anderer Ansatz. Und wie gesagt: Nicht mein Modul


misux

Okay, ist nicht schlimm... Geht auch so wunderbar.

VIELEN DANK nochmal!