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
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.
Ich danke dir!
Sinne sind wieder geschärft.
Grüße