FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: TomLee am 26 November 2017, 21:05:00

Titel: [gelöst] Hilfe bei einem DOIF im DOELSE Zweig
Beitrag von: TomLee am 26 November 2017, 21:05:00
Hallo,

kann mir wer bitte bei meinem DOIF weiterhelfen.
Es klappt alles soweit, doch der DOELSE Teil möchte mir nicht gelingen.

Die folgende DEF funktioniert soweit :


([Callmonitor1:"^event:.ring$"]) ({my $extNr = ReadingsVal("Callmonitor1", "external_number", 0);;
if($extNr eq "01234567"){fhem ("set EG_Echo_Kueche volume 70;set EG_Echo_Wohnzimmer volume 70;set EG_Echo_Wohnzimmer volume 70;set EG_Echo_Kueche track 89021cec-5462-4ae4-8e9c-1234567;set EG_Echo_Wohnzimmer track 89021cec-5462-4ae4-8e9c-1234567a;set ls_Mi_Wecklicht save Tron;set Mi_Wecklicht hsv 120,100,100;set Mi_Wecklicht blink 3 1;sleep 6;set ls_Mi_Wecklicht scene Tron;set ls_Mi_Wecklicht remove Tron;set EG_Echo_Kueche volume 40;set EG_Echo_Wohnzimmer volume 40")};;
if($extNr eq "0987654"){fhem ("set EG_Echo_Kueche volume 70;set EG_Echo_Wohnzimmer volume 70;set EG_Echo_Kueche track f5fc4ef4-c52c-4335-bc56-1234567;set EG_Echo_Wohnzimmer track f5fc4ef4-c52c-4335-bc56-1234567;set ls_Mi_Wecklicht save Tron;set Mi_Wecklicht hsv 0,100,100;set Mi_Wecklicht blink 3 1;sleep 6;set ls_Mi_Wecklicht scene Tron;set ls_Mi_Wecklicht remove Tron;set EG_Echo_Kueche volume 40;set EG_Echo_Wohnzimmer volume 40")}})



Jetzt möchte ich um den DOELSE Zweig erweitern mit folgenden  Befehlen:

set ls_Mi_Wecklicht save Tron;set Mi_Wecklicht hsv 240,100,100;set Mi_Wecklicht blink 3 1;sleep 6;set ls_Mi_Wecklicht scene Tron;set ls_Mi_Wecklicht remove Tron

Scheitere aber an jeder bisher versuchten Variante, weder

DOELSE {fhem ("set ls_Mi_Wecklicht save Tron;set Mi_Wecklicht hsv 240,100,100;set Mi_Wecklicht blink 3 1;sleep 6;set ls_Mi_Wecklicht scene Tron;set ls_Mi_Wecklicht remove Tron")}

noch

DOELSE (set ls_Mi_Wecklicht save Tron,(set Mi_Wecklicht hsv 240,100,100),set Mi_Wecklicht blink 3 1,sleep 6,set ls_Mi_Wecklicht scene Tron,set ls_Mi_Wecklicht remove Tron)

oder

DOELSE (set ls_Mi_Wecklicht save Tron;(set Mi_Wecklicht hsv 240,100,100);set Mi_Wecklicht blink 3 1;sleep 6;set ls_Mi_Wecklicht scene Tron;set ls_Mi_Wecklicht remove Tron)

oder

noch andere Varianten in Anführungszeichen, doppelte Kommas, doppelte Semikolen,  doppelte Klammern bei hsv, ich bekomms einfach nicht hin.

Es gibt immer Probleme mit blockierendem Fhem oder "After sleep: no such scene: Tron" im Logo.

Bin offen für jeden Rat.
Titel: Antw:Hilfe bei einem DOIF im DOELSE Zweig
Beitrag von: moskito am 26 November 2017, 21:24:25
Ein Ansatz wäre evtl. jedes set Kommando in einzelne runde Klammern zu setzen und mit dem wait Attribut das sleep zu ersetzen.
Zu Syntaxzwecken mit runden Klammern bei DOIF zu arbeiten ist nicht zielführend, da es diese selbst verwendet.
Schau noch mal hier: https://fhem.de/commandref_DE.html#DOIF_wait (https://fhem.de/commandref_DE.html#DOIF_wait)

Gruß
Danny
Titel: Antw:Hilfe bei einem DOIF im DOELSE Zweig
Beitrag von: TomLee am 26 November 2017, 22:22:35
OK. Super. DANKE.

Es ist ein:

DOELSE (set ls_Mi_Wecklicht save Tron)((set Mi_Wecklicht hsv 240,100,100))(set Mi_Wecklicht blink 3 1)(set ls_Mi_Wecklicht scene Tron)(set ls_Mi_Wecklicht remove Tron)

mit

attr (Doif-Name) wait 0,0:0,0,0,6,0

Hab aber keine Ahnung wie man einen Thread auf gelöst setzt. Einfach vor den Titel schreiben?




Titel: Antw:Hilfe bei einem DOIF im DOELSE Zweig
Beitrag von: Damian am 26 November 2017, 22:27:54
Zitat von: TomLee am 26 November 2017, 22:22:35
OK. Super. DANKE.

Es ist ein:

DOELSE (set ls_Mi_Wecklicht save Tron)((set Mi_Wecklicht hsv 240,100,100))(set Mi_Wecklicht blink 3 1)(set ls_Mi_Wecklicht scene Tron)(set ls_Mi_Wecklicht remove Tron)

mit

attr (Doif-Name) wait 0,0:0,0,0,6,0

Hab aber keine Ahnung wie man einen Thread auf gelöst setzt. Einfach vor den Titel schreiben?

Besser:

DOELSE (set ls_Mi_Wecklicht save Tron,(set Mi_Wecklicht hsv 240,100,100),set Mi_Wecklicht blink 3 1)(set ls_Mi_Wecklicht scene Tron,set ls_Mi_Wecklicht remove Tron)
mit
attr 0:0,6

wenn du es im ersten Fall (DOIF) genauso zusammenfasst, weil du dort keine Verzögerung brauchst. Damit produzierst du nebenbei weniger Events und belastest damit dein System weniger stark.
Titel: Antw:Hilfe bei einem DOIF im DOELSE Zweig
Beitrag von: TomLee am 26 November 2017, 22:30:57
Ebenfalls dickes Danke. Hab's verstanden.
Titel: Antw:Hilfe bei einem DOIF im DOELSE Zweig
Beitrag von: nils_ am 27 November 2017, 15:30:25
Zitat von: TomLee am 26 November 2017, 22:22:35
Hab aber keine Ahnung wie man einen Thread auf gelöst setzt. Einfach vor den Titel schreiben?

jo, genau so :)
Titel: Antw:[gelöst] Hilfe bei einem DOIF im DOELSE Zweig
Beitrag von: TomLee am 03 Dezember 2017, 23:56:36
Hab mich heut wieder mit beschäftigt, vlt. war's für den ein oder den anderen klar, mir nicht.
Beim testen hatte ich die AWS (auf die Nummer mit der ich zum testen anrufe und keine der Nummern aus dem ersten Zweig ist) eingeschaltet. Folglich sah es so aus das alles klappt.

Der Ablauf ist:
Anruf kommt rein,  es komm zu event ring ( denn ich ja erwarte), da ich mich selbst auf dem Handy anrufe ist besetzt, ich leg auf es kommt zu event disconnect und somit zur Erfüllung des DOELSE-Zweig.

Das war auch meine Frage, stell ich jetzt fest. Aber nicht mein Vorhaben ☺.

Übrigens hab von MilightBridge auf Wifilight umgestellt daher weniger Code und ein neuer Befehl, das wait wird jetzt gar nicht mehr benötigt

Mein Ziel wäre:

Ist der ankommende Anruf keiner der beiden

([Callmonitor1:"^event:.ring$"]) ({my $extNr = ReadingsVal("Callmonitor1", "external_number", 0);;
if($extNr eq "0123456789"){fhem ("set Sonos_Wohnzimmer_PLAY3 VolumeSave 5;set Sonos_Wohnzimmer_PLAY3 PlayURITemp \\\\192.168.188.26\\SambaPi\\Toene\\Ticktac.mp3 25;set WandtabletFlurKueche volumeNotification 7;set WandtabletFlurKueche notifySndFile Ticktac.mp3;set EG_Echo_Kueche volume 70;set EG_Echo_Wohnzimmer volume 70;set EG_Echo_Kueche track 89021cec-5462-4ae4-8e9c-01234567;set EG_Echo_Wohnzimmer track 89021cec-5462-4ae4-8e9c-01234567;set EG_Echo_Kueche volume 40;set EG_Echo_Wohnzimmer volume 40");blink("Mi_Wecklicht","00FF00",3)};;
if($extNr eq "92876543210"){fhem ("set Sonos_Wohnzimmer_PLAY3 VolumeSave 5;set Sonos_Wohnzimmer_PLAY3 PlayURITemp \\\\192.168.188.26\\SambaPi\\Toene\\Ticktac.mp3 25;set WandtabletFlurKueche volumeNotification 7;set WandtabletFlurKueche notifySndFile Ticktac.mp3;set EG_Echo_Kueche volume 70;set EG_Echo_Wohnzimmer volume 70;set EG_Echo_Kueche track f5fc4ef4-c52c-4335-bc56-01234567;set EG_Echo_Wohnzimmer track f5fc4ef4-c52c-4335-bc56-01234567;set EG_Echo_Kueche volume 40;set EG_Echo_Wohnzimmer volume 40");blink("Mi_Wecklicht","8C00FF",3)};;})


dann

