Bose und soundcork und FHEM

Begonnen von betateilchen, 28 April 2026, 18:53:23

Vorheriges Thema - Nächstes Thema

betateilchen

Wie bekannt sein dürfte, schaltet Bose in den nächsten Tagen die Server ab, die von Bose Soundtouch Geräten für den vollen Leistungsumfang benötigt werden.

Inzwischen gibt es community-Projekte, mit denen die Server-Umgebung nachgebildet werden kann: soundcork dürfte das bekannteste dieser Projekte sein.

Damit der ursprüngliche Entwicklungsthread zum Bose Modul von FHEM, in dem jetzt auch schon die Diskussion zur aktuellen Überarbeitung läuft, nicht auch noch durch Fragen zu soundcork gefüllt wird, wäre es schön, wenn wir die Diskussion zu soundcork hier im Thread führen würden.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

So, heute hatte ich mal wieder Zeit, mich mit dem Thema Bose zu befassen.

Unter welchen Voraussetzungen holen sich die Boxen die Presets.xml erneut vom Server ab?
Neustart (Server und/oder Box) alleine scheint nicht zu reichen.

Und wonach wird hier gesucht und nicht gefunden?

INFO   192.168.123.229:50369 - "POST /streaming/support/power_on HTTP/1.1" 404
INFO   192.168.123.229:50394 - "GET /streaming/sourceproviders HTTP/1.1" 404     

Zwei Boxen laufen inzwischen über soundcork, dann ist der USB Stick mit dem micro-USB port in seine Einzelteile zerfallen...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Prof. Dr. Peter Henning

Bei mir läuft immer noch eine 10 Wochen alte Version von soundcork. Alle meine Code-Beiträge wurden jetzt in den main branch übernommen, ich sollte das also mal nachziehen. Ab übernachster Woche wird alles besser...

LG

pah

betateilchen

Bei mir hatte ich am Wochenende soundcork einmal neu aus github aufgesetzt, das geht ja recht flott.

Inzwischen laufen alle 5 Boxen gegen soundcork. Aber die Presets sind erstmal noch die "alten" die vom Bose Server kamen.

Was mir noch völlig unklar ist, ist das Zusammenspiel zwischen Bose-App, soundcork und den Bose Boxen.
Aber vielleicht wird mir das klarer, wenn Bose wirklich mal abgeschaltet hat.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Prof. Dr. Peter Henning

Offenbar ist jetzt wirklich etwas abgeschaltet worden. Während meine ST300 und die ST10 problemlos mit meinem soundcork-Server laufen, verweigert die ST20 den Dienst  :-X

LG

pah

betateilchen

Aus Deinem Wiki-Artikel zitiert:

ZitatTODO: Unterabschnitte für die anderen Systeme schreiben, da nicht bekannt ist, wie lange BOSE die Informationen noch zur Verfügung stellt.

https://downloads.bose.com/ced/soundtouch/soundtouch_usb/index.html?l=de

Diese Download-URL existiert auch seit ein paar Tagen nicht mehr.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

#6
Meine auf soundcork konfigurierten ST10 funktionieren alle nicht mehr.

Beim Einschalten kommen diese Meldungen:

192.168.123.229:41854 - "POST /marge/streaming/support/power_on HTTP/1.1" 200
192.168.123.229:41856 - "POST /v1/scmudc/E8E.. HTTP/1.1" 200
192.168.123.229:41857 - "GET /bmx/registry/v1/services HTTP/1.1" 200
192.168.123.229:41863 - "GET /media/tunein-monochromePng.png HTTP/1.1" 200
192.168.123.229:41864 - "GET /media/orion-monochrome_v2.png HTTP/1.1" 200
192.168.123.229:41865 - "GET /media/siriusxm-monochromePng.png HTTP/1.1" 200
192.168.123.229:41867 - "GET /media/orion-monochrome_v2.png HTTP/1.1" 200
192.168.123.229:41873 - "POST /v1/scmudc/E8E.. HTTP/1.1" 200
192.168.123.229:41874 - "GET /marge HTTP/1.1" 404
192.168.123.229:41875 - "GET /marge/streaming/sourceproviders HTTP/1.1" 200
192.168.123.229:41876 - "POST /v1/scmudc/E8E.. HTTP/1.1" 200
192.168.123.229:41877 - "GET /marge/streaming/account/490../full HTTP/1.1" 200
192.168.123.229:41878 - "POST /v1/scmudc/E8E.. HTTP/1.1" 200
192.168.123.229:41879 - "POST /v1/scmudc/E8E.. HTTP/1.1" 200
192.168.123.229:41880 - "GET /marge/streaming/account/490../device/E8E../group/ HTTP/1.1" 307
192.168.123.229:41881 - "GET /marge/streaming/account/490../provider_settings HTTP/1.1" 200
192.168.123.229:41884 - "POST /v1/scmudc/E8E.. HTTP/1.1" 200
192.168.123.229:41892 - "GET /marge/streaming/account/490../provider_settings HTTP/1.1" 200

Bei der Auswahl eines Presets kommt:

192.168.123.229:45792 - "POST /v1/scmudc/E8E.. HTTP/1.1" 200
192.168.123.229:45794 - "POST /v1/scmudc/E8E.. HTTP/1.1" 200
192.168.123.229:45796 - "POST /v1/scmudc/E8E.. HTTP/1.1" 200
192.168.123.229:45819 - "POST /v1/scmudc/E8E.. HTTP/1.1" 200

Das sieht eigentlich alles "normal" aus.
Trotzdem spielt die Box nicht das gewünschte Preset ab und die gelbe LED ganz rechts leuchtet auf.

Die presets sind alle auf die lokale Fritzbox konfiguriert, auf der die 6 Internet-Radiostationen eingerichtet sind.

Irgendwas muss die Box wohl doch noch nach draußen telefonieren, ohne dass eine erwartete Antwort kommt.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: betateilchen am 01 Mai 2026, 11:36:12Irgendwas muss die Box wohl doch noch nach draußen telefonieren, ohne dass eine erwartete Antwort kommt.

Es wird beispielsweise im Internet nach einem NTP Server gesucht.
In /etc/ntpservers.txt habe ich jetzt die Fritzbox als Server eingetragen und die anderen Einträge entfernt.

An dieser Stelle sei noch der Hinweis erlaubt, dass meine ST10 grundsätzlich keine Verbindung ins Internet aufbauen dürfen, sondern nur im lokalen Netzwerk laufen sollen.

Interessanterweise habe ich jetzt über die BOSE-App die Streams von der Fritzbox an eine beliebige Box schicken können, die dann brav abspielt. Dann kann ich auf der Box die PRESET Taste neu belegen und das macht die Zuordnung wieder persistent, auch nach dem Aus- und Wiedereinschalten oder nach einem Reboot der Box.

Aber für wie lange? Und warum funktioniert das irgendwann nicht mehr?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Prof. Dr. Peter Henning

Bei mir funktioniert jetzt alles (ST10, ST20, ST300) wieder normal, ohne dass ich irgendetwas geändert hätte.
Zu systematischen Tests habe ich vor übernächster Woche keine Zeit, sonst hätte ich Dich gerne unterstützt.

LG

pah

betateilchen

Zitat von: Prof. Dr. Peter Henning am 01 Mai 2026, 12:26:53Zu systematischen Tests habe ich vor übernächster Woche keine Zeit, sonst hätte ich Dich gerne unterstützt.

Kein Problem, ich sammle hier einfach mal alles, was mir so auffällt.
Vermutlich wird es nächste Woche noch mehr Dinge geben, die nicht so richtig klappen.

Inzwischen habe ich aber auch die Logik verstanden, wann sich die Boxen die presets holen:

Wenn ich das preset einer beliebigen Box direkt am Gerät ändere, wird das an soundcork gemeldet, indem die neue Presets.xml auf den soundcork Server gespeichert wird. Daraufhin holen sich sofort alle Boxen (inklusive derjenigen, die die Änderung ausgeführt hat) die "neue" Presets.xml.

      INFO   192.168.123.229:56570 - "POST /v1/scmudc/E8E HTTP/1.1" 200
      INFO   192.168.123.229:56572 - "PUT /marge/streaming/account/490/device/E8E/preset/1 HTTP/1.1" 200
      INFO   192.168.123.229:56577 - "POST /v1/scmudc/E8E HTTP/1.1" 200
      INFO   192.168.123.229:56580 - "GET /marge/streaming/account/490/device/E8E/presets HTTP/1.1" 200
      INFO   192.168.123.225:46495 - "GET /marge/streaming/account/490/device/EC2/presets HTTP/1.1" 200
      INFO   192.168.123.227:59281 - "GET /marge/streaming/account/490/device/64C/presets HTTP/1.1" 200
      INFO   192.168.123.228:41282 - "GET /marge/streaming/account/490/device/B0D/presets HTTP/1.1" 200
      INFO   192.168.123.226:54561 - "GET /marge/streaming/account/490/device/F45/presets HTTP/1.1" 200
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Der Markt füllt sich langsam mit günstig angebotenen Bose Soundtouch Geräten  8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Prof. Dr. Peter Henning

Guter Hinweis. Nächste Woche habe ich wieder etwas Luft, da werde ich diesen Markt mal prüfen und meiner Frau noch etwas für ihr Arbeitszimmer besorgen.

LG

pah

betateilchen

Zitat von: Prof. Dr. Peter Henning am 07 Mai 2026, 05:31:47da werde ich diesen Markt mal prüfen

Aktuelle Marktlage:

ST10 = ca. 40-50 Euro
ST20 III = ca. 80-120 Euro

Inzwischen bin ich gut bevorratet 🙃
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

FlatTV

Also bei mir läuft der Soundcork nach dem Update nicht mehr.
http://ip:8000/docs kann ich noch aufrufen, beim Aufruf von http://ip:8000/ kommen nur Fehler.

Ich habe Python 3.12.12

((.venv) ) soundcork@pi3:~/soundcork/soundcork $ fastapi run main.py

   FastAPI   Starting production server 🚀
 
             Searching for package file structure from directories with __init__.py files
2026-05-07 22:42:18,863 [soundcork.datastore] INFO: Initiating Datastore
2026-05-07 22:42:19,034 [soundcork.datastore] INFO: Initiating Datastore
2026-05-07 22:42:20,059 [soundcork.datastore] INFO: Initiating Datastore
             Importing from /home/soundcork/soundcork
 
    module   📁 soundcork     
             ├── 🐍 __init__.py
             └── 🐍 main.py   
 
      code   Importing the FastAPI app object from the module with the following code:
 
             from soundcork.main import app
 
       app   Using import string: soundcork.main:app
 
    server   Server started at http://0.0.0.0:8000
    server   Documentation at http://0.0.0.0:8000/docs
 
             Logs:
 
      INFO   Started server process [67449]
2026-05-07 22:42:25,142 [uvicorn.error] INFO: Started server process [67449]
      INFO   Waiting for application startup.
2026-05-07 22:42:25,146 [uvicorn.error] INFO: Waiting for application startup.
      INFO   Application startup complete.
2026-05-07 22:42:25,150 [uvicorn.error] INFO: Application startup complete.
      INFO   Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
2026-05-07 22:42:25,156 [uvicorn.error] INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
      INFO   192.168.178.48:61900 - "GET /docs HTTP/1.1" 200
      INFO   192.168.178.48:61900 - "GET /openapi.json HTTP/1.1" 200
      INFO   192.168.178.48:61903 - "GET / HTTP/1.1" 500
     ERROR   Exception in ASGI application
Traceback (most recent call last):
  File "/home/soundcork/soundcork/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 1002, in run
    result = context.run(func, *args)
             ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/soundcork/soundcork/soundcork/main.py", line 142, in read_root
    for speaker in speakers.all_devices().values():
                   ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/soundcork/soundcork/soundcork/ui/speakers.py", line 85, in all_devices
    account_ids = self._datastore.list_accounts()
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/soundcork/soundcork/soundcork/datastore.py", line 651, in list_accounts
    for account_id in next(walk(self.data_dir))[1]:
                      ^^^^^^^^^^^^^^^^^^^^^^^^^
StopIteration

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/soundcork/soundcork/.venv/lib/python3.12/site-packages/uvicorn/protocols/http/httptools_impl.py", line 421, in run_asgi
    result = await app(  # type: ignore[func-returns-value]
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/soundcork/soundcork/.venv/lib/python3.12/site-packages/uvicorn/middleware/proxy_headers.py", line 56, in __call__
    return await self.app(scope, receive, send)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/soundcork/soundcork/.venv/lib/python3.12/site-packages/fastapi/applications.py", line 1159, in __call__
    await super().__call__(scope, receive, send)
  File "/home/soundcork/soundcork/.venv/lib/python3.12/site-packages/starlette/applications.py", line 90, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/home/soundcork/soundcork/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 186, in __call__
    raise exc
  File "/home/soundcork/soundcork/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 164, in __call__
    await self.app(scope, receive, _send)
  File "/home/soundcork/soundcork/.venv/lib/python3.12/site-packages/starlette/middleware/cors.py", line 88, in __call__
    await self.app(scope, receive, send)...
Raspi4 - im wesentlichen mit Phoscon, HomeMatic ( aktuell über debmatic), CUL, BOSE-ST und Alexa (Connector)

betateilchen

Was hast Du denn aktualisiert?

python3 oder soundcork oder beides?

Bei mir läuft python 3.12.3 und damit funktioniert soundcork problemlos.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!