LoxBerry: Sonos Plugin verfügbar

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Liver_64
    MS Profi
    • 07.09.2015
    • 620

    #1651
    Gude zsamme,

    das Release v6.1.6 mit folgenden Änderungen ist ab sofort verfügbar:
    • Zeitsteuerung je Zone gefixed
    • Möglichkeit das Plugin downgrade/upgrade (siehe Tab Optionen)
    • Manuelles hinzufügen von Playern wieder aktiviert, zusätzlich für User mit VLAN die Möglichkeit eines UNICAST Scans
    viel Spaß weiterhin mit dem Plugin
    Gruß Olli
    Anmerkung: Bitte keine Fragen mehr per PN sondern direkt im Forum damit andere mithelfen und mitprofitieren können.
    Bzgl. Sonos Plugin supporte ich nur noch die jeweils aktuelle Version NUR auf dem LoxBerry, ich kann keine VM Unterstützung mangels Hardware geben. Herzlichen Dank!

    Kommentar

    • JeeyBee
      Smart Home'r
      • 13.01.2019
      • 38

      #1652
      Zitat von Liver_64
      Dein LoxBerry nutzt noch Bullseye und da gibt es kein offizielles Node package mehr. Das muss du entweder im Terminal fixen oder deinen Loxberry auf Bookworm aktualisieren. Hat nichts mit dem Plugin zu tun, erst nach dem Update/fix das Plugin installieren
      Funktioniert mit neuer HW! :-)

      Kommentar

      • RHC
        Extension Master
        • 04.11.2021
        • 171

        #1653
        Hallo,

        ich habe vorhin von 6.1.3 auf 6.1.6 upgedated. Wie schon in den Versionen davor (keine Ahnung mit welcher Version das begonnen hat) bleibt die Installation beim ersten Mal immer irgendwo hängen und der LB muss dann manuell rebootet werden. Beim zweiten Installationsversuch läuft die Installation dann zwar meistens durch, aber die Config vom sonos4lox ist dann meist schon zerschossen. Ich hatte das ja vor einigen Beiträgen schon mal dokumentiert, aber am LB selbst habe ich sonst keine Auffälligkeiten und somit weiß ich auch nicht, wo das Problem liegt...

        Wie auch immer - konkret habe ich aber wieder ein Anliegen bezüglich des TV-Monitors:

        Ich hatte ja schon mit Version 6.1.3 das Problem, dass mein Sub (Sub Gen. 3, welcher der SONOS Arc Soundbar zugeordnet ist) beim "Audio Profile" ausgegraut geblieben ist. Im TV-Monitor konnte ich den Schieber für den Sub aber aktivieren. Mit Version 6.1.6 ist nun aber auch der Sub beim TV-Monitor ausgegraut und dementsprechend würde mir jedes mal der Sub deaktiviert werden, wenn der TV-Monitor aktiv wird.
        Ich konnte das jetzt mal umgehen, indem ich in der s4lox_config.json den Parameter "NOSUB" von meiner Soundbar auf irgendeinen anderen Wert geändert habe - damit wird der Schieberegler für den Sub im TV-Monitor wieder anwählbar und der Sub bleibt dann auch tatsächlich aktiv.
        Aus irgendeinem Grund wird mein Sub also vom Plugin nicht gefunden bzw. wird die Info vom Arc nicht richtig ausgelesen - möglicherweise liegt es daran, dass mein Arc per Kabel mit dem Netzwerk verbunden ist und der Sub sich dadurch nicht über mein WLAN sondern über das SONOSNET verbindet. Dagegen spricht aber, dass diverse andere Speaker auch über SONOSNET kommunizieren und vom Plugin auch korrekt gefunden werden.

        Einen Änderungswunsch hätte ich noch bezüglich der Funktion des TV-Monitors :

        Man kann aktuell ja einen Zeitbereich definieren, in welchem der TV-Monitor aktiv ist. In meinem konkreten Fall nutze ich den TV-Monitor aber nicht, um Soundeinstellungen wie Sub, Sprache etc. zu beinflussen, sondern mir geht es hauptsächlich darum, dass meine Gruppe aus Arc (Wohnzimmer) und einem Era-Speaker in der Küche aufgelöst und nach Ausschalten des TVs wiederhergestellt und das ursprüngliche Medium wieder gestartet wird (das funktioniert ja dankenswerterweise seit 6.1.3). Aktuell habe ich eine Aktiv-Zeit zwischen 06:00 und 22:00 Uhr eingestellt, weil ich nicht will, dass das ursprüngliche Medium zwischen 22:00 und 06:00 Uhr nach Ausschalten des TVs wieder gestartet wird - das funktioniert auch soweit.
        Wenn man jetzt aber z.B. bis 22:10 Uhr noch Radio hört und erst dann den Fernseher einschaltet, bleibt der TV-Monitor aber ohne Funktion (da außerhalb des Zeitfensters) und der Radio auf dem Speaker in der Küche läuft weiter.
        Mir würde es reichen, wenn die gewählten Speaker bei "Stop Player bei Ein" immer gestoppt werden, wenn der TV aktiviert wird (unabhängig von dem gewählten Zeit-Fenster). Die Luxus-Variante wäre, wenn man das Verhalten für das Stoppen zusätzlicher Player noch separat mit einer Checkbox etc. konfigurieren könnte (immer aus wenn TV ein, oder nur im definierten Zeitfenster).

        Thx!
        Zuletzt geändert von RHC; In den letzten 3 Wochen.

        Kommentar

      • red_saimn
        Dumb Home'r
        • 05.12.2024
        • 19

        #1654
        Hallo zusammen

        Vorab mein Setup: Raspberri Pi 5 / Loxberry 3.0.1.3 / Sonos4Lox 6.1.6 / Sonos Play:1, Sonos Play One, Sonos Era, Sonos Playbar & Sub, alles auf S2

        Ich bin neuer User des Plugins und habe noch ein paar Probleme bzw. Fragen.

        1) Ich habe nach einigen Anlaufschwierigkeiten TTS hingekriegt. Ich gebe Ansagen durch und definiere dabei die zone=wohnen, und als member noch kueche und buero. Die Durchsage scheint mir aber nicht wirklich synchron zu sein. Genauso bei action=doorbell, der Klingelton ist nicht synchron. Mache ich was falsch oder ist das einfach so?

        Meine Syntax:
        TTS:
        Code:
        http://<<LOXBERRY-IP>>/plugins/sonos4lox/index.php?zone=wohnen&member=buero,kueche&action=say&volume=15&text=Die%20Alarmanlage%20wurde%20deaktiviert.
        Doorbell:
        Code:
        http://<<LOXBERRY-IP>>/plugins/sonos4lox/index.php?zone=wohnen&action=doorbell&file=1-doorbell&member=buero,kueche
        2) Ich gebe via Sonos die Alarmsirene aus. Ich nutze dafür das originale File von Loxone (2-alarm.mp3). Das funktioniert mit action=track auch, aber wenn nicht alle Räume gruppiert sind (und ich es einfach via member löse, dann nicht). Habe es halt so gelöst, dass ich erst einen Befehl zum gruppieren sende (funktioniert) und die Sirene zwei Sekunden später triggere auf die Zone wohnen. Aber wie es scheint greift die volume nur auf die gewählte zone nicht aber auf alle anderen Player. Wieder die Frage: mache ich was falsch oder ist das so? Dann müsste ich quasi beim gruppieren auch noch für jeden Speaker die Volume setzen. Und bei Alarm aus (ich triggere dort einen stop, funktioniert auch), müsste ich die Lautstärke wieder für jeden Player einzeln zurücksetzen.

        Meine Syntax:
        Gruppieren:

        Code:
        http://<<LOXBERRY-IP>>/plugins/sonos4lox/index.php/?zone=wohnen&action=group&member=buero,kueche
        Sirene:
        Code:
        http://<<LOXBERRY-IP>>/plugins/sonos4lox/index.php/?zone=wohnen&action=track&file=//<<LOXBERRY-IP>>/plugindata/sonos4lox/tts/mp3/2-alarm.mp3&volume=80&member=all
        Sirene aus:
        Code:
        http://<<LOXBERRY-IP>>/plugins/sonos4lox/index.php/?zone=wohnen&action=stop
        Ich krieg das schon hin, aber ist doch eher umständlich. Gibt es da einen besseren Weg?

        Danke und Gruss
        Simon

        Kommentar


        • Liver_64
          Liver_64 kommentierte
          Kommentar bearbeiten
          Zu 1. das hat nichts mit dem Haken bei T2S zu tun, sondern ist hart im Plugin so codiert.

          Zu 2. wer braucht denn ein 5 Minuten langes Alarmsignal 😳 Da gibt es doch im Verzeichnis einige andere kürzere… So musst halt den Umweg über track gehen obwohl es konzeptionell nicht dafür vorgesehen ist

        • red_saimn
          red_saimn kommentierte
          Kommentar bearbeiten
          Alles klar. Bzgl. Alarmfile: Nun ja, ich will ja einen Einbrecher abschrecken und nicht nur 10sek Alarm haben. Oder hast du das mit einem Impuls gelöst der dann wiederholt?

        • Liver_64
          Liver_64 kommentierte
          Kommentar bearbeiten
          Dann nutze doch einfach &doorbell für deinen Abschreckalarm. Da sollte dann auch &stop funktionieren
      • RHC
        Extension Master
        • 04.11.2021
        • 171

        #1655
        Und wegen deinem Sub rufe mal im Browser folgendes auf: http://<loxberry IP>/plugins/sonos4lox/bin/updateplayer.php
        Liver_64:
        Die Player hatte ich natürlich auch schon über das UI gelöscht und neu angelegt - wenn ich das updateplayer.php ausführe, ändert sich daher auch nichts, außer dass wieder "NOSUB" bei der Soundbar im s4lox_config.json eingetragen wird.

        Hier das Ergebnis nach Ausführen von updateplayer.php:
        Klicke auf die Grafik für eine vergrößerte Ansicht

Name: grafik.png
Ansichten: 115
Größe: 34,8 KB
ID: 484729
        Wenn ich allerdings http://x.x.x.x:1400/support/review auf irgendeinem meiner SONOS-Lautsprecher aufrufe, wird der Sub gelistet.
        Klicke auf die Grafik für eine vergrößerte Ansicht

Name: grafik.png
Ansichten: 101
Größe: 46,3 KB
ID: 484730
        ​​
        Der Sub wird aber auch in der SONOS-App nicht als eigenes Gerät angezeigt, sondern ist nur als verknüpftes Produkt unter dem Arc zu finden. Ich vermute mal, dass du noch mit einem älteren Setup testest und dass sich da in der Konfigurations-Topologie irgendwann was geändert hat.

        Ich habe ein wenig recherchiert und die KI um Hilfe gebeten - demnach sieht die Struktur eines Arc mit bonded Sub z.B. so aus:
        Code:
        ZoneGroup
         └── ZoneGroupMember (Arc)
              └── Satellite
                   └── HTSatChanMapSet="SW"​

        Letztendlich konnte ich es fixen, indem ich in der helper.php die Schleife
        Code:
        foreach($interim as $key => $value) {
        ...
        }​
        durch folgenden Code ersetzt habe:
        Code:
        foreach ($interim as $group) {
        
            if (!isset($group['ZoneGroupMember'])) {
                continue;
            }
        
            $members = $group['ZoneGroupMember'];
        
            // Falls nur ein einzelner Member vorhanden
            if (isset($members['attributes'])) {
                $members = [$members];
            }
        
            foreach ($members as $member) {
        
                $zoneName = strtolower($member['attributes']['ZoneName'] ?? '');
        
                // Direktes HTSatChanMapSet prüfen
                if (isset($member['attributes']['HTSatChanMapSet'])) {
        
                    $map = $member['attributes']['HTSatChanMapSet'];
        
                    if (strpos($map, $val) !== false) {
                        $subsur[$zoneName] = true;
                    }
                }
        
                // Satellites prüfen
                if (isset($member['Satellite'])) {
        
                    $satellites = $member['Satellite'];
        
                    if (isset($satellites['attributes'])) {
                        $satellites = [$satellites];
                    }
        
                    foreach ($satellites as $sat) {
        
                        $map = $sat['attributes']['HTSatChanMapSet'] ?? '';
        
                        if (strpos($map, $val) !== false) {
                            $subsur[$zoneName] = true;
                        }
                    }
                }
        
                // HTBondedZoneGroupMember prüfen
                if (isset($member['HTBondedZoneGroupMember'])) {
        
                    $bonded = $member['HTBondedZoneGroupMember'];
        
                    if (isset($bonded['attributes'])) {
                        $bonded = [$bonded];
                    }
        
                    foreach ($bonded as $bond) {
        
                        $map = $bond['attributes']['HTSatChanMapSet'] ?? '';
        
                        if (strpos($map, $val) !== false) {
                            $subsur[$zoneName] = true;
                        }
                    }
                }
            }
        }​


        Kommentar


        • Liver_64
          Liver_64 kommentierte
          Kommentar bearbeiten
          Dann hat sich das was seitens Sonos geändert. Ich schaue es mir mal an da ich ja die Kompatibilität mit den bestehenden Sub Generationen sicherstellen muss. Good work
      • jaylapeno
        Azubi
        • 09.04.2025
        • 3

        #1656
        Moin!
        Danke für das fantastische Plugin.

        Ich versuche mich gerade an der Türklingel und weiß leider nicht weiter. Ich teste gerade ausschließlich im Browser, damit ich den korrekten Befehl habe.

        - Die Action Doorbell macht gar nichts, egal ob file=chime oder file=klingel (eigene mp3 von mir im Ordner loxberry/data/plugins/sonos4lox/tts/mp3)
        - Die Action Say & messageId=klingel - oben in deinem Kommentar gesehen - führt auch zu nichts. Nach Reload der Loxberry Oberfläche sehe ich folgende Notification: "19.05.2026 23:16: play_t2s.php: cURL AudioClip error: ERROR_INVALID_OBJECT_ID unknown"
        - Wenn ich bewusst eine falsche/fehlende mp3 eingebe sehe ich einen anderen Fehler (gewollt) (The corrosponding messageid file 'klingel2.mp3' does not exist or could not be played. Please check your directory or syntax!)
        - Die Action Say & text=Test (oder jeglicher Text) wird auch nicht abgespielt. Im Ordner sonox4lox/tts/ liegt dann aber die mp3 mit dem TTS, jedoch wird nichts abgespielt

        Extra Infos:
        - Andere Befehle (z.B. Nextpush) gehen sofort
        - UI zeigt "🟢 All Sonos zones supports Audioclip, you can use function doorbell 🟢​"
        - T2S provider ist aktuell Piper, war aber auch ElevenLabs. Aber Erzeugen funktioniert ja auch...

        Mache ich irgendwas falsch? Brauchst du mehr Infos/Logs?

        PS: Ganz andere Frage, aber ich habe Sonos Speaker getauscht (Roam vom Bad in den Garten und Kinderzimmer ins Bad und so weiter hin und her) -> kriege ich irgendwie die Modelle aktualisiert im Admin UI? Scheint aber (außer das Problem oben) nichts zu beeinträchtigen

        Danke für deine Hilfe!

        Kommentar


        • Liver_64
          Liver_64 kommentierte
          Kommentar bearbeiten
          Wichtig ist dein PS: Die Raumnamen werden beim Scannen erfasst und dann in der URL genutzt. Aus der URL wird die IP bzw. RinconID basierend auf den Raumnamen ermittelt.
          Du hast zwei Möglichkeiten: 1. Löschen aller Player und erneut hinzufügen nachdem du alle final umbenannt hast oder 2. du öffnest die s4lox_config.json und änderst dort manuell die Namen. Da musst dir aber sicher sein das du richtigen Player und dazugehörigen Werte anpasst.
          Ich empfehle dir 1.

        • jaylapeno
          jaylapeno kommentierte
          Kommentar bearbeiten
          Danke, wird gleich direkt getestet.
          Ist das speziell für Say & Doorbell? Weil die Befehle für Radio, die ich mit dem T5 Doppelklick schicke, beinhalten ja auch die Zone und die funktionieren alle super auch nach dem bunten Wechsel der Geräte.

          Edit: habe alle entfernt, neu gesucht und es funktioniert perfekt. Spannend, dass andere Befehle ohne Probleme geklappt haben.. Ist aber auch egal, ich danke dir für die schnelle Antwort und Hilfe!
          Zuletzt geändert von jaylapeno; In den letzten 2 Wochen.
      • meisterjäger
        Smart Home'r
        • 15.06.2019
        • 84

        #1657
        @liver64 ich habe gerade meinen Loxberry komplett neu mit DietPi und Version 4.0.0.2 neu aufgesetzt. Und natürlich auch die Sonos4lox App auf die aktuellste Version 6.1.6 upgedatet. Leider sagt er wenn ich mit nextradio als Folgefunktion von zapzone einen Radio Sender starte nicht vorher den Sendernamen an. Woran kann das liegen? Die Funktion ist in den Einstellungen aktiviert. Eine Testausgabe von T2S funktioniert. Ich habe es mit Respivoice und Piper versucht bei beiden geht die Test ausgabe aber nicht die Senderansage. Der Rest funktioniert super

        Kommentar


        • meisterjäger
          meisterjäger kommentierte
          Kommentar bearbeiten
          Hat jemand anderes auch das Problem oder funktioniert es nur bei mir nicht?

        • Liver_64
          Liver_64 kommentierte
          Kommentar bearbeiten
          Ist ein Bug und wird mit dem n. Release gefixt

        • meisterjäger
          meisterjäger kommentierte
          Kommentar bearbeiten
          Vielen lieben Dank für die Mühe Das Plugin ist echt Spitze und für mich das wichtigste am Loxberry
      Lädt...