FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: otto am 26 September 2020, 21:10:30

Titel: DOIF mit ESP Temp/Feuchte/Druck
Beitrag von: otto am 26 September 2020, 21:10:30
Abend.
hab wieder eine kommische sache das DOIF kann meine Werte nicht verarbeiten(bzw: ICH :'( )
bekomme im Log:
2020-09-26 21:06:01 ESPEasy ESPEasy_GW_TEMP_TE H: 410.00
2020-09-26 21:06:01 ESPEasy ESPEasy_GW_TEMP_TE T: 61.00
2020-09-26 21:06:01 ESPEasy ESPEasy_GW_TEMP_TE Pu: 803.00
2020-09-26 21:06:01 ESPEasy ESPEasy_GW_TEMP_TE H: 410.00 Pu: 803.00 T: 61.00

versucht habe ich:
([ESPEasy_GW_TEMP_TE:"^T:.*$"] >= 48.00) (set Lux_GW off) DOELSEIF ([ESPEasy_GW_TEMP_TE:"^T:.*$"] < 40.00) (set Lux_GW on)
und
([ESPEasy_GW_TEMP_TE:"^T:.temperature"] >= 48) (set Lux_GW on) DOELSEIF ([ESPEasy_GW_TEMP_TE:"^T:.temperature"] < 40) (set Lux_GW off)
oder
([ESPEasy_GW_TEMP_TE:"^T:.state"] >= 48) (set Lux_GW on) DOELSEIF ([ESPEasy_GW_TEMP_TE:"^T:.state"] < 40) (set Lux_GW off)



aber bei keinen hast es mir umgeschaltet
was mache ich (wer auch sonnst  ::) ) falsch?

Gruß Otto
Titel: Antw:DOIF mit ESP Temp/Feuchte/Druck
Beitrag von: Otto123 am 26 September 2020, 21:42:54
Hallo Otto,

zeig mal bitte ein list von deinem ESPEasy_GW_TEMP_TE und deinem DOIF.

Ich denke Deine Auswertung der Readings funktioniert so nicht.

Gruß Otto
Titel: Antw:DOIF mit ESP Temp/Feuchte/Druck
Beitrag von: otto am 26 September 2020, 22:43:38
Hallo Otto123 hier vom Esp:
Internals:
   .AttrList  IODev Interval adjustValue colorpicker:RGB,HSV,HSVp deepsleep:0,1 disable:1,0 disableRiskyCmds disabledForIntervals displayTextEncode:1,0 displayTextWidth do_not_notify:0,1 event-aggregator event-min-interval event-on-change-reading event-on-update-reading oldreadings stateFormat:textField-long timestamp-on-change-reading mapLightCmds:lights,nfx maxCmdDuration:slider,0,0.25,15,1 parseCmdResponse pollGPIOs presenceCheck:1,0 readingPrefixGPIO readingSuffixGPIOState readingSwitchText:1,0,2 rgbGPIOs setState:0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,25,50,100 useSetExtensions:0,1 userSetCmds:textField-long wwcwGPIOs
   CFGFN     
   DEF        192.168.178.168 80 ESP8266 GW_TEMP_TE
   ESP8266_MSGCNT 1568
   ESP8266_TIME 2020-09-26 22:40:26
   ESP_BUILD  20102
   ESP_BUILD_GIT mega-20181016
   ESP_BUILD_NOTES  - Mega32
   ESP_NODE_TYPE_ID ESP Easy 32
   ESP_SLEEP  0
   ESP_UNIT   0
   ESP_VERSION 3
   FUUID      5f6f875d-f33f-563d-27a8-dc8a0fcf0a890f3b
   HOST       192.168.178.168
   IDENT      GW_TEMP_TE
   INTERVAL   300
   IODev      ESP8266
   LASTInputDev ESP8266
   MAX_CMD_DURATION 1
   MSGCNT     1568
   NAME       ESPEasy_GW_TEMP_TE
   NOTIFYDEV  global
   NR         30897
   NTFY_ORDER 50-ESPEasy_GW_TEMP_TE
   PORT       80
   STATE      H: 400.00 Pu: 783.00 T: 60.00
   SUBTYPE    device
   TYPE       ESPEasy
   VERSION    2.18
   .attraggr:
   .attrminint:
   READINGS:
     2020-09-26 22:40:26   H               400.00
     2020-09-26 22:40:26   Pu              783.00
     2020-09-26 22:40:26   T               60.00
     2020-09-26 22:35:55   presence        present
     2020-09-26 22:40:26   state           H: 400.00 Pu: 783.00 T: 60.00
   helper:
     fpc        1601144669.3601
     pm:
       Encode     1
       JSON       1
     received:
       H          1601152826.69109
       Pu         1601152826.69191
       T          1601152826.69155
   sec:
     admpwd     
