Hauptmenü

Mal wieder Verständnisfrage

Begonnen von Starsurfer, 01 Mai 2020, 13:51:39

Vorheriges Thema - Nächstes Thema

Otto123

Dann so
((([WZ_Raumsensor:co2] > 450 and [WZ_Raumsensor:co2] < 800) or ([SZ_Raumsensor:co2] > 450 and [SZ_Raumsensor:co2] < 800)) and [Thermostat_BZ_Climate:humidity] < 65)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Starsurfer

So jetzt noch einmal ein bißchen optimiert, aber ich verstehe das Prinzip einfach nicht. Bin wohl zu blöd dafür.

Wie man sieht ist [WZ_Raumsensor:co2] über 1200, er wechselt aber nicht nach cmd_3.

(([WZ_Raumsensor:co2] < 800 or [SZ_Raumsensor:co2] < 800) and [Thermostat_BZ_Climate:humidity] < 65)
(set kwl 1)
DOELSEIF
([WZ_Raumsensor:co2] > 800 and [WZ_Raumsensor:co2] < 1100 or [SZ_Raumsensor:co2] > 800 and [SZ_Raumsensor:co2] < 1100 or [Thermostat_BZ_Climate:humidity] > 65)
(set kwl 2)
DOELSEIF
([WZ_Raumsensor:co2] > 1100 or [SZ_Raumsensor:co2] > 1100 or [Thermostat_BZ_Climate:humidity] > 75)
(set kwl 3)
DOELSEIF
([Garten.Temp:temperature] <= 15 and [Thermostat_WZ_Climate:measured-temp] >= 23)
(set kwl 0)
DOELSE
(set kwl 1)


Internals:
   DEF        (([WZ_Raumsensor:co2] < 800 or [SZ_Raumsensor:co2] < 800) and [Thermostat_BZ_Climate:humidity] < 65)
