Hallo,
ich versuche gerade eine Timersteuerung für meinen Xiaomi Roborock zu basteln. Wochentag und Uhrzeit sollen aus einem Reading (t_day und t_time) ausgelesen werden. Dies klappt nur für die Uhrzeit, nicht für den Wochentag. Wo liegt mein Fehler?
fhem> list di_timer1_Sauger
Internals:
DEF ([$SELF:P_einaus,"ein"] eq "ein"
and
[?Sauger:newtimer_start] eq "0"
and
[[$SELF:t_time]|[$SELF:t_day]])
(setreading Sauger newtimer_start 1, set Fritzbox wlan on)
(set Sauger cleaning_mode [?$SELF:t_cleaning_mode],
set Sauger zone [?$SELF:t_zone])
DOELSEIF ([?Sauger:newtimer_start] eq "1"
and
[Sauger] eq "Docked")
(set Fritzbox wlan [Fritzbox:wlan_auto_state],setreading Sauger newtimer_start 0)
MODEL FHEM
NAME di_timer1_Sauger
NR 402
NTFY_ORDER 50-di_timer1_Sauger
STATE initialized
TYPE DOIF
READINGS:
2018-12-08 14:33:56 Device Sauger
2018-12-08 14:29:39 P_einaus ein
2018-12-08 14:29:03 cmd 0
2018-12-08 14:33:56 e_Sauger_STATE Docked
2018-12-08 14:29:39 e_di_timer1_Sauger_P_einaus ein
2018-12-08 14:29:03 mode enabled
2018-12-08 14:29:03 state initialized
2018-12-07 12:58:59 t_cleaning_mode mop
2018-12-08 14:27:18 t_day Fr
2018-12-08 12:23:42 t_time 09:00
2018-12-05 19:30:17 t_zone Mop_KuFlBuWz
2018-12-08 14:29:03 timer_01_c01 09.12.2018 09:00:00|[di_timer1_Sauger:t_day]
Regex:
attr:
wait:
0:
0
60
1:
0
condition:
0 ::ReadingValDoIf($hash,'di_timer1_Sauger','P_einaus','"ein"') eq "ein" and ::ReadingValDoIf($hash,'Sauger','newtimer_start') eq "0" and ::DOIF_time_once($hash,0,$wday,"[di_timer1_Sauger:t_day]")
1 ::ReadingValDoIf($hash,'Sauger','newtimer_start') eq "1" and ::InternalDoIf($hash,'Sauger','STATE') eq "Docked"
days:
0 [di_timer1_Sauger:t_day]
devices:
0 di_timer1_Sauger
1 Sauger
all di_timer1_Sauger Sauger
do:
0:
0 setreading Sauger newtimer_start 1, set Fritzbox wlan on
1 set Sauger cleaning_mode [?di_timer1_Sauger:t_cleaning_mode], set Sauger zone [?di_timer1_Sauger:t_zone]
1:
0 set Fritzbox wlan [Fritzbox:wlan_auto_state],setreading Sauger newtimer_start 0
2:
helper:
event Docked,batteryPercent: 100,batteryState: ok,last_clean_time: 0.00,last_clean_area: 13.74,error_code: None,map_present: yes,in_cleaning: no,fan_power: 105,dnd: off,cleaning_mode: mop,last_clean_time_text: 0h m,total_clean_time_text: 15h 42m
globalinit 1
last_timer 1
sleeptimer -1
triggerDev Sauger
triggerEvents:
Docked
batteryPercent: 100
batteryState: ok
last_clean_time: 0.00
last_clean_area: 13.74
error_code: None
map_present: yes
in_cleaning: no
fan_power: 105
dnd: off
cleaning_mode: mop
last_clean_time_text: 0h m
total_clean_time_text: 15h 42m
triggerEventsState:
state: Docked
batteryPercent: 100
batteryState: ok
last_clean_time: 0.00
last_clean_area: 13.74
error_code: None
map_present: yes
in_cleaning: no
fan_power: 105
dnd: off
cleaning_mode: mop
last_clean_time_text: 0h m
total_clean_time_text: 15h 42m
internals:
1 Sauger:STATE
all Sauger:STATE
intervalfunc:
itimer:
all di_timer1_Sauger
localtime:
0 1544342400
readings:
0 di_timer1_Sauger:P_einaus
all di_timer1_Sauger:P_einaus
realtime:
0 09:00:00
time:
0 [di_timer1_Sauger:t_time]
timeCond:
0 0
timer:
0 0
timers:
0 0
trigger:
triggertime:
1544342400:
localtime 1544342400
hash:
uiState:
uiTable:
Attributes:
group Schalter
icon icoUhr
readingList P_einaus
room Wohnung,timer
verbose 4
wait 0,60:0
webCmd P_einaus
widgetOverride P_einaus:uzsuSelectRadio,ein,aus
Ronny
Das ist schon alles richtig so. Der Wochentag wird erst zum Tiggerzeitpunkt ausgewertet und nicht intern gespeichert.
Ok, danke. Ich hatte mich nur über die Anzeige gewundert:
timer_01_c01
09.12.2018 09:00:00|[di_timer1_Sauger:t_date]
Ronny