Autor Thema: Stacktrace beim Update von Readings  (Gelesen 1599 mal)

Offline zap

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4361
    • HMCCU
Stacktrace beim Update von Readings
« am: 08 Juli 2022, 10:07:40 »
Beim Update eines Readings in HMCCU wird folgender Stacktrace generiert:

2022.07.07 20:32:28 1: PERL WARNING: Use of uninitialized value $minInt in numeric lt (<) at fhem.pl line 5070.
2022.07.07 20:32:28 1: stacktrace:
2022.07.07 20:32:28 1:     main::__ANON__                      called by fhem.pl (5070)
2022.07.07 20:32:28 1:     main::readingsBulkUpdate            called by ./FHEM/88_HMCCU.pm (9224)
2022.07.07 20:32:28 1:     main::HMCCU_BulkUpdate              called by ./FHEM/88_HMCCU.pm (4838)
2022.07.07 20:32:28 1:     main::HMCCU_UpdateParamsetReadings  called by ./FHEM/88_HMCCU.pm (4957)
2022.07.07 20:32:28 1:     main::HMCCU_UpdateMultipleDevices   called by ./FHEM/88_HMCCURPCPROC.pm (878)
2022.07.07 20:32:28 1:     main::HMCCURPCPROC_Read             called by fhem.pl (3950)
2022.07.07 20:32:28 1:     main::CallFn                        called by fhem.pl (781)

Die Variable $minInt wird in fhem.pl ein paar Zeilen vor 5070 in einem split() Statement initialisiert. Aus dem Gedächtnis:

my (undef, $minInt) = split(':', $v[0])
Was könnte die Ursache sein? Ich vermute, dass ein Readingname oder Wert schuld ist. Leider kann ich es nicht nachvollziehen/reproduzieren. Ein Nutzer von HMCCU hat das Problem gemeldet.
2xCCU3, diverse Komponenten (Fenster, Rolladen, Themostate, Stromzähler, Steckdosen ...)
FHEM mit Raspi für CCU Integration.
IOBroker für UI (VIS), Hue, Sonos usw.
Maintainer der Module FULLY, Meteohub und HMCCU (Schnittstelle CCU-FHEM = best of both worlds approach

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 19409
Antw:Stacktrace beim Update von Readings
« Antwort #1 am: 08 Juli 2022, 10:11:02 »
Laienhafter Versuch meinerseits:
$v[0] enthält keinen Doppelpunkt, an dem gesplittet werden könnte?

Sowas würde zwangsweise auf 0 setzen:
my (undef, $minInt) = split m{:}x, $v[0];
$minInt //= 0;
Server: HP-T620@Debian 11, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 25853
Antw:Stacktrace beim Update von Readings
« Antwort #2 am: 08 Juli 2022, 10:34:55 »
Bin auch der Ansicht, dass jemand bei einem event-min-interval ein gueltiges Reading, aber kein Intervall angegeben hat.
Statt zwangsweise auf 0 zu setzen sollte mAn eher beim Setzen ueberprueft werden, dass was Numerisches vorhanden ist.

Offline zap

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4361
    • HMCCU
Antw:Stacktrace beim Update von Readings
« Antwort #3 am: 08 Juli 2022, 10:46:24 »
ok, danke! Also das Attribut event-min-reading ist falsch gesetzt.
2xCCU3, diverse Komponenten (Fenster, Rolladen, Themostate, Stromzähler, Steckdosen ...)
FHEM mit Raspi für CCU Integration.
IOBroker für UI (VIS), Hue, Sonos usw.
Maintainer der Module FULLY, Meteohub und HMCCU (Schnittstelle CCU-FHEM = best of both worlds approach

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 19409
Antw:Stacktrace beim Update von Readings
« Antwort #4 am: 08 Juli 2022, 11:11:42 »
Bin auch der Ansicht, dass jemand bei einem event-min-interval ein gueltiges Reading, aber kein Intervall angegeben hat.
Statt zwangsweise auf 0 zu setzen sollte mAn eher beim Setzen ueberprueft werden, dass was Numerisches vorhanden ist.
Das mit der 0 ist in dem Fall in der Tat in diesem Fall keine gute Idee :-[ .

Da es hier um die Syntaxprüfung der $readingFnAttriubutes (und ggf. ergänzend um disabledForIntervals etc?) geht: Wäre es nicht sinnvoll, das zu zentralisieren (ähnlich SetExtensions)? Also am Ende der AttrFn() eine Funktion aufrufen, die checkt, ob es sich um ein solches globales Attribut handelt und ggf. "laut" gibt, wenn irgendwas schräg ist?
Server: HP-T620@Debian 11, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 25853
Antw:Stacktrace beim Update von Readings
« Antwort #5 am: 17 Juli 2022, 11:50:58 »
Zitat
Wäre es nicht sinnvoll, das zu zentralisieren (ähnlich SetExtensions)? Also am Ende der AttrFn() eine Funktion aufrufen, die checkt, ob es sich um ein solches globales Attribut handelt und ggf. "laut" gibt, wenn irgendwas schräg ist?
Es wird bereits gecheckt, ob der Regexp sinnvoll ist, die Zahl aber noch nicht.
Ich habe das jetzt fuer event-min-interval eingebaut.
Gefällt mir Gefällt mir x 2 Liste anzeigen

 

decade-submarginal