Hallo,
seit über zwölf Jahren arbeiten bei mir Raspberries mit FHEM als Heizungs- und Solarsteuerung, Beleuchtungssteuerung, Pumpensteuerung, Rollladensteuerung, Alarmanlage, Videoüberwachung usw, mittlerweile sechs Geräte im Netzwerk über MQTT.
Nach Test mehrerer Versionen verschiedenster Steuerungssoftware bin ich bei FHEM geblieben, da mich vor allem Handling, Zukunftsfähigkeit und Zuverlässigkeit überzeugt hatten und noch immer haben.
Jetzt melde ich mich zum ersten Mal in diesem Forum, da ich seit Tagen ein Problem habe, welches ich nicht gelöst bekomme.
Fast alle Steuerungsaufgaben werden über DOIFs ausgeführt, was bisher auch zuverlässig funktionierte.
Mein Problem ist, dass seit ein paar Tagen bei zwei DOIFs die Fehlermeldung: "condition c10: Argument "" isn't numeric in numeric lt (<)" oder ähnlich auftritt. Dadurch werden die Anweisungen nicht ausgeführt. Diese Fehlermeldung betrifft bei einem DOIF die Temperatur eines 1wire DS18B20 Sensors und bei einem anderen DOIF die Valveposition von MAX-Thermostaten.
Zum Fehler Temperatur des 1wire DS18B20 Sensors (Temp_Wohnzimmer_DS18B20):
Komischerweise wird die Temperatur des 1wire DS18B20 in anderen DOIFs verwendet, wo dieser Fehler bisher nicht
auftritt.
Eine Aufzeichnung des Events und des Wertes der Temperatur ergab keine Fehlerwerte.
09 Apr 2022 11:18:36 'INF-DOIF Anzeige_Wohnzimmertemp. Die Temp_Wohnzimmer_DS18B20 beträgt: 22.375'
09 Apr 2022 11:18:36 'INF-DOIF Anzeige_Wohnzimmertemp. Die Temp_Wohnzimmer_DS18B20 beträgt: temperature: 22.375'
09 Apr 2022 11:12:29 'INF-DOIF Anzeige_Wohnzimmertemp. Die Temp_Wohnzimmer_DS18B20 beträgt: 22.4375'
09 Apr 2022 11:12:29 'INF-DOIF Anzeige_Wohnzimmertemp. Die Temp_Wohnzimmer_DS18B20 beträgt: temperature: 22.4375'
09 Apr 2022 10:57:13 'INF-DOIF Anzeige_Wohnzimmertemp. Die Temp_Wohnzimmer_DS18B20 beträgt: 22.4375'
09 Apr 2022 10:57:13 'INF-DOIF Anzeige_Wohnzimmertemp. Die Temp_Wohnzimmer_DS18B20 beträgt: temperature: 22.4375'
09 Apr 2022 10:41:52 'INF-DOIF Anzeige_Wohnzimmertemp. Die Temp_Wohnzimmer_DS18B20 beträgt: 22.4375'
09 Apr 2022 10:41:52 'INF-DOIF Anzeige_Wohnzimmertemp. Die Temp_Wohnzimmer_DS18B20 beträgt: temperature: 22.4375'
09 Apr 2022 10:26:35 'INF-DOIF Anzeige_Wohnzimmertemp. Die Temp_Wohnzimmer_DS18B20 beträgt: 22.4375'
09 Apr 2022 10:26:35 'INF-DOIF Anzeige_Wohnzimmertemp. Die Temp_Wohnzimmer_DS18B20 beträgt: temperature: 22.4375'
09 Apr 2022 10:25:33 'INF-DOIF Anzeige_Wohnzimmertemp. Die Temp_Wohnzimmer_DS18B20 beträgt: 22.5'
09 Apr 2022 10:25:33 'INF-DOIF Anzeige_Wohnzimmertemp. Die Temp_Wohnzimmer_DS18B20 beträgt: temperature: 22.5'
09 Apr 2022 10:22:30 'INF-DOIF Anzeige_Wohnzimmertemp. Die Temp_Wohnzimmer_DS18B20 beträgt: 22.4375'
09 Apr 2022 10:22:30 'INF-DOIF Anzeige_Wohnzimmertemp. Die Temp_Wohnzimmer_DS18B20 beträgt: temperature: 22.4375'
list di_Anzeige_Wohnzimmertemp (Erzeugung der obigen Meldungen)
Internals:
DEF {
if (["Temp_Wohnzimmer_DS18B20:temperature"]) ## 1
{
fhem_set("Statusmeldungen add 'INF-DOIF Anzeige_Wohnzimmertemp. Die $DEVICE beträgt: $EVENT'")
}
my $WohnzTemp = ReadingsVal("Temp_Wohnzimmer_DS18B20","temperature","");;
if ($WohnzTemp > [Soll_Raumtemperatur_HK2_aktuell:d])
{
fhem_set("Statusmeldungen add 'INF-DOIF Anzeige_Wohnzimmertemp. Die $DEVICE beträgt: $WohnzTemp'")
}
}
FUUID 624f3aac-f33f-c6d3-17f2-ffe5b2623032c90e
MODEL Perl
NAME di_Anzeige_Wohnzimmertemp
NOTIFYDEV Soll_Raumtemperatur_HK2_aktuell,global,.*(Temp_Wohnzimmer_DS18B20).*
NR 545
NTFY_ORDER 50-di_Anzeige_Wohnzimmertemp
STATE initialized
TYPE DOIF
VERSION 25819 2022-03-12 23:15:22
READINGS:
2022-04-09 11:18:36 Device Temp_Wohnzimmer_DS18B20
2022-04-09 11:18:36 block_01 executed
2022-04-08 10:18:23 mode enabled
2022-04-08 10:18:23 state initialized
2022-04-09 11:18:36 warning condition c01: Argument "" isn't numeric in numeric gt (>)
Regex:
accu:
collect:
cond:
:
0:
"Temp_Wohnzimmer_DS18B20:temperature" Temp_Wohnzimmer_DS18B20:temperature
Soll_Raumtemperatur_HK2_aktuell:
0:
d ^Soll_Raumtemperatur_HK2_aktuell$:^d:
condition:
0
if (::EventDoIf('Temp_Wohnzimmer_DS18B20',$hash,'temperature',0)) {
fhem_set("Statusmeldungen add 'INF-DOIF Anzeige_Wohnzimmertemp. Die $DEVICE beträgt: $EVENT'")
}
my $WohnzTemp = ReadingsVal("Temp_Wohnzimmer_DS18B20","temperature","");;
if ($WohnzTemp > ::ReadingValDoIf($hash,'Soll_Raumtemperatur_HK2_aktuell','d'))
{
fhem_set("Statusmeldungen add 'INF-DOIF Anzeige_Wohnzimmertemp. Die $DEVICE beträgt: $WohnzTemp'")
}
helper:
NOTIFYDEV Soll_Raumtemperatur_HK2_aktuell,global,.*(Temp_Wohnzimmer_DS18B20).*
event temperature: 22.375
globalinit 1
last_timer 0
sleeptimer -1
triggerDev Temp_Wohnzimmer_DS18B20
triggerEvents:
temperature: 22.375
triggerEventsState:
temperature: 22.375
internals:
perlblock:
0 block_01
readings:
all Soll_Raumtemperatur_HK2_aktuell:d
trigger:
uiState:
uiTable:
Attributes:
List des DOIFs welches eigentlich den Fehler meldet
list di_Heizkreis2_MANU_AUTO
Internals:
DEF ([Betriebsart_HK2] eq "Aus") ## 1 ##Betriebsart aus
(set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Betriebsart HK2 wurde auf Aus gestellt. Schalte Heizkreis2 _Aus_.")
(set Betriebsmodus_HK2 Aus) ## -Betriebsmodus ausschalten
DOELSEIF([Betriebsart_HK2] ne "Aus" ## 2 ##Betriebsart nicht Aus
and [?Betriebsmodus_HK2] ne "Solar" ##Betriebsmodus nicht Solar
and [HK2vonSolar_einschalten] eq "on") ##Einschaltbefehl von Solarsteuerung
(set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Solaranlage speist in HK2 ein. Aktiviere Heizkreis2 im Betriebsmodus Solar.")
(set Betriebsmodus_HK2 Solar) ## -Betriebsmodus Solar einschalten
DOELSEIF ([Betriebsart_HK2] ne "Aus" ## 3 ##Betriebsart nicht aus
and [?Betriebsmodus_HK2] eq "Solar" ##Betriebsmodus Solar
and [HK2vonSolar_einschalten] eq "off") ##kein Einschaltbefehl von Solarsteuerung
(set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Einspeisung Solaranlage in HK2 beendet. Schalte Heizkreis2 _Aus_.")
(set Betriebsmodus_HK2 Aus) ## -Betriebsmodus ausschalten
DOELSEIF ([Temp_Wohnzimmer_DS18B20:temperature] eq "")
(set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Temp_Wohnzimmer_DS18B20 liefert falschen Wert.")
DOELSEIF (
[Betriebsart_HK2] eq "Automatik" ## 4 ##Betriebsart Automatik
and [?Betriebsmodus_HK2] ne "WSP1" ##Betriebsmodus nicht WSP
and [HK2vonSolar_einschalten] eq "off" ##kein Einschaltbefehl von Solarsteuerung
and [00:00-10:00] ##Zeit zwischen 00:00 und 10:00
and [Temp_Wohnzimmer_DS18B20:temperature:d1]
<= [Soll_Raumtemperatur_HK2_aktuell:d] ##Raumtemperatur Wz zu niedrig
)
(
set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Raumtemperatur zu niedrig im Zeitbereich 00:00-10:00. Aktiviere Heizkreis2 im Betriebsmodus WSP.",
set Betriebsmodus_HK2 WSP1
) ## -Einspeisung aus WSP1 einschalten
DOELSEIF (
[Temp_Wohnzimmer_DS18B20:temperature:d1] ## 5
<= [Soll_Raumtemperatur_HK2_aktuell:d] ##Raumtemperatur Wz zu niedrig
and [Betriebsart_HK2] eq "Automatik" ##Betriebsart Automatik
and [?Betriebsmodus_HK2] ne "WSP1" ##Betriebsmodus nicht WSP
and [HK2vonSolar_einschalten] eq "off" ##kein Einschaltbefehl von Solarsteuerung
and [10:01-20:00] ##Zeit zwischen 10:01 und 20:00
)
(
set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Raumtemperatur zu niedrig im Zeitbereich 10:01-20:00 und die Sonne wird nichts liefern. Aktiviere Heizkreis2 im Betriebsmodus WSP.",
set Betriebsmodus_HK2 WSP1 ## -Einspeisung aus WSP1 einschalten
)
DOELSEIF (
[Temp_Wohnzimmer_DS18B20:temperature:d1] ## 6
<= [Soll_Raumtemperatur_HK2_aktuell:d] ##Raumtemperatur Wz zu niedrig
and [Betriebsart_HK2] eq "Automatik" ##Betriebsart Automatik
and [?Betriebsmodus_HK2] ne "WSP1" ##Betriebsmodus nicht WSP
and [HK2vonSolar_einschalten] eq "off" ##kein Einschaltbefehl von Solarsteuerung
and [20:01-23:59] ##Zeit zwischen 20:01 und 23:59
)
(
set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Raumtemperatur zu niedrig im Zeitbereich 20:01-23:59. Aktiviere Heizkreis2 im Betriebsmodus WSP.",
set Betriebsmodus_HK2 WSP1 ## -Einspeisung aus WSP1 einschalten
)
DOELSEIF (
[Betriebsart_HK2] eq "Automatik" ## 7 ##Betriebsart Automatik
and [?Betriebsmodus_HK2] eq "WSP1" ##Betriebsmodus WSP
and [?HK2vonSolar_einschalten] eq "off" ##kein Einschaltbefehl von Solarsteuerung
and [HK2_Kurzladung] eq "off"
and [Temp_Wohnzimmer_DS18B20:temperature:d1]
> [Soll_Raumtemperatur_HK2_aktuell:d] ##eingestellte Raumtemperatur Wz erreicht oder
)
(
set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Solltemperatur erreicht. Schalte Heizkreis2 _Aus_.",
set Betriebsmodus_HK2 Aus ## -Betriebsmodus ausschalten
)
DOELSEIF (
[Betriebsart_HK2] eq "Manuell") ## 8 ##Betriebsart Manuell
(
set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Betriebsart HK2 wurde auf Manuell gestellt. Schalte Heizkreis2 _Aus_.",
set Betriebsmodus_HK2 Aus ## -Betriebsmodus ausschalten
)
FUUID 6248705a-f33f-c6d3-7673-2e1f5e9e1676e044
MODEL FHEM
NAME di_Heizkreis2_MANU_AUTO
NOTIFYDEV Temp_Wohnzimmer_DS18B20,Soll_Raumtemperatur_HK2_aktuell,global,HK2vonSolar_einschalten,HK2_Kurzladung,Betriebsart_HK2
NR 541
NTFY_ORDER 50-di_Heizkreis2_MANU_AUTO
STATE cmd_3
TYPE DOIF
VERSION 25819 2022-03-12 23:15:22
READINGS:
2022-04-07 20:57:47 Device Betriebsart_HK2
2022-04-07 19:44:08 cmd 3.2
2022-04-07 19:44:08 cmd_event HK2vonSolar_einschalten
2022-04-07 19:44:08 cmd_nr 3
2022-04-07 19:44:08 cmd_seqnr 2
2022-04-07 20:57:47 e_Betriebsart_HK2_STATE Automatik
2022-04-06 08:38:02 e_HK2_Kurzladung_STATE off
2022-04-07 19:44:08 e_HK2vonSolar_einschalten_STATE off
2022-04-07 20:56:36 e_Temp_Wohnzimmer_DS18B20_temperature 23.3125
2022-04-05 21:14:27 mode enabled
2022-04-07 19:44:08 state cmd_3
2022-04-07 12:23:16 timer_01_c05 08.04.2022 00:00:00
2022-04-07 12:23:16 timer_02_c05 08.04.2022 10:00:00
2022-04-07 20:00:00 timer_03_c06 08.04.2022 10:01:00
2022-04-07 20:00:00 timer_04_c06 08.04.2022 20:00:00
2022-04-07 12:23:16 timer_05_c07 07.04.2022 20:01:00
2022-04-07 12:23:16 timer_06_c07 07.04.2022 23:59:00
Regex:
accu:
collect:
cond:
Betriebsart_HK2:
0:
&STATE ^Betriebsart_HK2$
1:
&STATE ^Betriebsart_HK2$
2:
&STATE ^Betriebsart_HK2$
3:
4:
&STATE ^Betriebsart_HK2$
5:
&STATE ^Betriebsart_HK2$
6:
&STATE ^Betriebsart_HK2$
7:
&STATE ^Betriebsart_HK2$
8:
&STATE ^Betriebsart_HK2$
HK2_Kurzladung:
7:
&STATE ^HK2_Kurzladung$
HK2vonSolar_einschalten:
0:
1:
&STATE ^HK2vonSolar_einschalten$
2:
&STATE ^HK2vonSolar_einschalten$
4:
&STATE ^HK2vonSolar_einschalten$
5:
&STATE ^HK2vonSolar_einschalten$
6:
&STATE ^HK2vonSolar_einschalten$
Soll_Raumtemperatur_HK2_aktuell:
4:
d ^Soll_Raumtemperatur_HK2_aktuell$:^d:
5:
d ^Soll_Raumtemperatur_HK2_aktuell$:^d:
6:
d ^Soll_Raumtemperatur_HK2_aktuell$:^d:
7:
d ^Soll_Raumtemperatur_HK2_aktuell$:^d:
Temp_Wohnzimmer_DS18B20:
0:
1:
2:
3:
temperature ^Temp_Wohnzimmer_DS18B20$:^temperature:
4:
temperature ^Temp_Wohnzimmer_DS18B20$:^temperature:
5:
temperature ^Temp_Wohnzimmer_DS18B20$:^temperature:
6:
temperature ^Temp_Wohnzimmer_DS18B20$:^temperature:
7:
temperature ^Temp_Wohnzimmer_DS18B20$:^temperature:
8:
attr:
cmdState:
wait:
waitdel:
condition:
0 ::InternalDoIf($hash,'Betriebsart_HK2','STATE') eq "Aus"
1 ::InternalDoIf($hash,'Betriebsart_HK2','STATE') ne "Aus" and ::InternalDoIf($hash,'Betriebsmodus_HK2','STATE') ne "Solar" and ::InternalDoIf($hash,'HK2vonSolar_einschalten','STATE') eq "on"
2 ::InternalDoIf($hash,'Betriebsart_HK2','STATE') ne "Aus" and ::InternalDoIf($hash,'Betriebsmodus_HK2','STATE') eq "Solar" and ::InternalDoIf($hash,'HK2vonSolar_einschalten','STATE') eq "off"
3 ::ReadingValDoIf($hash,'Temp_Wohnzimmer_DS18B20','temperature') eq ""
4 ::InternalDoIf($hash,'Betriebsart_HK2','STATE') eq "Automatik" and ::InternalDoIf($hash,'Betriebsmodus_HK2','STATE') ne "WSP1" and ::InternalDoIf($hash,'HK2vonSolar_einschalten','STATE') eq "off" and ::DOIF_time($hash,0,1,$wday,$hms) and ::ReadingValDoIf($hash,'Temp_Wohnzimmer_DS18B20','temperature','','d1') <= ::ReadingValDoIf($hash,'Soll_Raumtemperatur_HK2_aktuell','d')
5 ::ReadingValDoIf($hash,'Temp_Wohnzimmer_DS18B20','temperature','','d1') <= ::ReadingValDoIf($hash,'Soll_Raumtemperatur_HK2_aktuell','d') and ::InternalDoIf($hash,'Betriebsart_HK2','STATE') eq "Automatik" and ::InternalDoIf($hash,'Betriebsmodus_HK2','STATE') ne "WSP1" and ::InternalDoIf($hash,'HK2vonSolar_einschalten','STATE') eq "off" and ::DOIF_time($hash,2,3,$wday,$hms)
6 ::ReadingValDoIf($hash,'Temp_Wohnzimmer_DS18B20','temperature','','d1') <= ::ReadingValDoIf($hash,'Soll_Raumtemperatur_HK2_aktuell','d') and ::InternalDoIf($hash,'Betriebsart_HK2','STATE') eq "Automatik" and ::InternalDoIf($hash,'Betriebsmodus_HK2','STATE') ne "WSP1" and ::InternalDoIf($hash,'HK2vonSolar_einschalten','STATE') eq "off" and ::DOIF_time($hash,4,5,$wday,$hms)
7 ::InternalDoIf($hash,'Betriebsart_HK2','STATE') eq "Automatik" and ::InternalDoIf($hash,'Betriebsmodus_HK2','STATE') eq "WSP1" and ::InternalDoIf($hash,'HK2vonSolar_einschalten','STATE') eq "off" and ::InternalDoIf($hash,'HK2_Kurzladung','STATE') eq "off" and ::ReadingValDoIf($hash,'Temp_Wohnzimmer_DS18B20','temperature','','d1') > ::ReadingValDoIf($hash,'Soll_Raumtemperatur_HK2_aktuell','d')
8 ::InternalDoIf($hash,'Betriebsart_HK2','STATE') eq "Manuell"
days:
devices:
do:
0:
0 set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Betriebsart HK2 wurde auf Aus gestellt. Schalte Heizkreis2 _Aus_."
1 set Betriebsmodus_HK2 Aus
1:
0 set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Solaranlage speist in HK2 ein. Aktiviere Heizkreis2 im Betriebsmodus Solar."
1 set Betriebsmodus_HK2 Solar
2:
0 set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Einspeisung Solaranlage in HK2 beendet. Schalte Heizkreis2 _Aus_."
1 set Betriebsmodus_HK2 Aus
3:
0 set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Temp_Wohnzimmer_DS18B20 liefert falschen Wert."
4:
0 set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Raumtemperatur zu niedrig im Zeitbereich 00:00-10:00. Aktiviere Heizkreis2 im Betriebsmodus WSP.", set Betriebsmodus_HK2 WSP1
5:
0 set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Raumtemperatur zu niedrig im Zeitbereich 10:01-20:00 und die Sonne wird nichts liefern. Aktiviere Heizkreis2 im Betriebsmodus WSP.", set Betriebsmodus_HK2 WSP1
6:
0 set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Raumtemperatur zu niedrig im Zeitbereich 20:01-23:59. Aktiviere Heizkreis2 im Betriebsmodus WSP.", set Betriebsmodus_HK2 WSP1
7:
0 set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Solltemperatur erreicht. Schalte Heizkreis2 _Aus_.", set Betriebsmodus_HK2 Aus
8:
0 set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Betriebsart HK2 wurde auf Manuell gestellt. Schalte Heizkreis2 _Aus_.", set Betriebsmodus_HK2 Aus
9:
helper:
NOTIFYDEV Temp_Wohnzimmer_DS18B20,Soll_Raumtemperatur_HK2_aktuell,global,HK2vonSolar_einschalten,HK2_Kurzladung,Betriebsart_HK2
event Automatik
globalinit 1
last_timer 6
sleeptimer -1
timerdev HK2vonSolar_einschalten
timerevent off
triggerDev Betriebsart_HK2
timerevents:
off
timereventsState:
state: off
triggerEvents:
Automatik
triggerEventsState:
state: Automatik
internals:
all Betriebsart_HK2:STATE Betriebsmodus_HK2:STATE HK2vonSolar_einschalten:STATE HK2_Kurzladung:STATE
interval:
0 -1
1 0
2 -1
3 2
4 -1
5 4
intervalfunc:
intervaltimer:
localtime:
0 1649368800
1 1649404800
2 1649404860
3 1649440800
4 1649354460
5 1649368740
perlblock:
readings:
all Temp_Wohnzimmer_DS18B20:temperature Soll_Raumtemperatur_HK2_aktuell:d
realtime:
0 00:00:00
1 10:00:00
2 10:01:00
3 20:00:00
4 20:01:00
5 23:59:00
time:
0 00:00:00
1 10:00:00
2 10:01:00
3 20:00:00
4 20:01:00
5 23:59:00
timeCond:
0 4
1 4
2 5
3 5
4 6
5 6
timer:
0 0
1 0
2 0
3 0
4 0
5 0
timers:
4 0 1
5 2 3
6 4 5
trigger:
triggertime:
1649368740:
localtime 1649368740
hash:
1649368800:
localtime 1649368800
hash:
1649404800:
localtime 1649404800
hash:
1649404860:
localtime 1649404860
hash:
1649440800:
localtime 1649440800
hash:
uiState:
uiTable:
Attributes:
alias Heizkreis2 MANUELL AUTOMATIK
comment Mit diesem DOIF wird der Heizkreis2 Aus, Manuell oder in Automatik
geschaltet und gesteuert.
Steuert die Solaranlage den Heizkreis an, wird ausser in Stellung Aus
der Heizkreis auf Betriebsmodus Solar aktiviert.
Im Automatikbetrieb wird der Heizkreis sonst über die Soll-Raumtemperatur
ein- und über die Soll-Raumtemperatur oder Rücklauftemperatur ausgeschaltet.
Nach 10:00 Uhr muß zum Einschalten der Mittelwert der Solaranlage unter 50
liegen.
Im Manuellbetrieb wird der Heizkreis ausgeschaltet, da von Hand gesteuert
wird.
Die Rangfolge der drei Ansteuerarten ist folgende: Solar; Manuell; Automatik.
group Steuerung.HK2
icon helper_doif
room IT.Steuerung
sortby 01
list Temp_Wohnzimmer_DS18B20
Internals:
DEF 28.FF4A86921504 60
FUUID 6249c183-f33f-c6d3-ef30-d56bdbcd033f8e58
IODev OWServerHS
LAST_READ_FAILED 0
NAME Temp_Wohnzimmer_DS18B20
NR 542
STATE 23.3°C
TYPE OWDevice
READINGS:
2022-04-07 12:23:14 IODev OWServerHS
2022-04-07 20:42:17 alarm 1
2022-04-07 20:42:17 state temperature: 23.3125 alarm: 1
2022-04-07 20:42:17 temperature 23.3125
fhem:
address 28.FF4A86921504
alerting 1
bus bus.1
interfaces temperature
interval 60
getters:
address
crc8
family
fasttemp
id
locator
r_address
r_id
r_locator
temperature
temperature10
temperature11
temperature12
temperature9
temphigh
templow
type
polls:
temperature
setters:
temphigh
templow
state:
temperature
Attributes:
Einbauort Schalterdose Eingang Wohnzimmer
IODev OWServerHS
Verteiler +KE=1W-V9
alias Temperatur Wohnzimmer
comment 1Wire Baustein DS18B20 Temperatur Wohnzimmer
event-min-interval temperature:900
event-on-change-reading temperature
group 03 Umweltdaten
model DS18B20
mqttPublish temperature:topic={"$baseHost/$baseRoom/$device/state"}
room Allgemein,Heizkreis2,Input_Output->1Wire_System,Räume->EG.Wohnz.,Solarkreis1
sortby 35
stateFormat {sprintf("%.1f",ReadingsVal("Temp_Wohnzimmer_DS18B20","temperature",0))."°C"}
verbose 5
Fehlerausgabe im Logfile mit "attr global stacktrace 1"
2022.04.07 20:36:10 5: OWServer child ID for reading '/28.FF4A86921504/temperature' is 19558
2022.04.07 20:36:10 5: OWServer child read /28.FF4A86921504/temperature: 23.25
2022.04.07 20:36:11 1: PERL WARNING: Argument "" isn't numeric in numeric le (<=) at (eval 55409) line 1.
2022.04.07 20:36:11 3: eval: di_Heizkreis2_MANU_AUTO: warning in condition c06
2022.04.07 20:36:11 1: stacktrace:
2022.04.07 20:36:11 1: main::__ANON__ called by (eval 55409) (1)
2022.04.07 20:36:11 1: (eval) called by ./FHEM/98_DOIF.pm (2363)
2022.04.07 20:36:11 1: main::DOIF_CheckCond called by ./FHEM/98_DOIF.pm (2707)
2022.04.07 20:36:11 1: main::DOIF_Trigger called by ./FHEM/98_DOIF.pm (2957)
2022.04.07 20:36:11 1: main::DOIF_Notify called by fhem.pl (3934)
2022.04.07 20:36:11 1: main::CallFn called by fhem.pl (3846)
2022.04.07 20:36:11 1: main::DoTrigger called by fhem.pl (4949)
2022.04.07 20:36:11 1: main::readingsEndUpdate called by ./FHEM/11_OWDevice.pm (554)
2022.04.07 20:36:11 1: main::OWDevice_UpdateValues called by fhem.pl (3461)
2022.04.07 20:36:11 1: main::HandleTimeout called by fhem.pl (703)
2022.04.07 20:36:11 1: PERL WARNING: Argument "" isn't numeric in numeric le (<=) at (eval 55410) line 1.
2022.04.07 20:36:11 3: eval: di_Heizkreis2_MANU_AUTO: warning in condition c07
2022.04.07 20:36:11 1: stacktrace:
2022.04.07 20:36:11 1: main::__ANON__ called by (eval 55410) (1)
2022.04.07 20:36:11 1: (eval) called by ./FHEM/98_DOIF.pm (2363)
2022.04.07 20:36:11 1: main::DOIF_CheckCond called by ./FHEM/98_DOIF.pm (2707)
2022.04.07 20:36:11 1: main::DOIF_Trigger called by ./FHEM/98_DOIF.pm (2957)
2022.04.07 20:36:11 1: main::DOIF_Notify called by fhem.pl (3934)
2022.04.07 20:36:11 1: main::CallFn called by fhem.pl (3846)
2022.04.07 20:36:11 1: main::DoTrigger called by fhem.pl (4949)
2022.04.07 20:36:11 1: main::readingsEndUpdate called by ./FHEM/11_OWDevice.pm (554)
2022.04.07 20:36:11 1: main::OWDevice_UpdateValues called by fhem.pl (3461)
2022.04.07 20:36:11 1: main::HandleTimeout called by fhem.pl (703)
Folgende Maßnahmen habe ich ausgeführt:
Erstellung einer neuen SD-Card mit Raspbian und FHEM
DS18B20 ausgetauscht
Update Betriebssystem
Update FHEM
DOIF Modul von 12/21 in FHEM kopiert
Resultat keine Änderung.
DOIF Modul wieder aktualisiert.
Ich hoffe es kann mir jemand einen Hinweis geben, wie ich den Fehler eingrenzen kann.
Mit freundlichem Gruß
Kurt
Die Warnung:
2022.04.07 20:36:11 1: PERL WARNING: Argument "" isn't numeric in numeric le (<=) at (eval 55409) line 1.
2022.04.07 20:36:11 3: eval: di_Heizkreis2_MANU_AUTO: warning in condition c06
ist eindeutig.
[Temp_Wohnzimmer_DS18B20:temperature:d1] ## 6
<= [Soll_Raumtemperatur_HK2_aktuell:d] ##Raumtemperatur Wz zu niedrig
In einem der beiden Readings steht nichts drin oder ist einfach nicht vorhanden.
Hallo Damian,
Danke für die schnelle Antwort, welche ich in anderen Beiträgen schon gelesen hatte. Daher habe ich am Anfang
meines ersten Beitrages eine Aufzeichnung der Events und der Werte des Temperatursensors mitgeschickt. Darin
sind zur Zeit der Fehlermeldung immer Werte zu sehen. Die Voreinstellung Soll_Raumtemperatur_HK2_aktuell ist auch mit einem Wert gefüllt.
Dies kann ich auch beim DOIF di_Heizkreis2_MANU_AUTO im Bereich Probably associated with sehen, da sind die Werte
Temp_Wohnzimmer_DS18B20 und Soll_Raumtemperatur_HK2_aktuell aktuell.
Im Reading e_Temp_Wohnzimmer_DS18B20_temperature des DOIFs ist die gleiche Zeit eingetragen wie bei der Fehlermeldung.
Bei dem im ersten Beitrag genannten zweiten DOIF ist das Verhalten gleich, nur dass es sich hier um mehrere Ventilpositionen geht.
Die Frage die sich mir stellt ist, wie kann ich feststellen was da wirklich kommt oder tritt der Fehler beim Vergleichen auf.
Du kannst die Fehlermeldung vermeiden, wenn du die Voreinstellung beim nicht vorhanden eines Readings statt auf "" auf Null stellst:
[Temp_Wohnzimmer_DS18B20:temperature:d1,0] ## 6
<= [Soll_Raumtemperatur_HK2_aktuell:d,0]
Dann sollte keine Warnung mehr kommen, in diesem Fall kannst du versuchen die Readings zu loggen.
Danke, werde ich testen.
Hallo Damian,
der Fehler ist behoben, dank Deines Hinweises mit der Voreinstellung kam die Fehlermeldung nicht mehr. Mittels wechselweisem Ersetzen der Werte im DOIF durch feste Werte konnte ich feststellen dass der Fehler vom Dummy Soll_Raumtemperatur_HK2_aktuell" kam. Das DOIF kann anscheinend den Dummy nicht auslesen wenn hinter dem Devicenamen ein ":d" steht. Dieser Fehler war reproduzierbar.
Nach Entfernen aller ":d" bei der Einstellung "Soll_Raumtemperatur_HK2_aktuell" lief das DOIF wieder einwandfrei.
Bei dem Fehler des zweiten DOIF mit der valveposition habe ich übersehen, dass die Readings der Vergleichswerte nicht eingegeben waren. Dies habe ich bei der erwähnten Neuinstallation übersehen.
Für die prompte Unterstützung bedanke ich mich recht herzlich. Bei der Gelegenheit möchte ich auch ein Lob aussprechen für Deine hervorragende Arbeit am Modul DOIF und dessen ausführliche Dokumentation. Mittlerweile läuft bei mir alles über DOIF.
Mit freundlichem Gruß
Kurt
Zitat von: kkp am 11 April 2022, 19:06:52
Hallo Damian,
der Fehler ist behoben, dank Deines Hinweises mit der Voreinstellung kam die Fehlermeldung nicht mehr. Mittels wechselweisem Ersetzen der Werte im DOIF durch feste Werte konnte ich feststellen dass der Fehler vom Dummy Soll_Raumtemperatur_HK2_aktuell" kam. Das DOIF kann anscheinend den Dummy nicht auslesen wenn hinter dem Devicenamen ein ":d" steht. Dieser Fehler war reproduzierbar.
Nach Entfernen aller ":d" bei der Einstellung "Soll_Raumtemperatur_HK2_aktuell" lief das DOIF wieder einwandfrei.
Bei dem Fehler des zweiten DOIF mit der valveposition habe ich übersehen, dass die Readings der Vergleichswerte nicht eingegeben waren. Dies habe ich bei der erwähnten Neuinstallation übersehen.
Für die prompte Unterstützung bedanke ich mich recht herzlich. Bei der Gelegenheit möchte ich auch ein Lob aussprechen für Deine hervorragende Arbeit am Modul DOIF und dessen ausführliche Dokumentation. Mittlerweile läuft bei mir alles über DOIF.
Mit freundlichem Gruß
Kurt
Schön wenn alles läuft, wie es soll :)