Hallo Zusammen,
folgendes steht sehr oft in meinem Lofile:
Zitat2016.12.25 22:03:36 1: PERL WARNING: Odd number of elements in anonymous hash at (eval 475) line 1.
2016.12.25 22:04:37 1: PERL WARNING: Odd number of elements in anonymous hash at (eval 479) line 1.
2016.12.25 22:05:38 1: PERL WARNING: Odd number of elements in anonymous hash at (eval 492) line 1.
2016.12.25 22:06:39 1: PERL WARNING: Odd number of elements in anonymous hash at (eval 504) line 1.
2016.12.25 22:07:40 1: PERL WARNING: Odd number of elements in anonymous hash at (eval 514) line 1.
2016.12.25 22:08:41 1: PERL WARNING: Odd number of elements in anonymous hash at (eval 516) line 1.
2016.12.25 22:09:42 1: PERL WARNING: Odd number of elements in anonymous hash at (eval 521) line 1.
2016.12.25 22:10:43 1: PERL WARNING: Odd number of elements in anonymous hash at (eval 528) line 1.
2016.12.25 22:11:28 3: CUL_HM set CUL_HM_HM_ES_PMSw1_Pl_2741D7_Sw statusRequest
2016.12.25 22:11:44 1: PERL WARNING: Odd number of elements in anonymous hash at (eval 534) line 1.
2016.12.25 22:12:45 1: PERL WARNING: Odd number of elements in anonymous hash at (eval 538) line 1.
2016.12.25 22:13:46 1: PERL WARNING: Odd number of elements in anonymous hash at (eval 548) line 1.
2016.12.25 22:14:47 1: PERL WARNING: Odd number of elements in anonymous hash at (eval 555) line 1.
2016.12.25 22:15:48 1: PERL WARNING: Odd number of elements in anonymous hash at (eval 568) line 1.
Wie gehe ich beim debuggen vor?
Zuerst mal den Code finden, der dieses Meldung verursacht:
Bei perl warnings würde ich das globale Attribut stacktrace auf 1 setzen, dann siehst Du vielleicht deutlicher was diesen perl-Ausdruck enthält. Da es ein "eval" ist, geht es um perl-Teile in einem Device, wie z.B: notify, at, DOIF etc. Etwas was wohl jede Minute aktiv wird.
Versuch mal Stacktrace, allerdings sind Fehler in eval manchmal schlecht zu finden.
Jedenfalls scheint es sich im Abstand von einer Minute zu wiederholen - denk mal nach was es sein könnte, ein at?
Vielen Dank, das bringt mich zumindest näher dran.
Hab mal ein DOIF nach dem anderen deaktiviert.
Daran liegt es, aber warum?
Zitatdefine Email_Netzeinspeisung DOIF ([DP11_SMAEM:SMAEM1900246155_Einspeisung_Wirkleistung] > {ReadingsVal("Netzeinspeisung_Soll","state","250")}) ({DebianMail('fhem@email.de', 'FHEM Einspeisung: $DEVICE größer {ReadingsVal("Netzeinspeisung_Soll","state","250")} Watt')})
Wenn ich disable = 1 mache, hört der Eintrag im Logfile auf.
Um noch genauer zu sein ... es liegt daran:
Zitat{ReadingsVal("Netzeinspeisung_Soll","state","250")}
Du mischst DOIF mit perl. Ich denke das geht so nicht. Schreib doch mal statt ReadingsVal in {} die entsprechende DOIF Notation: [Netzeinspeisung_soll:state]
Weiß nicht, ob das so korrekt ist, ich benutze DOIF nicht.
Zitat von: Straightforward am 26 Dezember 2016, 07:47:57
Vielen Dank, das bringt mich zumindest näher dran.
Hab mal ein DOIF nach dem anderen deaktiviert.
Daran liegt es, aber warum?
Wenn ich disable = 1 mache, hört der Eintrag im Logfile auf.
Um noch genauer zu sein ... es liegt daran:
Eigentlich ganz einfach, im ersten Readingsval solltest Du die DOIF/set- Syntax verwenden
[Netzeinspeisung_Soll:state]
Du bist vor dem 2. ReadingsVal schon in Perl, muss also keine geschweiften Klammern um Readingsval setzen und die Verwendung der einfachen Anführungsstriche wird wohl auch nicht zum gewünschten Ergebnis führen.
Also ohne es ausprobiert zu haben:
define Email_Netzeinspeisung DOIF ([DP11_SMAEM:SMAEM1900246155_Einspeisung_Wirkleistung] > [Netzeinspeisung_Soll:state]) ({DebianMail('fhem@email.de', "FHEM Einspeisung: $DEVICE größer ".ReadingsVal("Netzeinspeisung_Soll","state","250")." Watt")})
Ah, da sind verschiedene Sprachen im Spiel. So langsam verstehe ich das (einigermaßen).
Jetzt klappt es auch wunderbar, hier mal die DEF:
Zitat([Thermostat_Wohnzimmer_Climate:desired-temp] < 8)
({DebianMail('fhem@***.de',
'FHEM Test',
"Netzeinspeisung_Soll: ".ReadingsVal("Netzeinspeisung_Soll","state",250)." Watt
\nSMAEM1900246155_Bezug_Wirkleistung: ".ReadingsVal("DP11_SMAEM","SMAEM1900246155_Bezug_Wirkleistung",250)." Watt")
}
)
Schön, kannst Du den Thread noch als gelöst markieren (Betreff ändern)?