Resident Modul steuern wenn Dummy device den Zustand ändert

Begonnen von kuhmelker, 12 April 2018, 11:00:11

Vorheriges Thema - Nächstes Thema

CoolTux


Internals:
   CFGFN     
   DEF        ([dummyDoorStatus:"^WEBDoorClosed:.Leon.Gaultier"]) () DOELSEIF ([dummyDoorStatus:"^WEBDoorClosed:.Maria.Magdalena"]) () DOELSEIF ([dummyDoorStatus:"^WEBDoorOpened:.Leon.Gaultier"]) () DOELSEIF ([dummyDoorStatus:"^WEBDoorOpened:.Maria.Magdalena"]) ()
   MODEL      FHEM
   NAME       DoorANDResident
   NR         140
   NTFY_ORDER 50-DoorANDResident
   STATE      cmd_2
   TYPE       DOIF
   READINGS:
     2018-04-20 18:43:56   Device          dummyDoorStatus
     2018-04-20 18:43:56   cmd             2
     2018-04-20 18:43:56   cmd_event       dummyDoorStatus
     2018-04-20 18:43:56   cmd_nr          2
     2018-04-20 18:43:56   e_dummyDoorStatus_events WEBDoorClosed: Maria Magdalena
     2018-04-20 18:43:27   mode            enabled
     2018-04-20 18:43:56   state           cmd_2
   Regex:
   condition:
     0          EventDoIf('dummyDoorStatus',$hash,'^WEBDoorClosed:.Leon.Gaultier',1)
     1          EventDoIf('dummyDoorStatus',$hash,'^WEBDoorClosed:.Maria.Magdalena',1)
     2          EventDoIf('dummyDoorStatus',$hash,'^WEBDoorOpened:.Leon.Gaultier',1)
     3          EventDoIf('dummyDoorStatus',$hash,'^WEBDoorOpened:.Maria.Magdalena',1)
   devices:
     0           dummyDoorStatus
     1           dummyDoorStatus
     2           dummyDoorStatus
     3           dummyDoorStatus
     all         dummyDoorStatus
   do:
     0:
       0         
     1:
       0         
     2:
       0         
     3:
       0         
     4:
   helper:
     DOIF_Readings_events
     event      WEBDoorClosed: Maria Magdalena
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   dummyDoorStatus
     timerevent WEBDoorClosed: Maria Magdalena
     triggerDev dummyDoorStatus
     DOIF_eventas:
       cmd_nr: 2
       cmd: 2
       cmd_event: dummyDoorStatus
       state: cmd_2
     timerevents:
       WEBDoorClosed: Maria Magdalena
     timereventsState:
       WEBDoorClosed: Maria Magdalena
     triggerEvents:
       WEBDoorClosed: Maria Magdalena
     triggerEventsState:
       WEBDoorClosed: Maria Magdalena
   internals:
   itimer:
   readings:
   trigger:
     all         dummyDoorStatus
   uiState:
   uiTable:
Attributes:
   do         always


Mach es erstmal so und schaue ob die CMDs korrekt sind. Danach kannst Du dann die Aktionen entsprechend in die () einsetzen. Bei mir klappt das auf jeden Fall so.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

kuhmelker

Wow. Du bist der Held! Jetzt wird cmd_1 bis cmd_4 ausgegeben. Ich werde die entsprechenden Aktionen für das Residents Modul morgen einbauen. Melde mich wieder ob es geklappt hat.

Damian

Nur als Tipp: den Ausführungsteil kann man weglassen:

DOIF ([dummyDoorStatus:"^WEBDoorClosed:.Leon.Gaultier"])
DOELSEIF ([dummyDoorStatus:"^WEBDoorClosed:.Maria.Magdalena"])
DOELSEIF ([dummyDoorStatus:"^WEBDoorOpened:.Leon.Gaultier"])
DOELSEIF ([dummyDoorStatus:"^WEBDoorOpened:.Maria.Magdalena"])
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

CoolTux

Damian, das Problem ist das ja bei Deinem Beispiel dann die set Befehle nicht ausgeführt werden oder? Oder meinst jetzt bei meinem Beispiel wo ich nur () gemacht habe? Die () hätte ich also weg lassen können, korrekt?


@kuhmelker
Wenn das dann funktioniert kann man das ganze mit etwas Perlcode im Ausführungsteil noch kürzen. Muss nur schauen wie man da mit dem Event am besten um geht.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

kuhmelker

Es funktioniert!

Ich habe jetzt nur noch den Code:

set rr_UserX absent bzw.
set rr_UserX home

in die Formel gepackt. Damit ist das DOIF zwar etwas lang geworden (8 Personen) aber es läuft einwandfrei.

Danke allen die geholfen haben (speziell CoolTux).