HMInfo verursacht Fhem-Absturz: "... undefined value as an ARRAY ..."

Begonnen von jannis, 27 Mai 2020, 13:24:28

Vorheriges Thema - Nächstes Thema

jannis

Zitat von: martinp876 am 01 Juni 2020, 10:53:53
könnte ich nicht nachvollziehen.

Deswegen hatte ich Dir angeboten, darüber zu telefonieren, um Dir zu ermöglichen, an einem System den Fehler zu ananlysieren, wo er auftritt.

Zitat von: martinp876 am 01 Juni 2020, 10:53:53
könnte ich nicht nachvollziehen. Einzige möglichkeit: die HMInfo Instanz heist nicht "hm". Das war noch ein bug - ist nun behoben.
Also
a) hat HmInfo einen anderen Namen als "hm" bei euch?
b) Klappte es nun nach dem Update (heute in SVN, morgen im Update)


  • zu 1. Meine HMinfo-Instanz nennt sich "HMinfo".
  • zu 2. Habe die Version aus dem SVN in meinen FHEM-Modul-Ordner kopiert und neu gestartet. Ergebnis bei "set HMinfo  tempList status" keine Änderung, FHEM crasht immer noch mit der selben Meldung.
+ + + Gibt es eigentlich hier Smarthome-Enthusiasten aus + + +
Norddeutschland / Nordfriesland / Bredstedt / Husum oder Niebül?

martinp876

1) ein "list HMinfo" sollte unter "helper->weekplanList" eine Liste der Profile enthalten. Ist das so? ggf. posten
2) Die Abfrage prüft beides: auf das Vorhanden sein des Plans und dessen Typ.
3)Das nachstehende Komamndo solle "ARRAY" zurückliefern
{return ref($defs{HMinfo}{helper}{weekplanList})}

4)Das nachfolgende Kommando posten und dann das List noch einmal prüfen - auch das Array.
{HMinfo_listOfTempTemplates()}




jannis

Zitat von: martinp876 am 01 Juni 2020, 16:36:04
1) ein "list HMinfo" sollte unter "helper->weekplanList" eine Liste der Profile enthalten. Ist das so? ggf. posten
2) Die Abfrage prüft beides: auf das Vorhanden sein des Plans und dessen Typ.
3)Das nachstehende Komamndo solle "ARRAY" zurückliefern
{return ref($defs{HMinfo}{helper}{weekplanList})}

4)Das nachfolgende Kommando posten und dann das List noch einmal prüfen - auch das Array.
{HMinfo_listOfTempTemplates()}

zu 1/2: list HMinfo
Internals:
   FUUID      5e2ca3d1-f33f-5e92-a398-977cf81252cb3360
   FVERSION   98_HMinfo.pm:?/2020-06-01 UNSTABLE
   NAME       HMinfo
   NR         671
   NTFY_ORDER 50-HMinfo
   STATE      ???
   TYPE       HMinfo
   Version    01
   helper:
     weekplanListDef ./FHEM/tempList.cfg
     weekplanListDir ./FHEM/
     weekplanList:
       BueroUndFlur
       morgens_warm
       Schlafzimmer_Helena
       Schlafzimmer_Eltern
       Wohnraum
   nb:
     cnt        0
Attributes:
   configDir  FHEM
   icon       jk_gateway
   room       Beobachtung->Thermostat,Technik->Gateways->CUL_HM
   sumERROR   battery:ok,sabotageError:off,powerError:ok,overload:off,overheat:off,reduced:off,motorErr:ok,error:none,uncertain:[no|yes],smoke_detect:none,cover:closed
   sumStatus  battery,sabotageError,powerError,motor
   verbose    5
   webCmd     update:protoEvents short:rssi:peerXref:configCheck:models



zu 3: Ja, liefert das gewüsnchte zurrück:
ARRAY

zu 4: {HMinfo_listOfTempTemplates()} liefert eine leere Seite [Korrektur:] die gleiche Seite, auf der ich beim Aufruf stand zurück.

Wiederholung 1/2 und 3: liefern das gleiche Ergebnis wie zuvor.


+ + + Gibt es eigentlich hier Smarthome-Enthusiasten aus + + +
Norddeutschland / Nordfriesland / Bredstedt / Husum oder Niebül?

frank

0. mein hminfo heisst "hminfo"

1/2.
     weekplanListDef ./tempList.cfg
     weekplanListDir ./
     weekplanList:


3. "{return ref($defs{HMinfo}{helper}{weekplanList})}"
=> liefert eine "leere" seite

4. "{HMinfo_listOfTempTemplates()}"
liefert nichts und springt zur fhem startseite.


wiederholung von 3. und 4. liefert selbes ergebnis.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

yersinia

Da meine Version funktioniert (ie tempList[g] status führt _nicht_ zum crash), auch nach dem Update, schließe ich mich an - vlt gibt es auffällige unterschiede.
98_HMinfo.pm 22071 2020-05-30 05:18:20Z martinp876
Mein HMinfo Device heisst hm.

zu 1/2:
helper:
     weekplanListDef ./TemperaturProfile/tempFile_01.cfg
     weekplanListDir ./TemperaturProfile/
     weekplanList:
        HM_01_Clima
        HM_02_Clima
        tempFile_02.cfg:HM_01_Clima
        tempFile_02.cfg:HM_02_Clima
        tempFile_03.cfg:HM_01_Clima
        tempFile_03.cfg:HM_02_Clima


zu 3:
{return ref($defs{HMinfo}{helper}{weekplanList})}
liefert eine leere Seite zurück, wie bei frank. Allerdings habe ich ein Log-Eintrag (global verbose ist auf 3):
2020.06.02 11:11:18 1: Error: >HMinfo< has no TYPE, but following keys: >helper<

zu 4:
{HMinfo_listOfTempTemplates()}
wie bei frank: springt zur FHEM Startseite


viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

jannis

Zitat von: yersinia am 02 Juni 2020, 11:15:03
zu 4:
{HMinfo_listOfTempTemplates()}
wie bei frank: springt zur FHEM Startseite

Bei mir wird die selbe Seite, auf der ich vorher stand, angezeigt .... stand ich auf der Startseite, ist es natürlich die Startseite.
+ + + Gibt es eigentlich hier Smarthome-Enthusiasten aus + + +
Norddeutschland / Nordfriesland / Bredstedt / Husum oder Niebül?

jannis

+ + + Gibt es eigentlich hier Smarthome-Enthusiasten aus + + +
Norddeutschland / Nordfriesland / Bredstedt / Husum oder Niebül?

martinp876

@frank:
3. "{return ref($defs{hminfo}{helper}{weekplanList})}"
=> hier den Namen des hmInfo eintragen. Bei dir also klein geschrieben.

Anstelle von 4 bitte einmal
{HMinfo_listOfTempTemplates();;HMinfo_tempListTmplView()}
ausführen. Wird der Fehler dann immernoch angezeigt?

frank

hallo martin,

bei 3. kommt nun: "ARRAY"
das neue 4. bleibt beim fehler: "Can't use an undefined value as an ARRAY reference at ./FHEM/98_HMinfo.pm line 853."
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

martinp876

ARRAY ist perfekt. So soll es sein.
Komplett unklar ist mir, warum bei euch ein "undefined" angemeckert wird wenn ich garade nachgefragt und bestätigt habe, dass der Typ "ARRAY" ist.
hier noch einmal 4 Kommandos. Bitte ausführen (einzeln) und das ergebnis posten.
Prüfen, ob ein Fehler gemeldet wird.
{ my ($n) = devspec2array("TYPE=HMinfo");;return "$n:".(defined $defs{$n}{helper}{weekplanList}?"defined":"undefined")}
{ my ($n) = devspec2array("TYPE=HMinfo");;return "$n:".ref($defs{$n}{helper}{weekplanList})}
{ my ($n) = devspec2array("TYPE=HMinfo");;return "$n:".(ref($defs{$n}{helper}{weekplanList}) eq 'ARRAY'?"arrayOK":"arrayNOK")}
{ my ($n) = devspec2array("TYPE=HMinfo");;return "$n:".join("\n",@{$defs{$n}{helper}{weekplanList}})}

