Beim Neustart von FHEM erhalte ich mehrfach die folgende Fehlermeldung (stacktrace):
2019.09.17 15:40:01 1: PERL WARNING: Use of uninitialized value $sret in substitution (s///) at ./FHEM/98_structure.pm line 481.
2019.09.17 15:40:01 1: stacktrace:
2019.09.17 15:40:01 1: main::__ANON__ called by ./FHEM/98_structure.pm (481)
2019.09.17 15:40:01 1: main::structure_Set called by fhem.pl (3752)
2019.09.17 15:40:01 1: main::CallFn called by fhem.pl (1882)
2019.09.17 15:40:01 1: main::DoSet called by fhem.pl (1924)
2019.09.17 15:40:01 1: main::CommandSet called by fhem.pl (2734)
2019.09.17 15:40:01 1: main::getAllSets called by ./FHEM/01_FHEMWEB.pm (3175)
2019.09.17 15:40:01 1: main::FW_devState called by ./FHEM/01_FHEMWEB.pm (2983)
2019.09.17 15:40:01 1: main::FW_roomStatesForInform called by ./FHEM/01_FHEMWEB.pm (666)
2019.09.17 15:40:01 1: main::FW_initInform called by ./FHEM/01_FHEMWEB.pm (898)
2019.09.17 15:40:01 1: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (579)
2019.09.17 15:40:01 1: main::FW_Read called by fhem.pl (3752)
2019.09.17 15:40:01 1: main::CallFn called by fhem.pl (750)
2019.09.17 15:40:01 1: PERL WARNING: Use of uninitialized value $sret in split at ./FHEM/98_structure.pm line 482.
2019.09.17 15:40:01 1: stacktrace:
2019.09.17 15:40:01 1: main::__ANON__ called by ./FHEM/98_structure.pm (482)
2019.09.17 15:40:01 1: main::structure_Set called by fhem.pl (3752)
2019.09.17 15:40:01 1: main::CallFn called by fhem.pl (1882)
2019.09.17 15:40:01 1: main::DoSet called by fhem.pl (1924)
2019.09.17 15:40:01 1: main::CommandSet called by fhem.pl (2734)
2019.09.17 15:40:01 1: main::getAllSets called by ./FHEM/01_FHEMWEB.pm (3175)
2019.09.17 15:40:01 1: main::FW_devState called by ./FHEM/01_FHEMWEB.pm (2983)
2019.09.17 15:40:01 1: main::FW_roomStatesForInform called by ./FHEM/01_FHEMWEB.pm (666)
2019.09.17 15:40:01 1: main::FW_initInform called by ./FHEM/01_FHEMWEB.pm (898)
2019.09.17 15:40:01 1: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (579)
2019.09.17 15:40:01 1: main::FW_Read called by fhem.pl (3752)
2019.09.17 15:40:01 1: main::CallFn called by fhem.pl (750)
Ich kann nicht erkennen, was diese Fehlermeldungen verursacht. Die von mir angelegten Stucture's funktionieren einwandfrei und im laufenden betrieb werden auch keine weiteren Fehlermeldungen generiert. Was könnte die Fehlermeldung beim Start von FHEM verursachen?
Hier mal zwei Beispiele (list) meiner Structure's:
Internals:
ATTR struct_tadoValve
CHANGEDCNT 216
DEF struct_tadoValve ht_bz ht_sz ht_fz ht_ks ht_gw ht_wz ht_kc ht_ph
FUUID 5d306d06-f33f-bb67-091e-4b683e81cf03e15f
NAME TADO_heater
NR 693
NTFY_ORDER 50-TADO_heater
STATE off
TYPE structure
READINGS:
2019-09-17 16:06:55 LastDevice ht_sz
2019-09-17 16:06:55 LastDevice_Abs ht_sz
2019-09-17 16:06:55 state off
Attributes:
DbLogExclude .*
clientstate_behavior absolute
clientstate_priority on off
evaluateSetResult 1
room Automatisierung,Tado
Internals:
ATTR room
CFGFN /opt/fhem/dev_automation.cfg
CHANGEDCNT 0
DEF room sc_bzl sc_bzr
FUUID 5c5721eb-f33f-bb67-74d6-b1d5a589fc0f4791
NAME st_bz
NR 390
NTFY_ORDER 50-st_bz
STATE closed
TYPE structure
READINGS:
2019-09-17 07:00:08 LastDevice sc_bzr
2019-09-17 07:00:08 LastDevice_Abs sc_bzr
2019-09-17 07:00:08 state closed
Attributes:
DbLogExclude .*
alias Fenster Badezimmer
clientstate_behavior relative
clientstate_priority open|tilted closed
room Automatisierung,EnOcean
Grüße
Stefan
Einer der Strukturmitglieder liefert auf "set Mitglied ?" undef zurueck, statt dem Standard "Unknown argument ?, choose one of ..."
Habe gerade eine Fehlermeldung eingebaut, um diese Warnung zu vermeiden.
ZitatEiner der Strukturmitglieder liefert auf "set Mitglied ?" undef zurueck, statt dem Standard "Unknown argument ?, choose one of ..."
Habe gerade eine Fehlermeldung eingebaut, um diese Warnung zu vermeiden.
@rudolfkoenig zunächst vielen Dank für die Anpassung des Moduls.
In der Tat werden jetzt im Log die betreffenden struckture's bzw. structure-Member gelistet auf die der 'Fehler' zutrifft:
2019.09.18 08:14:40 1: st_ph: 'set sc_ph ?' returned undef
2019.09.18 08:14:40 1: st_bz: 'set sc_bzl ?' returned undef
2019.09.18 08:14:40 1: st_bz: 'set sc_bzr ?' returned undef
2019.09.18 08:14:40 1: st_sz: 'set sc_szl ?' returned undef
2019.09.18 08:14:40 1: st_sz: 'set sc_szr ?' returned undef
2019.09.18 08:14:40 1: st_wzez: 'set sc_wz ?' returned undef
2019.09.18 08:14:40 1: st_wzez: 'set sc_ezl ?' returned undef
2019.09.18 08:14:40 1: st_wzez: 'set sc_ezr ?' returned undef
Das sind Fensterkontakte (enocean) für die es keinen Set-Befehl gibt. Ich möchte in Räumen mit mehreren Fenstern auswerten ob eines der Fenster geöffnet ist oder alle Fenster geschlossen sind. Das funktioniert mit einer 'structure' auch wunderbar. Gibt es ein Attribut, dass man setzen muss um die oben aufgeführten Meldungen im Log zu eliminieren? Oder sind diese Meldungen eher als Hinweis zu betrachten?
Grüße
Stefan
ZitatDas sind Fensterkontakte (enocean) für die es keinen Set-Befehl gibt.
In diesem Fall darf der Modul-Autor entweder kein SetFn implementieren, oder (in diesem Fall vmtl. richtig), muss den Text "Unknown argument ?, choose one of" zurueckliefern.
ZitatIn diesem Fall darf der Modul-Autor entweder kein SetFn implementieren, oder (in diesem Fall vmtl. richtig), muss den Text "Unknown argument ?, choose one of" zurueckliefern.
Danke für die Info. Ich werde mich dann an den Maintainer des enocean-Moduls wenden.
Grüße
Stefan
Ich möchte diesen betagten Faden nochmal aktivieren.
Ich habe auch die o.g. Fehler im Log, und aus
https://forum.fhem.de/index.php?topic=103815.0 (https://forum.fhem.de/index.php?topic=103815.0)
gelernt, dass das nicht so einfach zu ändern ist. Ok, Haken dran.
Zusätzlich habe ich aber ein paar Freezes, zu denen mir das Freezemon-Log unzählige Aufrufe von "set <device> ?" mitsamt der Rückmeldung "Unknown argument ?, choose one of ..." ausweist. Zum Beispiel:
2022.02.25 15:57:32.548 5: Cmd: >set Kuechen_Wassersensor ?<
2022.02.25 15:57:32.580 5: SET: Unknown argument ?, choose one of A0:noArg AI:noArg B0:noArg BI:noArg C0:noArg CI:noArg D0:noArg DI:noArg released:noArg
Ich verstehe die Ausführungen oben so, dass auch das so sein muss. Aber ich würde gerne die Logik hinter "set <device> ?" in einer structure verstehen - wann wird das ausgeführt? Warum?
Mir blockiert es fhem für teilweise 10 Sekunden - aber ohne, dass ich die structure geschaltet hätte. Ich weiß, ich kann Aufrufe mit async entzerren, aber hier gab es ja gar keinen Aufruf... oder doch? Muss ich auf Fehlersuche gehen, oder ist das einfach eine "Begleiterscheinung" von großen structures?
ZitatAber ich würde gerne die Logik hinter "set <device> ?" in einer structure verstehen - wann wird das ausgeführt? Warum?
In der FHEMWEB Detailansicht hat man die Moeglichkeit die Befehle aus einer Liste auszuwaehlen.
Diese Liste kriegt man mit einem ungueltigen set Befehl (z.Bsp. ?), woraufhin das Modul mit "... choose one of <Liste der gueltigen Befehle>" zu antworten hat.
Structure selbst muss diese Liste von den Mitgliedern einsammeln, deswegen werden sie alle angefragt.
Das sollte bei normalen Modulen nicht zu einer Blockierung fuehren, da die Liste der moeglichen Befehle nicht aufwendig zu berechnen ist, oder von anderen Programmen abgefragt werden muss.
Ah, ok, Erleuchtung 8) Danke!
Also schickt er die set <device> ? erst beim Aufruf einer WEB-Instanz - dann aber alle auf einmal.