Attributes:
   IODev      ESP8266
   Interval   300
   group      ESPEasy Device
   presenceCheck 1
   readingSwitchText 1
   room       ESPEasy
   setState   5

und vom DOIF_2:

Internals:
   CFGFN     
   DEF        ([ESPEasy_GW_TEMP_TE:"^T:.*$"] >= 48.00) (set Lux_GW off) DOELSEIF ([ESPEasy_GW_TEMP_TE:"^T:.*$"] < 40.00) (set Lux_GW on)
   FUUID      5f6f8c3a-f33f-563d-ebc6-173091264756c3ce
   MODEL      FHEM
   NAME       ESPEasy_GW_TEMP_TE_DOIF_2
   NOTIFYDEV  ESPEasy_GW_TEMP_TE,global
   NR         31585
   NTFY_ORDER 50-ESPEasy_GW_TEMP_TE_DOIF_2
   STATE      cmd_2
   TYPE       DOIF
   VERSION    22195 2020-06-18 16:38:55
   .attraggr:
   .attrminint:
   READINGS:
     2020-09-26 22:41:36   Device          ESPEasy_GW_TEMP_TE
     2020-09-26 20:59:20   cmd             2
     2020-09-26 20:59:20   cmd_event       ESPEasy_GW_TEMP_TE
     2020-09-26 20:59:20   cmd_nr          2
     2020-09-26 22:41:36   e_ESPEasy_GW_TEMP_TE_events H: 410.00 Pu: 803.00 T: 61.00
     2020-09-26 20:59:19   mode            enabled
     2020-09-26 20:59:20   state           cmd_2
   Regex:
     accu:
     cond:
       ESPEasy_GW_TEMP_TE:
         0:
           &STATE     ^ESPEasy_GW_TEMP_TE$
         1:
           &STATE     ^ESPEasy_GW_TEMP_TE$
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::EventDoIf('ESPEasy_GW_TEMP_TE',$hash,'^T:.*$',1) >= 48.00
     1          ::EventDoIf('ESPEasy_GW_TEMP_TE',$hash,'^T:.*$',1) < 40.00
   do:
     0:
       0          set Lux_GW off
     1:
       0          set Lux_GW on
     2:
   helper:
     DEVFILTER  ^global$|^ESPEasy_GW_TEMP_TE$
     NOTIFYDEV  global|ESPEasy_GW_TEMP_TE
     event      H: 410.00 Pu: 803.00 T: 61.00
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   ESPEasy_GW_TEMP_TE
     timerevent H: 410.00 Pu: 803.00 T: 61.00
     triggerDev ESPEasy_GW_TEMP_TE
     timerevents:
       H: 410.00 Pu: 803.00 T: 61.00
     timereventsState:
       state: H: 410.00 Pu: 803.00 T: 61.00
     triggerEvents:
       H: 410.00 Pu: 803.00 T: 61.00
     triggerEventsState:
       state: H: 410.00 Pu: 803.00 T: 61.00
   internals:
   readings:
   trigger:
     all         ESPEasy_GW_TEMP_TE
   uiState:
   uiTable:
Attributes:

oder DOIF_1:
Internals:
   CFGFN     
   DEF        ([ESPEasy_GW_TEMP_TE:"^T:.state"] >= 48) (set Lux_GW on) DOELSEIF ([ESPEasy_GW_TEMP_TE:"^T:.state"] < 40) (set Lux_GW off)
   FUUID      5f6f89ce-f33f-563d-eb86-c72310fa688bf942
   MODEL      FHEM
   NAME       ESPEasy_GW_TEMP_TE_DOIF_1
   NOTIFYDEV  ESPEasy_GW_TEMP_TE,global
   NR         31263
   NTFY_ORDER 50-ESPEasy_GW_TEMP_TE_DOIF_1
   STATE      disabled
   TYPE       DOIF
   VERSION    22195 2020-06-18 16:38:55
   .attraggr:
   .attrminint:
   READINGS:
     2020-09-26 20:53:11   Device          ESPEasy_GW_TEMP_TE
     2020-09-26 20:50:06   cmd             2
     2020-09-26 20:50:06   cmd_event       ESPEasy_GW_TEMP_TE
     2020-09-26 20:50:06   cmd_nr          2
     2020-09-26 20:53:11   e_ESPEasy_GW_TEMP_TE_events H: 490.00 Pu: 963.00 T: 74.00
     2020-09-26 20:53:13   last_cmd        cmd_2
     2020-09-26 20:53:13   mode            disabled
     2020-09-26 20:53:13   state           disabled
   Regex:
     accu:
     cond:
       ESPEasy_GW_TEMP_TE:
         0:
           &STATE     ^ESPEasy_GW_TEMP_TE$
         1:
           &STATE     ^ESPEasy_GW_TEMP_TE$
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::EventDoIf('ESPEasy_GW_TEMP_TE',$hash,'^T:.state',1) >= 48
     1          ::EventDoIf('ESPEasy_GW_TEMP_TE',$hash,'^T:.state',1) < 40
   do:
     0:
       0          set Lux_GW on
     1:
       0          set Lux_GW off
     2:
   helper:
     DEVFILTER  ^global$|^ESPEasy_GW_TEMP_TE$
     NOTIFYDEV  global|ESPEasy_GW_TEMP_TE
     event      H: 490.00 Pu: 963.00 T: 74.00
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   ESPEasy_GW_TEMP_TE
     timerevent H: 490.00 Pu: 963.00 T: 74.00
     triggerDev ESPEasy_GW_TEMP_TE
     timerevents:
       H: 490.00 Pu: 963.00 T: 74.00
     timereventsState:
       state: H: 490.00 Pu: 963.00 T: 74.00
     triggerEvents:
       H: 490.00 Pu: 963.00 T: 74.00
     triggerEventsState:
       state: H: 490.00 Pu: 963.00 T: 74.00
   internals:
   readings:
   trigger:
     all         ESPEasy_GW_TEMP_TE
   uiState:
   uiTable:
Attributes:

die untere ist aktuell aus
Gruß Otto
Titel: Antw:DOIF mit ESP Temp/Feuchte/Druck
Beitrag von: amenomade am 27 September 2020, 01:39:42
[ESPEasy_GW_TEMP_TE:"^T:.*$"] ist ein Eventtrigger. Es ist entweder wahr oder falsch und nicht mit einer Zahl vergleichbar.
Damit sowas funktioniert muss man einen Default-Wert hinzufügen

Zitat von: CommandRefAllgemeine Ereignistrigger können ebenfalls so definiert werden, dass sie nicht nur wahr zum Triggerzeitpunkt und sonst nicht wahr sind, sondern Inhalte des Ereignisses zurückliefern. Initiiert wird dieses Verhalten durch die Angabe eines Default-Wertes.

Syntax:

["regex for trigger",<default value>]

Sowas wird aber bei jeder Temperaturänderung triggern und jedes Mal wenn die Temperatur > 48 ist wiederum den Befehl "set Lux_GW off" ausführen.

Hier wäre eine Zustand- (statt Event-) Steuerung besser:
([ESPEasy_GW_TEMP_TE:T] >= 48) (set Lux_GW off) DOELSEIF ([ESPEasy_GW_TEMP_TE:T] < 40) (set Lux_GW on)

Titel: Antw:DOIF mit ESP Temp/Feuchte/Druck
Beitrag von: Otto123 am 27 September 2020, 09:55:05
Moin,

wie amenomade schon gesagt hat ;)
Das bedeutet für DOIF2: aus [ESPEasy_GW_TEMP_TE:"^T:.*$"] machst Du [ESPEasy_GW_TEMP_TE:T] usw.

Das DOIF_1 mit state macht so keinen Sinn, auch dort schreibst Du einfach das Reading. Der state ist ja nur die Kombination aus den anderen Readings.

Gruß Otto