Guten Morgen, ich habe hier ein DOIF mit Aggregation, welches scheinbar selektiv ist :o
Internals:
DEF ([+[1]:00]) ( {foreach (AggrDoIf('@','^Swi_','ENERGY_Total')) {fhem("setreading $_ PowerLastHour ".(ReadingsVal($_,"ENERGY_Total",0)-ReadingsVal($_,"temp_counts",0) ));fhem("setreading $_ temp_counts ".(ReadingsVal($_,"ENERGY_Total",0) )) } })
FUUID 5c50c636-f33f-414e-c0b2-a5d706ac6dcfff4a
MODEL FHEM
NAME di_swi_power_hour
NR 202
NTFY_ORDER 50-di_swi_power_hour
STATE cmd_1
TYPE DOIF
READINGS:
2019-01-30 08:00:00 cmd 1
2019-01-30 08:00:00 cmd_event timer_1
2019-01-30 08:00:00 cmd_nr 1
2019-01-29 22:26:55 mode enabled
2019-01-30 08:00:00 state cmd_1
2019-01-30 08:00:00 timer_01_c01 30.01.2019 09:00:00
Regex:
attr:
cmdState:
waitdel:
condition:
0 ::DOIF_time_once($hash,0,$wday)
days:
devices:
do:
0:
0 {foreach (AggrDoIf('@','^Swi_','ENERGY_Total')) {fhem("setreading $_ PowerLastHour ".(ReadingsVal($_,"ENERGY_Total",0)-ReadingsVal($_,"temp_counts",0) ));fhem("setreading $_ temp_counts ".(ReadingsVal($_,"ENERGY_Total",0) )) } }
1:
helper:
event timer_1
globalinit 1
last_timer 1
sleeptimer -1
timerdev
timerevent timer_1
timereventsState
triggerDev
DOIF_eventas:
cmd_nr: 1
cmd: 1
cmd_event: timer_1
state: cmd_1
timerevents:
timer_1
triggerEvents:
timer_1
internals:
interval:
intervalfunc:
itimer:
localtime:
0 1548835200
perlblock:
readings:
realtime:
0 09:00:00
time:
0 +[1]:00
timeCond:
0 0
timer:
0 0
timers:
0 0
triggertime:
1548835200:
localtime 1548835200
hash:
uiState:
uiTable:
Attributes:
do always
room 0_Beamer
Das erste setreading scheint immer zu klappen, aber das 2. setreading klappt komischerweise nicht bei allen Devices.
Hier mal einer bei dem es klappt.
Internals:
FUUID 5c50c636-f33f-414e-7244-9e3cd3dff5fd947c
NAME Swi_Gosund2
NR 205
STATE OFF
TYPE dummy
Helper:
DBLOG:
ENERGY_Yesterday:
logdb:
TIME 1548802812.33832
VALUE 0.079
PowerActualMonth:
logdb:
TIME 1548802740.15841
VALUE 8.47
READINGS:
2019-01-30 08:06:43 CostLastMonth 3.532671072
2019-01-30 08:06:43 ENERGY_ApparentPower 0
2019-01-30 08:06:43 ENERGY_Current 0
2019-01-30 08:06:43 ENERGY_Factor 0
2019-01-18 13:00:00 ENERGY_Hour 7.983
2018-11-30 23:59:00 ENERGY_Month 0.192
2019-01-30 08:06:43 ENERGY_Period 0
2019-01-30 08:06:43 ENERGY_Power 0
2019-01-30 08:06:43 ENERGY_ReactivePower 0
2019-01-30 08:06:43 ENERGY_Today 0
2019-01-30 08:06:43 ENERGY_Total 8.241
2019-01-30 08:06:43 ENERGY_TotalStartTime 2018-10-30T22:04:38
2019-01-30 08:06:43 ENERGY_Voltage 0
2019-01-30 08:06:43 ENERGY_Yesterday 0.079
2019-01-30 08:06:43 Energy {"Time":"2019-01-30T08:06:43","ENERGY":{"TotalStartTime":"2018-10-30T22:04:38","Total":8.241,"Yesterday":0.079,"Today":0.000,"Period":0,"Power":0,"ApparentPower":0,"ReactivePower":0,"Factor":0.00,"Voltage":0,"Current":0.000}}
2019-01-29 15:06:25 POWER OFF
2018-12-15 20:12:21 Power {"Time":"2018-12-15T20:12:18","Uptime":"0T20:24:22","Vcc":3.237,"POWER":"OFF","Wifi":{"AP":1,"SSId":"Weit","BSSId":"FC:EC:DA:3E:5B:D0","Channel":11,"RSSI":54}}
2019-01-29 23:59:00 PowerActualMonth 8.47
2019-01-30 08:00:00 PowerLastHour 0
2018-12-31 23:59:00 PowerLastMonth 6.719
2019-01-30 08:06:43 Time 2019-01-30T08:06:43
2018-12-15 20:12:21 Uptime 0T20:24:22
2018-12-15 20:12:21 Vcc 3.237
2018-12-15 20:12:21 Wifi_AP 1
2018-12-15 20:12:21 Wifi_BSSId FC:EC:DA:3E:5B:D0
2018-12-15 20:12:21 Wifi_Channel 11
2018-12-15 20:12:21 Wifi_RSSI 54
2018-12-15 20:12:21 Wifi_SSId Weit
2019-01-29 15:06:25 state OFF
2019-01-30 08:00:00 temp_counts 8.241
Attributes:
DbLogInclude PowerActualMonth,PowerLastHour,PowerLastMonth,ENERGY_Yesterday
event-on-change-reading .*
event-on-update-reading state
mqttPublish state:topic=cmnd/Gosund2/POWER1
mqttSubscribe Energy:topic=tele/Gosund2/SENSOR POWER:topic=stat/Gosund2/POWER
room 9_Drucker
setList ON OFF
stateFormat POWER
userReadings CostLastMonth { ReadingsVal("Swi_Trockner","PowerLastMonth",0)*0.2422 ;; }
Und bei einem ziemlich ähnlichen klappt es nicht. (Kann man ganz gut an dem Timestamp beim temp_counts sehen).
Ändere ich das DOIF in ...(AggrDoIf('@','^Swi_Gosund1','ENERGY_Total'))
klappt es auch problemlos bei dem Device, aber dann bräuchte ich ja keine Aggregation mehr.
Internals:
FUUID 5c50c636-f33f-414e-0a92-388158dd1f48c19d
NAME Swi_Gosund1
NR 201
STATE ON
TYPE dummy
Helper:
DBLOG:
ENERGY_Yesterday:
logdb:
TIME 1548802975.10939
VALUE 0.528
PowerActualMonth:
logdb:
TIME 1548802740.10979
VALUE 43.576
PowerLastHour:
logdb:
TIME 1548831600.31302
VALUE 0.199000000000002
READINGS:
2019-01-30 08:07:54 ENERGY_ApparentPower 2
2019-01-30 08:07:54 ENERGY_Current 0.009
2019-01-30 08:07:54 ENERGY_Factor 0.73
2018-12-17 10:00:00 ENERGY_Hour 35.194
2018-11-30 23:59:00 ENERGY_Month 23.836
2019-01-30 08:07:54 ENERGY_Period 0
2019-01-30 08:07:54 ENERGY_Power 2
2019-01-30 08:07:54 ENERGY_ReactivePower 1
2019-01-30 08:07:54 ENERGY_Today 0.164
2019-01-30 08:07:54 ENERGY_Total 26.542
2019-01-30 08:07:54 ENERGY_TotalStartTime 2018-12-18T14:18:40
2019-01-30 08:07:54 ENERGY_Voltage 228
2019-01-30 08:07:54 ENERGY_Yesterday 0.528
2019-01-30 08:07:54 Energy {"Time":"2019-01-30T08:07:55","ENERGY":{"TotalStartTime":"2018-12-18T14:18:40","Total":26.542,"Yesterday":0.528,"Today":0.164,"Period":0,"Power":2,"ApparentPower":2,"ReactivePower":1,"Factor":0.73,"Voltage":228,"Current":0.009}}
2018-12-18 14:37:53 POWER ON
2018-12-15 20:10:26 Power {"Time":"2018-12-15T20:10:25","Uptime":"45T01:33:30","Vcc":3.256,"POWER":"ON","Wifi":{"AP":1,"SSId":"Weit","RSSI":40,"APMac":"FC:EC:DA:3E:5B:D0"}}
2019-01-29 23:59:00 PowerActualMonth 43.576
2019-01-30 08:00:00 PowerLastHour 0.199000000000002
2018-12-31 23:59:00 PowerLastMonth -14.838
2019-01-30 08:07:54 Time 2019-01-30T08:07:55
2018-12-15 20:10:26 Uptime 45T01:33:30
2018-12-15 20:10:26 Vcc 3.256
2018-12-15 20:10:26 Wifi_AP 1
2018-12-15 20:10:26 Wifi_APMac FC:EC:DA:3E:5B:D0
2018-12-15 20:10:26 Wifi_RSSI 40
2018-12-15 20:10:26 Wifi_SSId Weit
2018-12-15 20:11:02 state ON
2019-01-29 22:27:02 temp_counts 26.343
Attributes:
DbLogInclude PowerActualMonth,PowerLastHour,PowerLastMonth,ENERGY_Yesterday
event-on-change-reading .*
event-on-update-reading state
mqttPublish state:topic=cmnd/Gosund1/POWER
mqttSubscribe Energy:topic=tele/Gosund1/SENSOR POWER:topic=stat/Gosund1/POWER
room 0_Beamer
setList ON OFF
Vielleicht hat ja einer eine Idee, ich bin nämlich ratlos ::)
Dann musst du dich herantasten.
Was liefert list Swi_.*
Haben alle Devices das Reading ENERGY_Total?
Was liefert AggrDoIf('@','^Swi_','')?
Danke dir. Weiß immer noch nicht wo es herkommt, aber hab den 2. Teil einfach in einen weiteren Ausführungsteil gepackt und lauf dann nochmal durch die foreach Schleife.
([+[1]:00]) ( {foreach (AggrDoIf('@','^Swi_','')) {fhem("setreading $_ PowerLastHour ".(ReadingsVal($_,"ENERGY_Total",0)-ReadingsVal($_,"temp_counts",0) )) }} ) ( {foreach (AggrDoIf('@','^Swi_','')) {fhem("setreading $_ temp_counts ".(ReadingsVal($_,"ENERGY_Total",0) )) }} )
Ist zwar eine Krücke, aber sie funktioniert ;)