set Sonos_Wohnzimmer_PLAY3 VolumeSave 5,set Sonos_Wohnzimmer_PLAY3 PlayURITemp \\192.168.188.26\SambaPi\Toene\Ticktac.mp3 25,set WandtabletFlurKueche volumeNotification 7,set WandtabletFlurKueche notifySndFile Ticktac.mp3)({blink("Mi_Wecklicht","FF0000",3)

Mein weiterer Ansatz war jetzt ein:

DOELSEIF ([Callmonitor1:"^event:.ring$"]) (set Sonos_Wohnzimmer_PLAY3 VolumeSave 5,set Sonos_Wohnzimmer_PLAY3 PlayURITemp \\192.168.188.26\SambaPi\Toene\Ticktac.mp3 25,set WandtabletFlurKueche volumeNotification 7,set WandtabletFlurKueche notifySndFile Ticktac.mp3;",blink("Mi_Wecklicht","FF0000",3))

Klappt aber auch nicht.

Titel: Antw:[gelöst] Hilfe bei einem DOIF im DOELSE Zweig
Beitrag von: TomLee am 06 Dezember 2017, 15:52:36
Ist eigentlich ganz einfach ..., so  klappt's jetzt:

defmod doif_Callmonitor1_ring DOIF (["^Callmonitor1:^event:.ring$"] and ["^Callmonitor1:^external_number:.0123456789$"])({blink("Mi_Wecklicht","00FF00",3)},set Sonos_Wohnzimmer_PLAY3 VolumeSave 5,set Sonos_Wohnzimmer_PLAY3 PlayURITemp \\192.168.188.26\SambaPi\Toene\Ticktac.mp3 20,set WandtabletFlurKueche volumeNotification 7,set WandtabletFlurKueche notifySndFile Ticktac.mp3,set EG_Echo_Kueche volume 70,set EG_Echo_Wohnzimmer volume 70,set EG_Echo_Kueche track 89021cec-5462-4ae4-8e9c,set EG_Echo_Wohnzimmer track 89021cec-5462-4ae4)(set EG_Echo_Kueche volume 40,set EG_Echo_Wohnzimmer volume 40)\
DOELSEIF (["^Callmonitor1:^event:.ring$"] and ["^Callmonitor1:^external_number:.0987654321$"])({blink("Mi_Wecklicht","AA00FF",3)},set Sonos_Wohnzimmer_PLAY3 VolumeSave 5,set Sonos_Wohnzimmer_PLAY3 PlayURITemp \\192.168.188.26\SambaPi\Toene\Ticktac.mp3 20,set WandtabletFlurKueche volumeNotification 7,set WandtabletFlurKueche notifySndFile Ticktac.mp3,set EG_Echo_Kueche volume 70,set EG_Echo_Wohnzimmer volume 70,set EG_Echo_Kueche track f5fc4ef4-c52c-4335-bc56-7ee0ff71eca2,set EG_Echo_Wohnzimmer track f5fc4ef4-c52c-4335-bc56,set EG_Echo_Wohnzimmer track 89021cec-5462-4ae4-8e9c)(set EG_Echo_Kueche volume 40,set EG_Echo_Wohnzimmer volume 40)\
DOELSEIF (["^Callmonitor1:^event:.ring$"])({blink("Mi_Wecklicht","FF0000",3)},set Sonos_Wohnzimmer_PLAY3 VolumeSave 5,set Sonos_Wohnzimmer_PLAY3 PlayURITemp \\192.168.188.26\SambaPi\Toene\Ticktac.mp3 20,set WandtabletFlurKueche volumeNotification 7,set WandtabletFlurKueche notifySndFile Ticktac.mp3)
attr doif_Callmonitor1_ring do always
attr doif_Callmonitor1_ring room Echo
attr doif_Callmonitor1_ring wait 0,6:0,6:0

setstate doif_Callmonitor1_ring cmd_2
setstate doif_Callmonitor1_ring 2017-12-06 16:12:21 Device Callmonitor1
setstate doif_Callmonitor1_ring 2017-12-06 16:12:25 cmd 2.2
setstate doif_Callmonitor1_ring 2017-12-06 16:12:25 cmd_event Callmonitor1
setstate doif_Callmonitor1_ring 2017-12-06 16:12:25 cmd_nr 2
setstate doif_Callmonitor1_ring 2017-12-06 16:12:25 cmd_seqnr 2
setstate doif_Callmonitor1_ring 2017-12-06 16:12:19 matched_event_c1_1 event: ring
setstate doif_Callmonitor1_ring 2017-12-06 16:12:19 matched_event_c2_1 event: ring
setstate doif_Callmonitor1_ring 2017-12-06 16:12:21 matched_event_c2_2 external_number: 0987654321
setstate doif_Callmonitor1_ring 2017-12-06 16:12:25 state cmd_2
setstate doif_Callmonitor1_ring 2017-12-06 16:12:25 wait_timer no timer