[gelöst] Fehlermeldung; PERL WARNING: ... Kann mir jemand die Bedeutung erklären

Begonnen von FHEm2005, 04 November 2014, 09:35:59

Vorheriges Thema - Nächstes Thema

FHEm2005

ich erhalte jedemenge Fehlermeldungen im Logfile folgender Arten:

2014.11.04 09:28:22 1: PERL WARNING: Useless use of anonymous hash ({}) in void context at (eval 110) line 1.
2014.11.04 09:28:23 1: PERL WARNING: Odd number of elements in anonymous hash at (eval 110) line 1.


Ich habe alle Klammern überprüft. Kann mir jemand sagen was ich jetzt machen kann? Scheint ja wohl eher eine Fehlermeldung aus dem Perl-Modul zu sein. Ich habe heute morgen bereits ein Update gemacht - die Fehlermeldung bleibt.

Gruß
Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM, BSB-LAN

betateilchen

Zum 3498. Mal: Eine WARNING ist keine Fehlermeldung!

Zitat von: FHEm2005 am 04 November 2014, 09:35:59
Scheint ja wohl eher eine Fehlermeldung aus dem Perl-Modul zu sein.

Wenn man jetzt noch wüsste, von welchem perl Modul Du sprichst, könnte man Dir vielleicht auch weiterhelfen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

FHEm2005

Ich korrigiere den Satz:

statt:
ZitatScheint ja wohl eher eine Fehlermeldung aus dem Perl-Modul zu sein.
. ist es wohl besser den satz zu streichen. :-)

Gruß Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM, BSB-LAN

Puschel74

Hallo,

deswegen wissen wir immer noch nicht durch was dieses Warning ausgelöst wird.
Evtl. wären ja mal 2 oder 3 Zeilen mehr aus dem Logfile hilfreich(er).

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

FHEm2005

Nach dem Update das Logfile vom restart ab:

2014.11.04 09:50:21 1: Including fhem.cfg
2014.11.04 09:50:21 3: Opening TCM310_0 device /dev/ttyAMA0
2014.11.04 09:50:21 3: Setting TCM310_0 baudrate to 57600
2014.11.04 09:50:21 3: TCM310_0 device opened
2014.11.04 09:50:21 3: Opening CUL1 device /dev/ttyACM0
2014.11.04 09:50:21 3: Setting CUL1 baudrate to 38400
2014.11.04 09:50:21 3: CUL1 device opened
2014.11.04 09:50:21 3: CUL1: Possible commands: BbCFiAZEGMKUYRTVWxxxxxxxx
2014.11.04 09:50:21 2: Switched CUL1 rfmode to HomeMatic
2014.11.04 09:50:27 3: telnetPort: port 7072 opened
2014.11.04 09:50:27 3: WEB: port 8083 opened
2014.11.04 09:50:27 3: WEBTest: port 4711 opened
2014.11.04 09:50:27 3: WEBphone: port 8084 opened
2014.11.04 09:50:27 3: WEBtablet: port 8085 opened
2014.11.04 09:50:27 2: eventTypes: loaded 1629 events from ./log/eventTypes.txt
2014.11.04 09:50:28 1: Including ./log/fhem.save
2014.11.04 09:50:32 2: TCM TCM310_0 initialized
2014.11.04 09:50:33 3: Device Hzg_Ez added to ActionDetector with 000:10 time
2014.11.04 09:50:33 3: Device Hzg_Wz1 added to ActionDetector with 000:10 time
2014.11.04 09:50:33 3: Device Hzg_Wz2 added to ActionDetector with 000:10 time
2014.11.04 09:50:34 3: Device Stecker01 added to ActionDetector with 000:10 time
2014.11.04 09:50:34 3: Device Th_Wz_Ez added to ActionDetector with 000:10 time
2014.11.04 09:50:34 1: PERL WARNING: Useless use of anonymous hash ({}) in void context at (eval 386) line 1.
2014.11.04 09:50:34 1: PERL WARNING: Useless use of anonymous hash ({}) in void context at (eval 386) line 1.
2014.11.04 09:50:34 1: PERL WARNING: Useless use of anonymous hash ({}) in void context at (eval 386) line 1.
2014.11.04 09:50:34 1: PERL WARNING: Useless use of anonymous hash ({}) in void context at (eval 386) line 1.
2014.11.04 09:50:34 1: PERL WARNING: Odd number of elements in anonymous hash at (eval 386) line 1.
2014.11.04 09:50:34 1: PERL WARNING: Odd number of elements in anonymous hash at (eval 386) line 1.


Der Block PERL WARNING wurde noch 9x mit der gleichen Uhrzeit geloggt.

Gruß Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM, BSB-LAN

betateilchen

als ersten Schritt würde ich Dir empfehlen, das initialUsbCreate zu deaktivieren (besser: zu löschen)

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

FHEm2005

Wo finde ich "initialUsbCreate"? In meiner fhem.cfg ist es jedenfalls nicht enthalten.

Ich komme mir im Moment ziemlich blöd vor. Stehe ich auf'm Schlauch?

Gruß Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM, BSB-LAN

betateilchen

sorry, es heißt initialUsbCheck und ist ein notify, das standardmäßig in der fhem.cfg vorhanden sein sollte.

Das automatische Anlegen des TMC310_0 beim fhem-Start deutet für mich darauf hin, dass auch bei Dir dieses notify noch aktiv ist.

Da die Warnings nach dem Anlegen der HOmematic-Devices erfolgen, liegt der Verdacht nahe, dass es irgendwo daher kommt.

Mach mal bitte ein "attr global stacktrace 1" und dann ein "save config"
Danach starte fhem nochmal neu und poste die Logausgabe - dann sollte man genau sehen, was die Warnungen auslöst.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

FHEm2005

Das initialUsbCheck habe ich gelöscht. Den stacktrace 1 eingefügt und fhem rebootet.

Ergebnis:
2014.11.04 12:30:38 1: Including fhem.cfg
2014.11.04 12:30:38 3: Opening TCM310_0 device /dev/ttyAMA0
2014.11.04 12:30:38 3: Setting TCM310_0 baudrate to 57600
2014.11.04 12:30:38 3: TCM310_0 device opened
2014.11.04 12:30:38 3: Opening CUL1 device /dev/ttyACM0
2014.11.04 12:30:38 3: Setting CUL1 baudrate to 38400
2014.11.04 12:30:38 3: CUL1 device opened
2014.11.04 12:30:38 3: CUL1: Possible commands: BbCFiAZEGMKUYRTVWxxxxxxxx
2014.11.04 12:30:38 2: Switched CUL1 rfmode to HomeMatic
2014.11.04 12:30:39 3: telnetPort: port 7072 opened
2014.11.04 12:30:39 3: WEB: port 8083 opened
2014.11.04 12:30:39 3: WEBTest: port 4711 opened
2014.11.04 12:30:39 3: WEBphone: port 8084 opened
2014.11.04 12:30:39 3: WEBtablet: port 8085 opened
2014.11.04 12:30:39 2: eventTypes: loaded 1629 events from ./log/eventTypes.txt
2014.11.04 12:30:40 1: Including ./log/fhem.save
2014.11.04 12:30:44 2: TCM TCM310_0 initialized
2014.11.04 12:30:45 3: Device Hzg_Ez added to ActionDetector with 000:10 time
2014.11.04 12:30:45 3: Device Hzg_Wz1 added to ActionDetector with 000:10 time
2014.11.04 12:30:46 3: Device Hzg_Wz2 added to ActionDetector with 000:10 time
2014.11.04 12:30:46 3: Device Stecker01 added to ActionDetector with 000:10 time
2014.11.04 12:30:46 3: Device Th_Wz_Ez added to ActionDetector with 000:10 time
2014.11.04 12:30:46 1: PERL WARNING: Useless use of anonymous hash ({}) in void context at (eval 2114) line 1.
2014.11.04 12:30:46 3: stacktrace:
2014.11.04 12:30:46 3:     main::__ANON__                      called by (eval 2114) (1)
2014.11.04 12:30:46 3:     (eval)                              called by fhem.pl (3548)
2014.11.04 12:30:46 3:     main::readingsEndUpdate             called by fhem.pl (3723)
2014.11.04 12:30:46 3:     main::readingsSingleUpdate          called by ./FHEM/10_CUL_HM.pm (6690)
2014.11.04 12:30:46 3:     main::CUL_HM_UpdtReadSingle         called by ./FHEM/10_CUL_HM.pm (5601)
2014.11.04 12:30:46 3:     main::CUL_HM_ID2PeerList            called by ./FHEM/10_CUL_HM.pm (235)
2014.11.04 12:30:46 3:     main::CUL_HM_updateConfig           called by fhem.pl (2539)
2014.11.04 12:30:46 3:     main::HandleTimeout                 called by fhem.pl (535)


Der Block ist bei beiden Warnings der gleiche Inhalt.

Gruß Eberhard

Edit:

Ich habe mal im Log des letzten Monats nachgesehen. Der Fehler trat auf nachdem ich dieses Attribute hinzugefügt hatte:


attr MGLWeather userReadings absFeuchteMG {
my $AF;;
my $dp;; 
my $temperature = ReadingsVal("MGLWeather","temp_c",0);;
my $humidity = ReadingsVal("MGLWeather","humidity",0);;
my $TK = 273.15 + $temperature;;  my $a;; 
($temperature >= 0)?{$a=7.5} : {$a=7.6};; 
my $b;; ($temperature >= 0)?{$b=237.3} : {$b=240.7};; 
my $SDD = 6.1078 * (10 ** (($a * $temperature)/($b+$temperature)));; 
my $DD = $humidity/100*$SDD;; 
$AF = 216.6869 * $DD/$TK ;; 
},
dewpointMG { 
my $dp;; 
my $temperature = ReadingsVal("MGLWeather","temp_c",0);; 
my $humidity = ReadingsVal("MGLWeather","humidity",0);;
my $TK = 273.15 + $temperature;; 
my $a;;  ($temperature >= 0)?{$a=7.5} : {$a=7.6};; 
my $b;; ($temperature >= 0)?{$b=237.3} : {$b=240.7};; 
my $SDD = 6.1078 * 10 ** (($a * $temperature)/($b+$temperature));; 
my $DD = $humidity/100*$SDD;; 
my $AF = 216.6869 * $DD/$TK ;; 
my $v = (log ($DD/6.1078))/(log(10));; 
$dp = $b * $v / ($a-$v);;  }


Ist da ein fehler drin? Rechnen und anzeigen tut er wie gewünscht. Die Zeilenumbrüche sind zur besseren Lesbarkeit eingefügt worden. Wenn ich dieses Attribut auskommentiere, ist das Warning weg.
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM, BSB-LAN

FHEm2005

Inzwischen habe ich noch einiges versucht.

Ich habe das Atrribut wie oben abgegeben zweimal verwendet. Einmal bei einem device mit type weather (s.o.) und einmal bei einem device HM-TC-IT-WM-W-EU chan01 mit dem Namen Th_Wz_Ez_Weather.

Das Attribut unter MGLWeather läuft ohne Fehlermeldung. Wenn ich das Attribut unter Th_Wz_Ez_Weather aktiviere kommen die Fehlermeldungen. Deshalb hier die Definition aus der fhem.cfg:

define Th_Wz_Ez_Weather CUL_HM 2Dxxxx01
attr Th_Wz_Ez_Weather alias Wohnzimmer
attr Th_Wz_Ez_Weather model HM-TC-IT-WM-W-EU
attr Th_Wz_Ez_Weather peerIDs 29xxxx01,
attr Th_Wz_Ez_Weather stateFormat Soll-T:desired-temp,Ist-T:temperature,H:humidity,D:dewpoint
attr Th_Wz_Ez_Weather userReadings absFeuchteWz {  my $AF;;
my $dp;;
my $temperature = ReadingsVal("Th_Wz_Ez_Climate","measured-temp",0);;
my $humidity = ReadingsVal("Th_Wz_Ez_Climate","humidity",0);;
my $TK = 273.15 + $temperature;;
my $a;;
($temperature >= 0)?{$a=7.5} : {$a=7.6};;
my $b;;
($temperature >= 0)?{$b=237.3} : {$b=240.7};;
my $SDD = 6.1078 * (10 ** (($a * $temperature)/($b+$temperature)));;
my $DD = $humidity/100*$SDD;;
$AF = 216.6869 * $DD/$TK ;; },
dewpoint {  my $dp;;
my $temperature = ReadingsVal("Th_Wz_Ez_Climate","measured-temp",0);;
my $humidity = ReadingsVal("Th_Wz_Ez_Climate","humidity",0);;
my $TK = 273.15 + $temperature;;
my $a;;
($temperature >= 0)?{$a=7.5} : {$a=7.6};;
my $b;;
($temperature >= 0)?{$b=237.3} : {$b=240.7};;
my $SDD = 6.1078 * 10 ** (($a * $temperature)/($b+$temperature));;
my $DD = $humidity/100*$SDD;;
my $AF = 216.6869 * $DD/$TK;;
my $v = (log ($DD/6.1078))/(log(10));;
$dp = $b * $v / ($a-$v);;}


Auch hier sind die Umbrüche nachträglich zur besseren Lesbarkeit eingegeben worden. Der Code ist mit Notepad++ geschrieben und mit Copy/Paste in das feld für userReading eingefügt worden - NICHT direkt in die fhem.cfg.

So, und nun weiß ich nicht wie es weitergeht.

Gruß Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM, BSB-LAN

Joachim

FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

FHEm2005

ZitatWarum nimmstdu nicht das Modul dewpoint?

Diese Frage ist durchaus berechtigt. Da ich Anfänger bin und wenig bis fast nix Ahnung von Perl habe, arbeite ich lieber mit Dingen, die ich nachvollziehen kann. So versuche ich mich dem Thema Perl vorsichtig zu nähern. Da ein sehr ähnliches Beispiel in wiki steht, habe ich das Beispiel als Basis genommen, um den Taupunkt und die abs. Feuchte zu berechnen und anzuzeigen.

Wenn mir jemand einen Grund sagt, warum ich das so nicht machen kann/darf, habe ich etwas gelernt und werde das dewpoint Modul benutzen. So aber  können alle aus der Beseitigung dieser Fehlermeldung lernen bzw Erfahrung schöpfen.

Fassen wir mal zusammen: Wir haben ein und denselben Code, der einmal im Modul Weather und einmal im Modul CUL_HM läuft - beide Male als userReadings. Weather produziert keine Fehlermeldung und CUL_HM haut ein Warning nach dem anderen raus. Ist es vermessen zu vermuten, dass der Grund im Modul CUL_HM liegt?

Gruß Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM, BSB-LAN

FHEm2005

Bin ich jetzt mit meinem Problem auf mich selbst gestellt?  :'( :'(
Selbst wenn ich das Modul dewpoint verwenden würde, sollte der Frage nachgegangen werden, woher diese Warnings kommen. Das kann bei jeder etwas komplizierteren Berechnung wieder passieren.

Ich habe anstatt der ReadingsVal mal feste Werte verwendet. Ergebnis: Warnings bleiben im Moodul CUL_HM.

Kann ich die Warnings irgendwie unterdrücken?

@betateilchen: Was ist mit aus meinem stracktrace geworden? Kannst Du was erkennen?

Gruß Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM, BSB-LAN

FHEm2005

Lleider hat sich das Problem nicht in Luft aufgelöst. Gibt es Jemand, der noch eine Idee hat?

Es muss doch möglich sein dem Programmierfehler auf die Schliche zu kommen.

Gruß Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM, BSB-LAN

Billy

Ich hatte bei mir die Meldung:
PERL WARNING: Useless use of anonymous hash ({}) in void context at (eval 3755) line 1.

Nachdem ich .. {`echo set myRolW_son on | nc -w 1 192.168.148.17 7072`}..
wie folgt verändert hatte
                     .. fhem(`echo set myRolW_son on | nc -w 1 192.168.148.17 7072`) ..

war die Meldung weg.

Vielleicht musst du bei dir auch irgendwo { ..... } durch fhem ( ..... ) ersetzen!

Gruß Billy
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*