[erledigt] was mach ich bei dem doif falsch?

Begonnen von the ratman, 19 Januar 2021, 09:16:14

Vorheriges Thema - Nächstes Thema

the ratman

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
→do↑p!dnʇs↓shit←

Damian

ich würde statt:

   DEF        ( ##01
[ tatortreiniger:state] eq "Idle" ) 


   DEF        ##01
([tatortreiniger:state] eq "Idle" )

definieren
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

the ratman

#2
gemacht - ändert aber leider nix am der meldung
→do↑p!dnʇs↓shit←

Frank_Huber

mach mal ne doppelte eckige Klammer.
Indirekte Zeitzuweisung oder so ist das Stichwort.

Falls das nicht hilft bitte ein List vom Zeit Device.

the ratman

#4
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?
→do↑p!dnʇs↓shit←

Damian

Ich gehe davon aus, dass das Leerzeichen in deiner ursprünglichen Definition das Problem darstellt:

[ tatortreiniger:state]

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

the ratman

#6
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.
→do↑p!dnʇs↓shit←