Sonos steuern

Begonnen von Will, 05 Januar 2013, 15:51:12

Vorheriges Thema - Nächstes Thema

Reinerlein

Hi Andre,

so an sich unterscheidet das Modul nie zwischen extern getriggerten Aktionen oder vom Modul gesendeten.
Du könntest natürlich auf eine Änderung am Player-Zustand reagieren, und dann prüfen, ob vorher eine Aktion vom Modul angestossen wurde (das Ergebnis kommt ja immer im Reading "LastActionResult" an).

Wenn in LastActionResult etwas anderes steht, als die Zustandsänderung aufzeigt, bzw. der Timestamp älter ist, dann kommt es wohl nicht vom Modul :)
Allerdings wird im Reading ja nur die letzte Aktion abgelegt, die vorherigen Rückmeldungen gehen ja verloren...

Grüße
Reiner

justme1968

ich hatte gehofft das du modul intern einfacher festellen kannst ob eon kommando über fhem getigert wurde oder nicht. gerade weil es ja zwei komponenten sind :)

wenn du meinst das timer zurücksetzen gehört nicht ins modul (was schade wäre :) ...): wie wäre es mit einem reading das direkt angibt ob die letze aktion (play,pause,lautstärke) aus fhem gekommen ist oder vom player wäre ads hilfreich.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Reinerlein

Hi Andre,

ich denke, dass das mit dem Timer so gewollt ist. Wenn ich den setze, dann möchte ich doch auch das er abläuft, wenn ich den Titel gewechselt habe, oder pausiere oder ähnliches...
Sowohl am Controller, als auch beim Fhem-Modul muss der Timer manuell zurückgesetzt werden, wenn man ihn doch nicht mehr möchte.

Ich verstehe aber, was du meinst :)

Was du aber auch machen könntest, wäre eine Up-/Down-Tastensequenz am Player (also direkt dort) abzusetzen, und diese in Fhem als SleepTimer-Löschen-Aktion auswerten, und den Timer beenden.

Ich kann trotzdem mal schauen, ob ich irgendwie feststellen kann, ob der Player gerade auf einen Befehl vom Modul reagiert, oder anderweitig gesteuert wird. Das wird aber vermutlich nicht wirklich sicher funktionieren...
Z.B. sende ich ein Mute, und als Event zurück kommt die neue Mute-Situation und eine Änderung der Lautstärke (mit dem bisherigen Wert). Solche "Mehrfachreaktionen" gibt es in verschiedenen Varianten...

Grüße
Reiner

elmer

#2793
CallMonitor:.*ring {
  my $number=(ReadingsVal("CallMonitor","internal_number",99));;
  my $Anrufer=(ReadingsVal("CallMonitor","external_number",99));;
  my $AnruferName=(ReadingsVal("CallMonitor","external_name",99));;
  if ($number == 959634) { fhem "set Sonos_Kueche Speak 70 de $AnruferName $Anrufer ruft an";;}}


Ist es möglich, in diesem Sript einen zweiten Lautsprecher mit aufzunehmen, der dann die Ansage auf einem Bose Lautsprecher wiedergibt mit Text2Speech, dieser ist mit Klinke am Raspberry angeschlossen?

Otto123

Hi Elmer,

ich denke schon:CallMonitor:.*ring {
  my $number=(ReadingsVal("CallMonitor","internal_number",99));;
  my $Anrufer=(ReadingsVal("CallMonitor","external_number",99));;
  my $AnruferName=(ReadingsVal("CallMonitor","external_name",99));;
  if ($number == 959634) { fhem "set Sonos_Kueche Speak 70 de $AnruferName $Anrufer ruft an, set <myTts> tts $AnruferName $Anrufer ruft an";;}}


Auch wenn das Problem gar nix mit Sonos zu tun hat.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

elmer

Sorry, das habe ich mir auch danach gedacht das es im falschen Bereich ist, aber ich habe das mal einen Test gemacht und so geht es nicht. Jetzt liest die Sonos Tante den ganzen Eintrag vor von set MyTTS...

Reinerlein

Hi Elmer,

du musst zwei Perl-Befehle davon machen:

CallMonitor:.*ring {
  my $number = ReadingsVal($NAME, "internal_number", 99);
  my $Anrufer = ReadingsVal($NAME, "external_number", 99);
  my $AnruferName = ReadingsVal($NAME, "external_name", '');
  if ($number == 959634) {
    fhem("set Sonos_Kueche Speak 70 de $AnruferName $Anrufer ruft an");
    fhem("set <myTts> tts $AnruferName $Anrufer ruft an");
  }
}
Hier in der Schreibweise, die man im Def-Fenster innerhalb von FHEMWEB eingibt, und ohne ein paar überflüssige Klammern...

Grüße
Reinerlein

Otto123

Oh ja sorry, die Klammern habe ich seiner Zeit auch mit cut&paste übernommen. Und Komma in der Textkette erkennt Sonos nicht als Trenner. Man muss sicher immer einen zweiten Befehl aufmachen  :-[

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

elmer

Super, das funktioniert, Danke.

v.i.p.e.r

Hi,

ich hab ein Problem mit DOIF im Zusammenhang mit Sonos Groups. Das Doif soll die Sonos Gruppieren (60s nach einschalten) , nachdem Sie per Funksteckdose angeschaltet wurden.

Doif:

([WZ_Reciever_Strom] eq "on") (set Sonos Groups [Sonos_Wohnzimmer, Sonos_Bad])


Folgenden Fehler hab ich im log:

2017.03.30 17:44:43 4: Sonos_Group: error in default: Sonos_Bad
2017.03.30 17:44:43 5: SONOS0: Desired-Crowd: []
2017.03.30 17:44:43 5: SONOS0: Desired-List: []     



Jemand eine Idee? Setzte ich den Group Befehl so ab, klappt es ohne Probleme.

Masterfunk

Ich würde die Player nicht nach einer festen Zeit, sondern sobald sie beide "appeared" sind, gruppieren.
Funktioniert bei mir extrem zuverlässig-

Gruß Detlef

Reinerlein

Hi v.i.p.e.r,

bei DOIFs ist das Komma ein Sequenztrenner, wenn du also im Fhem-Kommando ein Komma verwenden möchtest (notwendig als Trenner zwischen den einzelnen Gruppenmitgliedern), dann musst du eine weitere runde Klammer drum machen:

([WZ_Reciever_Strom] eq "on") ((set Sonos Groups [Sonos_Wohnzimmer, Sonos_Bad]))


Grüße
Reinerlein

v.i.p.e.r

#2802
Danke für den Tip :)

Hat aber leider nichts gebracht ...

2017.03.31 22:40:14 4: Sonos_Group: error in default:  Sonos_Bad


Jemand eventuell noch ne andere Idee?
Achja, tausche ich die beiden Sonos in der Gruppe steht in dem Error die andere Box. Kann also wirklich was mit dem Komma zu tun haben. Nur wie löse ich das ;)

Otto123

Funktioniert der Befehl in der FHEM Kommandozeile?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Reinerlein

Hi v.i.p.e.r,

hmm, komisch... Sonst versuch es doch einfach mal als direkten Befehl:

([WZ_Reciever_Strom] eq "on") (set Sonos_Wohnzimmer AddMember Sonos_Bad)
Da gibt es nur ein Problem, wenn das Bad der bereits Master einer anderen Gruppe ist. Dann würde diese komplette Gruppe als Member hinzugefügt werden.
Das kannst du aber so verhindern:

([WZ_Reciever_Strom] eq "on") (set Sonos Groups [Sonos_Bad], set Sonos_Wohnzimmer AddMember Sonos_Bad)
Ist natürlich nicht das gleiche wie oben, wenn z.B. das Wohnzimmer bereits andere Slaveplayer enthält, wird das Bad nur hinzugefügt...

Sonst das:

([WZ_Reciever_Strom] eq "on") (set Sonos Groups [Sonos_Wohnzimmer], set Sonos Groups [Sonos_Bad], set Sonos_Wohnzimmer AddMember Sonos_Bad)
:)

Grüße
Reinerlein