Wegen dem Fehler: starte mal den Server mit - - disable_tts
Mit dem Pfad ins /var/wwwist natürlich einfach, bin ich ehrlich gesagt nicht drauf gekommen. Werde das mal testen und schauen, ob alle Funktionalitäten erhalten bleiben. Dann baue ich das mit ein. Prinzipiell sollte es aber schon jetzt gehen: wie in der Doku beschrieben (siehe unten) kannst du die Pfade manuell setzen, dann sollte auch deine Konfiguration funktionieren.
Zum Einrichten des Samba-Shares habe ich oben im Thread auf die Readme des Brokers verwiesen, da ist ein extra Punkt zu Google TTS . Da alles serverseitig passiert, brauchen auch keine weiteren Parameter seitens des sh.py - Plugins übergeben werden.
Wenn das Release stabil läuft, bin ich schon am überlegen, ob ich die Parameterübergabe an den Server neu strukturiere. Im Moment läuft das ja über ein simple GET Anfrage, wo die Parameter in dem URL-Pfad übergeben werden. Mittelfristig soll das über JSON laufen, dann könnte man solche Sachen wie den Ablageort für die TTS-Dateien auch durch das Plugins übergeben lassen.
Danke für das Feedback. Und nochmal an dieser Stelle: sollte jemand Bugs finden oder Features haben, nutzt Bitte die Github Seite, da kann ich alles ordentlich verwalten.
Gesendet von meinem GT-N7000 mit Tapatalk
Ankündigung
Einklappen
Keine Ankündigung bisher.
Sonos Anbindung
Einklappen
X
-
Hi,
wenn man das TTS nicht benutzen möchte kommt da ein Fehler:
Code:admin@smarthome:/usr/shSonos/server.sonos$ ./sonos_broker No smb url given! No local share given! Traceback (most recent call last): File "./sonos_broker", line 121, in <module> if not utils.check_directory_permissions(local_share): File "/usr/shSonos/server.sonos/lib_sonos/utils.py", line 111, in check_directory_permissions return os.access(local_share, os.W_OK) and os.access(local_share, os.R_OK) TypeError: Can't convert 'NoneType' object to str implicitly
z.B bei Play-Snippet reichts auch, wenns im Netz verfügbar ist.
Code:sh.sonos.kueche.play_snippet('[URL]http://192.168.0.11/mp3/welcome.mp3[/URL]') (Dateien liegen ganz normal im /var/www/mp3/)
ich hätte nun erwartet dass im plugin.conf zwei neue Einträge nötig gewesen wären: z.B
local_share
share_url
Gruss und weiter so
Buffi
Einen Kommentar schreiben:
-
Broker v.0.1.8, Plugin 0.5
Neue Version Sonos-Broker v0.1.8, Sonos-Plugin 0.5
- Google Text-To-Speech-Support
- kleine Bugfixes
WICHTIG:
Sonos-Broker und das Plugin müssen geupdatet werden, um den TTS-Support zu bekommen. Für die neue TTS Funktion ist ein lokal gemounteter Samba-Share notwendig, an dieser Stelle verweise ich auf die Dokumentation des Sonos-Broker unter
https://github.com/pfischi/shSonos
Für das Smarthome.py-Plugin ist einer neuer Eintrag in der config für die Sonos-Lautsprecher notwendig, auch der Hinweis auf die Doku unter:
https://github.com/pfischi/shSonos/t...r/plugin.sonos
DOWNLOADS:
Sonos-Broker v0.1.8
Smarthome.py-Plugin
Request an Marcus zum Einstellen des Plugins in sh.py ist unterwegs.
Grüße,
Stefan
Einen Kommentar schreiben:
-
Den Fehler den du da noch hast habe ich gefixt, aber noch nicht in Github übertragen. Das kommt zusammen mit Google Text To Speach .
Gesendet von meinem GT-N7000 mit Tapatalk
Einen Kommentar schreiben:
-
Es geht, Danke Dir!!
Ich musste den Orner komplett löschen und hab es neu gezogen, danach ging es. Über git pull "Drüberziehen" wollte er wohl nicht.
Beim Ansteuern über Smartvisu tauchen ab und an noch die Fehler hier auf.
Code:Exception happened during processing of request from ('127.0.0.1', 34934) Traceback (most recent call last): File "/usr/lib/python3.2/socketserver.py", line 592, in process_request_thread self.finish_request(request, client_address) File "/usr/lib/python3.2/socketserver.py", line 334, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/lib/python3.2/socketserver.py", line 648, in __init__ self.handle() File "/usr/lib/python3.2/http/server.py", line 396, in handle self.handle_one_request() File "/usr/lib/python3.2/http/server.py", line 384, in handle_one_request method() File "./sonos_broker", line 52, in do_GET self.wfile.write("<body><p>{}</p></body>".format(response).encode('utf-8')) File "/usr/lib/python3.2/socket.py", line 308, in write return self._sock.send(b) socket.error: [Errno 32] Broken pipe
Danke und schönen Sonntag noch
Gunnar
Einen Kommentar schreiben:
-
Ich glaube, du hast den Sonos Broker noch nicht (richtig) geupdatet. Das Platin erwartet nun JSON-Packete, die gibt's erst seit der letzten Version vom Broker.
Gesendet von meinem GT-N7000 mit Tapatalk
Einen Kommentar schreiben:
-
Hi Stefan,
hier die Logs.
Hatte den Zonennamen auch schon von "Küche" auf "Kueche" geändert, um ein Thema mit Sonderzeichen auszuschließen - Fehler bleibt.
sonos_broker
Code:root@knxberry:/usr/local/shSonos# ./sonos_broker >> sonos.log 192.168.2.108 - - [23/Mar/2014 18:07:21] "NOTIFY / HTTP/1.1" 200 - 192.168.2.108 - - [23/Mar/2014 18:07:21] "NOTIFY / HTTP/1.1" 200 - 127.0.0.1 - - [23/Mar/2014 18:08:07] "GET client/subscribe/9999 HTTP/1.1" 200 - 127.0.0.1 - - [23/Mar/2014 18:08:07] "GET speaker/rincon_000e58f4284401400/current_state HTTP/1.1" 400 - 127.0.0.1 - - [23/Mar/2014 18:08:24] "GET speaker/rincon_000e58f4284401400/play/1 HTTP/1.1" 200 - Traceback (most recent call last): File "/usr/lib/python3.2/socketserver.py", line 592, in process_request_thread self.finish_request(request, client_address) File "/usr/lib/python3.2/socketserver.py", line 334, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/lib/python3.2/socketserver.py", line 648, in __init__ self.handle() File "/usr/lib/python3.2/http/server.py", line 396, in handle self.handle_one_request() File "/usr/lib/python3.2/http/server.py", line 384, in handle_one_request method() File "./sonos_broker", line 51, in do_GET self.wfile.write("<body><p>{}</p></body>".format(response).encode('utf-8')) File "/usr/lib/python3.2/socket.py", line 308, in write return self._sock.send(b) socket.error: [Errno 32] Broken pipe 127.0.0.1 - - [23/Mar/2014 18:08:28] "GET speaker/rincon_000e58f4284401400/stop/1 HTTP/1.1" 200 - 127.0.0.1 - - [23/Mar/2014 18:08:41] "GET speaker/rincon_000e58f4284401400/stop/1 HTTP/1.1" 200 - Traceback (most recent call last): File "/usr/lib/python3.2/socketserver.py", line 592, in process_request_thread self.finish_request(request, client_address) File "/usr/lib/python3.2/socketserver.py", line 334, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/lib/python3.2/socketserver.py", line 648, in __init__ self.handle() File "/usr/lib/python3.2/http/server.py", line 396, in handle self.handle_one_request() File "/usr/lib/python3.2/http/server.py", line 384, in handle_one_request method() File "./sonos_broker", line 51, in do_GET self.wfile.write("<body><p>{}</p></body>".format(response).encode('utf-8')) File "/usr/lib/python3.2/socket.py", line 308, in write return self._sock.send(b) socket.error: [Errno 32] Broken pipe 192.168.2.108 - - [23/Mar/2014 18:09:15] "NOTIFY / HTTP/1.1" 200 - 192.168.2.108 - - [23/Mar/2014 18:09:15] "NOTIFY / HTTP/1.1" 200 - 127.0.0.1 - - [23/Mar/2014 18:10:07] "GET client/subscribe/9999 HTTP/1.1" 200 - Traceback (most recent call last): File "/usr/lib/python3.2/socketserver.py", line 592, in process_request_thread self.finish_request(request, client_address) File "/usr/lib/python3.2/socketserver.py", line 334, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/lib/python3.2/socketserver.py", line 648, in __init__ self.handle() File "/usr/lib/python3.2/http/server.py", line 396, in handle self.handle_one_request() File "/usr/lib/python3.2/http/server.py", line 384, in handle_one_request method() File "./sonos_broker", line 51, in do_GET 127.0.0.1 - - [23/Mar/2014 18:10:07] "GET speaker/rincon_000e58f4284401400/current_state HTTP/1.1" 400 - self.wfile.write("<body><p>{}</p></body>".format(response).encode('utf-8')) File "/usr/lib/python3.2/socket.py", line 308, in write return self._sock.send(b) socket.error: [Errno 32] Broken pipe 192.168.2.108 - - [23/Mar/2014 18:11:09] "NOTIFY / HTTP/1.1" 200 - 192.168.2.108 - - [23/Mar/2014 18:11:09] "NOTIFY / HTTP/1.1" 200 - 127.0.0.1 - - [23/Mar/2014 18:12:07] "GET client/subscribe/9999 HTTP/1.1" 200 - Traceback (most recent call last): File "/usr/lib/python3.2/socketserver.py", line 592, in process_request_thread self.finish_request(request, client_address) File "/usr/lib/python3.2/socketserver.py", line 334, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/lib/python3.2/socketserver.py", line 648, in __init__ self.handle() File "/usr/lib/python3.2/http/server.py", line 396, in handle self.handle_one_request() File "/usr/lib/python3.2/http/server.py", line 384, in handle_one_request method() File "./sonos_broker", line 51, in do_GET self.wfile.write("<body><p>{}</p></body>".format(response).encode('utf-8')) File "/usr/lib/python3.2/socket.py", line 308, in write return self._sock.send(b) socket.error: [Errno 32] Broken pipe 127.0.0.1 - - [23/Mar/2014 18:12:07] "GET speaker/rincon_000e58f4284401400/current_state HTTP/1.1" 400 - 192.168.2.108 - - [23/Mar/2014 18:13:02] "NOTIFY / HTTP/1.1" 200 - 192.168.2.108 - - [23/Mar/2014 18:13:02] "NOTIFY / HTTP/1.1" 200 - 127.0.0.1 - - [23/Mar/2014 18:14:07] "GET client/subscribe/9999 HTTP/1.1" 200 - Traceback (most recent call last): File "/usr/lib/python3.2/socketserver.py", line 592, in process_request_thread self.finish_request(request, client_address) File "/usr/lib/python3.2/socketserver.py", line 334, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/lib/python3.2/socketserver.py", line 648, in __init__ self.handle() File "/usr/lib/python3.2/http/server.py", line 396, in handle self.handle_one_request() File "/usr/lib/python3.2/http/server.py", line 384, in handle_one_request 127.0.0.1 - - [23/Mar/2014 18:14:07] "GET speaker/rincon_000e58f4284401400/current_state HTTP/1.1" 400 - method() File "./sonos_broker", line 51, in do_GET self.wfile.write("<body><p>{}</p></body>".format(response).encode('utf-8')) File "/usr/lib/python3.2/socket.py", line 308, in write return self._sock.send(b) socket.error: [Errno 32] Broken pipe 192.168.2.108 - - [23/Mar/2014 18:14:56] "NOTIFY / HTTP/1.1" 200 - 192.168.2.108 - - [23/Mar/2014 18:14:56] "NOTIFY / HTTP/1.1" 200 - 127.0.0.1 - - [23/Mar/2014 18:16:08] "GET client/subscribe/9999 HTTP/1.1" 200 - Traceback (most recent call last): File "/usr/lib/python3.2/socketserver.py", line 592, in process_request_thread self.finish_request(request, client_address) File "/usr/lib/python3.2/socketserver.py", line 334, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/lib/python3.2/socketserver.py", line 648, in __init__ self.handle() File "/usr/lib/python3.2/http/server.py", line 396, in handle self.handle_one_request() File "/usr/lib/python3.2/http/server.py", line 384, in handle_one_request method() File "./sonos_broker", line 51, in do_GET self.wfile.write("<body><p>{}</p></body>".format(response).encode('utf-8')) File "/usr/lib/python3.2/socket.py", line 308, in write return self._sock.send(b) socket.error: [Errno 32] Broken pipe 127.0.0.1 - - [23/Mar/2014 18:16:08] "GET speaker/rincon_000e58f4284401400/current_state HTTP/1.1" 400 - Traceback (most recent call last): File "/usr/lib/python3.2/socketserver.py", line 592, in process_request_thread self.finish_request(request, client_address) File "/usr/lib/python3.2/socketserver.py", line 334, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/lib/python3.2/socketserver.py", line 648, in __init__ self.handle() File "/usr/lib/python3.2/http/server.py", line 396, in handle self.handle_one_request() File "/usr/lib/python3.2/http/server.py", line 384, in handle_one_request method() File "./sonos_broker", line 51, in do_GET self.wfile.write("<body><p>{}</p></body>".format(response).encode('utf-8')) File "/usr/lib/python3.2/socket.py", line 308, in write return self._sock.send(b) socket.error: [Errno 32] Broken pipe 192.168.2.108 - - [23/Mar/2014 18:16:50] "NOTIFY / HTTP/1.1" 200 - 192.168.2.108 - - [23/Mar/2014 18:16:50] "NOTIFY / HTTP/1.1" 200 -
Code:Init SmartHome.py 1.0-32-gfd0043e 2014-03-23 18:08:07 WARNING sonos Sonos: Could not send message knxberry:12900 speaker/rincon_000e58f4284401400/current_state - 400 Bad request 2014-03-23 18:08:20 WARNING Main Client 192.168.2.105:56942 requested invalid item: sonos.artist 2014-03-23 18:08:20 WARNING Main Client 192.168.2.105:56942 requested invalid item: sonos.track 2014-03-23 18:08:24 ERROR Main Error parsing sonos broker response! Error: No JSON object could be decoded 2014-03-23 18:08:28 ERROR Main Error parsing sonos broker response! Error: No JSON object could be decoded 2014-03-23 18:08:41 ERROR Main Error parsing sonos broker response! Error: No JSON object could be decoded 2014-03-23 18:09:15 ERROR Main Error parsing sonos broker response! Error: No JSON object could be decoded 2014-03-23 18:09:15 ERROR Main Error parsing sonos broker response! Error: No JSON object could be decoded 2014-03-23 18:10:07 WARNING sonos Sonos: Could not send message knxberry:12900 speaker/rincon_000e58f4284401400/current_state - 400 Bad request 2014-03-23 18:11:09 ERROR Main Error parsing sonos broker response! Error: No JSON object could be decoded 2014-03-23 18:11:09 ERROR Main Error parsing sonos broker response! Error: No JSON object could be decoded 2014-03-23 18:12:07 WARNING sonos Sonos: Could not send message knxberry:12900 speaker/rincon_000e58f4284401400/current_state - 400 Bad request 2014-03-23 18:13:02 ERROR Main Error parsing sonos broker response! Error: No JSON object could be decoded 2014-03-23 18:13:02 ERROR Main Error parsing sonos broker response! Error: No JSON object could be decoded 2014-03-23 18:14:08 WARNING sonos Sonos: Could not send message knxberry:12900 speaker/rincon_000e58f4284401400/current_state - 400 Bad request 2014-03-23 18:14:56 ERROR Main Error parsing sonos broker response! Error: No JSON object could be decoded 2014-03-23 18:14:56 ERROR Main Error parsing sonos broker response! Error: No JSON object could be decoded 2014-03-23 18:16:08 WARNING sonos Sonos: Could not send message knxberry:12900 speaker/rincon_000e58f4284401400/current_state - 400 Bad request
Gunnar
Einen Kommentar schreiben:
-
Zitat von gklein Beitrag anzeigenHallo Stefan,
Kannst Du mir auf die Sprünge helfen? Hat "encode utf-8" evtl. was mit meinen LOCALE-Einstellungen vom PI zu tun?
Danke
Gunnar
Also den Pipe 32 Fehler habe ich gefunden und gefixt. Der hat aber leider nicht mit deinem Problem zu tun. Kannst du den Server mal bitte mit:
Code:./sonos_broker >> sonos.log
Danke,
Stefan
Einen Kommentar schreiben:
-
Zitat von gklein Beitrag anzeigenHallo Stefan,
erstmal - grandioses Plugin
Ich habe seit dem letzten Update (per git pull) aber das Problem, das der Connect bei mir nicht mehr zustande kommt. Habe den sonos_broker mal in der CLI laufen lassen und erhalte folgenden python-Fehler:
Code:Exception happened during processing of request from ('127.0.0.1', 44392) Traceback (most recent call last): File "/usr/lib/python3.2/socketserver.py", line 592, in process_request_thread self.finish_request(request, client_address) File "/usr/lib/python3.2/socketserver.py", line 334, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/lib/python3.2/socketserver.py", line 648, in __init__ self.handle() File "/usr/lib/python3.2/http/server.py", line 396, in handle self.handle_one_request() File "/usr/lib/python3.2/http/server.py", line 384, in handle_one_request method() File "/usr/local/bin/sonos_broker", line 51, in do_GET self.wfile.write("<body><p>{}</p></body>".format(response).encode('utf-8')) File "/usr/lib/python3.2/socket.py", line 308, in write 127.0.0.1 - - [19/Mar/2014 21:29:32] "GET speaker/rincon_000e58f4284401400/current_state HTTP/1.1" 400 - return self._sock.send(b)
Danke
Gunnar
Hallo,
ich geh dem Problem auf die Spur.
Einen Kommentar schreiben:
-
Hallo Stefan,
erstmal - grandioses Plugin
Ich habe seit dem letzten Update (per git pull) aber das Problem, das der Connect bei mir nicht mehr zustande kommt. Habe den sonos_broker mal in der CLI laufen lassen und erhalte folgenden python-Fehler:
Code:Exception happened during processing of request from ('127.0.0.1', 44392) Traceback (most recent call last): File "/usr/lib/python3.2/socketserver.py", line 592, in process_request_thread self.finish_request(request, client_address) File "/usr/lib/python3.2/socketserver.py", line 334, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/lib/python3.2/socketserver.py", line 648, in __init__ self.handle() File "/usr/lib/python3.2/http/server.py", line 396, in handle self.handle_one_request() File "/usr/lib/python3.2/http/server.py", line 384, in handle_one_request method() File "/usr/local/bin/sonos_broker", line 51, in do_GET self.wfile.write("<body><p>{}</p></body>".format(response).encode('utf-8')) File "/usr/lib/python3.2/socket.py", line 308, in write 127.0.0.1 - - [19/Mar/2014 21:29:32] "GET speaker/rincon_000e58f4284401400/current_state HTTP/1.1" 400 - return self._sock.send(b)
Danke
Gunnar
Einen Kommentar schreiben:
-
0.1.7.1 - minor bugfix
Hall,
und gleich ein kleines Broker-Update hinterher:
v.0.1.7.1;
- track_uri wird nun richtig angezeigt
- sockets werden nun auch im Fehlerfall zuverlässig geschlossen
Download
Schönes WE;
Stefan
Edit:
Marcus hat das Sonos-Plugin im dev-Zweig von smarthome.py eingepflegt.
Einen Kommentar schreiben:
-
Neue Version Plugin (0.4) / Broker (0.1.7)
Hallo,
endlich habe ich genug Zeit zu finden, die ganzen neuen Sachen zu implementieren und zu dokumentieren.
Hier die wichtigesten neuen Sachen:
- play_snippet command:
- während der Wiedergabe einer Playlist können nun Snippets abgespielt werden. Dabei die Lautstärke stufenweise heruntergedreht (bis auf 0), das Snippet mit der gewählten Lautstärke (siehe config / Doku) abgespielt, und das Musikstück / Radio an der unterbrochenen Stelle wieder aufgenommen (mit der originalen Lautstärke)
- Umstellung auf das JSON-Format
- weniger Netzwerk-Traffic
- übersichtlichere Codebasis
- noch mehr Informationen über den Speaker vorhanden
- track_uri, track_album_art, radio_station, radio_show, model, zone_name, zone_icon, serial_number, software_version, hardware_version, mac_address (siehe config / Doku)
- bessere Integration von Radio-Stationen
- Code (Plugin / Broker) entschlackt, neu überarbeitet)
- und vieles mehr
WICHTIG:
1. Installation
Aufgrund der großen Umstellungen im Code ist das smarthome_plugin ab v0.4 nur noch mit dem Broker ab v0.1.7 kompatibel.
Hier die aktuell Versionen:
Sonos-Broker; v0.1.7
Sonos- Plugin für smarthome.py (im Moment nur in Github, Pull-Request für smarthome.py ist unterwegs)
2. Konfiguration Plugin
Auch hier haben sich ein paar Veränderungen ergeben. Die neue Konfiguartion ist erheblich einfacher, jedoch müssen ältere sonos.conf-Dateien dahingehend angepasst werden.
(siehe 2. Integration in Smarthome.py)
3. Bekannte Probleme:
Wir die neue play_snippet-Funktion während der Wiedergabe eines Radiosenders ausgeführt, so wird das Albumcover nicht richtig gesetzt, sobald der Radiosender wieder abgespielt wird, Im Client ist dann leider kein Cover zu sehen. Alle anderen Metadaten werden wieder richtig gesetzt. Bei einem Musikstück (NAS, Spotify etc) tritt dies nicht auf. Ich bin dem Fehler auf der Spur :-)
Aufgrund der großen Codeumstellungen kann der eine oder andere Fehler sich eingeschlichen haben, ich bitt deshalb wieder um fleisig Mithilfe.
4. To-Do:
Ich bin gerade dabei, die Text-To-Speech-API von Google einzubinden. Eigentlich so gut wie fertig, muss aber noch getestet werden. Strings werden dann automatisch in ein mp3 umgewandelt und abgespielt. Gerade für die Play-Snippet-Funktion sehr interessant.
Schönen Tag noch,
Stefan
Einen Kommentar schreiben:
- play_snippet command:
-
So, nochmal eine kleine Wasserstandsmeldung,
die Funktionen sind alle eingebaut. Die play_snippet-Funktion ist komplett serverseitig integriert. Sobald ein Musik-Sample gespielt wird, fadet die Lautstärke auf 0 ab, spielt das Sample und setzt an der gleichen Stelle der Playlist (auch innerhalb des zuvor gehörten Musikstücks wieder ein) Die Lautstärke fadet wieder auf den ursprünglichen Wert zurück.
Morgen werde ich das ganze ausführlich Testen und spätestens Mittwoch online stellen.
Bis bald,
Stefan
Einen Kommentar schreiben:
-
Die Fehlermeldung sollte nach der Umstellung weg sein. Die sendMSG Funktion ist schon bei mir als play_snippet fest eingeplant.
Gesendet von meinem GT-N7000 mit Tapatalk
Einen Kommentar schreiben:
-
Hi,
ich habe noch einen Bug entdeckt. Die URL wird abgespielt, aber dennoch eine Warnung geworfen.
Error
Code:2014-02-22 20:28:56 WARNING Sonos Could not send sonos notification: speaker/rincon_000e5886437201400/play_uri/set/http%3A%2F%2F192.168.0.11%2Fmp3%2Fwelcome.mp3. Error: ''
Code:def playMSG (sh, logger, item, url, volume): vol = item.volume() item.volume(volume) item.play_uri(url) h,m,s=str(item.track_duration()).split(":") sek = int(h)*3600+int(m)*60+int(s)+2 time.sleep (sek) item.stop(1) if cmd == 'Sonos aus': logger.info("Sonos aus") for item in sh.match_items('sonos.*.stop'): item(1) elif cmd == 'welcome': playMSG (sh, logger, sh.sonos.kueche, '[URL]http://192.168.0.11/mp3/welcome.mp3[/URL]', 40)
gruss Buffi
Einen Kommentar schreiben:
Einen Kommentar schreiben: