Sonos steuern

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

Vorheriges Thema - Nächstes Thema

florian2833


Otto123

Zitat von: florian2833 am 14 August 2018, 16:52:42
Was machen die letzten Ziffern denn? Kann das jemand erklären? Ich vermute "interval" / "Waittime" und Delaytime? - Wofür stehen die Parameter?
Die Info dazu steht wie so oft umfassend in der Doku
https://commandref.fhem.de/commandref_DE.html#SONOS

Dazu gibt es auch direkt einen Link unter dem Gerät :)

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

florian2833

#3212
Schande über mich Otto. Natürlich  8) Man könnte auch mal in die Doku schauen.  :-[

Also, liebe Foristen, jetzt brauche ich aber nochmal eure Hilfe, scheinbar ist mein Disconnect selbstverschuldet. (Nicht nur scheinbar sondern sogar sehr deutlich) - Sonos wird nachts abgeschalten (Funksteckdose) um den Stromverbrauch von etlichen Multimediageräten nachts runterzufahren.

Sieht man hier schön:

2018.08.15 01:17:17 3: Opening Sonos device localhost:4711
2018.08.15 01:17:17 1: Sonos: Can't connect to localhost:4711: Connection refused
2018.08.15 01:17:17 1: SONOS0: ./FHEM/00_SONOS.pm is started by fhem...
2018.08.15 01:17:17 1: SONOS0: ./FHEM/00_SONOS.pm is listening to Port 4711
Invalid value for shared scalar at ./FHEM/00_SONOS.pm line 9895.


Es gäbe nun die einfach möglichkeit Sonos einfach an zu lassen, was ich aber gerne anders lösen würde.

Ich müsste Morgends ab einem "trigger" in Fhem eigentlich nur den Subprozess von Sonos.pm neu anstossen (das DEF zu öffnen und "localhost:4711 120 1 5" via modify einzugeben reicht vollends aus) .. Das müsste sich doch via Notify auch lösen lassen?

Hier sieht man das "aufwachen"

2018.08.15 11:21:25 3: Opening Sonos device localhost:4711
2018.08.15 11:21:25 1: Sonos: Can't connect to localhost:4711: Connection refused
2018.08.15 11:21:25 1: SONOS0: ./FHEM/00_SONOS.pm is started by fhem...
2018.08.15 11:21:25 1: SONOS0: ./FHEM/00_SONOS.pm is listening to Port 4711
2018.08.15 11:22:26 3: SONOS0: Connection accepted from localhost:55686
2018.08.15 11:22:26 1: [b]localhost:4711 reappeared (Sonos)[/b]
2018.08.15 11:22:27 1: SONOS1: UPnP-Thread gestartet.
2018.08.15 11:22:27 1: SONOS2: LongJobs-Thread gestartet. Prüfe auf LongJobs...
2018.08.15 11:22:27 1: SONOS3: IsAlive-Thread gestartet. Warte 120 Sekunden und pruefe dann alle 120 Sekunden...
2018.08.15 11:22:28 2: SONOS1: Discover Sonosplayer 'Danaflo1' (ZB100) Software Revision 9.0 with ID 'RINCON_B8E937152B7801400_MR'
2018.08.15 11:22:28 1: SONOS4: Restore-Thread gestartet. Warte auf Arbeit...


Könnt ihr mir da weiterhelfen? Denn so tief stecke ich da leider nicht in der Materie drin. (Ziel : Dashbutton triggert Notify - welches den Subprozess neu startet, der dann erkennt das da doch ein Sonos System lebt.)

Ich habe zwar das bereits gefunden, jedoch hilft es mir nicht weiter, da ich meine Funktsteckdosen nicht via Fhem auslesen kann.

Wenn das Sonossystem per Funksteckdose regelmäßig vom Netz genommen wird, bereitet der Neustart und das anschließende Verbinden mit FHEM oft Probleme. Das Sonosmodul bleibt auf dem Status "disappeared" stehen und das Playerdevice ebenfalls. Ergo ist eine Bedienung per FHEM oder die Sprachausgabe nicht mehr möglich.

Um diesem Problem Abhilfe zu schaffen reicht ein kleines notify oder DOIF, welches den Player beim Abschalten das Attribut disable = 1 verschafft und beim Wiedereinschalten dieses Attribut löscht.

define RebootSonosDOIF DOIF ([FunksteckerSonos:state] eq "on" )(deleteattr MeinSonosDevice disable) (save)
                       DOELSEIF ([FunksteckerSonos:state] eq "off" )(attr MeinSonosDevice disable 1)(save)

Das Setzen von "disable" sorgt dafür, dass der Sonosthread beendet wird und beim Einschalten ein neuer Prozess erstellt wird. Diese automatische Änderung an der Konfiguration des Device benötigt ein save config im Nachgang der DOIF- oder notify-Aktion. Daher wird der jeweilige attr-Befehl mit einem (save) abgeschlossen.

Wichtig hierbei (wie auch in der Überschrift erwähnt) funktioniert das nur, wenn die einzelnen Sonosplayer an einer schaltbaren Steckdose betrieben werden.

Das DOIF triggert nur bei Änderung des "state" der jeweilige Funksteckdose.


l2r

hi,

du könntest anstatt auf die Funksteckdose zu triggern, das an eine bestimmte Uhrzeit hängen?!

define RebootSonosDOIF DOIF ([08:00])(deleteattr MeinSonosDevice disable) (save)
                       DOELSEIF ([22:30])(attr MeinSonosDevice disable 1)(save)


alternativ könntest du in deinem Router den Sonosboxen eine feste IP geben und dann ein PRESENCE-Device mit lan-ping auf eine SONOS-Box ansetzen. Sobald die SONOS morgens an geht, zieht sie sich eine IP, dadurch wird diese in Netzwerk pingbar und das PRESENCE-DEVICE zur SONOS-Box geht auf presence und das kann dann wiederum als trigger für deine DOIF dienen:

define pr_SONOS PRESENCE lan-ping 192.168.1.xxx
Die IP muss natürlich der festen IP deiner SONOS-Box entsprechen

define RebootSonosDOIF DOIF ([pr_SONOS] eq "present" )(deleteattr MeinSonosDevice disable) (save)
                       DOELSEIF ([[pr_SONOS] eq "absent")(attr MeinSonosDevice disable 1)(save)


bitte die Syntax nochmals prüfen, war jetzt alles aus dem Kopf ;-)

Gruß Michael
Wissen ist Macht.
Ich weiß nix.
Macht nix.

florian2833

Danke l2r,

Die Idee mit dem LAN Ping gefällt mir - werde ich gleich mal einbauen.

florian2833

define RebootSonosDOIF DOIF ([pr_SONOS] eq "present" )(deleteattr MeinSonosDevice disable) (save)
                       DOELSEIF ([[pr_SONOS] eq "absent")(attr MeinSonosDevice disable 1)(save)


Kurze zwischenfrage "Meinsonosdevice" muss natürlich dann so heisen wie es eben bei mir heist oder?

l2r

#3216
ja klar.

Wobei hier das SONOS-Device gemeint ist und nicht ein SONOS-Player

wenn du nach WIKI oder Commandref installiert hast dann heißt das Device einfach Sonos

Gruß Michael
Wissen ist Macht.
Ich weiß nix.
Macht nix.

florian2833

#3217
Du bist mein Held  ;D

define RebootSonosDOIF DOIF ([pr_SONOS] eq "present")(deleteattr Sonos disable) (save)
DOELSEIF ([pr_SONOS] eq "absent")(attr Sonos disable 1) (save)


Was funktioniert:

Sonos wird erkannt (absent/present)
Das Attribute wird geändert.

Aber: Scheinbar nimmt fhem das save nicht. Zumindest habe ich das rote fragezeichen immer neben safe config. Oder liegt das einfach daran das ich eben gerade eingeloggt bin? Save über die Fhem kommandozeile funktioniert


moskito

Schau mal ob im Device "global" das Attribut "autosave" auf 1 gesetzt ist.

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

l2r

wie moskito schon sagte, müsste an dem Autosave liegen, da dies ein save ist, welches von FHEM ausgelöst wird und das ist nur bei autosave 1 erlaubt.

Sollte deine Config mal bei starten auf Fehler laufen, dann kann sein, dass autosave deaktiviert wird und neu gesetzt werden muss.

letztendlich dient das Save dazu, dass nach einem Neustart von FHEM der gewünschte Wert vom Attribut noch vorhanden ist, da Attributänderungen sonst nicht behalten werden würden.

Gruß Michael
Wissen ist Macht.
Ich weiß nix.
Macht nix.

peterk_de

Also das Modul bietet ja gigantisch viele Steuermöglichkeiten - super, vor ca. einem Monat mit erstmal 3 Sonos ONE in Betrieb genommen, läuft prima!

Eine Frage hätte ich noch: Kann man das Mikro (für Alexa) über das Modul stumm- und wieder anschalten? Ich habe wirklich viel gesucht und DAS nicht gefunden, kann aber sein, dass ich es einfach übersehen habe ... wäre aber sehr praktisch, das über FHEM automatisch nur dann zu aktivieren, wenn nötig. Z.B. "aus", wenn Gäste da sind.
FHEM auf Ubuntu-VM / 2xNUC Proxmox Cluster
UI: HomeKit, TabletUI, Grafana
IOdevs: 2xHueBridge, RaspiMatic-CCU, CUL868, 2xHarmonyHub, 6xRaspi-Roomnode mit CO2, VOC und lepresenced
Devices: 107xHomematic(IP), 96xPhilips Hue, 17xTECHEM, 12xBTLE, 8xSONOS, 2xHomeConnect, 1xShelly 3em, 1xNanoleaf ...

tj23

Hallo zusammen, weis jemand von euch wie man ein Sonos Play1 mit einem Homematic Magnetschalter einschalten kann? (Am besten dann natürlich wenn der kontakt nochmal geöffnet wird, wieder ausschalten)

FunkOdyssey

Meinst du mit "Magnetschalter", dass du die Player stromlos machst?

Schau mal hier: https://forum.fhem.de/index.php/topic,76652.msg685569.html

Ich wollte - habe es aber wieder aufgegeben.
War mir zu buggy und mir ist der Zustand der Playlist wichtig.

tj23

Nein, nicht stromlos. Direkt den sonos zu über den Play Befehl starten und wieder paisieren.

gloob

#3224
Zitat von: tj23 am 26 September 2018, 06:04:18
Nein, nicht stromlos. Direkt den sonos zu über den Play Befehl starten und wieder paisieren.

set Sonos_Device play

Wie du das aufrufst und wie du das Schalten vom Magnetschalter mitbekommst ist einen andere Sache. Sag doch mal was du vor hast.

Hier ist noch ein Beispiel was den Zustand togglt:

define notifyDashButton_Desperados_Kueche notify DashButton:xx-xx-xx-xx-xx-xx:.short {\
if(ReadingsVal("Sonos_Kueche","state","") eq "PLAYING"){fhem('set Sonos_Kueche stop');;}else{fhem('set Sonos_Kueche play');;}\
}
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway