Sonos Modul

Hallo Thorsten,

nette Idee, aber ich bin immer noch mit PHP am üben.:wink:
Im Moment komme ich zu den Sonos Dingen nicht, da ich mir ein anderes Modul baue, welches meine Bad Entfeuchtung nach dem duschen machen soll. Da ist mir ein LCN_Regler doch zu unflexibel.

Mein letzter Stand :

TS_Sonos.zip (19.4 KB)

@Thomas

Funktioniert sehr gut, jetzt auch direkt auf die Displays :loveips:

Danke
Dieter

Hi,

ich habe nochmals eine Nacht drüber geschlafen, und bin zu folgenem Ergebnis gekommen.

2 Felder im Formular:

  • Lieblingssender --> Name des Radiosenders
  • WebFront Sender --> „<alle>“ oder eine Kommaseparierte Liste

Alle:
alle.png

nur Zwei Sender:
zwei.png

Neben der gelben Einfärbung des Favoriten besteht so auch die Möglichkeit zu:

SNS_SetRadioFavorite(48567 /*[Sonos Gäste]*/ );

Leider verzweifle ich etwas mit den VariableProfileAssociation.
Es werden halt immer nur welche dazugenommen, und keine Entfernt. Daher habe ich keine andere Möglichkeit gesehen als das Profil jedes Mal zu löschen und wieder anzulegen:


                protected function RegisterProfileInteger($Name, $Icon, $Prefix, $Suffix, $MinValue, $MaxValue, $StepSize) {

                        if(IPS_VariableProfileExists($Name)) {
                           IPS_DeleteVariableProfile($Name);
                        }
                        IPS_CreateVariableProfile($Name, 1);

                        IPS_SetVariableProfileIcon($Name, $Icon);
                        IPS_SetVariableProfileText($Name, $Prefix, $Suffix);
                        IPS_SetVariableProfileValues($Name, $MinValue, $MaxValue, $StepSize);

                }

                protected function RegisterProfileIntegerEx($Name, $Icon, $Prefix, $Suffix, $Associations) {
                        if ( sizeof($Associations) === 0 ){
                          $MinValue = 0;
                          $MaxValue = 0;
                        } else {
                          $MinValue = $Associations[0][0];
                          $MaxValue = $Associations[sizeof($Associations)-1][0];
                        }

                        $this->RegisterProfileInteger($Name, $Icon, $Prefix, $Suffix, $MinValue, $MaxValue, 0);

                        foreach($Associations as $Association) {
                                IPS_SetVariableProfileAssociation($Name, $Association[0], $Association[1], $Association[2], $Association[3]);
                        }

                }


Da ich es extrem unschön finde, wäre ich für einen eleganteren Weg dankbar. Irgendwelche Vorschläge?

Danke,
Thorsten

Den Weg mit dem Profil würde bzw. gehe ich auch so bei den HM Systemvariablen.
Sonst musst du ja erst prüfen was alles geändert oder entfernt werden muss.
Den Weg sparst du dir so.
Michael

Hi,

schade…
Ich würde mir eigentlich so etwas wie „IPS_ClearVariableProfileAssociations“ wünschen.
Das komplette Profil zu löschen ist zu viel, oder?

Nun ja, so lange es geht…

Gruß,
Thorsten

Hi,

Endlich mal Zeit dafür gehabt.

Radio support eingebaut und hochgeladen.
Da es mein erster pull request ist, hoffe ich dass alles passt…

Gruß,
Thorsten

Cool! Habe dir sogleich ein paar Verbesserungsideen bei Github reingestellt :slight_smile:

paresy

Moin Jungs,

unter Windows gibts das noch nicht oder ?

Hi,

so paresy hat meine Änderungen übernommen, daher eine kurze Beschreibung was nun alles mit drin ist:

  1. Senderliste für Radios:

[ul]
[li]FFN => x-rincon-mp3radio://player.ffn.de/ffn.mp3
[/li][li]FFH => x-sonosapi-stream:s17490?sid=254&flags=32
[/li][li]Radio Lippe => x-rincon-mp3radio://edge.live.mp3.mdn.newmedia.nacamar.net/ps-radiolippe/livestream.mp3
[/li][li]OE3 => x-rincon-mp3radio://mp3stream7.apasf.apa.at:8000
[/li][li]Antenne 1 => x-rincon-mp3radio://stream.antenne1.de/stream1/livestream.mp3
[/li][li]Antenne Bayern => x-rincon-mp3radio://mp3channels.webradio.antenne.de/antenne
[/li][li]Antenne MV => x-rincon-mp3radio://streams.antennemv.de/antennemv-live/mp3-192/amv
[/li][li]Bayern 3 => x-rincon-mp3radio://srv05.bigstreams.de/bigfm-mp3-96.m3u
[/li][li]bigFM => x-rincon-mp3radio://streams.br.de/bayern3_2.m3u
[/li][li]Deutschlandfunk => x-rincon-mp3radio://www.dradio.de/streaming/dlf.m3u
[/li][li]HR3 => x-rincon-mp3radio://metafiles.gl-systemhaus.de/hr/hr3_2.m3u
[/li][li]NDR2 => x-rincon-mp3radio://www.ndr.de/resources/metadaten/audio/m3u/ndr2.m3u
[/li][li]N-JOY => x-rincon-mp3radio://www.ndr.de/resources/metadaten/audio/m3u/n-joy.m3u
[/li][li]RPR1 => x-rincon-mp3radio://rpr1.fmstreams.de/stream1.m3u
[/li][li]SWR3 => x-rincon-mp3radio://mp3-live.swr3.de/swr3_m.m3u
[/li][li]SWR1 BW => x-rincon-mp3radio://mp3-live.swr.de/swr1bw_m.m3u
[/li][li]SWR1 RP => x-rincon-mp3radio://mp3-live.swr.de/swr1rp_m.m3u
[/li][li]WDR2 => x-rincon-mp3radio://www.wdr.de/wdrlive/media/wdr2.m3u
[/li][li]KiRaKa => x-rincon-mp3radio://www.wdr.de/wdrlive/media/kiraka.m3u
[/li][li]1LIVE => x-rincon-mp3radio://www.wdr.de/wdrlive/media/einslive.m3u
[/li][/ul]

Wenn etwas fehlt und ihr keine Lust/Zeit/was auch immer habt es selber hinzuzufügen, bitte angeben. Ich füge es dann gerne hinzu.

  1. Bei der Instanzkonfiguration gibt es jetzt 2 neue Felder:
  • [li]Favorite radio station:
    [/li]also der Text den ihr oben in der Liste vorne seht
    Noch als String einzugeben, aber evtl. baue ich noch paresys Vorschlag ein und mache eine Select Box draus…
    [li]Radio stations in WebFront:
    [/li]eine Liste von Radisendern (wieder das was vorne steht) die als Buttons im WebFront angezeigt werden sollen, durch ein Komma getrennt
    „<alle>“ für alle Sender (ohne ", gell?)
    leer lassen für keine

config.png

  1. Neue Funktionen:
  • [li]SNS_SetRadio( integer $InstanzID, string $station_name );
    [/li]spielt dden angegebenen Radidsender ab
    [li]SNS_SetRadioFavorite( integer $InstanzID );
    [/li]spielt den Sender ab, der in der Konfig als „favorite“ angegeben wurde.

Und im WebFront sieht das dann so aus:

Gruß,
Thorsten

Wenn etwas fehlt und ihr keine Lust/Zeit/was auch immer habt es selber hinzuzufügen, bitte angeben. Ich füge es dann gerne hinzu.

Lust schon, aber Git ist noch nicht mein Ding:confused:.
Hatte weiter oben mal ein Zip, da sind noch einige Dinge mehr drin, die mir Spass machen.
Bitte schau dir das nochmal an.
Deine Idee mit den Radio-Sendern ist Top.

Hallo,

ich hätte da noch mal eine Frage zu den Modulen.
Ein link auf eine Doku wäre auch super :wink:

Kann in in dem Sonos Modul auch einen zweiten instanztypen anbieten?
Konkret „Sonos“ und „Sonos Group“?

Gibt es ein Beispiel dafür?

Oder würde das auf ein zweites Modul „Sonos Group“ hinauslaufen, wo dann bei
„childRequirements“: [ „Sonos“ ]
steht?

Fragen über fragen…

Danke,
Thorsten

Was soll die Instanz denn können?

Ich vermute du willst eher ein zusätzliches Modul dafür machen, die sich um die Gruppierung kümmert :slight_smile:
Und das muss vom eigentlichen Sonos Modul gar nicht abhängig sein, oder?

paresy

Wenn ich das mal wüsste…
Ich bin aber gerade am ausprobieren, wie das aussieht wenn man das dem Sonos modul beibringt,
Könnte was werden.

Mein Gesanke bei der Frage war:
Eine Instanz „Sonos Gruppe“ zu haben, bei der sich dann Sonos instanzen „registrieren“ können.
Die Gruppenaktionen könnte man dann darauf ausführen…

Mal sehen wie es wird.

Gruß,
Thorsten

Hallo,

nun gut, aber nicht ohne alpha test :wink:

Ich habe mal folgendes übernommen:

[ul]
[li]Script zum auslesen der Informationen alle 5 Sekunden[/li][li]Infos an ein LCN Display schicken, falls konfiguriert (Leider habe ich kein GT<was auch immer>, konnte es daher nicht testen…)[/li][/ul]

Das mit dem Alarm habe ich ignoriert, und Einstellungen wie Bass oder Loudness halte ich für unnötig.

Selber ausgedacht habe ich mir noch

[ul]
[li]Gruppen bilden[/li][li]Gruppen im Sonos entsprechend IPS forcen oder im IPS laut Sonos updaten[/li][li]Gruppenlautsärke anpassen[/li][li]Favorite Radio als Select Box[/li][li]Default Volume (auch in Gruppe setzbar)[/li][li]Nicht benötigte Variablen werden versteckt[/li][li]UpdateGrouping script alle 5 minuten[/li][/ul]

Das ganze sieht dann so aus:



Wer es mal ausprobieren möchte:
sonos_20150706.zip (10.4 KB)

Das Sonos Verzeichnis in /usr/share/symcon/modules/SymconMisc einfach mit dem im ZIP ersetzen.

Wenn ich positives Feedback bekomme (also dass es tut), würde ich einen neuen pull request erstellen, damit es auch alle bekommen.
Falls es Anregungen oder Verbesserungsvorschläge gibt, immer her damit. Das ist mein erstes PHP coding und mit Sicherheit optimierbar…

Gruß,
Thorsten

PS: Ach ja, wenn man den Haken bei „GroupCoordinator“ entfernt, sollten Variablen geöscht werden. Das geht aber erst, nach dem nächsten update: IP-Symcon Community Forum

Einstellungen wie Bass oder Loudness halte ich für unnötig.

Schade, nutze ich öfter mal.
Rest werde ich mal testen.

Hi,

Ich finde, dass es im WebFront dann einfach zu voll wird. Und die Sonos App kann das viel besser :wink:

Gruß,
Thorsten

@Kugelberg

Super Arbeit!:smiley:
Funktioniert auf meinen BananaPi ohne Probleme.

Falls es Anregungen oder Verbesserungsvorschläge gibt, immer her damit.

Cover Anzeige währe Super. :slight_smile:
Vielleich noch eine möglichkeit Musik aus dem Netzwerk bzw Nas abzuspielen?

Gruß

Hi Thorsten,

gerade schnell probiert, geht soweit bis auf LCN-Display, da fehlt noch was (schaue mir das später an…)
Klar kann die SONOS APP das besser, aber nicht mehr auf meinem iPad1…:mad:
Daher habe ich dort nur die IPS Funktionen, und da geht dann alles wieder, per Webbrowser.

Hi,

brauchst Du nicht, ich glaube was gefunden zu haben.
Habe die (ist das richtig?) Property „DisplayZeile“ in „LCNDiaplyLine“ umbenannt, aber nicht überall…

Ich lade gleich noch mal eine neue Version hoch…

Gruß,
Thorsten

Ging doch schneller als ich dachte…

sonos_20150707.zip (10.4 KB)

Gruß,
Thorsten