Hallo,
wer kann mir den Fehler zeigen, weshalb mein Doif problemlos das macht was es soll, aber dennoch bei jeder Ausführung folgende Warnung anzeigt:
condition c01: Use of uninitialized value $minInt in numeric lt (<) at fhem.pl line 4864.
Im Fhem Log taucht diese Warnung, selbst mit Verbose 5 nicht auf.
Anbei das List meines Doif:
Eigentlich nichts dramatisches, es soll alle 2 Minuten bestimmte Readings schreiben, welche ich dann in meine SQL Datenbank übernehme.
Internals:
DEF {[+:02];
my $Energie_NUeP_Einspeisung = ReadingsNum("Netzuebergabepunkt_Leistung","Netzeinspeisung",0);
my $Energie_NUeP_Bezug = ReadingsNum("Netzuebergabepunkt_Leistung","Netzbezug",0);
my $Energie_Hausverbrauch = ReadingsNum("Hausverbrauch","Energie",0);
my $Energie_PV_Leistung = ReadingsNum("PV_Leistung","Energie",0);
my $Energie_Batt_Ladung = ReadingsNum("Batt_Leistung","Batterieladung",0);
my $Energie_Batt_Abgabe = ReadingsNum("Batt_Leistung","Batterieabgabe",0);
my $Energie_Batt_Leistung = ReadingsNum("Batt_Leistung","state",0);
fhem("setreading Netzuebergabepunkt_Leistung Netzeinspeisung_kWh $Energie_NUeP_Einspeisung");
fhem("setreading Netzuebergabepunkt_Leistung Netzbezug_kWh $Energie_NUeP_Bezug");
fhem("setreading Hausverbrauch Energie_kWh $Energie_Hausverbrauch");
fhem("setreading PV_Leistung Energie_kWh $Energie_PV_Leistung");
fhem("setreading Batt_Leistung Batterieladung_kWh $Energie_Batt_Ladung");
fhem("setreading Batt_Leistung Batterieabgabe_kWh $Energie_Batt_Abgabe");
fhem("setreading Batt_Leistung Batterieleistung_W $Energie_Batt_Leistung")
}
FUUID 5e92118c-f33f-7df9-c207-316a62792914ca87
MODEL Perl
NAME di_Energie_schreiben
NOTIFYDEV global
NR 409
NTFY_ORDER 50-di_Energie_schreiben
STATE cmd_1
TYPE DOIF
VERSION 21224 2020-02-18 18:45:49
READINGS:
2020-04-15 10:32:00 block_01 executed
2020-04-15 10:18:03 mode enabled
2020-04-12 10:58:00 state cmd_1
2020-04-15 10:32:00 timer_01_c01 15.04.2020 10:34:00
2020-04-15 10:32:00 warning condition c01: Use of uninitialized value $minInt in numeric lt (<) at fhem.pl line 4864.
Regex:
accu:
condition:
0 ::DOIF_time_once($hash,0,$wday);
my $Energie_NUeP_Einspeisung = ReadingsNum("Netzuebergabepunkt_Leistung","Netzeinspeisung",0);
my $Energie_NUeP_Bezug = ReadingsNum("Netzuebergabepunkt_Leistung","Netzbezug",0);
my $Energie_Hausverbrauch = ReadingsNum("Hausverbrauch","Energie",0);
my $Energie_PV_Leistung = ReadingsNum("PV_Leistung","Energie",0);
my $Energie_Batt_Ladung = ReadingsNum("Batt_Leistung","Batterieladung",0);
my $Energie_Batt_Abgabe = ReadingsNum("Batt_Leistung","Batterieabgabe",0);
my $Energie_Batt_Leistung = ReadingsNum("Batt_Leistung","state",0);
fhem("setreading Netzuebergabepunkt_Leistung Netzeinspeisung_kWh $Energie_NUeP_Einspeisung");
fhem("setreading Netzuebergabepunkt_Leistung Netzbezug_kWh $Energie_NUeP_Bezug");
fhem("setreading Hausverbrauch Energie_kWh $Energie_Hausverbrauch");
fhem("setreading PV_Leistung Energie_kWh $Energie_PV_Leistung");
fhem("setreading Batt_Leistung Batterieladung_kWh $Energie_Batt_Ladung");
fhem("setreading Batt_Leistung Batterieabgabe_kWh $Energie_Batt_Abgabe");
fhem("setreading Batt_Leistung Batterieleistung_W $Energie_Batt_Leistung")
days:
helper:
DEVFILTER ^global$
NOTIFYDEV global
event timer_1
globalinit 1
last_timer 1
sleeptimer -1
triggerDev
triggerEvents:
timer_1
triggerEventsState:
timer_1
interval:
intervalfunc:
localtime:
0 1586939640
perlblock:
0
realtime:
0 10:34:00
time:
0 +:02
timeCond:
0 0
timer:
0 0
timers:
0 0
triggertime:
1586939640:
localtime 1586939640
hash:
uiState:
uiTable:
Attributes:
DbLogExclude .*
icon helper_doif
room Hauskraftwerk
verbose 5
Irgendwie habe ich schon so ziemlich alles umgestellt, was ich vermutet habe, aber die entscheidende Problemlösung war noch nicht dabei.
Hinweis:
Irgendwie seltsam, die Warnung kommt erst dann, wenn ich das folgende Reading schreibe:
fhem("setreading Batt_Leistung Batterieleistung_W $Energie_Batt_Leistung")
Entferne ich diese Zeile (die Variabenzuweisung bleibt im Doif), kommt keine Warnung.
Gruß Reinhard
Hast du hier mal nachgesehen?
https://fhem.de/commandref_DE.html#DOIF_Filtern_nach_Zahlen
Mit freundlichen Grüßen
Hallo Shadow3561,
danke für den Link.
Ich kann mir aber die Fehlermeldung auch hiermit nicht erklären, ich lege ja eigentlich nur das "state" Reading (Numerisch mit Vorzeichen -) in einer Perl Variable mit ReadingsNum() ab und schreibe diesen Numerischen Wert mit setstate in ein Userreading, wie mit den vielen anderen Variablen/Readings im gleichen Doif auch. Auch die Umstellung auf ReadingsVal() löst dieses Problem nicht.
Ich hätte nur gerne gewusst wo da genau das Problem liegt.
Ein Auszug des "state" Readings, welches bei mir Probleme bereitet:
-108
-81
0
-30
-42
-3
3
-81
120
126
114
Gruß Reinhard
Das Problem liegt im Vorzeichen.
ReadingsNum erwartet eine Zahl (ohne Vorzeichen)
Hast du es mal nach diesem Schema probiert?
my $Energie_Batt_Leistung = ([Batt_Leistung:state:d]);
Mit freundlichen Grüßen