[gelöst] Hilfe bei einem DOIF im DOELSE Zweig

Begonnen von TomLee, 26 November 2017, 21:05:00

Vorheriges Thema - Nächstes Thema

TomLee

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.

moskito

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

Gruß
Danny
FHEM auf Intel NUC/Proxmox & Debian 12 + HM-CFG-USB + zigbee2mqtt + Zwave + Enocean

TomLee

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?





Damian

#3
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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

TomLee

Ebenfalls dickes Danke. Hab's verstanden.

nils_

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 :)
viele Wege in FHEM es gibt!

TomLee

#6
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.


TomLee

#7
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