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