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:
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";}}});
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:
-
Ha, ich sehe den Fehler. Beim Pfad hat sich ein Unterstrich eingemogelt. Es muss "sonos-broker" heißen und nicht "sonos_broker".
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:
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:
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'.
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:Code: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
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 setting
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
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:
Code: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
Code:rm /usr/local/bin/sonos-broker rm /usr/local/bin/sonos-cmd
Code:rm /etc/default/sonos-broker
Code:rm /etc/systemd/system/sonos-broker.service
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 unterCode:/etc/default/sonos-broker
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:
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
Code:/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:
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
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.
Code: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
Code:python3 -c "import sys;print(sys.stdout.encoding)" ANSI_X3.4-1968
Code:ll /etc/default ... -rw-rw-r-- 1 root root 13338 Jan 14 13:27 sonos-broker
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:
-
Zitat von dafra Beitrag anzeigenHast Du eine Ahnung, warum der Broker mit systemctl nicht hochkommt?Code:/etc/systemd/system/sonos-broker.service
Zitat 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...Code:print(u'unicode text here')
Danke für die Tests,
Stefan
Einen Kommentar schreiben:
Einen Kommentar schreiben: