CUL - Entwicklung > Fehlerberichte

Problem mit DevIO.pm

<< < (2/5) > >>

rudolfkoenig:

--- Zitat ---Wahrscheinlich immer wenn er auf einen Signalduino zugreifen wollte startete er neu.
--- Ende Zitat ---
Das ist unwahrscheinlich.
Falls es och der Fall sein sollte, wuerde ich es gerne untersuchen.

roelleke:
JA, ob es am Signalduino lag weiß ich nicht, aber die Startschleife war auf jedenfall da.
Für mich sieht das im Log so aus. Ob es nun am Signalduino oder an der DevIo liegt weiß ich nicht.

Hier ist mal ein Auszug aus dem Log mit der Fehlerhaften DevIo:

--- Code: ---myMQTTserver: port 1884 opened
2020.06.05 08:40:45 3: DashButton1: listening
2020.06.05 08:40:48 3: AptToDate (fhemServer) - defined
2020.06.05 08:40:50 3: Benzin: Defined with URL https://www.clever-tanken.de/tankstelle_details/12070 and interval 3600 featurelevel 6.0
2020.06.05 08:40:50 3: Benzin1: Defined with URL https://www.clever-tanken.de/tankstelle_details/12430 and interval 3600 featurelevel 6.0
2020.06.05 08:40:50 3: Benzin2: Defined with URL https://www.clever-tanken.de/tankstelle_details/47810 and interval 3600 featurelevel 6.0
2020.06.05 08:40:50 3: Benzin3: Defined with URL https://www.clever-tanken.de/tankstelle_details/28165 and interval 3600 featurelevel 6.0
2020.06.05 08:40:52 3: [myTwilight] got no weather info from yahoo. Error code: http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid=0%20and%20u=%27c%27&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys: Can't connect(1) to http://query.yahooapis.com:80: IO::Socket::INET: Bad hostname 'query.yahooapis.com:80'
2020.06.05 08:40:53 0: OctoPrint Ender5 [OctoPrint_Define] start device
2020.06.05 08:40:56 3: DeskLight: Defined with URL http://10.0.0.39/all and interval 600 featurelevel 6.0
2020.06.05 08:40:57 1: Including ./log/fhem.save
2020.06.05 08:41:01 3: DashButton1: stopped
2020.06.05 08:41:02 3: DashButton1: listening
2020.06.05 08:41:46 3: wsPort: port 8080 opened
2020.06.05 08:41:46 2: [Freezemon] myFreezemon: ready to watch out for delays greater than 4 second(s)
2020.06.05 08:41:46 0: Featurelevel: 6.0
2020.06.05 08:41:46 0: Server started with 915 defined entities (fhem.pl:22082/2020-05-31 perl:5.024001 os:linux user:fhem pid:27241)
2020.06.05 08:41:48 3: WlanSignalDuino1: IdList, development version active, development attribute = 1
2020.06.05 08:41:48 3: WlanSignalDuino1: IdList, attr whitelist: 3,3.1,4,8,10,17,17.1,18,52,55,59,60,62,65,66,67,87
2020.06.05 08:41:48 3: WlanSignalDuino1: IdList, MS 3 3.1 4 17 55 65 87
2020.06.05 08:41:48 3: WlanSignalDuino1: IdList, MU 8 17.1 59 60 62 66 67
2020.06.05 08:41:48 3: WlanSignalDuino1: IdList, MC 10 18 52
Can't use an undefined value as a subroutine reference at ./FHEM/00_SIGNALduino.pm line 3077.
2020.06.05 08:41:49 1: Including fhem.cfg
2020.06.05 08:41:49 3: telnetPort: port 7072 opened

--- Ende Code ---

und hier mit der neuesten DevIO aus dem SVN:


--- Code: ---2020.06.01 08:58:15 3: myMQTTserver: port 1884 opened
2020.06.01 08:58:16 3: DashButton1: listening
2020.06.01 08:58:19 3: AptToDate (fhemServer) - defined
2020.06.01 08:58:21 3: Benzin: Defined with URL https://www.clever-tanken.de/tankstelle_details/12070 and interval 3600 featurelevel 6.0
2020.06.01 08:58:21 3: Benzin1: Defined with URL https://www.clever-tanken.de/tankstelle_details/12430 and interval 3600 featurelevel 6.0
2020.06.01 08:58:21 3: Benzin2: Defined with URL https://www.clever-tanken.de/tankstelle_details/47810 and interval 3600 featurelevel 6.0
2020.06.01 08:58:21 3: Benzin3: Defined with URL https://www.clever-tanken.de/tankstelle_details/28165 and interval 3600 featurelevel 6.0
2020.06.01 08:58:23 3: [myTwilight] got no weather info from yahoo. Error code: http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid=0%20and%20u=%27c%27&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys: Can't connect(1) to http://query.yahooapis.com:80: IO::Socket::INET: Bad hostname 'query.yahooapis.com:80'
2020.06.01 08:58:23 0: OctoPrint Ender5 [OctoPrint_Define] start device
2020.06.01 08:58:27 3: DeskLight: Defined with URL http://10.0.0.39/all and interval 600 featurelevel 6.0
2020.06.01 08:58:28 1: Including ./log/fhem.save
2020.06.01 08:58:32 3: DashButton1: stopped
2020.06.01 08:58:32 3: DashButton1: listening
2020.06.01 08:59:17 3: wsPort: port 8080 opened
2020.06.01 08:59:17 2: [Freezemon] myFreezemon: ready to watch out for delays greater than 4 second(s)
2020.06.01 08:59:17 0: Featurelevel: 6.0
2020.06.01 08:59:17 0: Server started with 918 defined entities (fhem.pl:22082/2020-05-31 perl:5.024001 os:linux user:fhem pid:521)
2020.06.01 08:59:19 2: AttrTemplates: got 174 entries
2020.06.01 08:59:20 3: WlanSignalDuino1: IdList, development version active, development attribute = 1
2020.06.01 08:59:20 3: WlanSignalDuino1: IdList, attr whitelist: 3,3.1,4,8,10,17,17.1,18,52,55,59,60,62,65,66,67,87
2020.06.01 08:59:20 3: WlanSignalDuino1: IdList, MS 3 3.1 4 17 55 65 87
2020.06.01 08:59:20 3: WlanSignalDuino1: IdList, MU 8 17.1 59 60 62 66 67
2020.06.01 08:59:20 3: WlanSignalDuino1: IdList, MC 10 18 52
2020.06.01 08:59:20 3: Signalduino2: IdList, development version active, development attribute = 1
2020.06.01 08:59:20 3: Signalduino2: IdList, attr whitelist: 3,3.1,4,8,10,18,19,32,33,33.1,48,58,60,64,66,67,85,87
2020.06.01 08:59:20 3: Signalduino2: IdList, MS 3 3.1 4 33 33.1 87
2020.06.01 08:59:20 3: Signalduino2: IdList, MU 8 19 32 48 60 64 66 67 85
2020.06.01 08:59:20 3: Signalduino2: IdList, MC 10 18 58
2020.06.01 08:59:20 3: Signalduino2: SimpleWrite_XQ, disable receiver (XQ)
2020.06.01 08:59:20 3: Signalduino2: StartInit, get version, retry = 0
2020.06.01 08:59:24 1: WlanSignalDuino1: DoInit, 10.0.0.101:23@57600
2020.06.01 08:59:24 3: WlanSignalDuino1 device opened

--- Ende Code ---

Icinger:

--- Zitat ---2020.06.05 08:40:57 1: Including ./log/fhem.save
--- Ende Zitat ---

--- Zitat ---2020.06.01 08:58:28 1: Including ./log/fhem.save
--- Ende Zitat ---
Hat dein Server ne Zeitreise gemacht???

rudolfkoenig:

--- Zitat ---Can't use an undefined value as a subroutine reference at ./FHEM/00_SIGNALduino.pm line 3077.
--- Ende Zitat ---
Das ist ein Fehler im SIGNALduino Modul (ursache der Crash), und sollte dem Maintainer gemeldet werden.

Sidey:
Hi Rudi,

Da wäre ich mir jetzt nicht ganz 100%ig sicher ob es wirklich "nur" ein Fehler im SIGNALduino ist.
Ich muss gestehen, meine Routinen sind nicht so robust, dass sie damit zurecht kommen, wenn an dem Gerätehash etwas verändert bzw. dieser komplett gelöscht wird. :-(

Denn meiner Analyse nach, löscht commandDefine den Gerätehash, wenn der Define Befehl nicht geklappt hat:
https://svn.fhem.de/trac/browser/trunk/fhem/fhem.pl?rev=22120#L2091

Es löscht aber nicht die InternalTimer und das wird hier zum Verhängnis. :-\

Drei Stellen, an denen ich hier Optimierungspotential gefunden habe:

1) UndefFn vom Modul aufrufen, bevor der Gerätehash gelöscht wird. Hat der Maintainer sauber gearbeitet, löscht er auch alle noch laufenden Timer.
2) In allen Routinen eines Modules, die über callbacks aufgerufen werden, prüfen ob der übergebene Gerätehash valide ist.
3) In FHEM (z.B. 99_utils) generell die Funktion Bereitstellen, welche den Gerätehash und Warnungen liefert:

--- Code: ---sub getDefinition {
    my $name = shift // carp q[name noch specified];
    return $::defs{$name} // carp q[definition of $name does not exist];
}

--- Ende Code ---

Vermutlich gibt es weitere Stellen, an denen verbessert werden könnte.


Grüße Sidey

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln