Globale Variable erstellen?

Begonnen von chq, 27 Juli 2018, 13:08:12

Vorheriges Thema - Nächstes Thema

chq

#30
Guten Morgen,

ich habe festgestellt, dass ein anderes Problem bei meinem DOIF dafür sorgt, dass es noch nicht funktioniert.

DOELSEIF ([$SELF:doifState] eq "backupRunning") wird offensichtlich nie wahr, obwohl ich im Kommando zuvor (setreading $SELF doifState backupRunning) angegeben habe.

Das DOIF bleibt somit immer bei cmd_nr 2, cmd_seqnr 3 hängen, da cmd_nr 3 nie erreicht wird.

wait wird zwar (u.a. mit einer Angabe von 28800 Sekunden) verwendet, ich kann aber trotzdem keinen Fehler entdecken.

Scheinbar wird nicht geprüft, ob doifState die Zeichenkette backupRunning enthält; aber warum?

Hier mal ein list:

Internals:
   DEF        ([14:59|Do]) (setreading $SELF doifState reset) ## Reset

DOELSEIF ([14:00-24:00|Do] and [Bewohner:"home"]) ## Zwischen 14-24 Uhr
(set nasBackupHD on) ## NAS Backup HD einschalten
(set doif_NAS disable) ## NAS-DOIF deaktivieren
(setreading $SELF doifState backupRunning) ## Zustand ändern

DOELSEIF ([$SELF:doifState] eq "backupRunning")
(set nasBackupHD off) ## NAS Backup HD ausschalten
(set doif_NAS enable) ## NAS-DOIF aktivieren
(setreading $SELF doifState hd_finished) ## Zustand ändern

DOELSEIF ([15:00|Fr]) (setreading $SELF doifState idle) ## Auf nächstes Backup warten
   MODEL      FHEM
   NAME       doif_nasBackupHD
   NR         58
   NTFY_ORDER 50-doif_nasBackupHD
   STATE      backupRunning
   TYPE       DOIF
   READINGS:
     2018-09-28 05:45:34   Device          Bewohner
     2018-09-27 16:04:43   cmd             2.3
     2018-09-27 16:04:43   cmd_event       Bewohner
     2018-09-27 16:04:43   cmd_nr          2
     2018-09-27 16:04:43   cmd_seqnr       3
     2018-09-27 16:04:43   doifState       backupRunning
     2018-09-28 05:45:34   e_Bewohner_events home
     2018-09-27 08:48:24   mode            enabled
     2018-09-27 16:04:43   state           backupRunning
     2018-09-27 14:59:00   timer_01_c01    28.09.2018 14:59:00|Do
     2018-09-28 00:00:00   timer_02_c02    28.09.2018 14:00:00|Do
     2018-09-28 00:00:00   timer_03_c02    29.09.2018 00:00:00|Do
     2018-09-27 15:00:00   timer_04_c04    28.09.2018 15:00:00|Fr
     2018-09-27 16:04:43   wait_timer      no timer
   Regex:
   attr:
     cmdState:
       0:
         reset
       1:
         backupRunning
       2:
         backupFinished
       3:
         idle
     wait:
       0:
         0
       1:
         240
         1
         1
       2:
         28800
         1
         1
       3:
         0
     waitdel:
   condition:
     0          DOIF_time_once($hash,0,$wday,"Do")
     1          DOIF_time($hash,1,2,$wday,$hms,"Do") and EventDoIf('Bewohner',$hash,'home',1)
     2          ReadingValDoIf($hash,'doif_nasBackupHD','doifState') eq "backupRunning"
     3          DOIF_time_once($hash,3,$wday,"Fr")
   days:
     0          Do
     1          Do
     2          Do
     3          Fr
   devices:
     1           Bewohner
     2           doif_nasBackupHD
     all         Bewohner doif_nasBackupHD
   do:
     0:
       0          setreading doif_nasBackupHD doifState reset
     1:
       0          set nasBackupHD on
       1          set doif_NAS disable
       2          setreading doif_nasBackupHD doifState backupRunning
     2:
       0          set nasBackupHD off
       1          set doif_NAS enable
       2          setreading doif_nasBackupHD doifState hd_finished
     3:
       0          setreading doif_nasBackupHD doifState idle
     4:
   helper:
     event      home
     globalinit 1
     last_timer 4
     sleepdevice Bewohner
     sleepsubtimer -1
     sleeptimer -1
     timerdev   Bewohner
     timerevent home
     triggerDev Bewohner
     DOIF_eventas:
       cmd_nr: 2
       cmd_seqnr: 3
       cmd_event: Bewohner
       state: backupRunning
     timerevents:
       home
     timereventsState:
       state: home
     triggerEvents:
       home
     triggerEventsState:
       state: home
   internals:
   interval:
     1          -1
     2          1
   intervalfunc:
   intervaltimer:
   itimer:
   localtime:
     0          1538139540
     1          1538136000
     2          1538172000
     3          1538139600
   readings:
     2           doif_nasBackupHD:doifState
     all         doif_nasBackupHD:doifState
   realtime:
     0          14:59:00
     1          14:00:00
     2          00:00:00
     3          15:00:00
   time:
     0          14:59:00
     1          14:00:00
     2          24:00:00
     3          15:00:00
   timeCond:
     0          0
     1          1
     2          1
     3          3
   timer:
     0          0
     1          0
     2          0
     3          0
   timers:
     0           0
     1           1  2
     3           3
   trigger:
     all         Bewohner
   triggertime:
     1538136000:
       localtime  1538136000
       hash:
     1538139540:
       localtime  1538139540
       hash:
     1538139600:
       localtime  1538139600
       hash:
     1538172000:
       localtime  1538172000
       hash:
   uiState:
   uiTable:
Attributes:
   alias      doif_NAS Backup HD
   cmdState   reset|backupRunning|backupFinished|idle
   wait       0:240,1,1:28800,1,1:0


Gruß Chris

Edit: Ich hab da was gefunden.. https://fhem.de/commandref_DE.html#DOIF_selftrigger Werde das Ganze nun mit selftrigger all probieren.
So einfach wie möglich, so kompliziert wie nötig