FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: gent am 01 März 2016, 22:13:50

Titel: Brauche Hilfe bei Umstellung von notify auf DOIF
Beitrag von: gent am 01 März 2016, 22:13:50
Hallo,

könnte mir jemand bitte beim Umbau von 2 notify auf DOIF helfen, sofern das was ich brauche, überhaupt damit möglich ist?

Folgende Ausgangslage habe ich hier: Ich betreibe einen Sat Receiver und ein FireTV an einem OnkyoReceiver und einem Harmony Hub. Alle Geräte kann ich mit dem Harmony Modul über die activities steuern. Der Sat-Receiver benötigt mehr Lautstärke am Onkyo, als das FireTV. Leider kann man mit der Harmony keine absolute Lautstärke angeben. Deswegen habe ich noch ein ONKYO_AVR für den Receiver definiert, mit der ich dann die absolute Lautstärke beim Start der jeweiligen Aktivität (Fernsehen / FireTV) angeben kann.

Dazu habe ich folgende notifies definiert:

StartingFernsehen SZ.Harmony.currentActivity:.starting.Fernsehen set OnkyoReceiver volume 30
und
StartingFireTV SZ.Harmony.currentActivity:.starting.Fire.TV.sehen set OnkyoReceiver volume 10

Das funktioniert eigentlich ganz gut, aber leider nicht dann, wenn noch alle Geräte aus sind. Der Onkyo wird bei der Activity ja mit gestartet und benötigt etwas Zeit, bis er in fhem mit seinem Modul steuerbar ist. Im Logfile steht dann z.B.:

StartingFernsehen return value: Device needs to be ON to adjust volume.

Das ist dann ein Problem, wenn ich den Receiver im "Fernseh-Mode" betreibe, diesen dann ausschalte (merkt sich dann die letzte Lautstärke z.B. 30) und dann die Aktivität FireTV starte-> Regelmäßig Ärger mit den bereits schlafenden Mitbewohnern!

Könnte man (und wenn ja wie), die oben stehenden notifies auf DOIF ändern, so dass die Lautstärkeänderung erst dann passiert, wenn auch das Reading "power" des ONKYO_AVR Moduls auf "on" geht (bzw. "on" ist)?

Jegliche Hilfe ist sehr willkommen!

Viele Grüße vom gent
Titel: Antw:Brauche Hilfe bei Umstellung von notify auf DOIF
Beitrag von: Per am 02 März 2016, 10:14:23
Einfach beide DO(ELSE)IF-Zweige mit "and [ONKYO_AVR:Power:on]" (mit angepasster Syntax) ergänzen.
Falls das nicht geht, probier "and [ONKYO_AVR:Power] and [ONKYO_AVR:Power] eq "on"". Ich habe noch nicht intus, wann welche Variante sein soll :-\.
Titel: Antw:Brauche Hilfe bei Umstellung von notify auf DOIF
Beitrag von: gent am 02 März 2016, 20:54:39
Hallo Per,

erstmal Danke für die Antwort. Leider klappt es mit dieser DEF nicht:

([SZ.Harmony.currentActivity:.starting.Fernsehen] and [OnkyoReceiver:power] eq "on") (set OnkyoReceiver volume 20)
DOELSEIF
([SZ.Harmony.currentActivity:.starting.Fire.TV.sehen] and [OnkyoReceiver:power] eq "on") (set OnkyoReceiver volume 10)

Auch die Variante

([SZ.Harmony.currentActivity:.starting.Fernsehen] and [OnkyoReceiver:power] and [OnkyoReceiver:power] eq "on") (set OnkyoReceiver volume 20)
DOELSEIF
([SZ.Harmony.currentActivity:.starting.Fire.TV.sehen] and [OnkyoReceiver:power] and [OnkyoReceiver:power] eq "on") (set OnkyoReceiver volume 10)

klappt nicht.

In beiden Fällen geht noch nicht einmal das, was beim notify schon ging, wenn der Receiver "on" war.

Die beiden "alten" notifies habe ich vor dem Test mal disabled, damit da nix durcheinander kommt.

Irgendwie ist mir völlig unklar, warum das nicht geht. Die Logik ist klar, aber das DOIF macht einfach nix...

Ratlose Grüße vom gent
Titel: Antw:Brauche Hilfe bei Umstellung von notify auf DOIF
Beitrag von: Per am 02 März 2016, 23:44:48
Was sagt er denn zu den einzelnen Zwischenergebnissen?
Titel: Antw:Brauche Hilfe bei Umstellung von notify auf DOIF
Beitrag von: Ellert am 03 März 2016, 08:58:09
Ich kenne Harmony nicht.

Wie lautet <devicename> und <readingsname> ?
Welchen Inhalt hat das Reading, wenn es schalten soll?
Wie sehen die zugehörigen Events aus?

Nutzt Du den DEF-Editor zum Erstellen der Definition?

Grundsätzlich geht es so, wenn Du über Gerätestati schalten möchtest, siehe auch http://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung

([<devicename_x>:<readingsname_x>] eq "<vergleichswert_x1>" and [<devicename_y>:<readingsname_y>] eq "<vergleichswert_y>" )
   (set ...)
DOELSEIF  ([<devicename_x>:<readingsname_x>] eq "<vergleichswert_x2>" and [<devicename_y>:<readingsname_y>] eq "<vergleichswert_y>" )
   (set ...)


Wenn die Harmony nur Events liefert, wird es etwas komplexer, da das Ereignis zwischen gespeichert werden müsste, bis der Receiver eingeschaltet ist, siehe auch http://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events

