Ja, bin aktuell am Widget basteln. Ist total veraltet. Möchte ich mit dem Release rausbringen. Ich werde die Doku trotzdem nochmal updaten. Danke für den Hinweis.
Gruss,
Stefan
Ankündigung
Einklappen
Keine Ankündigung bisher.
Sonos Anbindung
Einklappen
X
-
Hallo Stefan,
die Integration ins smarthomeNG ging - nachdem ich den dev-Branch fürs Plugin entdeckt hatte - relativ Problemlos. Einzig ein Bug in der Doku hat mich einiges an Fehlersuche gekostet:
Da fehlt dein letzer Bugfix, damit das Titelbild richtig angezeigt wird:Add following line to the end of the files widget.js and widget.min.js (also located in the widgets folder)Code:$(document).delegate('[data-widget="sonos.music"]',{update:function(e,r){if (r.toString()){document.getElementById(this.id).src=r.toString()+'?_='+new Date().getTime();}else{document.getElementById(this.id).src="pages/base/pics/trans.png";}}});
Zudem hat das Widget nicht auf meine 7" Tablets gepasst und das Titel-Bild wurde viel zu groß angezeigt. Ich habe mir deshalb das Wiget etwas angepasst:Code:$(document).delegate('[data-widget="sonos.cover"]',{update:function(d, a){$(this).attr('src', a);}});
Sonos2.png
Sonos.png
Im Anhang meine Anpassung.
Gruß, DanielZuletzt geändert von dafra; 24.01.2017, 20:56.
Einen Kommentar schreiben:
-
Stimmt, war mir nicht aufgefallen. Ich habe /etc/systemd/system/sonos-broker.service entsprechend angepasst, jetzt klappts - in beiden Encodings :-)Ha, ich sehe den Fehler. Beim Pfad hat sich ein Unterstrich eingemogelt. Es muss "sonos-broker" heißen und nicht "sonos_broker".
Den Dank für die Mühen gebe ich gerne zurück,Code:systemctl status sonos-broker ● sonos-broker.service - Sonos Broker Loaded: loaded (/etc/systemd/system/sonos-broker.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2017-01-16 11:11:19 UTC; 3min 2s ago Main PID: 16009 (sonos-broker) CGroup: /system.slice/sonos-broker.service └─16009 /usr/bin/python3 /usr/local/bin/sonos-broker start Jan 16 11:11:19 odroid systemd[1]: Started Sonos Broker.
Gruß, Daniel
Einen Kommentar schreiben:
-
Ha, ich sehe den Fehler. Beim Pfad hat sich ein Unterstrich eingemogelt. Es muss "sonos-broker" heißen und nicht "sonos_broker".
Das Encoding habe ich im cmd-Tool tatsächlich noch nicht nachgezogen, hole ich heute Abend noch nach.
Vielen Dank für deine Mühen.
StefanZuletzt geändert von pfischi; 16.01.2017, 08:23.
Einen Kommentar schreiben:
-
Habe es direkt noch ausprobiert. Installation klappt in UTF-8 und ANSI_X3.4-1968. Manuelles Starten funktioniert jetzt ebenfalls in beiden Encodings.
=> Damit kannst du aus deiner Kammer wieder rauskriechen :-D
Ebenfalls gleich: in beiden Encodings (in beiden Installationsweisen) stürtzt der sonos-cmd beim List mit der selben Fehlermeldung ab:
Wenn ich den Broker im debug modus starte, scheint er aber den Sonos im Netzwerk zu finden. Scheint daher nur ein Problem im cmd zu sein.Code:sonos-cmd Connecting to Sonos broker ...127.0.0.1 - - [15/Jan/2017 22:58:31] "POST / HTTP/1.1" 200 - done! Welcome to Sonos Broker console! =>> update 127.0.0.1 - - [15/Jan/2017 22:58:34] "POST / HTTP/1.1" 200 - 127.0.0.1 - - [15/Jan/2017 22:58:34] "POST / HTTP/1.1" 200 - =>> list speaker(s): ----------- Traceback (most recent call last): File "/usr/local/bin/sonos-cmd", line 1811, in <module> broker_cmd.cmdloop() File "/usr/lib/python3.5/cmd.py", line 138, in cmdloop stop = self.onecmd(line) File "/usr/lib/python3.5/cmd.py", line 217, in onecmd return func(arg) File "/usr/local/bin/sonos-cmd", line 158, in do_list print(speaker) UnicodeEncodeError: 'ascii' codec can't encode character '\xfc' in position 46: ordinal not in range(128)
Nicht ganz klar ist mir warum der Start via systemctl nicht funktioniert:
Der Pfad ist aber richtig:Code:systemctl status sonos-broker ● sonos-broker.service - Sonos Broker Loaded: loaded (/etc/systemd/system/sonos-broker.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Sun 2017-01-15 22:57:11 UTC; 10s ago Process: 19844 ExecStart=/usr/local/bin/sonos_broker start (code=exited, status=203/EXEC) Main PID: 19844 (code=exited, status=203/EXEC) Jan 15 22:57:11 odroid systemd[1]: Started Sonos Broker. Jan 15 22:57:11 odroid systemd[19844]: sonos-broker.service: Failed at step EXEC spawning /usr/local/bin/sonos_broker: No such file or directory Jan 15 22:57:11 odroid systemd[1]: sonos-broker.service: Main process exited, code=exited, status=203/EXEC Jan 15 22:57:11 odroid systemd[1]: sonos-broker.service: Unit entered failed state. Jan 15 22:57:11 odroid systemd[1]: sonos-broker.service: Failed with result 'exit-code'.
Ich bin als root unterwegs, daher kann es eigentlich auch kein Problem mit den Rechten sein.Code:/usr/local/bin# ll total 164 {....} drwxr-xr-x 2 root root 4096 Jan 15 22:56 sonos/ -rwxr-xr-x 1 root root 12747 Jan 15 22:56 sonos-broker* -rwxr-xr-x 1 root root 57982 Jan 15 22:56 sonos-cmd*
Gruß und keine Hektik,
Daniel
Einen Kommentar schreiben:
-
Ich habe gerade nochmal eine Version geamcht, wo zumindestens dein Fehler auch bei Ansi nicht mehr beim Starten zum Absturz führt.
Danke für deine Tests, kannst bei Gelegenheit ja nochmal die jetzige Version laufen lassen.
Gruss,
Stefan
Einen Kommentar schreiben:
-
irgendwas hat mit der vorherigen Installation nicht gestimmt:Zusätzlich zu Punkt 2-4 habe ich auch nochCode:rm /usr/local/bin/sonos-broker rm: cannot remove '/usr/local/bin/sonos-broker': No such file or directory rm /usr/local/bin/sonos-cmd rm: cannot remove '/usr/local/bin/sonos-cmd': No such file or directory
Neu installiert habe ich alles mit aktiviertem ANSI_X3.4-1968 encoding. Start über systemctl ging nicht, manueller Start liefert:Code:sudo rm -rf /usr/local/lib/python3.5/site-packages/*sonos* sudo rm -rf /usr/local/lib/python3.5/site-packages/soco
Code:sonos-broker start 2017-01-15 20:26:46,450 DEBUG MainThread Google-TTS disabled! -- sonos-broker:__init__:194 Traceback (most recent call last): File "/usr/local/bin/sonos-broker", line 305, in <module> locale.setlocale(locale.LC_ALL, '') File "/usr/lib/python3.5/locale.py", line 594, in setlocale return _setlocale(category, locale) locale.Error: unsupported locale settingDann habe ich umgestellt auf UTF-8:Code:locale locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_MESSAGES to default locale: No such file or directory locale: Cannot set LC_ALL to default locale: No such file or directory LANG=de_DE.ANSI_X3.4-1968 LANGUAGE=de_DE.ANSI_X3.4-1968 LC_CTYPE="de_DE.ANSI_X3.4-1968" LC_NUMERIC="de_DE.ANSI_X3.4-1968" LC_TIME="de_DE.ANSI_X3.4-1968" LC_COLLATE="de_DE.ANSI_X3.4-1968" LC_MONETARY="de_DE.ANSI_X3.4-1968" LC_MESSAGES="de_DE.ANSI_X3.4-1968" LC_PAPER="de_DE.ANSI_X3.4-1968" LC_NAME="de_DE.ANSI_X3.4-1968" LC_ADDRESS="de_DE.ANSI_X3.4-1968" LC_TELEPHONE="de_DE.ANSI_X3.4-1968" LC_MEASUREMENT="de_DE.ANSI_X3.4-1968" LC_IDENTIFICATION="de_DE.ANSI_X3.4-1968" LC_ALL=de_DE.ANSI_X3.4-1968
Zwischenfrage an der Stelle: utf-8 == UTF-8?Code:locale LANG=de_DE.UTF-8 LANGUAGE=de_DE.UTF-8 LC_CTYPE="de_DE.UTF-8" LC_NUMERIC="de_DE.UTF-8" LC_TIME="de_DE.UTF-8" LC_COLLATE="de_DE.UTF-8" LC_MONETARY="de_DE.UTF-8" LC_MESSAGES="de_DE.UTF-8" LC_PAPER="de_DE.UTF-8" LC_NAME="de_DE.UTF-8" LC_ADDRESS="de_DE.UTF-8" LC_TELEPHONE="de_DE.UTF-8" LC_MEASUREMENT="de_DE.UTF-8" LC_IDENTIFICATION="de_DE.UTF-8" LC_ALL=de_DE.UTF-8
Broker lässt sich nicht über systemctl starten, aber manuell. Auch sonos-cmd läuft wie es soll.
Bei aktiviertem debug level kann ich den broker nicht mehr richtig dämonisieren - die Meldungen kommen trotzdem über die Konsole raus (auch nachdem man wieder in der Eingabeaufforderung war...)
Die Pfade im startskript scheinen jetzt zu passen:
Im Anhang noch das /tmp/sonos-broker.logCode:cat /etc/systemd/system/sonos-broker.service [Unit] Description=Sonos Broker After=network.target [Service] Type=simple ExecStart=/usr/local/bin/sonos_broker start #ExecStop=/usr/local/bin/sonos_broker [Install] WantedBy=default.targetroot
Ich lasse mein System jetzt erst mal auf UTF-8 und versuche (im Laufe der Woche) das Plugin in smarthomeNG einzubinden. Falls ich noch was testen kann/soll, lasse es mich wissen.
Viele Grüße und Danke für deine Mühen,
DanielAngehängte Dateien
Einen Kommentar schreiben:
-
dafra
Ok gehen wir mal die Stellen durch:
1. Sonos binaries
2. Cofig-DateiCode:rm /usr/local/bin/sonos-broker rm /usr/local/bin/sonos-cmd
3. Systemstart SkriptCode:rm /etc/default/sonos-broker
4. (optional) die python-BibliothekenCode:rm /etc/systemd/system/sonos-broker.service
Bei Punkt 4. kann dein Pfad eventuell etwas anders sein (glaube ich aber nicht). Danach müsste alles sauber sein und du könntest die Version 1.0b2 nochmal installieren.Code:rm /usr/local/lib/python3.5/dist-packages/soco rm /usr/local/lib/python3.5/dist-packages/lib_sonos rm /usr/local/lib/python3.5/dist-packages/sonos*
In der Konfig unterkannst du da logging-Level auf debug setzen und in einem zweiten Terminalfenster mitCode:/etc/default/sonos-broker
trotz Service-Start mitplotten.Code:tail -f /tmp/sonos.log
Danke,
Stefan
Einen Kommentar schreiben:
-
Ich habe beim Versuch beide Encodings durchzuspielen mir irgendwo "Reste" eingehandelt und bekomme es nicht mehr ans Laufen. Kannst du mal alle Verzeichnisse posten, wo was installiert wird? Ich würde gerne nochmal alles säubern und dir dann berichten.
Zu den Versuchen (die ich jetzt nicht mehr nachstellen kann, daher alles aus dem Gedächtnis heraus geschrieben):
Versuch 1: Installation mit Encoding UTF-8
Hat alles geklappt, bis auf den start via systemctl. Aus dem Verzeichnis /etc/default heraus konnte ich den broker via sonos-broker start & starten, im sonos-cmd konnte ich den Lautsprecher nach einem update finden. Fehlermeldungen gabs nur wenn ich sonos-cmd mit ctrl+c beendet habe, über den "ordnungsgemäßen" Ausstieg via exit hat er sich nicht beschwert.
Übrigens kam am Ende des Installationsskrips die Meldung, dass er noch Überreste der vorhegenden Installation (1.0b1) entfernt hat. Sehr cool, dieses Feature. Am besten wäre es natürlich, wenn das auch mit der Version 1.0b2 gehen würde, damit wäre obiges Problem vermutlich erschlagen ;-)
Versuch 2: Installation mit Encoding ANSI_X3.4-1968:
Hat ebenfalls geklappt, auch der start via systemctl. Allerdings habe ich nicht rausfinden können wo der sonos-cmd gelandet war. Vermutlich ging hier das "Reste-Problem" los, so das die zweite Installation schon nicht ganz sauber war. Ich kann auch nicht sagen, ob der broker sauber hochgekommen ist, ich habe in nur in der Prozessliste gesehen:
Auf die Idee den Status via systemctl status sonos-broker zu überprüfen, bin ich erst gekommen, nachdem meine Probleme losgegangen waren...Code:ps -ax | grep sonos 24002 pts/8 Sl 0:01 /usr/bin/python3 /usr/local/bin/sonos-broker start
Gruß, Daniel
Einen Kommentar schreiben:
-
dafra Hast alles richtig gemacht. Ich muss das Probelm tatsächlich anders lösen. Zuerst werde ich einen Hinweis beim Start einbelden, sobald kein utf8 erkannt wird. Eventuell kann ich auch den logger direkt auf unicode stellen.
Und was mir auch noch auffällt: tatsächlich ist im Startscript der Pfad falsch, es muss
lauten, NICHTCode:/usr/local/bin/sonos-broker
.Code:/usr/local/sbin/smarthome
Danke für den Hinweis, ich mach heute noch eine v1.0b2 fertig, wo das gefixt ist.
Edit: Version 1.0b2 ist hochgeladen, ich habe den Pfad korrigiert und dem Logger utf-8 mitgegeben. Wenns danach immer noch nicht funktioniert, verkrieche ich mich in meine Kammer und schliesse mich ein bis es funktioniert
Gruss,
StefanZuletzt geändert von pfischi; 15.01.2017, 16:02.
Einen Kommentar schreiben:
-
Hallo Stefan,
Keine Ursache - freut mich, wenn ich auch was beitragen kann (hoffentlich).
Um Missvertständnisse zu vermeiden, kurz dargestellt, was ich gemacht habe:
Bis hierher hat alles geklappt, keine Fehlermeldungen o.Ä.Code:sudo rm -rf /usr/local/bin/sonos* sudo rm -rf /usr/local/lib/python3.5/site-packages/*sonos* sudo rm -rf /usr/local/lib/python3.5/site-packages/soco mkdir /usr/local/bin/sonos cd /usr/local/bin/sonos wget https://github.com/pfischi/shSonos/raw/develop/server.sonos/dist/sonos-broker-1.0b1.tar.gz python3 -m pip -v install sonos-broker-1.0b1.tar.gz
Dann die #572angehängte Datei runtergeladen und nach /usr/local/bin/sonos kopiert. Dann
Hab ich schon wieder was falsch?Code:chmod +x sonos-broker sonos-broker start -bash: /usr/local/bin/sonos-broker: No such file or directory ./sonos-broker start Traceback (most recent call last): File "./sonos-broker", line 318, in <module> locale.setlocale(locale.LC_ALL, '') File "/usr/lib/python3.5/locale.py", line 594, in setlocale return _setlocale(category, locale) locale.Error: unsupported locale setting python3 -c "import sys;print(sys.stdout.encoding)" ANSI_X3.4-1968
Gruß, Daniel
Einen Kommentar schreiben:
-
War die falsche Stelle. Du hast die Config-Datei überschrieben. Die mitgeliferte Datei kannst du einfach irgendwo ausführen, das ist die sonos-broker Startdatei.
Vorher musst du sie noch ausführbar machen.
Oder du ersetzt die Datei unterCode:chmod +x sonos-broker ./sonos-broker
.Code:/usr/local/bin
Da du die Config überschrieben hast, installiere am besten den Broker nochmal neu. Sorry das ich nicht ganz ausführlich war und dir die Umstände mache.
Gruss,
Stefan
Einen Kommentar schreiben:
-
ok, habs wieder zurückgestellt. Ich hoffe ich habe dabei keinen Fehler gemacht, aber
das in #572 angehängte file habe ich nach /etc/default/ entpackt:Code:python3 -c "import sys;print(sys.stdout.encoding)" ANSI_X3.4-1968
Allerdings crasht der broker:Code:ll /etc/default ... -rw-rw-r-- 1 root root 13338 Jan 14 13:27 sonos-broker
Hab ichs an die falsche Stelle geschoben?Code:sonos-broker start Traceback (most recent call last): File "/usr/local/bin/sonos-broker", line 311, in <module> broker = SonosBroker(args.debug, config=config_path) File "/usr/local/bin/sonos-broker", line 84, in __init__ config.read(config_path) File "/usr/lib/python3.5/configparser.py", line 696, in read self._read(fp, filename) File "/usr/lib/python3.5/configparser.py", line 1077, in _read raise MissingSectionHeaderError(fpname, lineno, line) configparser.MissingSectionHeaderError: File contains no section headers. file: '/etc/default/sonos-broker', line: 7 'import codecs\n'
Hier noch /etc/systemd/system/sonos-broker.service:
Code:cat /etc/systemd/system/sonos-broker.service [Unit] Description=Sonos Broker After=network.target [Service] Type=simple ExecStart=/usr/local/sbin/sonos_broker start #ExecStop=/usr/local/sbin/sonos_broker [Install] WantedBy=default.target
Zuletzt geändert von dafra; 14.01.2017, 21:07.
Einen Kommentar schreiben:
-
dafra
Könntest du deine Änderungen an dem Encoding des Terminals nochmal auf ASCII zurück ändern und die sonos-broker Datei im Anhang ausprobieren?
Angehängte Dateien
Einen Kommentar schreiben:
-
Kannst du mir mal dieZitat von dafra Beitrag anzeigenHast Du eine Ahnung, warum der Broker mit systemctl nicht hochkommt?posten, bzw schauen, ob die richtig angelegt wurde?Code:/etc/systemd/system/sonos-broker.service
Prinzipiell schwierig. Im Moment muss ich noch Python3.2 mitschleppen, weil viele noch das alte Raspi-Image von Smarthome.py benutzen. Ab Python3.4 kann man ja mitZitat von dafra Beitrag anzeigenP.S: Gibt es eine Möglichkeit, den Broker "robust" gegen andere Encodings als UTF8 zu machnen? Über das Problem werdnen vermutlich viele stolpern...das Encoding explizit festlegen. Ich muss mir mal eine virtuelle Maschine anlegen und hier einen Workaround finden. Evetuell kann man ja auch einen Warnhinweis am Start ausgeben und auf ein FAQ verweisen.Code:print(u'unicode text here')
Danke für die Tests,
Stefan
Einen Kommentar schreiben:


Einen Kommentar schreiben: