hiho, ich such grad nach nem problem bei meinem botvac. drum hab ich mir ein doif geschrieben, dass mir generell alles melden soll. nix besonderes und auch nix herausforderndes, aber ich krieg fehlermeldungen betreff falscher timespecs und meine befehlskette scheint dann abzubrechen.
was mach ich da falsch?timer_01_c01 error: Wrong timespec tatortreiniger:state: either HH:MM:SS or {perlcode} 2021-01-19 09:09:06
list:Internals:
DEF ( ##01
[ tatortreiniger:state] eq "Idle" )
( say tatortreiniger - alles ok )
( set tatortreiniger reloadMaps )
## ACTION
DOELSEIF ##02
( [tatortreiniger:action] eq "0" )
( say tatortreiniger - alles ok )
DOELSEIF ##03
( [tatortreiniger:action] eq "1" )
( say tatortreiniger - vollständiges haus wird gereinigt )
DOELSEIF ##04
( [tatortreiniger:action] eq "2" )
( say tatortreiniger - hausteile werden gereinigt )
DOELSEIF ##05
( [tatortreiniger:action] eq "3" )
( say tatortreiniger - manuelle reinigung im gange )
DOELSEIF ##06
( [tatortreiniger:action] eq "4" )
( say tatortreiniger - andocken )
DOELSEIF ##07
( [tatortreiniger:action] eq "5" )
( say tatortreiniger - anwendermenü aktiv )
DOELSEIF ##08
( [tatortreiniger:action] eq "6" )
( say tatortreiniger - reinigung unterbrochen )
DOELSEIF ##09
( [tatortreiniger:action] eq "7" )
( say tatortreiniger - software update )
DOELSEIF ##10
( [tatortreiniger:action] eq "8" )
( say tatortreiniger - kopiere logs )
DOELSEIF ##11
( [tatortreiniger:action] eq "9" )
( say tatortreiniger - orientierung im gange )
DOELSEIF ##12
( [tatortreiniger:action] eq "10" )
( say tatortreiniger - i.e.c. test )
DOELSEIF ##13
( [tatortreiniger:action] eq "11" )
( say tatortreiniger - karte wird gereinigt )
DOELSEIF ##14
( [tatortreiniger:action] eq "12" )
( say tatortreiniger - erforsche haus. erstelle persistente karte )
DOELSEIF ##15
( [tatortreiniger:action] eq "13" )
( say tatortreiniger - finde persistente karten id )
DOELSEIF ##16
( [tatortreiniger:action] eq "14" )
( say tatortreiniger - erstelle und lade karte hoch )
DOELSEIF ##17
( [tatortreiniger:action] eq "15" )
( say tatortreiniger - erforschung unterbrochen )
## ALERT
DOELSEIF ##18
( [tatortreiniger:error] =~ "ui_alert_invalid" )
( say tatortreiniger - alles ok )
DOELSEIF ##19
( [tatortreiniger:error] =~ "ui_alert_dust_bin_full" )
( say tatortreiniger - müllbehälter voll. bitte schnellstmöglich entleeren! )
DOELSEIF ##20
( [tatortreiniger:error] =~ "ui_alert_recovering_location" )
( say tatortreiniger - neue orientierung im gange )
## ERROR
DOELSEIF ##21
( [tatortreiniger:error] =~ "ui_error_picked_up" )
( say tatortreiniger - kein bodenkontakt der räder. menschliche hilfe erforderlich! )
DOELSEIF ##22
( [tatortreiniger:error] =~ "ui_error_brush_stuck" )
( say tatortreiniger - bürste steckt fest. menschliche hilfe erforderlich! )
DOELSEIF ##23
( [tatortreiniger:error] =~ "ui_error_stuck" )
( say tatortreiniger - roboter steckt fest. menschliche hilfe erforderlich! )
DOELSEIF ##24
( [tatortreiniger:error] =~ "ui_error_dust_bin_emptied" )
( say tatortreiniger - mülleimer wurde geleert. dank dem helfenden menschen! )
DOELSEIF ##25
( [tatortreiniger:error] =~ "ui_error_dust_bin_missing" )
( say tatortreiniger - mülleimer nicht eingesetzt. menschliche hilfe erforderlich! )
DOELSEIF ##26
( [tatortreiniger:error] =~ "ui_error_navigation_falling" )
( say tatortreiniger - navigation fehlerhaft. unüberwindliches hinternis oder orientierungsverlust. menschliche hilfe erforderlich! )
DOELSEIF ##27
( [tatortreiniger:error] =~ "ui_error_navigation_noprogress" )
( say tatortreiniger - navigation fehlerhaft. unüberwindliches hinternis oder orientierungsverlust. menschliche hilfe erforderlich! )
DOELSEIF ##28
( [tatortreiniger:state] =~ "find robot" )
( say tatortreiniger - tatortreiniger ist nicht im netzwerk - versuche maßnamen!)
( set tatortreiniger statusRequest )
( set tatortreiniger findMe )
( set tatortreiniger statusRequest )
( say tatortreiniger - status [tatortreiniger:status] )
FUUID 5cc15d2b-f33f-0f9e-eb83-d52c9ea12f68dcfa
MODEL FHEM
NAME doif_tatortreiniger_zeugs
NOTIFYDEV tatortreiniger,global
NR 225
NTFY_ORDER 50-doif_tatortreiniger_zeugs
STATE cmd_2
TYPE DOIF
VERSION 23466 2021-01-03 17:14:46
READINGS:
2021-01-19 09:09:11 cmd 2
2021-01-19 09:09:11 cmd_event doif_tatortreiniger_zeugs
2021-01-19 09:09:11 cmd_nr 2
2021-01-19 09:09:06 mode enabled
2021-01-19 09:09:11 state cmd_2
2021-01-19 09:09:06 timer_01_c01 error: Wrong timespec tatortreiniger:state: either HH:MM:SS or {perlcode}
Regex:
accu:
cond:
tatortreiniger:
1:
action ^tatortreiniger$:^action:
10:
action ^tatortreiniger$:^action:
11:
action ^tatortreiniger$:^action:
12:
action ^tatortreiniger$:^action:
13:
action ^tatortreiniger$:^action:
14:
action ^tatortreiniger$:^action:
15:
action ^tatortreiniger$:^action:
16:
action ^tatortreiniger$:^action:
17:
error ^tatortreiniger$:^error:
18:
error ^tatortreiniger$:^error:
19:
error ^tatortreiniger$:^error:
2:
action ^tatortreiniger$:^action:
20:
error ^tatortreiniger$:^error:
21:
error ^tatortreiniger$:^error:
22:
error ^tatortreiniger$:^error:
23:
error ^tatortreiniger$:^error:
24:
error ^tatortreiniger$:^error:
25:
error ^tatortreiniger$:^error:
26:
error ^tatortreiniger$:^error:
27:
state ^tatortreiniger$:^state:
3:
action ^tatortreiniger$:^action:
4:
action ^tatortreiniger$:^action:
5:
action ^tatortreiniger$:^action:
6:
action ^tatortreiniger$:^action:
7:
action ^tatortreiniger$:^action:
8:
action ^tatortreiniger$:^action:
9:
action ^tatortreiniger$:^action:
attr:
cmdState:
wait:
0:
0
5
1:
0
10:
0
11:
0
12:
0
13:
0
14:
0
15:
0
16:
0
17:
0
18:
0
19:
0
2:
0
20:
0
21:
0
22:
0
23:
0
24:
0
25:
0
26:
0
27:
0
3
3
3
3
3:
0
4:
0
5:
0
6:
0
7:
0
8:
0
9:
0
waitdel:
condition:
0 ::DOIF_time_once($hash,0,$wday) eq "Idle"
1 ::ReadingValDoIf($hash,'tatortreiniger','action') eq "0"
10 ::ReadingValDoIf($hash,'tatortreiniger','action') eq "9"
11 ::ReadingValDoIf($hash,'tatortreiniger','action') eq "10"
12 ::ReadingValDoIf($hash,'tatortreiniger','action') eq "11"
13 ::ReadingValDoIf($hash,'tatortreiniger','action') eq "12"
14 ::ReadingValDoIf($hash,'tatortreiniger','action') eq "13"
15 ::ReadingValDoIf($hash,'tatortreiniger','action') eq "14"
16 ::ReadingValDoIf($hash,'tatortreiniger','action') eq "15"
17 ::ReadingValDoIf($hash,'tatortreiniger','error') =~ "ui_alert_invalid"
18 ::ReadingValDoIf($hash,'tatortreiniger','error') =~ "ui_alert_dust_bin_full"
19 ::ReadingValDoIf($hash,'tatortreiniger','error') =~ "ui_alert_recovering_location"
2 ::ReadingValDoIf($hash,'tatortreiniger','action') eq "1"
20 ::ReadingValDoIf($hash,'tatortreiniger','error') =~ "ui_error_picked_up"
21 ::ReadingValDoIf($hash,'tatortreiniger','error') =~ "ui_error_brush_stuck"
22 ::ReadingValDoIf($hash,'tatortreiniger','error') =~ "ui_error_stuck"
23 ::ReadingValDoIf($hash,'tatortreiniger','error') =~ "ui_error_dust_bin_emptied"
24 ::ReadingValDoIf($hash,'tatortreiniger','error') =~ "ui_error_dust_bin_missing"
25 ::ReadingValDoIf($hash,'tatortreiniger','error') =~ "ui_error_navigation_falling"
26 ::ReadingValDoIf($hash,'tatortreiniger','error') =~ "ui_error_navigation_noprogress"
27 ::ReadingValDoIf($hash,'tatortreiniger','state') =~ "find robot"
3 ::ReadingValDoIf($hash,'tatortreiniger','action') eq "2"
4 ::ReadingValDoIf($hash,'tatortreiniger','action') eq "3"
5 ::ReadingValDoIf($hash,'tatortreiniger','action') eq "4"
6 ::ReadingValDoIf($hash,'tatortreiniger','action') eq "5"
7 ::ReadingValDoIf($hash,'tatortreiniger','action') eq "6"
8 ::ReadingValDoIf($hash,'tatortreiniger','action') eq "7"
9 ::ReadingValDoIf($hash,'tatortreiniger','action') eq "8"
do:
0:
0 say tatortreiniger - alles ok
1 set tatortreiniger reloadMaps
1:
0
10:
0 say tatortreiniger - orientierung im gange
11:
0 say tatortreiniger - i.e.c. test
12:
0 say tatortreiniger - karte wird gereinigt
13:
0 say tatortreiniger - erforsche haus. erstelle persistente karte
14:
0 say tatortreiniger - finde persistente karten id
15:
0 say tatortreiniger - erstelle und lade karte hoch
16:
0 say tatortreiniger - erforschung unterbrochen
17:
0
18:
0 say tatortreiniger - müllbehälter voll. bitte schnellstmöglich entleeren!
19:
0 say tatortreiniger - neue orientierung im gange
2:
0 say tatortreiniger - vollständiges haus wird gereinigt
20:
0 say tatortreiniger - kein bodenkontakt der räder. menschliche hilfe erforderlich!
21:
0 say tatortreiniger - bürste steckt fest. menschliche hilfe erforderlich!
22:
0 say tatortreiniger - roboter steckt fest. menschliche hilfe erforderlich!
23:
0 say tatortreiniger - mülleimer wurde geleert. dank dem helfenden menschen!
24:
0 say tatortreiniger - mülleimer nicht eingesetzt. menschliche hilfe erforderlich!
25:
0 say tatortreiniger - navigation fehlerhaft. unüberwindliches hinternis oder orientierungsverlust. menschliche hilfe erforderlich!
26:
0 say tatortreiniger - navigation fehlerhaft. unüberwindliches hinternis oder orientierungsverlust. menschliche hilfe erforderlich!
27:
0 say tatortreiniger - tatortreiniger ist nicht im netzwerk - versuche maßnamen!
1 set tatortreiniger statusRequest
2 set tatortreiniger findMe
3 set tatortreiniger statusRequest
4 say tatortreiniger - status [tatortreiniger:status]
28:
3:
0 say tatortreiniger - hausteile werden gereinigt
4:
0 say tatortreiniger - manuelle reinigung im gange
5:
0 say tatortreiniger - andocken
6:
0 say tatortreiniger - anwendermenü aktiv
7:
0 say tatortreiniger - reinigung unterbrochen
8:
0 say tatortreiniger - software update
9:
0 say tatortreiniger - kopiere logs
helper:
DEVFILTER ^global$|^tatortreiniger$
NOTIFYDEV global|tatortreiniger
globalinit 1
last_timer 1
sleeptimer -1
timerdev
timerevent
timerevents
timereventsState
triggerDev
localtime:
readings:
all tatortreiniger:action tatortreiniger:error tatortreiniger:state
time:
0 tatortreiniger:state
timeCond:
0 0
timer:
0 0
timers:
0 0
uiState:
uiTable:
Attributes:
alias tatortreiniger zeugs
do always
group reinigung
icon helper_doif
room umwelt
wait 0,5:
0:
0:
0:
0:
0:
0:
0:
0:
0:
0:
0:
0:
0:
0:
0:
0:
0:
0:
0:
0:
0:
0:
0:
0:
0:
0:
0,3,3,3,3
ich würde statt:
DEF ( ##01
[ tatortreiniger:state] eq "Idle" )
DEF ##01
([tatortreiniger:state] eq "Idle" )
definieren
gemacht - ändert aber leider nix am der meldung
mach mal ne doppelte eckige Klammer.
Indirekte Zeitzuweisung oder so ist das Stichwort.
Falls das nicht hilft bitte ein List vom Zeit Device.
könnte geholfen haben - also das versetzen der klammer.
nach dem löschen des readings co_c1 kommt zumindest beim aufruf meines 1. zweigs keine neue meldung und brav, wie es sein sollte:
Zitatwait_timer
19.01.2021 12:46:29 cmd_1_2 set_cmd_1
2021-01-19 12:46:19
warum versteh ich allerdings nicht - fast alle meine doifs hab ich so gebaut und keines regt sich über die ( vor dem ##01 auf. aber gut, wenns geht, is es mir egal *g*
zeitdevice? die zeiten kommen doch vom "wait" im doif oder?
Ich gehe davon aus, dass das Leerzeichen in deiner ursprünglichen Definition das Problem darstellt:
[ tatortreiniger:state]
ach du schande, das hat ich ja total verpennt ... wieder mal ein problem am sessel.
nachtrag: kanns auch ned wirklich sein, ich hab den space immer noch drinnen gehabt bis eben.
ich mach mal erledigt - scheinbar mag er die runde klammer wirklich nicht mehr vor dem aus kommentieren.
eventuell hab ich jetzt damit auch div. "komisches" verhalten gefunden. ich hab das in vielen doifs so gemacht und nie probleme gehabt.