Hauptmenü

[Gelöst]Doif Bedienung

Begonnen von Esjay, 24 Januar 2018, 20:36:23

Vorheriges Thema - Nächstes Thema

Esjay

Hallo zusammen,
ich versuche anhand des Beispiels aus der Commandref etwas umzusetzen.

ZitatAnwendungsbeispiel: Ausführung von Befehlen abhängig einer Auswahl ohne Zusatzreading

define di_web DOIF ([$SELF:"myInput first"]) (do something) DOELSEIF ([$SELF:"myInput second"]) (do something else)

attr di_web setList myInput:first,second

Hier meine Umsetzung:

defmod RemoteKamera DOIF ([$SELF:"Kamera:an"])(set IpCam3dDrucker sendIntent IpCamStart)\
DOELSEIF\
([$SELF:"Kamera:aus"])(set IpCam3dDrucker sendIntent IpCamStop)\
DOELSEIF\
([$SELF:"Led:an"])(set IpCam3dDrucker sendIntent IpCamLedAn)\
DOELSEIF\
([$SELF:"Led:aus"])(set IpCam3dDrucker sendIntent IpCamLedAus)
attr RemoteKamera cmdState ein|aus|do
attr RemoteKamera readingList Kamera Led Fokus
attr RemoteKamera setList Kamera:an,aus Fokus:do Led:an,aus
attr RemoteKamera webCmd Kamera:Led:Fokus
attr RemoteKamera webCmdLabel Kamera:Led:Fokus


list

Internals:
   CFGFN     
   DEF        ([$SELF:"Kamera:an"])(set IpCam3dDrucker sendIntent IpCamStart)
DOELSEIF
([$SELF:"Kamera:aus"])(set IpCam3dDrucker sendIntent IpCamStop)
DOELSEIF
([$SELF:"Led:an"])(set IpCam3dDrucker sendIntent IpCamLedAn)
DOELSEIF
([$SELF:"Led:aus"])(set IpCam3dDrucker sendIntent IpCamLedAus)
   NAME       RemoteKamera
   NR         169936
   NTFY_ORDER 50-RemoteKamera
   STATE      initialized
   TYPE       DOIF
   READINGS:
     2018-01-24 20:28:20   Device          RemoteKamera
     2018-01-24 20:22:53   Fokus           do
     2018-01-24 20:28:20   Kamera          aus
     2018-01-24 20:20:23   Led             aus
     2018-01-24 20:27:07   cmd             0
     2018-01-24 20:28:20   e_RemoteKamera_events Kamera: aus,Device: RemoteKamera,e_RemoteKamera_events: Kamera: aus,Device: RemoteKamera
     2018-01-24 20:27:07   mode            enabled
     2018-01-24 20:27:07   state           initialized
   Regex:
   condition:
     0          EventDoIf('RemoteKamera',$hash,'Kamera:an',1)
     1          EventDoIf('RemoteKamera',$hash,'Kamera:aus',1)
     2          EventDoIf('RemoteKamera',$hash,'Led:an',1)
     3          EventDoIf('RemoteKamera',$hash,'Led:aus',1)
   devices:
     0           RemoteKamera
     1           RemoteKamera
     2           RemoteKamera
     3           RemoteKamera
     all         RemoteKamera
   do:
     0:
       0          set IpCam3dDrucker sendIntent IpCamStart
     1:
       0          set IpCam3dDrucker sendIntent IpCamStop
     2:
       0          set IpCam3dDrucker sendIntent IpCamLedAn
     3:
       0          set IpCam3dDrucker sendIntent IpCamLedAus
     4:
   helper:
     DOIF_Readings_events
     DOIF_eventas
     event      Kamera: aus
     globalinit 1
     last_timer 0
     sleeptimer -1
     triggerDev RemoteKamera
     triggerEvents:
       Kamera: aus
       Device: RemoteKamera
       e_RemoteKamera_events: Kamera: aus,Device: RemoteKamera
       e_RemoteKamera_events: Kamera: aus,Device: RemoteKamera,e_RemoteKamera_events: Kamera: aus,Device: RemoteKamera
     triggerEventsState:
       Kamera: aus
       Device: RemoteKamera
       e_RemoteKamera_events: Kamera: aus,Device: RemoteKamera
       e_RemoteKamera_events: Kamera: aus,Device: RemoteKamera,e_RemoteKamera_events: Kamera: aus,Device: RemoteKamera
   internals:
   itimer:
   readings:
   trigger:
     all         RemoteKamera
   uiState:
   uiTable:
Attributes:
   cmdState   ein|aus|do
   readingList Kamera Led Fokus
   setList    Kamera:an,aus Fokus:do Led:an,aus
   webCmd     Kamera:Led:Fokus
   webCmdLabel Kamera:Led:Fokus


Das haut aber nicht hin. Ich würde jetzt eigentlich erwarten, dass je nach Auswahl der passende cmd ausgeführt wird.

Sieht jemand warum das nicht der fall ist, und falls ja, warum?

Grüße

Damian

Wenn du die Events anschaust, dann wirst du feststellen, dass das Reading und das Ereingnis nicht nur durch einen Doppelpunkt, sondern auch durch ein Leerzeichen getrennt sind.

daher z. B.

statt

DOIF ([$SELF:"Kamera:an"])

DOIF ([$SELF:"Kamera: an"])

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

Esjay

Ich danke dir!
Sinne sind wieder geschärft.

Grüße