Hi,
komisch. Es sieht so aus, als würde dir die requests-Python-Bibliothek fehlen. Hast du die Dev-Version von smarthome.py am laufen? Da ist die rquests-Bibliothek mit dabei. Bevor du aber jetzt da rumprobierts, bitte ich dich noch bis heute abend zu warten. Ich habe gerade ein neues Release zusammen gebaut. Ich werde das ganze auf einer frischen sh.py - Installation testen.
Danke fürs Feedback,
Stefan
Ankündigung
Einklappen
Keine Ankündigung bisher.
Sonos Anbindung
Einklappen
X
-
Update 1.8.1 auf 2.0beta
Hallo Stefan,
wollte gerade auf die aktuellen Versionen aktualisieren.
Also neuen Broker und neues Plugin heruntergeladen.
Broker ausgepackt und via
Code:sudo python3 setup.py install
Nur dann:
Code:admin@smarthome:/usr/smarthome$ sudo sonos_broker.sh start [....] Starting system sonosbroker daemon:Starting /usr/local/bin/sonos_broker... Detaching to start /usr/local/bin/sonos_broker...done. . ok
Code:admin@smarthome:/usr/smarthome$ sudo sonos_broker.sh status [FAIL] /usr/local/bin/sonos_broker is not running ... failed!
"ps x" zeigt auch nichts.
Und "http://xxx.xxx.xxx.xxx:12900/client/list" (IP stimmt admin@smarthome:/usr/smarthome$ start-stop-daemon -v --start --pidfile $PIDFILE --make-pidfile --startas /usr/local/bin/sonos_broker --
Starting /usr/local/bin/sonos_broker...
Traceback (most recent call last):
File "/usr/local/bin/sonos_broker", line 11, in <module>
from lib_sonos import utils
File "/usr/local/lib/python3.2/dist-packages/lib_sonos/utils.py", line 10, in <module>
import requests
ImportError: No module named requests
) findet sich dann auch nicht.
Eine Idee? Bzw. ist beim Update/Upgrade noch was zu beachten?
Danke und Grüße
Thorsten
Edit:
Vielleicht hilft diese Meldung noch
Code:admin@smarthome:/usr/smarthome$ sudo start-stop-daemon -v --start --pidfile /var/run/sonosbroker.pid --make-pidfile --startas /usr/local/bin/sonos_broker -- Starting /usr/local/bin/sonos_broker... Traceback (most recent call last): File "/usr/local/bin/sonos_broker", line 11, in <module> from lib_sonos import utils File "/usr/local/lib/python3.2/dist-packages/lib_sonos/utils.py", line 10, in <module> import requests ImportError: No module named requests
Einen Kommentar schreiben:
-
Zitat von elektrowurm Beitrag anzeigenCode:# logic.conf [hello] filename = hello.py crontab = init [dummy] filename = dummy_series.py cycle = 300 [sonos_logic] filename = sonos.py watch_item = 1/1/0
[CODE]
Einen Kommentar schreiben:
-
Zitat von RoyalTS Beitrag anzeigen@pfischi:
1. hab ich das Problem, dass wenn ich einen KNX-Schalter drück bei obiger Sonos-Logik-Datei nicht jede Logik funktioniert
a) gehen mehrere Räume an
b) geht manchmal ein Sonos an, aber damit nicht wieder aus.
2. Und umgekehrt möchte ich gern am KNX-Schalter für's Sonos die Status-LED auch angehen lassen, wenn Sonos über die SONOS-App gestartet wird. Sonos-Status PLAY - LED an, STOP - LED aus.
Zuersteinmal würde ich dich bitten (wenn nicht schon erledigt), den Sonosbroker und das Plugin upzudaten (beides bitte aus dem Github-Developer-Zweig nehmen; das Plugin ist von Marcus noch nicht in sh.py eingecheckt worden). In der alten Broker-Versionen gab es einen Bug, bei dem nach einer Weile (ca 12h) die Eventverarbeitung der Speaker nicht mehr getriggert hat, sobald sich Werte änderten. Dadurch wurden die neuen Werte nicht an das Plugin übertragen. Die neuen Eventroutinen sind deutlich robuster und sollten dieses Problem nicht mehr haben.
Hier gleich zu deinem Punkt 2:
Was nicht festgestellt werden kann ist, WELCHES Endgerät eine spezielle Aktion (play, pause, stop) bei den Speakern getriggert hat (iPad-App, Android, sh.py etc). Es wird nur die Aktion als solche als Event an das Netzwerk gesendet. In deinem Fall löst also ein PLAY in der Sonos-App das entsprechende Event aus (genauer gesagt der Speaker triggert seinen neuen Status). Dies wird vom Broker empfangen und an das Plugin gesendet. Der Status deines Speakers sollte sich dann von sonos.play = 0 auf sonos.play = 1 geändert haben. Gleichzeitig werden Track-Titel, Album-Cover und alle anderen Metadaten angepasst.
Zu deinen Logiken:
Ich glaube die werden so nicht funktionieren (ich selber habe noch nicht wirklich viel mit den sh.py-Logiken herumhantiert, deshalb bitte ich um Korrektur, falls ich falsch liege)
Hier mal aus dem Bauch heraus eine Logik, an der du dich orientieren kannst (leider habe ich noch nicht ganz genau verstanden, welches Szenario du mit der Logik abdecken möchtest). Diese Beispiel sollte die LED des Speaker je nach Zustand steuern.
logic.conf in /etc/smarthome/etc
Code:#logic.conf [sonos_logic][INDENT]filename = sonos_logic.py watch_item = sh.sonos.Buero.play[/INDENT]
Code:#sonos_logic.py if sh.sonos.Buero.play() == True:[INDENT]# check if led is already on, because the vavlue is a toggle # value if sh.sonos.Buero.led() == False:[INDENT]sh.sonos.Buero.led() = True [/INDENT][/INDENT]else:[INDENT]# check if led is already off, because the value is a toggle # value if sh.sonos.Buero.led() == True:[INDENT]sh.sonos.Buero.led() = False [/INDENT][/INDENT]
Du kannst mir auch gerne noch deine entsprechenden conf-Dateien (Logiken, smarthome.conf etc) schicken, dann schaue ich mal drüber.
Grüsse,
Stefan
Edit: @RoyalTS:
Beim drüberlesen bin ich jetzt nicht mehr ganz so sicher, welche LED du meinst. Ich bin jetzt von der Status-LED am Sonos-Speaker ausgegangen. Meinst du die KNX-LED oder die Sonos-LED?
Einen Kommentar schreiben:
-
@pfischi:
1. hab ich das Problem, dass wenn ich einen KNX-Schalter drück bei obiger Sonos-Logik-Datei nicht jede Logik funktioniert
a) gehen mehrere Räume an
b) geht manchmal ein Sonos an, aber damit nicht wieder aus.
2. Und umgekehrt möchte ich gern am KNX-Schalter für's Sonos die Status-LED auch angehen lassen, wenn Sonos über die SONOS-App gestartet wird. Sonos-Status PLAY - LED an, STOP - LED aus.
Einen Kommentar schreiben:
-
Und schon ein paar kleine Fehler im Plugin gefunden: v0.8.1 behebt ein paar dumme copy & paste-Fehler.
[LINK]
Ausserdem sind nun die Verlinkung im Release-Veröffentlichungs-Thread korrekt.
Einen Kommentar schreiben:
-
Neues Beta-Release Broker 0.2.0 / Plugin 0.8
Hallo und schönen guten Abend,
endlich habe ich das neue Release fertig bekommen.
unter LINK gibts die Downloads und die Änderung. Bitte beachtet, das es sich um ein Beta-Release handelt. Fehler sind möglich und wahrscheinlich
Oberflächlch hat sich nicht viel geändert (ein paar Änderungen an der sonos.conf des Plugins, hier am besten das sonos.conf-Template in der Doku des Plugins benutzen), intern gab es jedoch einige tiefgreifende Änderungen. Ich habe das ganze Famework auf die Gruppenfunktionalität der Speaker umgestellt.
Bitte wie immer beachten:
wer den neuen Sonos-Broker benutzen möchte, muss auch das aktuelle Sonos-Plugin einsetzen. Beide stehen im Dev-Zweig von Github [LINK] zur Verfügung.
Wenn die Testphase beendet ist (ich plane mal zwei Wochen ein) werde ich Marcus bitten, das Plugin in sh.py zu integrieren.
Wie immer hoffe ich auf fleissiges Feedback.
@RoyalTS;
Was möchtest du denn als Status anzeigen?
Stefan
Einen Kommentar schreiben:
-
Mal ne Frage außer der Reihe. So gut ist meine Erfahrung mit Python noch nicht.
Wie könnte ich die "sonos.py"-Logic striken, dass immer nur der Teil ausgeführt wird, der von einem "watch_item" aus der /etc/logic.conf kommt.
Und wie könnte ich die KNX-Komponenten mit dem richtigen Status versehen, wenn Sonos via App auf dem Mobilgerät gestartet wird.
Also am iPhone Sonos an, dann soll automatisch am passenden KNX-Schalter die Statusanzeige geändert werden.
Bisher versuchte ich es wie folgt, aber wenn ich Sonos im Gäste-WC starte, dann geht es im Büro aus oder so.
Code:if sh.DG.Buero.Sonos(): sh.sonos.Buero.stop(1) sh.sonos.Buero.volume(25) sh.sonos.Buero.play_uri("x-rincon-mp3radio://swr-mp3-m-swr3.akacast.akamaistream.net/7/720/137136/v1/gnl.akacast.akamaistream.net/swr-mp3-m-swr3") else: sh.sonos.Buero.stop(1) if sh.EG.GaesteWC.Sonos(): sh.sonos.GaesteWC.volume(20) sh.sonos.GaesteWC.play_uri("x-rincon-mp3radio://swr-mp3-m-swr3.akacast.akamaistream.net/7/720/137136/v1/gnl.akacast.akamaistream.net/swr-mp3-m-swr3") sh.sonos.GaesteWC.play(1) else: sh.sonos.GaesteWC.stop(1) if sh.OG.Kinderbad.Sonos(): sh.sonos.Kinderbad.volume(20) sh.sonos.Kinderbad.play(1) else: sh.sonos.Kinderbad.stop(1)
Einen Kommentar schreiben:
-
Hallo Michi,
danke für das Lob.
Um deinen Fehler etwas einzukreisen, bitte ich dich, folgende Befehle bei laufendem Sonos-Broker und Smarthome.py auszuführen:
Code:cli ls
Code:up sonos.mute = 1 up sonos.mute = 1
Wenn nicht, brauchen wir ein wenig mehr an Logs, z.B. deine sonos.conf, die Logausgabe von smarthome.py vom Start (eventuell wird ja schon das Plugin nicht richtig geladen).
Gruss,
Stefan
Einen Kommentar schreiben:
-
Hi Jungs
erst mal ein dickes Danke an Stefan für die mühen die er sich macht und alle anderen die sich um dir Plugins kümmern
aber ich steh total auf dem schlauch bekomme es einfach nicht gebacken das eine Gruppenadresse eine Sonos steuer befehl ausführt :-(
mein Raspberry bekommt knx Gruppenadressen und dann sie auch ansprechen
aber irgentwie kommt nix in die logik :-(
in /usr/smarthome/etc
Code:# logic.conf [hello] filename = hello.py crontab = init [dummy] filename = dummy_series.py cycle = 300 [sonos_logic] filename = sonos.py watch_item = 1/1/0
in /usr/smarthome/etc
Code:# plugin.conf [knx] class_name = KNX class_path = plugins.knx # host = 192.168.10.169 # port = 6720 # send_time = 600 # update date/time every 600 seconds, default none # time_ga = 1/1/1 # default none # date_ga = 1/1/2 # default none [visu] class_name = WebSocket class_path = plugins.visu # ip='192.168.10.169' # port=2424 # acl = rw smartvisu_dir = /var/www/smartvisu [cli] class_name = CLI class_path = plugins.cli ip = 0.0.0.0 update = True [sql] class_name = SQL class_path = plugins.sqlite #[ow] # class_name = OneWire # class_path = plugins.onewire # host = 127.0.0.1 # port = 4304 [sonos] class_name = Sonos class_path = plugins.sonos broker_url = 192.168.10.169:12900
Code:#!/usr/bin/env python # if sh.1/1/0(): sh.sonos.mute(1) else: sh.sonos.mute(0)
in /etc/default/eibd
Code:EIB_ARGS="--daemon --Server --Tunnelling --Discovery --GroupCache --listen-tcp" EIB_ADDR="0.0.1" USBID=$(findknxusb | grep device: | cut -d' ' -f2) EIB_IF="usb:$USBID"
so und noch zu guter letzt ein Auszug aus dem log da Sieht man befehle von außen kommen rein aber mehr auch nicht :-)
Code:2014-05-24 20:15:02,558 DEBUG Main knx: 1.1.9 set 1/1/0 to 00 -- __init__.py:parse_telegram:181 2014-05-24 20:15:03,522 DEBUG Main knx: 1.1.9 set 1/1/0 to 01 -- __init__.py:parse_telegram:181 2014-05-24 20:15:05,182 DEBUG Main knx: 1.1.9 set 1/1/0 to 01 -- __init__.py:parse_telegram:181 2014-05-24 20:15:05,675 DEBUG Main knx: 1.1.9 set 1/1/0 to 00 -- __init__.py:parse_telegram:181 2014-05-24 20:15:13,999 DEBUG Main knx: 1.1.9 set 1/1/0 to 00 -- __init__.py:parse_telegram:181 2014-05-24 20:15:14,738 DEBUG Main knx: 1.1.9 set 1/1/0 to 01 -- __init__.py:parse_telegram:181 2014-05-24 20:15:15,238 DEBUG Main knx: 1.1.9 set 1/1/0 to 00 -- __init__.py:parse_telegram:181 2014-05-24 20:15:15,610 DEBUG Main knx: 1.1.9 set 1/1/0 to 01 -- __init__.py:parse_telegram:181
und fast Vergessen Funktionen klappen per Browser wunderbar also plugin läuft auch und wenn ich schon mal in der Frage runde was muss ich machen das das Sonos plugin beim Systemstart mit bootet
Die Sonos.sh datei hab ich schon angepasst
Code:do_start () { touch $PIDFILE #chown $DAEMON_USER $PIDFILE log_daemon_msg "Starting system $DAEMON_NAME daemon" start-stop-daemon -v --start --pidfile $PIDFILE --make-pidfile --startas $DAEMON -- log_end_msg $?
Danke und MFG
Michi
Einen Kommentar schreiben:
-
Wasserstandsmeldung
Hallo,
ich wollte an der Stelle nur eine kleine Statusmldung loswerden: Im Moment warte ich auf ein anstehendes Release des SoCo-Frameworks ( die Kernkomponente des Sonos-Brokers). Dann wird sozusagen "kernelseitig" eine Event-Verarbeitung implementiert. Das hatte ich bisher selber im Broker eingebaut. Eigentlich hatte ich das ganze Zonenmanagement schon in meinem Code implementiert, werde das dann aber entsprechend der SoCo-Schnittstelle noch anpassen. Ich denke, dass spätestens in zwei Wochen ein neuese Release bereit steht.
Grüße,
Stefan
Einen Kommentar schreiben:
-
Zitat von Bit-te Beitrag anzeigenHallo,
Für mich brauchste nichts extra basteln. Danke trotzdem.
Kann es sein, das dass Mute eigentlich ein Widget Problem ist? Wie gesagt, das Widget/Smarthome schickt ständig ein True. Müsste das nicht auch zwischen True/False wechseln?
Zu den Playlisten: direkt geht sowas mit dem Plugin noch nicht, wird es in der Form wahrscheinlich auch nicht geben. Was aber schon jetzt geht: du kannst dir alle deine Radiofavoriten holen (bekommst dann ein Dictionary zurück) und diese dann mit der play_url-Funktion des Plugins ansteuern. Das gleiche werde ich Schritt für Schritt für die gesamte Sonos-Libraray nachsteuern (Album, Artist, Titel etc); also die gleiche Suche wie in der Sonos-Oberfläche. Im Prinzip kennt auch die Sonos-Software kein Unterschied zwischen der Radio- und normalen Playlist. Im Grunde genommen sind alles nur Streams mit den entsprechenden Metadaten (Cover, Titel usw.) die nur unterschiedlich gruppiert sind. Mit der Plugin-Komponente kannst du (irgendwann vollständig) alle Streams suchen, seien es Radiostreams oder Musikstücke. Auch hier muss später ein Widget her, damit du die gefundenen Streams auch auswählen und abspielen kannst. Ich hoffen ich konnte ein wenig helfen und es war nicht ganz unverständlich
Und danke für das Lob und Feedback,
Gruss,
Stefan
Einen Kommentar schreiben:
-
Hallo,
Danke für den Hinweis mit dem "visu_acl". Das werde ich nach einem entsprechenden Test noch ändern. Bei der Funktionalität von Next werde ich nichts ändern, aber eventuell kann ich für das Widget ein kleines Hotfix basteln (für Mute und für Prev).
Kann es sein, das dass Mute eigentlich ein Widget Problem ist? Wie gesagt, das Widget/Smarthome schickt ständig ein True. Müsste das nicht auch zwischen True/False wechseln?
Bei Next schaltet das Widget richtig. Wenn ich den Pfeil nach rechts für den nächsten Titel klicke, dann kommt ne 1 wenn ich auf den Pfeil nach links klicke schickt das Widget eine 0. Soweit so gut. Nur das Sonos nicht auf die 0 und die 1 reagiert. Bei beiden schaltet Sonos zum nächsten Titel in der Liste.
Aber wie gesagt, bitte für mich nicht extra was basteln. Das ist es wirklich nicht wert. Trotzdem danke fürs Angebot.
Den letzten Punkt versteh ich leider nicht. Meinst du die Funktionalität innerhalb von den Sonos-Speakern oder meien Methode get_favorite_radiostations() vom Plugin?
Gruß und Danke für das tolle Plugin
Wolfgang
Einen Kommentar schreiben:
-
Zitat von Bit-te Beitrag anzeigenHallo,
wenn ich die Befehle (mute) über die Konsole eingebe funktioniert es.
Im Debug von Smarthome steht, dass Mute immer "True" sendet. Bei jedem betätigen kommt nur true. Nie ein False. Daher geht der Ton auch nicht mehr an.
"Next" funktioniert nun eingeschränkt. Hab dein Beispiel Item übernommen, und da fehlt bei Next "visu_acl = rw" nach dem setzen geht's nun vorwärts (also next)
Hatte gehofft das mit sh.sonos.next(1) es vorwärts geht, und mit sh.sonos.next(0) rückwärts. Ich weiß das es dazu ein previous item gibt, (was auch funktioniert auf der Konsole) mich im Widget aber nichts bringt, da es dafür kein "gad" gibt (ich weiß nicht wie ich das nennen soll) Ich meine die Item-Beschreibung im Widget.
Ist eigentlich ein Umschalten zwischen Radio und Titelliste möglich?
Danke
Gruß
Wolfgang
Den letzten Punkt versteh ich leider nicht. Meinst du die Funktionalität innerhalb von den Sonos-Speakern oder meien Methode get_favorite_radiostations() vom Plugin?
Zum Thema Widgte und gleichzeitig ein Aufgruf:
Wer sich damit auskennt und ein entsprechendes Widget für die Sonos-Komponente basteln kann, der melde sich freiwillig
Einen Kommentar schreiben:
-
Hallo,
wenn ich die Befehle (mute) über die Konsole eingebe funktioniert es.
Im Debug von Smarthome steht, dass Mute immer "True" sendet. Bei jedem betätigen kommt nur true. Nie ein False. Daher geht der Ton auch nicht mehr an.
"Next" funktioniert nun eingeschränkt. Hab dein Beispiel Item übernommen, und da fehlt bei Next "visu_acl = rw" nach dem setzen geht's nun vorwärts (also next)
Hatte gehofft das mit sh.sonos.next(1) es vorwärts geht, und mit sh.sonos.next(0) rückwärts. Ich weiß das es dazu ein previous item gibt, (was auch funktioniert auf der Konsole) mich im Widget aber nichts bringt, da es dafür kein "gad" gibt (ich weiß nicht wie ich das nennen soll) Ich meine die Item-Beschreibung im Widget.
Ist eigentlich ein Umschalten zwischen Radio und Titelliste möglich?
Danke
Gruß
Wolfgang
Einen Kommentar schreiben:
Einen Kommentar schreiben: