[Neues Modul] BOSE SoundTouch

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

Vorheriges Thema - Nächstes Thema

Prof. Dr. Peter Henning

Zitat von: Mad am 31 Januar 2026, 10:28:12Namen eines Lautsprechers in der App geändert. Könnte es damit zusammenhängen?
Eher nicht.

Ich vermute von den Symptomen her, dass eine der Voraussetzungen für BOSEST nicht erfüllt ist.

Tipp: Man aktualisert ein System nicht, indem man FHEM "neu aufsetzt".

LG

pah

Mad

Danke für die Antwort. Ich hatte leider keine andere Möglichkeit, da ich noch auf Buster unterwegs war. Updateversuche sind gescheitert, daher dieser Weg.
Es müsste soweit alles vorhanden sein, da es ja bis gestern ging....

betateilchen

Zitat von: Mad am 31 Januar 2026, 10:28:12ich habe gerade das Problem, dass meine Lautsprecher nicht mehr "online" in fhem gehen.
Im Log kommt folgende Meldung in Dauerschleife:

Was liefert eine manuelle Abfrage im Browser auf die URL

http://<ipDerBox>:8090//listMediaServers
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Mad

Zitat von: betateilchen am 31 Januar 2026, 17:31:27Was liefert eine manuelle Abfrage im Browser auf die URL

Es werden die Fritzboxen ausgeworfen....

Ich konnte es jetzt etwas weiter aufschlüsseln. Ich habe gestern noch ein fhem "update all" durchgeführt. Danach trat der Fehler auf.
Nun habe ich ein Backup von vor dem gestrigen update aufgespielt und es läuft wieder.
Wieso führt das update zu solch einem Fehler?

FlatTV

Heute wollte ich doch mal soundcork ausprobieren.
Auf meinem ,,trixie" Pi habe ich das GitHub Projekt pyenv eingesetzt, um eine Python 3.12.12 Umgebung zu bekommen und anscheinend soundcork installiert.
Der Server ,,startet" auch, ich muss aber das Environment .venv gesetzt lassen und auch in das Verzeichnis wechseln.
Ansonsten wird schon fastapi nicht gefunden.
Für mehr habe ich gerade keine Zeit.

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

   FastAPI   Starting production server 🚀
 
             Searching for package file structure from directories with __init__.py files
2026-02-01 09:53:28,669 [soundcork.datastore] INFO: Initiating Datastore
2026-02-01 09:53:28,676 [soundcork.datastore] INFO: Initiating Datastore
             Importing from /home/pi/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 [51399]
2026-02-01 09:53:32,988 [uvicorn.error] INFO: Started server process [51399]
      INFO   Waiting for application startup.
2026-02-01 09:53:32,992 [uvicorn.error] INFO: Waiting for application startup.
2026-02-01 09:53:32,996 [soundcork.main] INFO: Starting up soundcork
2026-02-01 09:53:32,996 [soundcork.main] INFO: done starting up server
      INFO   Application startup complete.
2026-02-01 09:53:32,997 [uvicorn.error] INFO: Application startup complete.
      INFO   Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
2026-02-01 09:53:33,002 [uvicorn.error] INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)

Warum steht dort 0.0.0.0?

pi@pi3:~ $ netstat -a | grep 8000
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN     
pi@pi3:~ $
Naja auf die URL komme ich auch nicht 😔
Raspi4 - im wesentlichen mit Phoscon, HomeMatic ( aktuell über debmatic), CUL, BOSE-ST und Alexa (Connector)

Prof. Dr. Peter Henning

ZitatDer Server ,,startet" auch, ich muss aber das Environment .venv gesetzt lassen und auch in das Verzeichnis wechseln
Korrekt, das muss auch so sein.

ZitatWarum steht dort 0.0.0.0?
Ist bei mir auch so, scheint in Ordnung zu sein.

ZitatNaja auf die URL komme ich auch nicht
Ist nicht in Ordnung. Wenn man direkt die Url http://<IP>:8000 aufruft, MUSS als Response stehen
Bose "Can't Brick Us"
Vermutung: Du hast vergessen, in der Datei .env.private die richtigen Daten einzutragen. Bei mir steht darin
base_url = "http://192.168.0.94:8000"
data_dir = "/home/soundcork/db"

Nicht ganz trivial ist auch, was man in die Datei soundcork.service einträgt. Bei mir steht dort
[Unit]
Description=Gunicorn Daemon for Soundcork
After=network.target

[Service]
User=soundcork
WorkingDirectory=/home/soundcork/soundcork/soundcork
ExecStart=/home/soundcork/soundcork/.venv/bin/gunicorn -c gunicorn_conf.py main:app


[Install]
WantedBy=multi-user.target

Konkret habe ich a.) den user soundcork hinzugefügt, mit Gruppe dialout. b.) In dessen home directory /home/soundcork das github-Projekt geklont, damit bin ich schon bei /home/soundcork/soundcork c.) Durch den Installationsprozess wird dann /home/soundcork/soundcork/soundcork erzeugt. Das ist reichlich wild, hoffentlich verbessert sich das noch im Lauf der Zeit.

Mit http://<IP>:8000/docs kommt man dann auf das API des soundcork Servers, und kann dort allerhand ausprobieren, siehe screenshot.

LG

pah

Treibhaus

#771
Hallo,

das Git-Projekt  :  "github.com/vintx86/bose-soundtouch" verfolge ich auch erst einmal nicht weiter, da ich keine Kommunikation eines Tastenevents(der Box) am Server erkenne konnte.

Bei dem Soundfork hatte ich ebenfalls ein Webfindungsproblme auf port 8000.
(wahrscheinlich da "Docker-Portainer" diesen port 8000 für sich mitbeansprucht - dort aber eigentlich nix liefert)

Auch nach der Einrichtung der .env.private ..   wie bei Pah beschrieben. Allerdings auf port 8001 hat dies nicht geholfen.
(Diese liegt aber trotzdem noch im untersten Soundcork-Verzeichnis - keine Ahnung ob irgendein Programmschnipsel das noch einliest)


Gestartet wird nun mit:  fastapi run main.py --port=8001 --reload    Das funktioniert.


(.venv) player_1one@RASPI-FHEM:/tmp/soundcork/soundcork $ fastapi run main.py --port=8001 --reload

   FastAPI   Starting production server 🚀

             Searching for package file structure from directories with __init__.py files
2026-02-01 13:24:33,870 [soundcork.datastore] INFO: Initiating Datastore
2026-02-01 13:24:33,873 [soundcork.datastore] INFO: Initiating Datastore
             Importing from /tmp/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:8001
    server   Documentation at http://0.0.0.0:8001/docs

             Logs:

      INFO   Will watch for changes in these directories: ['/tmp/soundcork/soundcork']
2026-02-01 13:24:37,935 [uvicorn.error] INFO: Will watch for changes in these directories: ['/tmp/soundcork/soundcork']
      INFO   Uvicorn running on http://0.0.0.0:8001 (Press CTRL+C to quit)
2026-02-01 13:24:37,937 [uvicorn.error] INFO: Uvicorn running on http://0.0.0.0:8001 (Press CTRL+C to quit)
      INFO   Started reloader process [527947] using WatchFiles
2026-02-01 13:24:37,940 [uvicorn.error] INFO: Started reloader process [527947] using WatchFiles
2026-02-01 13:24:44,202 [soundcork.datastore] INFO: Initiating Datastore
2026-02-01 13:24:44,206 [soundcork.datastore] INFO: Initiating Datastore
      INFO   Started server process [527951]
2026-02-01 13:24:44,266 [uvicorn.error] INFO: Started server process [527951]
      INFO   Waiting for application startup.
2026-02-01 13:24:44,270 [uvicorn.error] INFO: Waiting for application startup.
2026-02-01 13:24:44,273 [soundcork.main] INFO: Starting up soundcork
2026-02-01 13:24:44,274 [soundcork.main] INFO: done starting up server
      INFO   Application startup complete.
2026-02-01 13:24:44,274 [uvicorn.error] INFO: Application startup complete.
      INFO   192.168.0.67:60848 - "POST /v1/scmudc/08DF1F1195D9 HTTP/1.1" 404
      INFO   192.168.0.67:60850 - "POST /v1/scmudc/08DF1F1195D9 HTTP/1.1" 404
     
^C

Leider aber auch nur soweit. Das der Post (aus einem Tastenevent an der Box den Pfad wohl nicht findet "404")   ;) 

Gruß Jörg
Signatur:
Raspberry 5 & NVMe + HM-Module für 3 Etagen (inkl  Garage/Garten) 
+BSC EnOcean TCM310 -Fensterkontakt,-Bewegungsmelder
+ 1-wired Temp-Sensoren + RHASSPY-Spracherkennung

FlatTV

#772
Also grundsätzlich läuft es nach dem Neustart.
Soundcork mit Trixie auf dem PI4 ist also okay.
Die Python Version 3.12 kann mit pyenv installiert werden.
Ich habe mir noch gegönnt, ebenfalls einen User Soundcork anzulegen.

Etwas ist aber noch strange.
Wenn ich den Server manuell starte, bekomme ich auch die Connection.
pi@pi3:~/soundcork $ telnet 192.168.178.188 8000
Trying 192.168.178.188...
Connected to 192.168.178.188.
Escape character is '^]'.
Starte ich den über systemctl, ist der laut Log auch da - aber ich bekomme keine Connection.
pi@pi3:~/soundcork $ telnet 192.168.178.188 8000
Trying 192.168.178.188...
telnet: Unable to connect to remote host: Connection refused
pi@pi3:~/soundcork $
Aber unter localhost ist er da!
pi@pi3:~/soundcork $ telnet localhost 8000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
.env.shared und .env.private habe ich jetzt beide erfolglos gepflegt.
base_url = "http://192.168.178.188:8000"
data_dir = "/home/soundcork/db"
Raspi4 - im wesentlichen mit Phoscon, HomeMatic ( aktuell über debmatic), CUL, BOSE-ST und Alexa (Connector)

FlatTV

#773
So, ich habe fertig
Die Verbindung klappt jetzt auch als Service.
pi@pi3:~ $ telnet 192.168.178.188 8000
Trying 192.168.178.188...
Connected to 192.168.178.188.
Escape character is '^]'.

In der /home/soundcork/soundcork/soundcork/gunicorn_conf.py steht das binding, dort muss es geändert werden.
bind = "192.168.178.188:8000"Dann noch die soundcork.service entsprechend mit dem Pfad anpassen.
Raspi4 - im wesentlichen mit Phoscon, HomeMatic ( aktuell über debmatic), CUL, BOSE-ST und Alexa (Connector)

Treibhaus

Thema : Soundcork.

Ich habe meinen Port 8000 auch freigemacht (dem docker portainer den port 8000 entpflegt)
Somit läuft soundcork nun auch auf 8000 da es auf dem 8001 zu keiner gescheiten Funktion kam.

Auch habe ich den Pfad /home/soundcork gewählt. Allerdings ohne den Benutzer anzulegen. Es wird nach /home geclont. Dies hat den Vorteil das es nicht 3 sondern nur 2 Soundcork-Verzeichnisse gibt. Owner von dem Verzeichnis muss dann eben auf den Standarduser geändert werden.

Ein manueller Start  "fastapi run main.py"  funktioniert super :  Webseite erreichbar  -> Play von der ST-Box (1Live per TuneIN) funkioniert per Preset Knopf der Box.

Per "sudo systemctl start soundcork"  funktioniert der Start:     Webseite aber nicht erreichbar !  -> Somit auch keine funktion der ST-BOX


Also das Selbe bei mir  ::)


Signatur:
Raspberry 5 & NVMe + HM-Module für 3 Etagen (inkl  Garage/Garten) 
+BSC EnOcean TCM310 -Fensterkontakt,-Bewegungsmelder
+ 1-wired Temp-Sensoren + RHASSPY-Spracherkennung

FlatTV

Zitat von: Treibhaus am 01 Februar 2026, 21:00:59Thema : Soundcork.

Per "sudo systemctl start soundcork"  funktioniert der Start:    Webseite aber nicht erreichbar !  -> Somit auch keine funktion der ST-BOX
Hast du mein Fix gelesen?
Raspi4 - im wesentlichen mit Phoscon, HomeMatic ( aktuell über debmatic), CUL, BOSE-ST und Alexa (Connector)

Treibhaus

Hi,

[soundcork Thema]
ich habe mir nach dem Post das auch gerade angeschaut:
RASPI-FHEM:/home/soundcork/soundcork $ sudo 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-02-01 21:03:35 CET; 2s ago
   Main PID: 552968 (gunicorn)
      Tasks: 6 (limit: 9286)
        CPU: 7.774s
     CGroup: /system.slice/soundcork.service
             ├─552968 /home/soundcork/.venv/bin/python3.12 /home/soundcork/.venv/bin/gunicorn -c [b]gunicorn_conf.py[/b] main:app

und das file   gunicorn_conf.py  gesucht .

Siehe da:
Von    bind = "127.0.0.1:8000" auf  bind = "192.168.0.30:8000" geändert, funktioniert es wieder !

 # gunicorn_conf.py
from multiprocessing import cpu_count

bind = "192.168.0.30:8000"

# Worker Options
workers = cpu_count() + 1
worker_class = "uvicorn.workers.UvicornWorker"

# Logging Options
# FIXME: make these all configurable in conf
loglevel = "debug"
accesslog = "/tmp/soundcork_access.log"
errorlog = "/tmp/soundcork_error.log"
Signatur:
Raspberry 5 & NVMe + HM-Module für 3 Etagen (inkl  Garage/Garten) 
+BSC EnOcean TCM310 -Fensterkontakt,-Bewegungsmelder
+ 1-wired Temp-Sensoren + RHASSPY-Spracherkennung