Hallo liebes Forum,
Ich arbeite mich gerade etwas in FHEM ein und möchte gerne folgendes realisieren:
Wenn ich über meine Harmony Remote die Lautstärke einer Sonos Box erhöhe, will ich, dass sich alle in der Gruppe befindenden Boxen auch lauter werden.
Dazu dachte ich an ein Notifiy, dass auslöst, wenn sich die Lautstärke dieser einen Box ändert und dann die GroupVolume erhöht (über GroupVolumeD/U).
Das fakeRoku Modul habe ich auch schon getestet, doch kann es die Lauter/Leiser Tasten nicht auslesen und ich müsste die Remote erst in den Roku Modus setzen und die Sonos verlassen.
Gibt es eine Möglichkeit die Lautstärke einer SonosBox zu verfolgen oder kann ich ein notify auf einen Harmony Command machen. Dann könnte ich es nämlich mit dem VolumeUp Command verbinden.
Vielen Dank schonmal
Marcel
schau dir das generateVolumeEvent attribut an.
was das fakeRoku modul angeht: du kannst jede roku taste auf jede harmony taste legen. auch zusätzlich zu anderen. schau dir den harmony tipps thread an.
gruss
andre
Das habe ich mir natürlich schonmal angeschaut, leider triggert dies nur, wenn die Lautstärke von FHEM verändert wird und nicht, wenn dies von außen (also z.B: über die Harmony geschieht).
Klar mit dem fakeRoku würde das gehen aber dann muss immer eine der Sonos Aktivitäten laufen, ich würde dies aber gerne über die Geräte eigenen Tasten tun.
Gibt es keine Möglichkeit die Lautstärke einer Sonos zu synchronisieren?
Weiß jemand vielleicht ob das Harmony Modul irgendwelche Events schmeißt, vor allem wann?
Vielen Dank
nein. es trigger at auch wenn man z.b. direkt am sonos player über die tasten die lautstärke ändert.
wie oben geschrieben sendet der hub nur für activity wechsel daten.
du kannst auf verbose 5 schalten und ins log schauen. wenn dort nichts auftaucht sendet der hub auch nichts.
gruss
andre
Nein leider triggert er bei mir nur, wenn ich über das Sonos Modul etwas verändere. Änderungen über die Sonos App oder direkt am Gerät, löst nicht aus.
hast du das generateVolumeEvent attribut und z.b. minVolume in den playern gesetzt?
gruss
andre
Ja ich hab für den entsprechenden SONOSPLAYER MinVol und MaxVol gesetzt, auf 0 bzw. 100.
Und dann das GenerateVolumeEvent auf 1
Das ganze klappt auch für von FHEM generierte Lautsärkeänderungen aber nicht für externe.
wie gesagt funktioniert es bei mir auch wenn ich die lautstärke nicht über fhem ändere.
ich würde mal überall den log level hoch drehen und wenn nichts zu sehen ist reiner fragen.
gruss
andre
Ich habs rausgefunden, ich hab einfach vergessen FHEM neuzustarten. Irgendwo in der Modul Beschreibung stand was, dass erst nach einem Neustart die Attribute Wirkung zeigen und das scheint der Fall zu sein.
Jetzt brauche ich nur noch den notify, irgendein Tipp dazu. Wie reagiere ich auf ein Event, wie 2016-07-13 18:09:12 SONOSPLAYER Sonos_Wohnzimmer Volume: 25
Das Problem ist nämlich, dass er nur die Meldung einer Lautstärken Änderung gibt aber nicht ob es lauter leiser wird. In einer anderen Sprache wüsste ich wie es geht aber in FHEM bin ich noch nicht fit. Wie würden so ein FHEM Code lauten für
onEventVolume mach wenn EventVolume < als letztesEventVolume dann GroupVolumeU, ansonsten GroupVolumeD.
Könnte das jemand übersetzen ;D
So Für die Nachwelt:
Im Prinzip macht das nichts, als bei Änderung im Wohnzimmer alle anderen mit zu ändern. Irgendwie kann man das bestimmt noch über slavePlayer() und dem Array dahinter machen, aber ich weiß nicht wie Arrays in perl Funktionieren. So klappt es auch:
Sonos_Wohnzimmer:Volume:.* {
#aktuelle Einzellautstärke
my $aktuelleL = ReadingsVal("Sonos_Wohnzimmer","Volume",10);;
my $test = ReadingsVal("Sonos_Wohnzimmer","SlavePlayer",10);;
#alte Einzellautstärke
my $alteL = AttrVal("SonosVolumeSingleGroup","userReadings",0);;
#Wird lauter
if ($alteL < $aktuelleL) {
fhem "set Sonos_Bad VolumeU";;
fhem "set Sonos_Schlafzimmer VolumeU";;
}
#Wird leiser
if ($alteL > $aktuelleL) {
fhem "set Sonos_Bad VolumeD";;
fhem "set Sonos_Schlafzimmer VolumeD";;
}
#Lautstärken speichern
fhem "attr SonosVolumeSingleGroup userReadings $aktuelleL";;
fhem "attr SonosVolumeSingleGroup comment $test";;
}