frank

1. "hminfo:defined"
2. "hminfo:ARRAY"
3. "hminfo:arrayOK"
4. "hminfo:"

auch im log keine fehlermeldungen.

meine perl version ist v24.1
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

frank

ich könnte mir vorstellen, dass "nur" meine push funktion mit diesem "spezialfall" (leeres array an einer referenz) nicht umgehen kann, obwohl "eigentlich" alles ok ist.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

martinp876

nun, ich kann auch noch auf ein leeres Array abfragen - obwohl das eigentlich funktionieren sollte.
Ist eingecheckt

frank

absturz erfolgreich verhindert.  :)

default templatefile: ./tempList.cfg
default path        : ./
   
files referenced but not found:
   ./tempList.cfg - Can't open ./tempList.cfg: No such file or directory

---------components-----------
fail  : 0 for Thermostat.AZ_Climate: file: ./tempList.cfg error:Can't open ./tempList.cfg: No such file or directory
fail  : none for Thermostat.Bad.OG_Climate: file: ./tempList.cfg error:Can't open ./tempList.cfg: No such file or directory
fail  : none for Thermostat.Bad_Climate: file: ./tempList.cfg error:Can't open ./tempList.cfg: No such file or directory
fail  : none for Thermostat.GZ_Climate: file: ./tempList.cfg error:Can't open ./tempList.cfg: No such file or directory
fail  : none for Thermostat.Keller_Climate: file: ./tempList.cfg error:Can't open ./tempList.cfg: No such file or directory
fail  : none for Thermostat.Kueche_Climate: file: ./tempList.cfg error:Can't open ./tempList.cfg: No such file or directory
fail  : none for Thermostat.OZ_Climate: file: ./tempList.cfg error:Can't open ./tempList.cfg: No such file or directory
fail  : none for Thermostat.SZ_Climate: file: ./tempList.cfg error:Can't open ./tempList.cfg: No such file or directory
fail  : none for Thermostat.WZ_Climate: file: ./tempList.cfg error:Can't open ./tempList.cfg: No such file or directory

devices not using tempList templates:
      =>  Thermostat.Bad_Climate
      =>  Thermostat.Kueche_Climate
      =>  Thermostat.SZ_Climate
      =>  Thermostat.OZ_Climate
      =>  Thermostat.Keller_Climate
      =>  Thermostat.GZ_Climate
      =>  Thermostat.WZ_Climate
      =>  Thermostat.AZ_Climate
      =>  Thermostat.Bad.OG_Climate
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

jannis

Zitat von: martinp876 am 11 Juni 2020, 07:46:54
{ my ($n) = devspec2array("TYPE=HMinfo");;return "$n:".(defined $defs{$n}{helper}{weekplanList}?"defined":"undefined")}
{ my ($n) = devspec2array("TYPE=HMinfo");;return "$n:".ref($defs{$n}{helper}{weekplanList})}
{ my ($n) = devspec2array("TYPE=HMinfo");;return "$n:".(ref($defs{$n}{helper}{weekplanList}) eq 'ARRAY'?"arrayOK":"arrayNOK")}
{ my ($n) = devspec2array("TYPE=HMinfo");;return "$n:".join("\n",@{$defs{$n}{helper}{weekplanList}})}


Resultat 11-3 ist bei mir wie bei Frank
bei 4 werden die Namen für die Konfiguration aus meinem templist ausgegeben:
HMinfo:BueroUndFlur
morgens_warm
Schlafzimmer_Helena
Schlafzimmer_Eltern
Wohnraum


+ + + Gibt es eigentlich hier Smarthome-Enthusiasten aus + + +
Norddeutschland / Nordfriesland / Bredstedt / Husum oder Niebül?