Autor Thema: DOIF, set cmd_2  (Gelesen 245 mal)

Offline trs

  • Full Member
  • ***
  • Beiträge: 169
DOIF, set cmd_2
« am: 16 März 2021, 09:34:53 »
Moin,

ich hänge bei folgendem DOIF fest:

Internals:
   DEF        (([Schalter1_Garage_T:"^power1:.1$"])
and ([Bewegung_Garage_T_neu:mode]eq"enabled") and [?$SELF] eq "off")
((set Bewegung_Garage_T_neu disable) (set Schalter1_Garage_T on))
((set Bewegung_Garage_T_neu enable) (set Schalter1_Garage_T off)(set $SELF cmd_2))
DOELSEIF 
(([Schalter1_Garage_T:"^power1:.1$"]) and ([?$SELF] eq "on"))
((set Bewegung_Garage_T_neu enable) (set Schalter1_Garage_T off))
   FUUID      604fa478-f33f-0880-d6e6-4efba70bb5bb6a6b
   MODEL      FHEM
   NAME       Licht_Garage_T_dauer
   NOTIFYDEV  Schalter1_Garage_T,global,Bewegung_Garage_T_neu
   NR         358
   NTFY_ORDER 50-Licht_Garage_T_dauer
   STATE      off
   TYPE       DOIF
   VERSION    23925 2021-03-11 14:27:39
   READINGS:
     2021-03-16 09:27:38   Device          Schalter1_Garage_T
     2021-03-16 09:27:38   cmd             2
     2021-03-16 09:27:38   cmd_event       set_cmd_2
     2021-03-16 09:27:38   cmd_nr          2
     2021-03-16 09:27:38   e_Bewegung_Garage_T_neu_mode enabled
     2021-03-16 09:27:38   e_Schalter1_Garage_T_events power1: off
     2021-03-16 09:26:59   mode            enabled
     2021-03-16 09:27:38   state           off
     2021-03-16 09:27:14   wait_timer      no timer
   Regex:
     accu:
     cond:
       Bewegung_Garage_T_neu:
         0:
           mode       ^Bewegung_Garage_T_neu$:^mode:
         1:
       Schalter1_Garage_T:
         0:
           &STATE     ^Schalter1_Garage_T$
         1:
           &STATE     ^Schalter1_Garage_T$
   attr:
     cmdState:
       0:
         on
       1:
         off
     wait:
       0:
         0
         10
         0
     waitdel:
   condition:
     0          (::EventDoIf('Schalter1_Garage_T',$hash,'^power1:.1$',1))  and (::ReadingValDoIf($hash,'Bewegung_Garage_T_neu','mode')eq"enabled") and ::InternalDoIf($hash,'Licht_Garage_T_dauer','STATE') eq "off"
     1          (::EventDoIf('Schalter1_Garage_T',$hash,'^power1:.1$',1)) and (::InternalDoIf($hash,'Licht_Garage_T_dauer','STATE') eq "on")
   do:
     0:
       0          (set Bewegung_Garage_T_neu disable) (set Schalter1_Garage_T on)
       1          (set Bewegung_Garage_T_neu enable) (set Schalter1_Garage_T off)(set Licht_Garage_T_dauer cmd_2)
     1:
       0          (set Bewegung_Garage_T_neu enable) (set Schalter1_Garage_T off)
     2:
   helper:
     DEVFILTER  ^global$|^Bewegung_Garage_T_neu$|^Schalter1_Garage_T$
     NOTIFYDEV  global|Bewegung_Garage_T_neu|Schalter1_Garage_T
     event      power1: off
     globalinit 1
     last_timer 0
     sleepdevice set_on_cmd_1
     sleepsubtimer -1
     sleeptimer -1
     triggerDev Schalter1_Garage_T
     triggerEvents:
       power1: off
     triggerEventsState:
       power1: off
   internals:
     all         Licht_Garage_T_dauer:STATE
   readings:
     all         Bewegung_Garage_T_neu:mode
   trigger:
     all         Schalter1_Garage_T
   uiState:
   uiTable:
Attributes:
   cmdState   on|off
   do         resetwait
   room       Garage T.
   setList    on off
   wait       0,10,0
   webCmd     on:off

Soll nach Aktivierung am Ende mit "(set $SELF cmd_2)" auf cmd 2 springen, geht aber nicht. Wo ist mein Denkfehler?

TRS



Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 8823
Antw:DOIF, set cmd_2
« Antwort #1 am: 16 März 2021, 09:39:11 »
Den Zustand des Moduls selbst per set zu setzen ist keine gute Idee - das ist dem Modul selbst vorbehalten. Am Ende der Ausführung setzt das Modul seinen Zustand und überschreibt das, was der User selbst gesetzt hat.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

 

decade-submarginal