[Neues Modul] BOSE SoundTouch

Begonnen von dominik, 05 Januar 2016, 22:28:40

Vorheriges Thema - Nächstes Thema

betateilchen

Zitat von: Prof. Dr. Peter Henning am 06 Januar 2026, 12:15:02Weil ich auch die BOSE-Kisten mute, so lange eine Ausgabe an anderer Stelle läuft.

Workaround: off-for-timer  8)

Aber wenn Du es unbedingt beim restore haben möchtest, bitteschön, das ist auch nicht viel komplizierter:

Index: /opt/fhem/FHEM/98_BOSEST.pm
===================================================================
--- /opt/fhem/FHEM/98_BOSEST.pm (revision 30692)
+++ /opt/fhem/FHEM/98_BOSEST.pm (working copy)
@@ -396,6 +396,7 @@
                 "stop:noArg pause:noArg channel:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 ".
                 "volume:slider,0,1,100 ".$hash->{helper}{supportedBassCmds}." ".
                 "saveChannel:07,08,09,10,11,12,13,14,15,16,17,18,19,20 ".
+                "saveState:noArg restoreState restoreVolAndOff ".
                 "addDLNAServer:".$hash->{helper}{dlnaServers}." ".
                 "removeDLNAServer:".ReadingsVal($hash->{NAME}, "connectedDLNAServers", "noArg");
 
@@ -532,6 +533,14 @@
         return "BOSEST: removeFromZone requires deviceID as additional parameter" if(int(@params) < 1);
         #params[0] = deviceID channel
         BOSEST_removeFromZone($hash, $params[0]);
+    } elsif($workType eq "saveState") {
+        BOSEST_saveCurrentState($hash);
+    } elsif($workType eq "restoreState") {
+        my $wait = (defined($params[0]) && looks_like_number($params[0]))?$params[0]:0;
+        InternalTimer(gettimeofday()+$wait, "BOSEST_restoreSavedState", $hash, 0);
+    } elsif($workType eq "restoreVolAndOff") {
+        my $wait = (defined($params[0]) && looks_like_number($params[0]))?$params[0]:0;
+        InternalTimer(gettimeofday()+$wait, "BOSEST_restoreVolumeAndOff", $hash, 0);
     } else {
         return SetExtensions($hash, $list, $name, $workType, @params);
     }

Damit kannst Du optional bei den restoreXXX eine Zeitspanne in Sekunden mitgeben.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

FlatTV

Zitat von: betateilchen am 03 Januar 2026, 15:07:31Meine Soundtouch Boxen haben inzwischen gar keinen Zugang zum Internet mehr, um zu verhindern, dass als "Abschiedsgeschenk" von Bose noch irgendein Update kommt, das die Boxen einfach komplett crasht.

Die 6 presets mit meinen Lieblingsradiostationen zeigen jetzt auf den Mediaserver der Fritzbox, dort sind die URL der Radiostationen hinterlegt und werden bei Bedarf von der Fritzbox an die Soundtouch gestreamt.

Die Steuerung der Soundtouch per App habe ich auch umgestellt, es gibt im Appstore ein App "Controller für Bose Soundtouch" die sich beim Test als "gut" erwiesen hat und mir die einmalig zu zahlenden 2,99 Euro wert war.

Insofern hoffe ich, dass hier im Februar einfach "nix" passieren wird und ich alles weiter so nutzen kann wie bisher.

Die beschriebenen App habe ich mir auch einmal gegönnt.
Hier wird aber auch über contentItemSource TUNEIN auf die Bose URL gesetzt.
Das wird so später sicherlich nicht mehr funktionieren.
Ich wurde auf dieses Projekt aufmerksam gemacht, damit könnte man die Internen URLs in den Boxen anpassen.https://github.com/deborahgu/soundcork.

Das andere noch offene Thema mit den fehlenden Aktualisierungen der Preset Tasten in Fhem, löse ich jetzt mit einer manuellen cmdalias Funktion (wann ändert man schon die Stationen).
Hier hatte die Bose App nach dem speichern, ein updates Event ,,presetsUpdated" ausgelöst.
Dieses fehlt natürlich bei einer manuellen Speicherung und wird wohl auch sonst nie automatisch gesendet.

Raspi4 - im wesentlichen mit Phoscon, HomeMatic ( aktuell über debmatic), CUL, BOSE-ST und Alexa (Connector)

betateilchen

Zitat von: FlatTV am 06 Januar 2026, 23:11:46Ich wurde auf dieses Projekt aufmerksam gemacht, damit könnte man die Internen URLs in den Boxen anpassen.https://github.com/deborahgu/soundcork.

Nun habe ich über eine Stunde lang versucht, dieses python Ding zu installieren - bisher ohne Erfolg.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

fred_feuerstein

Neueste infos:
Frist bis Abschaltung der Cloud Dienste verlängert auf 06.05.26, Nutzung bestimmter Funktionen auch ohne Cloud möglich, es wird eine App Update geben zur weiteren Steuerung, Zugriff auf API ...


https://www.handelsblatt.com/technik/it-internet/software-smarte-bose-lautsprecher-werden-ploetzlich-dumm/100189005.html
Gruß, Fred

NEU: FHEM auf Raspberry PI 5, OS: Bookworm, mit Z-Wave RaZberry-Modul, 868CUL (WMBUS), LaCrosseCUL (Temp) und knapp 300 Devices aller Art
ALT: FHEM auf Raspberry PI 3B+ im 7Zoll TouchDisplay Gehäuse, OS: Bullseye, mit Z-Wave RaZberry-Modul, 868CUL (WMBUS), LaCrosseCUL (Temp)

FlatTV

Raspi4 - im wesentlichen mit Phoscon, HomeMatic ( aktuell über debmatic), CUL, BOSE-ST und Alexa (Connector)

fred_feuerstein

Bei dem obigen Link ist auch die neue Doku für die Api von Bose dabei.

Da es meinen Kenntnisstand leider komplett übersteigt hoffe, dass sich jemand findet, der ggfs. das vorhandene BOSEST-Modul mit der neuen Api entsprechend ändert/erweitert.

Ansonsten muss man nach dem 06.05.2026 halt mal schauen was zu den bisherigen MItteilungen von Bose etc. letztendlich noch geht und was nicht.
Gruß, Fred

NEU: FHEM auf Raspberry PI 5, OS: Bookworm, mit Z-Wave RaZberry-Modul, 868CUL (WMBUS), LaCrosseCUL (Temp) und knapp 300 Devices aller Art
ALT: FHEM auf Raspberry PI 3B+ im 7Zoll TouchDisplay Gehäuse, OS: Bullseye, mit Z-Wave RaZberry-Modul, 868CUL (WMBUS), LaCrosseCUL (Temp)

FlatTV

Die neue Beschreibung ist nur die abgesteckte Version der bekannten API-Beschreibung.
Hier fehlen nur wesentliche Teile z.B. der zum DLNA Support oder der Preset Speicherung  :o

Ich musste heute die Boxen wieder an die App koppeln, da sie komplett durcheinander waren und beim einschalten immer Multiroom gestartet haben.
Ein mal neu mit der App verbunden und alles war wieder gut - das lässt mich nicht gerade hoffnungsvoll in die Zukunft blicken.
Raspi4 - im wesentlichen mit Phoscon, HomeMatic ( aktuell über debmatic), CUL, BOSE-ST und Alexa (Connector)

betateilchen

Zitat von: FlatTV am 10 Januar 2026, 16:55:46Ich musste heute die Boxen wieder an die App koppeln, da sie komplett durcheinander waren und beim einschalten immer Multiroom gestartet haben.
Ein mal neu mit der App verbunden und alles war wieder gut

Bei mir ähnlich: Die presets waren nach wenigen Tagen komplett durcheinander, nach Freigabe der Internetverbindung war alles wieder gut.
Nun laufen die presets erstmal alle wieder über TuneIn statt über meine Fritzbox, aber es werden keine Senderlogos mehr auf der ST20 angezeigt.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Vermutung: zum 06.05. werden die Boxen ein Firmware-Update bekommen, das die Verbindung der Boxen zu https://content.api.bose.io/bmx/registry/v1/services
unterbindet. Das würde erklären, warum

ZitatWas weiterhin funktionieren wird:
Musikstreaming aus deinen Lieblings-Apps direkt über Bluetooth®, AirPlay, Spotify Connect und AUX
Einrichten und Konfigurieren des Systems
Fernbedienungsfunktionen wie Abspielen, Pausieren, Überspringen und Lautstärke
Koppeln mehrerer Lautsprecher miteinander
Was nicht mehr funktionieren wird:
Presets (Tasten zur Voreinstellung auf dem Produkt und in der App)
Suchen oder Abspielen von Musikdiensten direkt in der SoundTouch-App

die presets und das Abspielen aus der App nicht mehr funktionieren wird.
Alle anderen Dienste der Bose-Server lassen sich mit wenig Aufwand innerhalb der Firmware selbst ersetzen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

#714
Zitat von: betateilchen am 07 Januar 2026, 12:41:33Nun habe ich über eine Stunde lang versucht, dieses python Ding zu installieren - bisher ohne Erfolg.

Na also, geht doch...
(die Fehler bei der IP .112 kann man ignorieren, das ist ein anderer Server, der upnp spricht)

2026-01-11 18:46:13,192 [soundcork.main] INFO: Starting up soundcork
2026-01-11 18:46:19,177 [ssdp] ERROR: Error '500 Server Error: Internal Server Error for url: http://192.168.123.112/upnp/basic_dev.cgi' for <upnpclient.ssdp.Entry object at 0x7fbe66393380>
2026-01-11 18:46:19,191 [ssdp] ERROR: Error '500 Server Error: Internal Server Error for url: http://192.168.123.112/upnp/basic_dev.cgi' for <upnpclient.ssdp.Entry object at 0x7fbe66393680>
2026-01-11 18:46:19,191 [soundcork.datastore] INFO: Discovering upnp devices on the network
2026-01-11 18:46:19,191 [soundcork.datastore] INFO: Discovered Bose devices:
- ST20
- ez_ST10
- fl_ST10
- sz_ST10
2026-01-11 18:46:19,192 [soundcork.main] INFO: done starting up server
      INFO   Application startup complete.
2026-01-11 18:46:19,192 [uvicorn.error] INFO: Application startup complete.

Das Problem bei der Installation war: funktioniert nur mit python 3.12 und das ist weder bei Debian12 (3.11) noch bei Debian13  (3.13) in den repositories vorhanden. Deshalb habe ich jetzt ein Ubuntu24 in einem Proxmox Container installiert, damit hat die Anleitung aus dem github Projekt fast problemlos funktioniert. In der Installationsanleitung ist ein Befehl falsch angegeben, aber die Lösung wird schon in der Fehlermeldung ausgegeben.

Dann kann ich ja nun mal anfangen eine meiner Boxen auf den eigenen Server umzubiegen :)



Edit: läuft nun auch als service direkt beim Start des Containers:

udo@soundcork24:~$ systemctl status soundcork
* soundcork.service - Gunicorn Daemon for Soundcork
     Loaded: loaded (/etc/systemd/system/soundcork.service; enabled; preset: enabled)
     Active: active (running) since Sun 2026-01-11 20:09:28 CET; 20s ago
   Main PID: 238 (gunicorn)
      Tasks: 5 (limit: 38205)
     Memory: 132.3M (peak: 132.4M)
        CPU: 1.280s
     CGroup: /system.slice/soundcork.service
             |-238 /home/udo/soundcork/.venv/bin/python3 /home/udo/soundcork/.venv/bin/gunicorn -c gunicorn_conf.py main:app
             |-318 /home/udo/soundcork/.venv/bin/python3 /home/udo/soundcork/.venv/bin/gunicorn -c gunicorn_conf.py main:app
             `-319 /home/udo/soundcork/.venv/bin/python3 /home/udo/soundcork/.venv/bin/gunicorn -c gunicorn_conf.py main:app

Jan 11 20:09:36 soundcork24 gunicorn[319]: - sz_ST10
Jan 11 20:09:36 soundcork24 gunicorn[319]: - ez_ST10
Jan 11 20:09:36 soundcork24 gunicorn[319]: 2026-01-11 20:09:36,668 [main] INFO: done starting up server
Jan 11 20:09:36 soundcork24 gunicorn[318]: 2026-01-11 20:09:36,671 [soundcork.datastore] INFO: Discovering upnp devices on the network
Jan 11 20:09:36 soundcork24 gunicorn[318]: 2026-01-11 20:09:36,672 [soundcork.datastore] INFO: Discovered Bose devices:
Jan 11 20:09:36 soundcork24 gunicorn[318]: - ST20
Jan 11 20:09:36 soundcork24 gunicorn[318]: - fl_ST10
Jan 11 20:09:36 soundcork24 gunicorn[318]: - ez_ST10
Jan 11 20:09:36 soundcork24 gunicorn[318]: - sz_ST10
Jan 11 20:09:36 soundcork24 gunicorn[318]: 2026-01-11 20:09:36,672 [main] INFO: done starting up server



Mangels USB Stick mit microUSB Anschluss komme ich heute nicht mehr weiter...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!