(set kwl 1)
DOELSEIF
([WZ_Raumsensor:co2] > 800 and [WZ_Raumsensor:co2] < 1100 or [SZ_Raumsensor:co2] > 800 and [SZ_Raumsensor:co2] < 1100 or [Thermostat_BZ_Climate:humidity] > 65)
(set kwl 2)
DOELSEIF
([WZ_Raumsensor:co2] > 1100 or [SZ_Raumsensor:co2] > 1100 or [Thermostat_BZ_Climate:humidity] > 75)
(set kwl 3)
DOELSEIF
([Garten.Temp:temperature] <= 15 and [Thermostat_WZ_Climate:measured-temp] >= 23)
(set kwl 0)
DOELSE
(set kwl 1)
   FUUID      5d0cf4bd-f33f-ae29-9778-64989c86a97f5693
   MODEL      FHEM
   NAME       di_kwlautomatik
   NOTIFYDEV  WZ_Raumsensor,SZ_Raumsensor,Garten.Temp,global,Thermostat_WZ_Climate,Thermostat_BZ_Climate
   NR         181
   NTFY_ORDER 50-di_kwlautomatik
   STATE      cmd_2
   TYPE       DOIF
   VERSION    21813 2020-04-30 10:05:47
   READINGS:
     2020-05-02 16:42:39   Device          SZ_Raumsensor
     2020-05-02 16:42:39   cmd             2
     2020-05-02 16:42:39   cmd_event       SZ_Raumsensor
     2020-05-02 16:42:39   cmd_nr          2
     2020-05-02 16:42:09   e_Garten.Temp_temperature 14
     2020-05-02 16:42:39   e_SZ_Raumsensor_co2 890.0
     2020-05-02 16:39:23   e_WZ_Raumsensor_co2 1275.0
     2020-05-02 16:38:31   mode            enabled
     2020-05-02 16:42:39   state           cmd_2
   Regex:
     accu:
     cond:
       Garten.Temp:
         0:
         1:
         2:
         3:
           temperature ^Garten.Temp$:^temperature:
       SZ_Raumsensor:
         0:
           co2        ^SZ_Raumsensor$:^co2:
         1:
           co2        ^SZ_Raumsensor$:^co2:
         2:
           co2        ^SZ_Raumsensor$:^co2:
       Thermostat_BZ_Climate:
         0:
           humidity   ^Thermostat_BZ_Climate$:^humidity:
         1:
           humidity   ^Thermostat_BZ_Climate$:^humidity:
         2:
           humidity   ^Thermostat_BZ_Climate$:^humidity:
       Thermostat_WZ_Climate:
         3:
           measured-temp ^Thermostat_WZ_Climate$:^measured-temp:
       WZ_Raumsensor:
         0:
           co2        ^WZ_Raumsensor$:^co2:
         1:
           co2        ^WZ_Raumsensor$:^co2:
         2:
           co2        ^WZ_Raumsensor$:^co2:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          (::ReadingValDoIf($hash,'WZ_Raumsensor','co2') < 800 or ::ReadingValDoIf($hash,'SZ_Raumsensor','co2') < 800) and ::ReadingValDoIf($hash,'Thermostat_BZ_Climate','humidity') < 65
     1          ::ReadingValDoIf($hash,'WZ_Raumsensor','co2') > 800 and ::ReadingValDoIf($hash,'WZ_Raumsensor','co2') < 1100 or ::ReadingValDoIf($hash,'SZ_Raumsensor','co2') > 800 and ::ReadingValDoIf($hash,'SZ_Raumsensor','co2') < 1100 or ::ReadingValDoIf($hash,'Thermostat_BZ_Climate','humidity') > 65
     2          ::ReadingValDoIf($hash,'WZ_Raumsensor','co2') > 1100 or ::ReadingValDoIf($hash,'SZ_Raumsensor','co2') > 1100 or ::ReadingValDoIf($hash,'Thermostat_BZ_Climate','humidity') > 75
     3          ::ReadingValDoIf($hash,'Garten.Temp','temperature') <= 15 and ::ReadingValDoIf($hash,'Thermostat_WZ_Climate','measured-temp') >= 23
   do:
     0:
       0          set kwl 1
     1:
       0          set kwl 2
     2:
       0          set kwl 3
     3:
       0          set kwl 0
     4:
       0          set kwl 1
   helper:
     DEVFILTER  ^global$|^Thermostat_BZ_Climate$|^WZ_Raumsensor$|^Garten.Temp$|^SZ_Raumsensor$|^Thermostat_WZ_Climate$
     NOTIFYDEV  global|Thermostat_BZ_Climate|WZ_Raumsensor|Garten.Temp|SZ_Raumsensor|Thermostat_WZ_Climate
     event      co2: 890.0
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   SZ_Raumsensor
     timerevent co2: 890.0
     triggerDev SZ_Raumsensor
     timerevents:
       co2: 890.0
     timereventsState:
       co2: 890.0
     triggerEvents:
       co2: 890.0
     triggerEventsState:
       co2: 890.0
   internals:
   readings:
     all         WZ_Raumsensor:co2 SZ_Raumsensor:co2 Thermostat_BZ_Climate:humidity Garten.Temp:temperature Thermostat_WZ_Climate:measured-temp
   trigger:
   uiState:
   uiTable:
Attributes:
   DbLogExclude .*
   do         always
   room       Lüftung
FHEM Server: Fujitsu Esprimo q920 + LaCrosseGateway + HM-MOD-RPI-PCB WLAN + ConBee
HomeMatic HM-CC-RT-DN - Sonoff Tasmota
LaCrosse TX29DTH - Innr SP120 - Osram Smart+ Plug
Arduino Mega - MQTT - Pluggit 300
https://www.diy-robot-lawn-mower.com

MadMax-FHEM

#17
Ich nutze ja DOIF nicht aber so wie ich es interpretiere:

Es kommt Trigger SZ-CO2 mit 890

Daher ist die 2te Bedingung von cmd2 WAHR (zwischen 800 und 1100), also korrekt cmd2

Bei DOIF war doch auch immer noch was mit Trigger und Statusabfrage...

EDIT: cmd3 kann bei diesem Trigger gar nicht WAHR werden... Weil (so verstehe ich DOIF [wenn man das so nennen will] die anderen Bedingungen doch auch Trigger/Eventabfragen sind!? Und es kommt ja immer nur EIN Event, oder!?

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

frober

Die erste Bedingung würde ich komplett entfernen. Wenn nichts wahr wird setzt du sowieso auf 1!
Dann vertausche die Reihenfolge von 2 u. 3. wenn du nach dem höchsten Wert schalten möchtest.
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

Starsurfer

Zitat von: frober am 02 Mai 2020, 17:01:59
Die erste Bedingung würde ich komplett entfernen. Wenn nichts wahr wird setzt du sowieso auf 1!
Dann vertausche die Reihenfolge von 2 u. 3. wenn du nach dem höchsten Wert schalten möchtest.

Werde ich mal testen. Danke
FHEM Server: Fujitsu Esprimo q920 + LaCrosseGateway + HM-MOD-RPI-PCB WLAN + ConBee
HomeMatic HM-CC-RT-DN - Sonoff Tasmota
LaCrosse TX29DTH - Innr SP120 - Osram Smart+ Plug
Arduino Mega - MQTT - Pluggit 300
https://www.diy-robot-lawn-mower.com

Starsurfer

So scheint es jetzt zu funktionieren:
([WZ_Raumsensor:co2] > 1200 or [SZ_Raumsensor:co2] > 1200 or [Thermostat_BZ_Climate:humidity] > 75)
(set kwl 3)
DOELSEIF
([WZ_Raumsensor:co2] > 800 and [WZ_Raumsensor:co2] < 1200 or [SZ_Raumsensor:co2] > 800 and [SZ_Raumsensor:co2] < 1200 or [Thermostat_BZ_Climate:humidity] > 65)
(set kwl 2)
DOELSEIF
([Garten.Temp:temperature] <= 15 and [Thermostat_WZ_Climate:measured-temp] >= 23)
(set kwl 0)
DOELSE
(set kwl 1)


List
Internals:
   DEF        ([WZ_Raumsensor:co2] > 1200 or [SZ_Raumsensor:co2] > 1200 or [Thermostat_BZ_Climate:humidity] > 75)
(set kwl 3)
DOELSEIF
([WZ_Raumsensor:co2] > 800 and [WZ_Raumsensor:co2] < 1200 or [SZ_Raumsensor:co2] > 800 and [SZ_Raumsensor:co2] < 1200 or [Thermostat_BZ_Climate:humidity] > 65)
(set kwl 2)
DOELSEIF
([Garten.Temp:temperature] <= 15 and [Thermostat_WZ_Climate:measured-temp] >= 23)
(set kwl 0)
DOELSE
(set kwl 1)
   FUUID      5d0cf4bd-f33f-ae29-9778-64989c86a97f5693
   MODEL      FHEM
   NAME       di_kwlautomatik
   NOTIFYDEV  Thermostat_BZ_Climate,WZ_Raumsensor,SZ_Raumsensor,Garten.Temp,global,Thermostat_WZ_Climate
   NR         181
   NTFY_ORDER 50-di_kwlautomatik
   STATE      cmd_1
   TYPE       DOIF
   VERSION    21813 2020-04-30 10:05:47
   READINGS:
     2020-05-02 18:27:40   Device          SZ_Raumsensor
     2020-05-02 18:27:40   cmd             1
     2020-05-02 18:27:40   cmd_event       SZ_Raumsensor
     2020-05-02 18:27:40   cmd_nr          1
     2020-05-02 18:23:06   e_Garten.Temp_temperature 13.2
     2020-05-02 18:27:40   e_SZ_Raumsensor_co2 865.0
     2020-05-02 18:14:58   e_Thermostat_BZ_Climate_humidity 56
     2020-05-02 18:26:44   e_WZ_Raumsensor_co2 1465.0
     2020-05-02 17:53:04   mode            enabled
     2020-05-02 18:27:40   state           cmd_1
   Regex:
     accu:
     cond:
       Garten.Temp:
         0:
         1:
         2:
           temperature ^Garten.Temp$:^temperature:
       SZ_Raumsensor:
         0:
           co2        ^SZ_Raumsensor$:^co2:
         1:
           co2        ^SZ_Raumsensor$:^co2:
       Thermostat_BZ_Climate:
         0:
           humidity   ^Thermostat_BZ_Climate$:^humidity:
         1:
           humidity   ^Thermostat_BZ_Climate$:^humidity:
       Thermostat_WZ_Climate:
         2:
           measured-temp ^Thermostat_WZ_Climate$:^measured-temp:
       WZ_Raumsensor:
         0:
           co2        ^WZ_Raumsensor$:^co2:
         1:
           co2        ^WZ_Raumsensor$:^co2:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::ReadingValDoIf($hash,'WZ_Raumsensor','co2') > 1200 or ::ReadingValDoIf($hash,'SZ_Raumsensor','co2') > 1200 or ::ReadingValDoIf($hash,'Thermostat_BZ_Climate','humidity') > 75
     1          ::ReadingValDoIf($hash,'WZ_Raumsensor','co2') > 800 and ::ReadingValDoIf($hash,'WZ_Raumsensor','co2') < 1200 or ::ReadingValDoIf($hash,'SZ_Raumsensor','co2') > 800 and ::ReadingValDoIf($hash,'SZ_Raumsensor','co2') < 1200 or ::ReadingValDoIf($hash,'Thermostat_BZ_Climate','humidity') > 65
     2          ::ReadingValDoIf($hash,'Garten.Temp','temperature') <= 15 and ::ReadingValDoIf($hash,'Thermostat_WZ_Climate','measured-temp') >= 23
   do:
     0:
       0          set kwl 3
     1:
       0          set kwl 2
     2:
       0          set kwl 0
     3:
       0          set kwl 1
   helper:
     DEVFILTER  ^global$|^Thermostat_WZ_Climate$|^Garten.Temp$|^WZ_Raumsensor$|^SZ_Raumsensor$|^Thermostat_BZ_Climate$
     NOTIFYDEV  global|Thermostat_WZ_Climate|Garten.Temp|WZ_Raumsensor|SZ_Raumsensor|Thermostat_BZ_Climate
     event      co2: 865.0
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   SZ_Raumsensor
     timerevent co2: 865.0
     triggerDev SZ_Raumsensor
     timerevents:
       co2: 865.0
     timereventsState:
       co2: 865.0
     triggerEvents:
       co2: 865.0
     triggerEventsState:
       co2: 865.0
   internals:
   readings:
     all         WZ_Raumsensor:co2 SZ_Raumsensor:co2 Thermostat_BZ_Climate:humidity Garten.Temp:temperature Thermostat_WZ_Climate:measured-temp
   trigger:
   uiState:
   uiTable:
Attributes:
   DbLogExclude .*
   do         always
   room       Lüftung
FHEM Server: Fujitsu Esprimo q920 + LaCrosseGateway + HM-MOD-RPI-PCB WLAN + ConBee
HomeMatic HM-CC-RT-DN - Sonoff Tasmota
LaCrosse TX29DTH - Innr SP120 - Osram Smart+ Plug
Arduino Mega - MQTT - Pluggit 300
https://www.diy-robot-lawn-mower.com

MadMax-FHEM

Wenn du meinst...

Warte bis humidity über 65 geht...
...oder über 75...

Dann sind die restlichen Bedingungen halt wieder "egal"...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)