Es sei denn, Du arbeitest mit einer Verzögerung beim Setzen der Lautstärke. http://fhem.de/commandref_DE.html#DOIF_wait
([<devicename_x>:<readingsname_x>] eq "<vergleichswert_x1>")
   (set Receiver on)
   (set Volume x)
DOELSEIF ...


mit dem Attribut
wait 0,<Wartezeit bis der Receiver gestartet ist>:...
Titel: Antw:Brauche Hilfe bei Umstellung von notify auf DOIF
Beitrag von: gent am 03 März 2016, 19:33:55
Hallo,

ich habe mal die Aktivität im Eventmonitor aufgezeichnet:
2016-03-03 19:08:23 harmony SZ.Harmony currentActivity: starting Fernsehen
2016-03-03 19:08:34 harmony harmony_31433580 power: on
2016-03-03 19:08:34 harmony harmony_31433578 power: on
2016-03-03 19:08:34 harmony harmony_31433579 power: on
2016-03-03 19:08:34 harmony SZ.Harmony currentActivity: Fernsehen
2016-03-03 19:08:34 harmony SZ.Harmony activity: Fernsehen
2016-03-03 19:08:34 harmony SZ.Harmony currentActivity: Fernsehen
2016-03-03 19:08:34 harmony SZ.Harmony currentActivity: Fernsehen


Der Onkyo Receiver hat im harmony modul den Devicenamen "harmony_31433578" bzw. der Sat-Receiver die "harmony_31433580" und das FireTV "harmony_31433577"

Wenn ich die Aktivität "Fire TV sehen" auslöse, habe ich folgendes im Eventmonitor:
2016-03-03 19:13:41 harmony SZ.Harmony currentActivity: starting Fire TV sehen
2016-03-03 19:13:47 harmony harmony_31433580 power: off
2016-03-03 19:13:47 harmony SZ.Harmony currentActivity: Fire TV sehen
2016-03-03 19:13:47 harmony SZ.Harmony activity: Fire.TV.sehen
2016-03-03 19:13:47 harmony SZ.Harmony currentActivity: Fire TV sehen
2016-03-03 19:13:47 harmony SZ.Harmony currentActivity: Fire TV sehen


Das device für den Onkyo hat tasächlich ein Reading "power" mit den Werten "on" oder "off".

Der HarmonyHub selbst hat die Readings:
activity
currentActivity
previousActivity
state
Connected


previousActivity sehe ich zwar im WebInterface aber nicht so im Eventmonitor (s.o.). Scheint wohl ein Bug im Harmony Modul zu sein. Im EventMonitor kommt nämlich 2x hintereinander die currentActivity...

Wie dem auch sei, ich probier mal ein bisschen weiter und gebe ein Update hier, wenn ich's nicht hinbekomme.

Viele Grüße vom gent
Titel: Antw:Brauche Hilfe bei Umstellung von notify auf DOIF
Beitrag von: Ellert am 03 März 2016, 20:20:33
Dann geht's wohl so:
([SZ.Harmony:currentActivity] =~ "Fernsehen" and [OnkyoReceiver:power] eq "on")
   (set OnkyoReceiver volume 20)
DOELSEIF ([SZ.Harmony:currentActivity] =~ "Fire.TV.sehen" and [OnkyoReceiver:power] eq "on")
   (set OnkyoReceiver volume 10)
DOELSE
Titel: Antw:Brauche Hilfe bei Umstellung von notify auf DOIF
Beitrag von: gent am 03 März 2016, 21:56:55
Hi,

ja, vielen Dank. Ich hatte es zunächst so
([SZ.Harmony:currentActivity] eq "Fernsehen" and [harmony_31433578:power] eq "on") (set OnkyoReceiver volume 20)
DOELSEIF
([SZ.Harmony:currentActivity] eq "Fire TV sehen" and [harmony_31433578:power] eq "on") (set OnkyoReceiver volume 10)

aber das reading power vom Onkyo device zu nehmen ist besser.

Dankenswerte Grüße vom gent
Titel: Antw:Brauche Hilfe bei Umstellung von notify auf DOIF
Beitrag von: Ellert am 04 März 2016, 19:34:24
Um die nächste Frage vorweg zu nehmen, ohne DOELSE funktioniert Fernsehen und Fire TV nur abwechselnd.
Titel: Antw:Brauche Hilfe bei Umstellung von notify auf DOIF
Beitrag von: gent am 04 März 2016, 21:36:58
Hi,

die Frage hat sich mir gar nicht gestellt, aber was meinst Du mit "nur abwechselnd"?

Viele Grüße vom gent
Titel: Antw:Brauche Hilfe bei Umstellung von notify auf DOIF
Beitrag von: Ellert am 04 März 2016, 21:46:22
Ohne DOELSE:
-Morgens Fernsehen --> Volume 20, dann Musik hören mit Volume 50, abends Fernsehen --> Volume 20 wird nicht gesetzt.
-Morgens Fire TV --> Volume 10, dann Musik hören mit Volume 50, abends Fire TV --> Volume 10 wird nicht gesetzt.

Abwechselnd
-Morgens Fernsehen --> Volume 20, dann Musik hören mit Volume 50, abends Fire TV --> Volume 10 wird gesetzt.
-Morgens Fire TV --> Volume 10, dann Musik hören mit Volume 50, abends Fernsehen --> Volume 20 wird gesetzt.

Titel: Antw:Brauche Hilfe bei Umstellung von notify auf DOIF
Beitrag von: gent am 07 März 2016, 20:38:36
Hey,

stimmt! Vielen Dank.

Und viele Grüße vom Gent