SonosBY (Sonos // Gruppen erstellen, Gruppen auflösen, Text to Speech, ...)

Sobald die 6.x FINAL released wurde, wird entweder hoffentlich der Bug durch Sonos behoben worden sein, oder ich muss das Skript entsprechend umbauen…

Leider hat die 6.x Beta noch viele andere Fehler/Bugs…bin ja mal gespannt, was da bis zum offiziellen Release noch passiert :rolleyes:

Verstehe ich dich richtig und der Bug ist bei der aktuellen 5.5.x, die kürzlich released wurde, auch vorhanden? Oder ist da alles ok mit dem Playing-Status?

Grüße,
Chris

Korrekt. Die 5.5 hat das Problem wohl auch. (Zumindest wird bei allen Playern 5.5 als Version angezeigt. Hoffe, dass da keine 6.x Reste übrig geblieben sind)…

Ne, das sind keine Reste von der 6er Version, sondern einfach eine 5.x Version die entstanden ist, nachdem die Beta 6 begonnen hat. Und damit ist der Bug wohl auch in die 5er Version gekommen. kotz Na zum Glück hab ich noch kein Update auf die aktuelle 5er gemacht, sondern hab noch die eine Version davor, wo alles ok ist :slight_smile: :stuck_out_tongue:

Mal sehen, wenn ich die Tage Zeit finde, dann bastel ich schon mal an einem workaround…wer weiß, ob der Fehler wirklich bis zur 6er Final behoben wird. Und viele werden vlt. noch auf die aktuelle 5er Version updaten und dann ebenfalls den Fehler haben. Seeehr uncool :mad: Ich war immer so begeistert von Sonos und dem Support, aber seit ich die Beta 6 gesehen habe, bin ich einfach nur entsetzt! :frowning:

Also bleibt dir leider nichts als es selbst versuchen zu fixen im Skript, oder zu warten bis ich einen workaround gebastelt habe. Hintergrund vom Problem im Skript ist, ich warte in einer Schleife so lange, bis Status nicht mehr Playing ist, weil ein Sprachausgaben sind unterschiedlich lang und joa…deshalb… Aber wo ich das grad schreibe, hab ich schon eine Idee wie ich das Problem umgehen kann :smiley: :cool:

Grüße,
Chris

Kannst du für eine neue Version noch das mit reinnehmen? :slight_smile:

// SonosBY_Stop_Playing($SonosGroupAR_NrDesPlayer)  << Setzt den Transport Status eines Players auf Stop und beendet das Playback
function SonosBY_Stop_Playing($i) {
Global $SonosGroupAR;
$content='POST /MediaRenderer/AVTransport/Control HTTP/1.1
HOST: '.$SonosGroupAR[$i][1].':1400
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Stop"
CONTENT-TYPE: text/xml; charset="utf-8"
Content-Length: 356

<?xml version="1.0" encoding="utf-8"?>
<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <u:Stop xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
         <InstanceID>0</InstanceID>
         <Speed>1</Speed>
      </u:Play>
   </s:Body>
</s:Envelope>';
$result = SonosBY_SendSOAP($SonosGroupAR[$i][1], $content);
return $result;
}

Kann ich machen… Plus die anderen „default“ Befehle wie „Play, Stop, Pause, …“. Nur bevor ich irgendwas mache, warte ich auf die Sonos 6.x Final. Sonst fange ich da grad von vorne an g

Grüße,
Chris

Siehe nächster Post :slight_smile:

SonosBY >> UPDATE online! :cool:

v1.5
>> NEU # Support für Sonos v5.5 und Sonos Beta v6.0
>> NEU # SonosBY_GetTrackDurationSekunden($SonosGroupAR_NrDesPlayer)
>> NEU # SonosBY_Stop_Playing($SonosGroupAR_NrDesPlayer)
>> NEU # SonosBY_Pause_Playing($SonosGroupAR_NrDesPlayer)

Grüße,
Chris

Hi Bayaro,

VIELEN DANK FÜR DEINE ARBEIT!!!

Ich habe dummerweise erst auf SONOS 5.5 geupdated und danach von den Problemen damit gelesen.

Bei Deiner aktuellen Version (SonosBY v1.5) wird leider nach der erfolgreichen Wiedergabe einer MP3-Datei, nicht die vorhergehende Wiedergabe fortgesetzt. Falls vorher nix wiedergegeben wurde, wiederholt er die Ansage (mp3-Datei)…

Hast Du eine Idee?

herbertf

Abend Herbert!

Bitte und gerne :slight_smile:

Ähm…das Verhalten hab ich bei der aktuellen 5.5 nicht. Hab ja selbst extra für euch auf 5.5 aktualisiert und die entsprechenden Funktionen in SonosBY dann gefixed und intensiv geprüft/getestet. Meine Sprachausgaben von Waschmaschine und sonstigem funktionieren einwandfrei :confused:

Hab es auch grad nochmal getestet, wenn vorher was abgespielt wurde, macht er danach genau an der richtigen Stelle wieder weiter. Funktioniert zwar nach wie vor nicht beim GruppenMaster, aber bei den anderen Membern keine Probleme.

Hmmmm…spontan fehlt mir ein Ansatzpunkt. Beschreib mal ein wenig dein Sonos-Netz. Mit welcher SonosBY Funktion hast du es probiert oder wie machst du deine Sprachausgaben usw?

Grüße,
Chris

Hi,

ich habe mit

SonosBY_DateiAbspielen_Auswahl

die Datei abgespielt.

Kann ich etwas anderes nehmen für ein MP3-File?

Verhalten mit

SonosBY_TTS(1, "Ich bin ein Test der Sprachausgabe"); 

ähnlich, auch keine Rückkehr zum Stream, dafür aber auch keine Wiederholung von der Ansage.

Der Master (Index=0) ist nicht ausprobiert…

Ciao

herbertf

Nur damit wir uns nicht missverstehen:

> Wenn du zum Abspielen einer Datei die Funktion „SonosBY_DateiAbspielen_Auswahl“ nimmst, ist das schon mal korrekt.
> SonosBY_DateiAbspielen_Auswahl(„Flur,Kueche,Bad“, „test.mp3“); …würde die Datei abspielen und danach bei Kueche und Bad wieder da weiter abspielen, wo er vor der Sprachausgabe war. Beim Flur macht er danach nichts und bleibt auf STOP. Leider eine Einschränkung durch das Sonos System, welche ich noch nicht lösen konnte.
…und da ist es bei dir so, dass weder Kueche noch Bad da weiter abspielen, wo sie vor der Sprachausgabe aufgehört haben?

GruppenMaster ist bei ALLE immer der Index 0. Bei AUSWAHL ist immer der 1. Eintrag der GruppenMaster.

Grüße,
Chris

Hi,

das hatte ich so wirklich nicht verstanden.

SonosBY_DateiAbspielen_Auswahl(„Bad,Garten“, $Raum.’-ivona.mp3’); spielt im Garten korrekt anschließend weiter !!!

Kann ich für den ersten irgendeinen Dummy nehmen (ich möchte dort nix hören)???

Danke

Deswegen hab ich es eben nochmal geschrieben :wink: Steht aber auch in meinem 1. Post und/oder im Skript, dass ich als GruppenMaster eine Sonos-Box empfehle, die möglichst nie oder selten etwas abspielt :slight_smile:

ich nehme bei mir die Sonos im Flur, weil dann diese und andere Effekte (kurzzeitig die „alte“ Musik auf allen Boxen in Sprachausgabenlautstärke, kein abspielen der alten Musik danach, …) nicht auftreten, weil ich die Sonos im Flur gaaaanz selten mal verwende zum Musik abspielen.

Wie gesagt, ist leider eine „Einschränkung“ die Sonos verursacht und für die ich noch keinen guten workaround gefunden habe :frowning:

Grüße,
Chris

Okay vielen Dank.

Ich habe zwar keine Box „wo eigentlich nur Ansagen kommen sollen“ - es ist mir aber jetzt zum Nachdenken auch schon zu spät ;-)))

DANKE und Gute Nacht

Hallo Leute,

ich habe versucht das Skript auf meinem Raspberry zum laufen zu kriegen.

Leider kommt es zu folgender Fehlermeldung:

Parse error: syntax error, unexpected ‚$TTS_InstanzID‘ (T_VARIABLE) in /usr/share/symcon/scripts/SonosBY.ips.php on line 102

In der Zeile 102 habe ich für die TTS Instanz false eingeben.

Hat jemand eine Idee wo das Problem liegen könnte?

Gruß

Axel

Abend!

Klingt als hättest du in der Zeile davor, am Ende das „;“ Zeichen vergessen?!

Wenn es daran nicht liegt, dann poste mal bitte den Skriptteil mit ein paar Zeilen davor und ein paar Zeilen danach.

Grüße,
Chris

Hallo Chris,

hier ein Auszug aus meinem Skript:

// Syntax: $SonosGroupAR[0] = array("Raumname","IP-Adresse","RINCON","Lautstärke des Players im Gruppenbetrieb");
// Beispiel für 3 Sonos Player // [0] = Gruppen-Master
$SonosGroupAR[0] = array("Sonos","192.168.178.40","RINCON_B0000000000000000","30");
//$SonosGroupAR[1] = array("Badezimmer","192.168.1.12","RINCON_B1111111111111111","35");
//$SonosGroupAR[2] = array("Wohnzimmer","192.168.1.13","RINCON_B2222222222222222","30");

$Sonos_Dateiordner = "\\192.168.178.20\\public\\"; 
$Sonos_SMBordner = "//192.168.178.20/public/";                
$TTS_InstanzID = false;                 
// Mit der Text to Speech API von Google sind max. 100 Zeichen möglich! Wer mehr Zeichen will > https://www.symcon.de/forum/threads/25562-IPSSonos?p=243647#post243647
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



/****** AB HIER NICHTS MEHR ÄNDERN ****************************************************************/

function SonosBY_GruppeErstellen() {
    Global $SonosGroupAR;
   $AnzahlPlayer = count($SonosGroupAR);

Gruß

Axel

Hi Axel!

Was fällt dir auf, wenn du meine Beispiel-Zeilen, mit deinen vergleichst? :slight_smile:

Zeilen aus meinem Beispiel:


$Sonos_Dateiordner = "C:\\IP-Symcon\\media\\sonos-sounds\\";  // Das hier eingetragene Verzeichnis muss für Sonos freigegeben werden 
$Sonos_SMBordner = "//192.168.1.50/sonos-sounds/";            // Hier den SMB-Pfad zur Netzwerkfreigabe eintragen ("//IPS-Server-IP/ORDNERNAME/") 

Von daher müsste es bei dir so in der Art aussehen:

$Sonos_Dateiordner = "/etc/symcon/ordnerxyz/"; 
$Sonos_SMBordner = "//192.168.178.20/public/";                 
$TTS_InstanzID = false;     

Ich denke der Pfad in $Sonos_Dateiordner ist das Problem. Der will da einen lokalen Pfad und keinen Share. Wenn du es über ein Share laufen lassen willst, dann könnte „mount“ dein Stichwort sein. Aber da ich kein IPS unter Linux im Einsatz habe, kann ich dir da leider sonst wenig helfen.

Grüße,
Chris

Hallo Chris,

Deinen Vorschlag habe ich umgesetzt.
Jetzt kommt folgende Fehlermeldung:

Undefined offset: 1 in <b>/usr/share/symcon/scripts/SonosBY.ips.php</b> on line <b>658

Gruß

Axel

Etwas mehr Infos bitte. Was wolltest du abspielen/machen als der Fehler kam? Und bitte die Zeilen kurz vor und kurz nach der Zeile mit dem Fehler posten und sagen welche Zeile die mit dem Fehler ist.

Und am besten auch den Teil posten, in dem du deine Sonos definiert hast. Klingt als wäre da ein Fehler…

Grüße,
Chris