Ich habe da ein Problem mit meinem DOIF.
Wie man Anhand des list's sehen kann hat das DOIF cmd1 geschalten obwohl die Bedingungen meiner Meinung nach gar nicht erfüllt waren.
-23.6 ist in meinen Augen kleiner wie -11.
Hat vielleicht jemand eine Idee? Dazu muß ich noch sagen das ausser state noch keine weiteren Readings angelegt waren.
Internals:
CFGFN
DEF ( (["^TempFeuchtSensorKuehlschrank$:^temperature",11] > 10.5
or ["^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature",-12] > -11)
and [?$SELF:H_$DEVICE] ne 'high' )
({fhem("set pushmsg msg '" . AttrVal("$DEVICE",'alias',"$DEVICE") . "Temperatur kritisch' 'Warnung! Die Temperatur vom " . AttrVal("$DEVICE",'alias',"$DEVICE") . " ist auf " . ReadingsVal("$DEVICE",'temperature',-100) . " Grad gestiegen' 'handy-marko' 1 ''")})
(setreading $SELF H_$DEVICE high)
DOELSEIF ( (["^TempFeuchtSensorKuehlschrank$:^temperature",10] < 9.0
or ["^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature",-16] < -15)
and [?$SELF:H_$DEVICE] ne 'low')
({fhem("set pushmsg msg '" . AttrVal("$DEVICE",'alias',"$DEVICE") . " Temperatur normalisiert' 'Die Temperatur vom " . AttrVal("$DEVICE",'alias',"$DEVICE") . " hat sich normalisiert.' 'handy-marko' 0 ''")})
(setreading $SELF H_$DEVICE low)
NAME doifKuehlschrankTempAlarm
NR 416
NTFY_ORDER 50-doifKuehlschrankTempAlarm
STATE cmd_1
TYPE DOIF
READINGS:
2017-09-26 12:53:43 Device TempFeuchtSensorKuehlschrankGefrierfach
2017-09-26 12:53:43 H_TempFeuchtSensorKuehlschrankGefrierfach high
2017-09-26 12:53:43 cmd 1.2
2017-09-26 12:53:43 cmd_event TempFeuchtSensorKuehlschrankGefrierfach
2017-09-26 12:53:43 cmd_nr 1
2017-09-26 12:53:43 cmd_seqnr 2
2017-09-26 12:53:43 matched_event_c1_2 temperature: -23.6
2017-09-26 12:53:43 state cmd_1
condition:
0 (EventDoIf('^TempFeuchtSensorKuehlschrank$',$hash,'^temperature',0,'[^\:]*: (.*)','','11') > 10.5 or EventDoIf('^TempFeuchtSensorKuehlschrankGefrierfach$',$hash,'^temperature',0,'[^\:]*: (.*)','','-12') > -11) and ReadingValDoIf($hash,'doifKuehlschrankTempAlarm','H_$DEVICE') ne 'high'
1 (EventDoIf('^TempFeuchtSensorKuehlschrank$',$hash,'^temperature',0,'[^\:]*: (.*)','','10') < 9.0 or EventDoIf('^TempFeuchtSensorKuehlschrankGefrierfach$',$hash,'^temperature',0,'[^\:]*: (.*)','','-16') < -15) and ReadingValDoIf($hash,'doifKuehlschrankTempAlarm','H_$DEVICE') ne 'low'
devices:
do:
0:
0 {fhem("set pushmsg msg '" . AttrVal("$DEVICE",'alias',"$DEVICE") . "Temperatur kritisch' 'Warnung! Die Temperatur vom " . AttrVal("$DEVICE",'alias',"$DEVICE") . " ist auf " . ReadingsVal("$DEVICE",'temperature',-100) . " Grad gestiegen' 'handy-marko' 1 ''")}
1 setreading doifKuehlschrankTempAlarm H_$DEVICE high
1:
0 {fhem("set pushmsg msg '" . AttrVal("$DEVICE",'alias',"$DEVICE") . " Temperatur normalisiert' 'Die Temperatur vom " . AttrVal("$DEVICE",'alias',"$DEVICE") . " hat sich normalisiert.' 'handy-marko' 0 ''")}
1 setreading doifKuehlschrankTempAlarm H_$DEVICE low
2:
helper:
event temperature: -23.6,humidity: 57,dewpoint: -30.6
globalinit 1
last_timer 0
sleeptimer -1
timerdev TempFeuchtSensorKuehlschrankGefrierfach
timerevent temperature: -23.6,humidity: 57,dewpoint: -30.6
triggerDev TempFeuchtSensorKuehlschrankGefrierfach
timerevents:
temperature: -23.6
humidity: 57
dewpoint: -30.6
timereventsState:
temperature: -23.6
humidity: 57
dewpoint: -30.6
triggerEvents:
temperature: -23.6
humidity: 57
dewpoint: -30.6
triggerEventsState:
temperature: -23.6
humidity: 57
dewpoint: -30.6
internals:
itimer:
readings:
regexp:
0:
0 ^TempFeuchtSensorKuehlschrank$:^temperature
1 ^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature
1:
0 ^TempFeuchtSensorKuehlschrank$:^temperature
1 ^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature
all:
0 ^TempFeuchtSensorKuehlschrank$:^temperature
1 ^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature
state:
STATE:
trigger:
Attributes:
Grüße
vielleicht hilft das?
https://forum.fhem.de/index.php?topic=39911.0
setz mal die Readings nochmal separat in Klammern. Das wurde dort vorgheschlagen.
( ((["^TempFeuchtSensorKuehlschrank$:^temperature",11]) > 10.5
or (["^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature",-12]) > -11)
and [?$SELF:H_$DEVICE] ne 'high' ) (...)
DOELSEIF ( ((["^TempFeuchtSensorKuehlschrank$:^temperature",10]) < 9.0
or (["^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature",-16]) < -15)
and [?$SELF:H_$DEVICE] ne 'low') (...)
Teste ich mal gleich. Vielen Dank schon mal.
Schade, hat leider nicht geklappt.
Internals:
CFGFN
DEF ( ((["^TempFeuchtSensorKuehlschrank$:^temperature",11]) > 10.5
or (["^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature",-12]) > -11)
and [?$SELF:H_$DEVICE] ne 'high' )
({fhem("set pushmsg msg '" . AttrVal("$DEVICE",'alias',"$DEVICE") . "Temperatur kritisch' 'Warnung! Die Temperatur vom " . AttrVal("$DEVICE",'alias',"$DEVICE") . " ist auf " . ReadingsVal("$DEVICE",'temperature',-100) . " Grad gestiegen' 'handy-marko' 1 ''")})
(setreading $SELF H_$DEVICE high)
DOELSEIF ( ((["^TempFeuchtSensorKuehlschrank$:^temperature",10]) < 9.0
or (["^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature",-16]) < -15)
and [?$SELF:H_$DEVICE] ne 'low')
({fhem("set pushmsg msg '" . AttrVal("$DEVICE",'alias',"$DEVICE") . " Temperatur normalisiert' 'Die Temperatur vom " . AttrVal("$DEVICE",'alias',"$DEVICE") . " hat sich normalisiert.' 'handy-marko' 0 ''")})
(setreading $SELF H_$DEVICE low)
NAME doifKuehlschrankTempAlarm
NR 416
NTFY_ORDER 50-doifKuehlschrankTempAlarm
STATE cmd_1
TYPE DOIF
READINGS:
2017-09-26 13:19:31 Device TempFeuchtSensorKuehlschrankGefrierfach
2017-09-26 13:15:49 H_TempFeuchtSensorKuehlschrank low
2017-09-26 13:19:31 H_TempFeuchtSensorKuehlschrankGefrierfach high
2017-09-26 13:19:31 cmd 1.2
2017-09-26 13:19:31 cmd_event TempFeuchtSensorKuehlschrankGefrierfach
2017-09-26 13:19:31 cmd_nr 1
2017-09-26 13:19:31 cmd_seqnr 2
2017-09-26 13:15:49 matched_event_c1_1 temperature: 5.2
2017-09-26 13:19:31 matched_event_c1_2 temperature: -24.6
2017-09-26 13:15:49 matched_event_c2_1 temperature: 5.2
2017-09-26 13:19:31 state cmd_1
condition:
0 ((EventDoIf('^TempFeuchtSensorKuehlschrank$',$hash,'^temperature',0,'[^\:]*: (.*)','','11')) > 10.5 or (EventDoIf('^TempFeuchtSensorKuehlschrankGefrierfach$',$hash,'^temperature',0,'[^\:]*: (.*)','','-12')) > -11) and ReadingValDoIf($hash,'doifKuehlschrankTempAlarm','H_$DEVICE') ne 'high'
1 ((EventDoIf('^TempFeuchtSensorKuehlschrank$',$hash,'^temperature',0,'[^\:]*: (.*)','','10')) < 9.0 or (EventDoIf('^TempFeuchtSensorKuehlschrankGefrierfach$',$hash,'^temperature',0,'[^\:]*: (.*)','','-16')) < -15) and ReadingValDoIf($hash,'doifKuehlschrankTempAlarm','H_$DEVICE') ne 'low'
devices:
do:
0:
0 {fhem("set pushmsg msg '" . AttrVal("$DEVICE",'alias',"$DEVICE") . "Temperatur kritisch' 'Warnung! Die Temperatur vom " . AttrVal("$DEVICE",'alias',"$DEVICE") . " ist auf " . ReadingsVal("$DEVICE",'temperature',-100) . " Grad gestiegen' 'handy-marko' 1 ''")}
1 setreading doifKuehlschrankTempAlarm H_$DEVICE high
1:
0 {fhem("set pushmsg msg '" . AttrVal("$DEVICE",'alias',"$DEVICE") . " Temperatur normalisiert' 'Die Temperatur vom " . AttrVal("$DEVICE",'alias',"$DEVICE") . " hat sich normalisiert.' 'handy-marko' 0 ''")}
1 setreading doifKuehlschrankTempAlarm H_$DEVICE low
2:
helper:
event temperature: -24.6,humidity: 56,dewpoint: -31.7
globalinit 1
last_timer 0
sleeptimer -1
timerdev TempFeuchtSensorKuehlschrankGefrierfach
timerevent temperature: -24.6,humidity: 56,dewpoint: -31.7
triggerDev TempFeuchtSensorKuehlschrankGefrierfach
timerevents:
temperature: -24.6
humidity: 56
dewpoint: -31.7
timereventsState:
temperature: -24.6
humidity: 56
dewpoint: -31.7
triggerEvents:
temperature: -24.6
humidity: 56
dewpoint: -31.7
triggerEventsState:
temperature: -24.6
humidity: 56
dewpoint: -31.7
internals:
itimer:
readings:
regexp:
0:
0 ^TempFeuchtSensorKuehlschrank$:^temperature
1 ^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature
1:
0 ^TempFeuchtSensorKuehlschrank$:^temperature
1 ^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature
all:
0 ^TempFeuchtSensorKuehlschrank$:^temperature
1 ^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature
state:
STATE:
trigger:
Attributes:
do always
evtl den Vergleichswert auch Klammern?
ansonsten müsste das Damian beantworten.
Interessant ist das er nun, nachdem er das erste mal daneben lag es richtig gemacht hat
Internals:
CFGFN
DEF ( ((["^TempFeuchtSensorKuehlschrank$:^temperature",11]) > 10.5
or (["^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature",-12]) > -11)
and [?$SELF:H_$DEVICE] ne 'high' )
({fhem("set pushmsg msg '" . AttrVal("$DEVICE",'alias',"$DEVICE") . "Temperatur kritisch' 'Warnung! Die Temperatur vom " . AttrVal("$DEVICE",'alias',"$DEVICE") . " ist auf " . ReadingsVal("$DEVICE",'temperature',-100) . " Grad gestiegen' 'handy-marko' 1 ''")})
(setreading $SELF H_$DEVICE high)
DOELSEIF ( ((["^TempFeuchtSensorKuehlschrank$:^temperature",10]) < 9.0
or (["^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature",-16]) < -15)
and [?$SELF:H_$DEVICE] ne 'low')
({fhem("set pushmsg msg '" . AttrVal("$DEVICE",'alias',"$DEVICE") . " Temperatur normalisiert' 'Die Temperatur vom " . AttrVal("$DEVICE",'alias',"$DEVICE") . " hat sich normalisiert.' 'handy-marko' 0 ''")})
(setreading $SELF H_$DEVICE low)
NAME doifKuehlschrankTempAlarm
NR 416
NTFY_ORDER 50-doifKuehlschrankTempAlarm
STATE cmd_2
TYPE DOIF
READINGS:
2017-09-26 13:23:49 Device TempFeuchtSensorKuehlschrankGefrierfach
2017-09-26 13:15:49 H_TempFeuchtSensorKuehlschrank low
2017-09-26 13:23:49 H_TempFeuchtSensorKuehlschrankGefrierfach low
2017-09-26 13:23:50 cmd 2.2
2017-09-26 13:23:50 cmd_event TempFeuchtSensorKuehlschrankGefrierfach
2017-09-26 13:23:50 cmd_nr 2
2017-09-26 13:23:50 cmd_seqnr 2
2017-09-26 13:15:49 matched_event_c1_1 temperature: 5.2
2017-09-26 13:23:49 matched_event_c1_2 temperature: -25.1
2017-09-26 13:15:49 matched_event_c2_1 temperature: 5.2
2017-09-26 13:23:49 matched_event_c2_2 temperature: -25.1
2017-09-26 13:23:50 state cmd_2
condition:
0 ((EventDoIf('^TempFeuchtSensorKuehlschrank$',$hash,'^temperature',0,'[^\:]*: (.*)','','11')) > 10.5 or (EventDoIf('^TempFeuchtSensorKuehlschrankGefrierfach$',$hash,'^temperature',0,'[^\:]*: (.*)','','-12')) > -11) and ReadingValDoIf($hash,'doifKuehlschrankTempAlarm','H_$DEVICE') ne 'high'
1 ((EventDoIf('^TempFeuchtSensorKuehlschrank$',$hash,'^temperature',0,'[^\:]*: (.*)','','10')) < 9.0 or (EventDoIf('^TempFeuchtSensorKuehlschrankGefrierfach$',$hash,'^temperature',0,'[^\:]*: (.*)','','-16')) < -15) and ReadingValDoIf($hash,'doifKuehlschrankTempAlarm','H_$DEVICE') ne 'low'
devices:
do:
0:
0 {fhem("set pushmsg msg '" . AttrVal("$DEVICE",'alias',"$DEVICE") . "Temperatur kritisch' 'Warnung! Die Temperatur vom " . AttrVal("$DEVICE",'alias',"$DEVICE") . " ist auf " . ReadingsVal("$DEVICE",'temperature',-100) . " Grad gestiegen' 'handy-marko' 1 ''")}
1 setreading doifKuehlschrankTempAlarm H_$DEVICE high
1:
0 {fhem("set pushmsg msg '" . AttrVal("$DEVICE",'alias',"$DEVICE") . " Temperatur normalisiert' 'Die Temperatur vom " . AttrVal("$DEVICE",'alias',"$DEVICE") . " hat sich normalisiert.' 'handy-marko' 0 ''")}
1 setreading doifKuehlschrankTempAlarm H_$DEVICE low
2:
helper:
event temperature: -25.1
globalinit 1
last_timer 0
sleeptimer -1
timerdev TempFeuchtSensorKuehlschrankGefrierfach
timerevent temperature: -25.1
triggerDev TempFeuchtSensorKuehlschrankGefrierfach
timerevents:
temperature: -25.1
humidity: 55
dewpoint: -32.4
timereventsState:
temperature: -25.1
humidity: 55
dewpoint: -32.4
triggerEvents:
temperature: -25.1
humidity: 55
dewpoint: -32.4
triggerEventsState:
temperature: -25.1
humidity: 55
dewpoint: -32.4
internals:
itimer:
readings:
regexp:
0:
0 ^TempFeuchtSensorKuehlschrank$:^temperature
1 ^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature
1:
0 ^TempFeuchtSensorKuehlschrank$:^temperature
1 ^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature
all:
0 ^TempFeuchtSensorKuehlschrank$:^temperature
1 ^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature
state:
STATE:
trigger:
Attributes:
do always
Er hat also festgestellt das -25 kleiner ist wie -15
Könnte es hier dran liegen
helper:
event temperature: -24.6,humidity: 56,dewpoint: -31.7
Das war beim ersten, fehlerhaften.
helper:
event temperature: -25.1
Das war beim zweiten, korrekten.
wurde er evtl das erste mal von etwas anderem getriggert ohne die Temperatur-readings zu erneuern?
Der Event sollte eigentlich nichts ändern, Du frägst ja gezielt die Temperatur ab.
Wenn Du aber eh auf einen festen Sensor prüfst, warum die komplexe Schreibweise?
Das würde doch das gleiche machen:
( ([TempFeuchtSensorKuehlschrank:temperature]) > 10.5
or ([TempFeuchtSensorKuehlschrankGefrierfach:temperature]) > -11)
and [?$SELF:H_$DEVICE] ne 'high' )
Zitat von: CoolTux am 26 September 2017, 13:01:01
Ich habe da ein Problem mit meinem DOIF.
Wie man Anhand des list's sehen kann hat das DOIF cmd1 geschalten obwohl die Bedingungen meiner Meinung nach gar nicht erfüllt waren.
-23.6 ist in meinen Augen kleiner wie -11.
Hat vielleicht jemand eine Idee? Dazu muß ich noch sagen das ausser state noch keine weiteren Readings angelegt waren.
Internals:
CFGFN
DEF ( (["^TempFeuchtSensorKuehlschrank$:^temperature",11] > 10.5
or ["^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature",-12] > -11)
and [?$SELF:H_$DEVICE] ne 'high' )
Grüße
Es ist klar, was da passiert: TempFeuchtSensorKuehlschrankGefrierfach hat getriggert mit -23.6, da TempFeuchtSensorKuehlschrank zu dem Zeitpunkt nicht getriggert hat, beträgt der Ausdruck ["^TempFeuchtSensorKuehlschrank$:^temperature",11] 11 und ist damit größer 10,5 -> die Bedingung ist insgesammt wahr -> cmd_1 wird ausgeführt.
Damian, würde da dann "checkreadingevents" = 1 helfen?
Zitat von: Damian am 26 September 2017, 13:33:51
Es ist klar, was da passiert: TempFeuchtSensorKuehlschrankGefrierfach hat getriggert mit -23.6, da TempFeuchtSensorKuehlschrank zu dem Zeitpunkt nicht getriggert hat, beträgt der Ausdruck ["^TempFeuchtSensorKuehlschrank$:^temperature",11] 11 und ist damit größer 10,5 -> die Bedingung ist insgesammt wahr -> cmd_1 wird ausgeführt.
Verstehe ich nicht. Wenn TempFeuchtSensorKuehlschrankGefrierfach ein Event aus löst und DOIF darauf triggert weil
["^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature",-12]
als trigger drin steht, was hat dann
["^TempFeuchtSensorKuehlschrank$:^temperature",11]
damit zu tun?
Grüße
Intressant. Jetzt pendelt er immer hin und her. zwischen cmd1 und cmd2 obwohl sich nichts ändert an der Temperatur. Mal -24.9 mal -25.2
Internals:
CFGFN
DEF ( (["^TempFeuchtSensorKuehlschrank$:^temperature",11] > 10.5
or ["^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature",-12] > -11)
and [?$SELF:H_$DEVICE] ne 'high' )
({fhem("set pushmsg msg '" . AttrVal("$DEVICE",'alias',"$DEVICE") . "Temperatur kritisch' 'Warnung! Die Temperatur vom " . AttrVal("$DEVICE",'alias',"$DEVICE") . " ist auf " . ReadingsVal("$DEVICE",'temperature',-100) . " Grad gestiegen' 'handy-marko' 1 ''")})
(setreading $SELF H_$DEVICE high)
DOELSEIF ( (["^TempFeuchtSensorKuehlschrank$:^temperature",10] < 9.0
or ["^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature",-16] < -15)
and [?$SELF:H_$DEVICE] ne 'low')
({fhem("set pushmsg msg '" . AttrVal("$DEVICE",'alias',"$DEVICE") . " Temperatur normalisiert' 'Die Temperatur vom " . AttrVal("$DEVICE",'alias',"$DEVICE") . " hat sich normalisiert.' 'handy-marko' 0 ''")})
(setreading $SELF H_$DEVICE low)
NAME doifKuehlschrankTempAlarm
NR 416
NTFY_ORDER 50-doifKuehlschrankTempAlarm
STATE cmd_1
TYPE DOIF
READINGS:
2017-09-26 14:01:05 Device TempFeuchtSensorKuehlschrankGefrierfach
2017-09-26 13:40:34 H_TempFeuchtSensorKuehlschrank low
2017-09-26 14:01:06 H_TempFeuchtSensorKuehlschrankGefrierfach high
2017-09-26 14:01:06 cmd 1.2
2017-09-26 14:01:06 cmd_event TempFeuchtSensorKuehlschrankGefrierfach
2017-09-26 14:01:06 cmd_nr 1
2017-09-26 14:01:06 cmd_seqnr 2
2017-09-26 13:54:49 matched_event_c1_1 temperature: 5.2
2017-09-26 14:01:05 matched_event_c1_2 temperature: -24.9
2017-09-26 13:54:49 matched_event_c2_1 temperature: 5.2
2017-09-26 13:56:04 matched_event_c2_2 temperature: -25.2
2017-09-26 14:01:06 state cmd_1
condition:
0 (EventDoIf('^TempFeuchtSensorKuehlschrank$',$hash,'^temperature',0,'[^\:]*: (.*)','','11') > 10.5 or EventDoIf('^TempFeuchtSensorKuehlschrankGefrierfach$',$hash,'^temperature',0,'[^\:]*: (.*)','','-12') > -11) and ReadingValDoIf($hash,'doifKuehlschrankTempAlarm','H_$DEVICE') ne 'high'
1 (EventDoIf('^TempFeuchtSensorKuehlschrank$',$hash,'^temperature',0,'[^\:]*: (.*)','','10') < 9.0 or EventDoIf('^TempFeuchtSensorKuehlschrankGefrierfach$',$hash,'^temperature',0,'[^\:]*: (.*)','','-16') < -15) and ReadingValDoIf($hash,'doifKuehlschrankTempAlarm','H_$DEVICE') ne 'low'
devices:
do:
0:
0 {fhem("set pushmsg msg '" . AttrVal("$DEVICE",'alias',"$DEVICE") . "Temperatur kritisch' 'Warnung! Die Temperatur vom " . AttrVal("$DEVICE",'alias',"$DEVICE") . " ist auf " . ReadingsVal("$DEVICE",'temperature',-100) . " Grad gestiegen' 'handy-marko' 1 ''")}
1 setreading doifKuehlschrankTempAlarm H_$DEVICE high
1:
0 {fhem("set pushmsg msg '" . AttrVal("$DEVICE",'alias',"$DEVICE") . " Temperatur normalisiert' 'Die Temperatur vom " . AttrVal("$DEVICE",'alias',"$DEVICE") . " hat sich normalisiert.' 'handy-marko' 0 ''")}
1 setreading doifKuehlschrankTempAlarm H_$DEVICE low
2:
helper:
event temperature: -24.9,humidity: 55,dewpoint: -32.2
globalinit 1
last_timer 0
sleeptimer -1
timerdev TempFeuchtSensorKuehlschrankGefrierfach
timerevent temperature: -24.9,humidity: 55,dewpoint: -32.2
triggerDev TempFeuchtSensorKuehlschrankGefrierfach
timerevents:
temperature: -24.9
humidity: 55
dewpoint: -32.2
timereventsState:
temperature: -24.9
humidity: 55
dewpoint: -32.2
triggerEvents:
temperature: -24.9
humidity: 55
dewpoint: -32.2
triggerEventsState:
temperature: -24.9
humidity: 55
dewpoint: -32.2
internals:
itimer:
readings:
regexp:
0:
0 ^TempFeuchtSensorKuehlschrank$:^temperature
1 ^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature
1:
0 ^TempFeuchtSensorKuehlschrank$:^temperature
1 ^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature
all:
0 ^TempFeuchtSensorKuehlschrank$:^temperature
1 ^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature
state:
STATE:
trigger:
Attributes:
do always
2017-09-26 14:01:05 matched_event_c1_2 temperature: -24.9
2017-09-26 13:56:04 matched_event_c2_2 temperature: -25.2
Hier sieht man es sehr gut. Wieso geht er auf cmd2 und dann wieder auf cmd1 wenn die Temperatur immer noch < -15 ist
Und wieder ein pending
Internals:
CFGFN
DEF ( (["^TempFeuchtSensorKuehlschrank$:^temperature",11] > 10.5
or ["^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature",-12] > -11)
and [?$SELF:H_$DEVICE] ne 'high' )
({fhem("set pushmsg msg '" . AttrVal("$DEVICE",'alias',"$DEVICE") . "Temperatur kritisch' 'Warnung! Die Temperatur vom " . AttrVal("$DEVICE",'alias',"$DEVICE") . " ist auf " . ReadingsVal("$DEVICE",'temperature',-100) . " Grad gestiegen' 'handy-marko' 1 ''")})
(setreading $SELF H_$DEVICE high)
DOELSEIF ( (["^TempFeuchtSensorKuehlschrank$:^temperature",10] < 9.0
or ["^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature",-16] < -15)
and [?$SELF:H_$DEVICE] ne 'low')
({fhem("set pushmsg msg '" . AttrVal("$DEVICE",'alias',"$DEVICE") . " Temperatur normalisiert' 'Die Temperatur vom " . AttrVal("$DEVICE",'alias',"$DEVICE") . " hat sich normalisiert.' 'handy-marko' 0 ''")})
(setreading $SELF H_$DEVICE low)
NAME doifKuehlschrankTempAlarm
NR 416
NTFY_ORDER 50-doifKuehlschrankTempAlarm
STATE cmd_2
TYPE DOIF
READINGS:
2017-09-26 14:09:41 Device TempFeuchtSensorKuehlschrankGefrierfach
2017-09-26 13:40:34 H_TempFeuchtSensorKuehlschrank low
2017-09-26 14:09:42 H_TempFeuchtSensorKuehlschrankGefrierfach low
2017-09-26 14:09:42 cmd 2.2
2017-09-26 14:09:42 cmd_event TempFeuchtSensorKuehlschrankGefrierfach
2017-09-26 14:09:42 cmd_nr 2
2017-09-26 14:09:42 cmd_seqnr 2
2017-09-26 14:08:19 matched_event_c1_1 temperature: 6
2017-09-26 14:09:41 matched_event_c1_2 temperature: -24.3
2017-09-26 14:08:19 matched_event_c2_1 temperature: 6
2017-09-26 14:09:41 matched_event_c2_2 temperature: -24.3
2017-09-26 14:09:42 state cmd_2
condition:
0 (EventDoIf('^TempFeuchtSensorKuehlschrank$',$hash,'^temperature',0,'[^\:]*: (.*)','','11') > 10.5 or EventDoIf('^TempFeuchtSensorKuehlschrankGefrierfach$',$hash,'^temperature',0,'[^\:]*: (.*)','','-12') > -11) and ReadingValDoIf($hash,'doifKuehlschrankTempAlarm','H_$DEVICE') ne 'high'
1 (EventDoIf('^TempFeuchtSensorKuehlschrank$',$hash,'^temperature',0,'[^\:]*: (.*)','','10') < 9.0 or EventDoIf('^TempFeuchtSensorKuehlschrankGefrierfach$',$hash,'^temperature',0,'[^\:]*: (.*)','','-16') < -15) and ReadingValDoIf($hash,'doifKuehlschrankTempAlarm','H_$DEVICE') ne 'low'
devices:
do:
0:
0 {fhem("set pushmsg msg '" . AttrVal("$DEVICE",'alias',"$DEVICE") . "Temperatur kritisch' 'Warnung! Die Temperatur vom " . AttrVal("$DEVICE",'alias',"$DEVICE") . " ist auf " . ReadingsVal("$DEVICE",'temperature',-100) . " Grad gestiegen' 'handy-marko' 1 ''")}
1 setreading doifKuehlschrankTempAlarm H_$DEVICE high
1:
0 {fhem("set pushmsg msg '" . AttrVal("$DEVICE",'alias',"$DEVICE") . " Temperatur normalisiert' 'Die Temperatur vom " . AttrVal("$DEVICE",'alias',"$DEVICE") . " hat sich normalisiert.' 'handy-marko' 0 ''")}
1 setreading doifKuehlschrankTempAlarm H_$DEVICE low
2:
helper:
event temperature: -24.3
globalinit 1
last_timer 0
sleeptimer -1
timerdev TempFeuchtSensorKuehlschrankGefrierfach
timerevent temperature: -24.3
triggerDev TempFeuchtSensorKuehlschrankGefrierfach
timerevents:
temperature: -24.3
humidity: 56
dewpoint: -31.4
timereventsState:
temperature: -24.3
humidity: 56
dewpoint: -31.4
triggerEvents:
temperature: -24.3
humidity: 56
dewpoint: -31.4
triggerEventsState:
temperature: -24.3
humidity: 56
dewpoint: -31.4
internals:
itimer:
readings:
regexp:
0:
0 ^TempFeuchtSensorKuehlschrank$:^temperature
1 ^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature
1:
0 ^TempFeuchtSensorKuehlschrank$:^temperature
1 ^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature
all:
0 ^TempFeuchtSensorKuehlschrank$:^temperature
1 ^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature
state:
STATE:
trigger:
Attributes:
do always
ich vermute die RegEx Filterung.
Hast es mal mit direkter Zuweisung versucht?
Zitat von: Frank_Huber am 26 September 2017, 13:30:49
warum die komplexe Schreibweise? Das würde doch das gleiche machen:
( ([TempFeuchtSensorKuehlschrank:temperature]) > 10.5
or ([TempFeuchtSensorKuehlschrankGefrierfach:temperature]) > (-11) )
and [?$SELF:H_$DEVICE] ne 'high' )
Zitat von: CoolTux am 26 September 2017, 13:43:21
Verstehe ich nicht. Wenn TempFeuchtSensorKuehlschrankGefrierfach ein Event aus löst und DOIF darauf triggert weil
["^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature",-12]
als trigger drin steht, was hat dann
["^TempFeuchtSensorKuehlschrank$:^temperature",11]
damit zu tun?
Grüße
Beide sind doch in der gleichen Bedingung!
Du arbeitest hier mit Event-Auswertung. Bei der Angabe:
["^TempFeuchtSensorKuehlschrank$:^temperature",11] > 10.5
or ["^TempFeuchtSensorKuehlschrankGefrierfach$:^temperature",-12] > -11)
kann immer nur ein Device zur gleichen Zeit triggern, beim anderen wird dann der Default-Wert genommen - was denn sonst.
Bei Reading-Angaben der Art [<Device>:<Reading>] ist das anders, da wird logischerweise der Inhalt des Readings genommen, gerade dann, wenn in der Bedingung ein anders Device in der Bedingung zum Trigger gehört.
["^TempFeuchtSensorKuehlschrank$:^temperature",11] > 10.5
Bääääm, Damian danke.
Das war mir auch nicht aufgefallen. der DEFAULT-Wert von 11 ist höher als die 10,5 auf die geprüft wird und somit löst der CMD aus.
Ok das verstehe ich. Oder besser leuchtet mir ein.
Dann stelle ich mal wieder um.
Danke an alle mit denkenden