[GELÖST] DOIF vergleich negativer Werte

Begonnen von CoolTux, 26 September 2017, 13:01:01

Vorheriges Thema - Nächstes Thema

CoolTux

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
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Frank_Huber

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') (...)

CoolTux

Teste ich mal gleich. Vielen Dank schon mal.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

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
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Frank_Huber

evtl den Vergleichswert auch Klammern?
ansonsten müsste das Damian beantworten.

CoolTux

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
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Frank_Huber

#7
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' )

Damian

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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Frank_Huber

Damian, würde da dann "checkreadingevents" = 1 helfen?

CoolTux

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
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

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
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

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
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Frank_Huber

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' )


Damian

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.



Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF