Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Hmmm...
Irgendwie scheint nur die Kommunikation vom Plugin -> Broker -> Speaker zu funktionieren.
Sonos-App Änderungen werden nicht an das Plugin via Broker gesendet....
Ok, ich denke ich hab was gefunden. Im Sonos-Plugin gibt es eine Zeile : counter+=counter
Das ist totaler Quatsch an der Stelle (war ein copy-paste Fehler). Es muss counter+=1 lauten. Bitte ändere das mal händisch. Die Logik ist wie folgt: am Anfang soll sich das Plugin beim Broker anmelden, um per Udp Events zu erhalten. Nach jeweils 120 sek wiederholt sich das, da eventuell der Broker neu gestartet würde oder später als Smarthome. Durch den Fehler wurde der Counter nie auf 120 inkrementiert, da counter nach dem ersten Durchlauf auf 0 gesetzt wird. Und 0+0 ergibt nie 120 .
Spätestens nach 120 sek sollte also das Plugin sich für die Events registrieren. Gleichzeitig sollten sich der Status des Plugins aktualisieren.
Ich hab auch gleich noch den Bug aus dem Broker rausgenommen. Die Version 0.1.5 steht im Dev-Branch bereit. Du findest da im Plugin-Ordner auch das aktualisierte Plugin (oder eben einfach per Hand den counter-Fehler ändern). Ich bin gespannt auf dein Feedback.
Edit: Marcus hat meinen Pull-Request für das Plugin schon durchgeführt, die neuste Version des Plugin ist also im dev von sh.py eingepflegt.
habe eben gesehen, das das Play-Item in der Zwischenzeit auf 'False' geupdatet worden ist. Also kommt das Update verzögert. Vielleicht kann man da noch was optimieren...
Eigentlich sollte sich das Item instant updaten. Wenn du mit einem anderen Endgerät (iPad, Android) die Speaker steuerst, zeigt sich dann ein anderes Verhalten? Werden auch andere Eigenschaften nicht oder zeitverzögert aktualisiert(Titel,Volume).
Du könntest auch den Broker nicht per Skript sondern direkt über ./sonos-broker starten (liegt im gleichen Verzeichnis), dann hast du Debug-Ausgaben. Du könntest mir mal die ersten drei/vier Minuten posten und mal nach einer Minute die Play/Pause-Aktion starten. Für den totalen Rundumschlag,soweit das für dich akzeptabel ist, könntest du mir mal ein zip deines /usr/smarthome-Verzeichnis senden, gerne auch an meine private Mail.
def update_items_with_data(self, data):
logger.info("update item")
#trim the last occurence of '/': everything right-hand-side is our value
cmd = data.rsplit('/', 1)
[COLOR=Red]logger.info("cmd:"+ str(cmd))[/COLOR]
if cmd[0] in self._val:
for item in self._val[cmd[0]]['items']:
logger.info("data: [COLOR=Red]|[/COLOR]{}[COLOR=Red]|[/COLOR]".format(cmd[1]))
item(cmd[1], 'Sonos', '')
Im Log sieht du dann, dass ein Zeilenumbruch mitgeschickt wird... was zum Fehler führt: does not match type bool. Via Sonos
"WARNING Logger" kann ignoriert werden....
Code:
2014-02-17 12:45:16 INFO Main Start Plugins
2014-02-17 12:45:16 INFO Main Start Logics
2014-02-17 12:45:17 INFO Main update item
2014-02-17 12:45:17 INFO Main cmd:['speaker/rincon_000e58a488ce01400/mute', '0']
2014-02-17 12:45:17 INFO Main data: |0|
2014-02-17 12:45:17 INFO Main update item
2014-02-17 12:45:17 INFO Main cmd:['speaker/rincon_000e58a488ce01400/led', '1']
2014-02-17 12:45:17 INFO Main data: |1|
2014-02-17 12:45:18 INFO Main update item
2014-02-17 12:45:18 INFO Main cmd:['speaker/rincon_000e58a488ce01400/volume', '68']
2014-02-17 12:45:18 INFO Main data: |68|
2014-02-17 12:45:18 INFO Main update item
2014-02-17 12:45:18 INFO Main cmd:['speaker/rincon_000e58a488ce01400/stop', '1\r']
|014-02-17 12:45:18 INFO Main data: |1
2014-02-17 12:45:19 WARNING Logger Item: sonos.wohnen.stop -> 1
2014-02-17 12:45:19 INFO Main update item
2014-02-17 12:45:19 INFO Main cmd:['speaker/rincon_000e58a488ce01400/play', '0\r']
|014-02-17 12:45:19 INFO Main data: |0
2014-02-17 12:45:19 WARNING Logger Item: sonos.wohnen.play -> 0
2014-02-17 12:45:19 INFO Main update item
2014-02-17 12:45:19 INFO Main cmd:['speaker/rincon_000e58a488ce01400/pause', '0']
2014-02-17 12:45:19 INFO Main data: |0|
2014-02-17 12:45:19 INFO Main update item
2014-02-17 12:45:19 INFO Main cmd:['speaker/rincon_000e58a488ce01400/stop', '1']
2014-02-17 12:45:19 INFO Main data: |1|
2014-02-17 12:45:19 WARNING Logger Item: sonos.wohnen.stop -> 1
2014-02-17 12:45:19 INFO Main update item
2014-02-17 12:45:19 INFO Main cmd:['speaker/rincon_000e58a488ce01400/play', '0']
2014-02-17 12:45:19 INFO Main data: |0|
2014-02-17 12:45:19 WARNING Logger Item: sonos.wohnen.play -> 0
2014-02-17 12:45:19 INFO Main update item
2014-02-17 12:45:19 INFO Main cmd:['speaker/rincon_000e58a488ce01400/pause', '0']
2014-02-17 12:45:19 INFO Main data: |0|
2014-02-17 12:45:19 INFO Main update item
2014-02-17 12:45:19 INFO Main cmd:['speaker/rincon_000e58a488ce01400/stop', '1\r']
|014-02-17 12:45:19 INFO Main data: |1
2014-02-17 12:45:19 WARNING Logger Item: sonos.wohnen.stop -> 1
2014-02-17 12:45:19 INFO Main update item
2014-02-17 12:45:19 INFO Main cmd:['speaker/rincon_000e58a488ce01400/play', '0\r']
|014-02-17 12:45:19 INFO Main data: |0
2014-02-17 12:45:19 WARNING Logger Item: sonos.wohnen.play -> 0
2014-02-17 12:45:19 INFO Main update item
2014-02-17 12:45:19 INFO Main cmd:['speaker/rincon_000e58a488ce01400/pause', '0']
2014-02-17 12:45:19 INFO Main data: |0|
2014-02-17 12:45:19 INFO Main update item
2014-02-17 12:45:19 INFO Main cmd:['speaker/rincon_000e58a488ce01400/track', '01 Jungi Schwän und Äntli.mp3']
2014-02-17 12:45:19 INFO Main data: |01 Jungi Schwän und Äntli.mp3|
2014-02-17 12:45:19 INFO Main update item
2014-02-17 12:45:19 INFO Main cmd:['speaker/rincon_000e58a488ce01400/track_position', '0:00:00']
2014-02-17 12:45:19 INFO Main data: |0:00:00|
2014-02-17 12:45:19 INFO Main update item
2014-02-17 12:45:19 INFO Main cmd:['speaker/rincon_000e58a488ce01400/track_duration', '0:02:19']
2014-02-17 12:45:19 INFO Main data: |0:02:19|
2014-02-17 12:45:19 INFO Main update item
2014-02-17 12:45:19 INFO Main cmd:['speaker/rincon_000e58a488ce01400/artist', '']
2014-02-17 12:45:19 INFO Main data: ||
2014-02-17 12:45:19 INFO Main update item
2014-02-17 12:45:19 INFO Main cmd:['speaker/rincon_000e58a488ce01400/streamtype', 'music']
2014-02-17 12:45:19 INFO Main data: |music|
2014-02-17 12:45:19 INFO Main update item
2014-02-17 12:45:19 INFO Main cmd:['speaker/rincon_000e5886437201400/mute', '0']
2014-02-17 12:45:19 INFO Main data: |0|
2014-02-17 12:45:19 INFO Main update item
2014-02-17 12:45:19 INFO Main cmd:['speaker/rincon_000e5886437201400/led', '1']
2014-02-17 12:45:19 INFO Main data: |1|
2014-02-17 12:45:19 INFO Main update item
2014-02-17 12:45:19 INFO Main cmd:['speaker/rincon_000e5886437201400/volume', '10']
2014-02-17 12:45:19 INFO Main data: |10|
2014-02-17 12:45:19 INFO Main update item
2014-02-17 12:45:19 INFO Main cmd:['speaker/rincon_000e5886437201400/stop', '1\r']
|014-02-17 12:45:19 INFO Main data: |1
does not match type bool. Via Sonos Item sonos.kueche.stop: value 1
2014-02-17 12:45:19 INFO Main update item
2014-02-17 12:45:19 INFO Main cmd:['speaker/rincon_000e5886437201400/play', '0\r']
|014-02-17 12:45:19 INFO Main data: |0
does not match type bool. Via Sonos Item sonos.kueche.play: value 0
2014-02-17 12:45:19 INFO Main update item
2014-02-17 12:45:19 INFO Main cmd:['speaker/rincon_000e5886437201400/pause', '0']
2014-02-17 12:45:19 INFO Main data: |0|
2014-02-17 12:45:19 INFO Main update item
2014-02-17 12:45:19 INFO Main cmd:['speaker/rincon_000e5886437201400/stop', '1']
2014-02-17 12:45:19 INFO Main data: |1|
2014-02-17 12:45:20 WARNING Logger Item: sonos.kueche.stop -> True
2014-02-17 12:45:20 INFO Main update item
2014-02-17 12:45:20 INFO Main cmd:['speaker/rincon_000e5886437201400/play', '0']
2014-02-17 12:45:20 INFO Main data: |0|
2014-02-17 12:45:20 WARNING Logger Item: sonos.kueche.play -> False
2014-02-17 12:45:20 INFO Main update item
2014-02-17 12:45:20 INFO Main cmd:['speaker/rincon_000e5886437201400/pause', '0']
2014-02-17 12:45:20 INFO Main data: |0|
2014-02-17 12:45:20 INFO Main update item
2014-02-17 12:45:20 INFO Main cmd:['speaker/rincon_000e5886437201400/stop', '1\r']
|014-02-17 12:45:20 INFO Main data: |1
does not match type bool. Via Sonos Item sonos.kueche.stop: value 1
2014-02-17 12:45:20 INFO Main update item
2014-02-17 12:45:20 INFO Main cmd:['speaker/rincon_000e5886437201400/play', '0\r']
|014-02-17 12:45:20 INFO Main data: |0
does not match type bool. Via Sonos Item sonos.kueche.play: value 0
2014-02-17 12:45:20 INFO Main update item
2014-02-17 12:45:20 INFO Main cmd:['speaker/rincon_000e5886437201400/pause', '0']
2014-02-17 12:45:20 INFO Main data: |0|
2014-02-17 12:45:20 INFO Main update item
2014-02-17 12:45:20 INFO Main cmd:['speaker/rincon_000e5886437201400/track', '']
2014-02-17 12:45:20 INFO Main data: ||
2014-02-17 12:45:20 INFO Main update item
2014-02-17 12:45:20 INFO Main cmd:['speaker/rincon_000e5886437201400/track_position', '0:00:00']
2014-02-17 12:45:20 INFO Main data: |0:00:00|
2014-02-17 12:45:20 INFO Main update item
2014-02-17 12:45:20 INFO Main cmd:['speaker/rincon_000e5886437201400/track_duration', '0:00:00']
2014-02-17 12:45:20 INFO Main data: |0:00:00|
2014-02-17 12:45:20 INFO Main update item
2014-02-17 12:45:20 INFO Main cmd:['speaker/rincon_000e5886437201400/artist', '']
2014-02-17 12:45:20 INFO Main data: ||
2014-02-17 12:45:20 INFO Main update item
2014-02-17 12:45:20 INFO Main cmd:['speaker/rincon_000e5886437201400/streamtype', 'music']
2014-02-17 12:45:20 INFO Main data: |music|
2014-02-17 12:45:20 INFO Main update item
2014-02-17 12:45:20 INFO Main cmd:['speaker/rincon_000e588645e201400/mute', '0']
2014-02-17 12:45:20 INFO Main data: |0|
2014-02-17 12:45:20 INFO Main update item
2014-02-17 12:45:20 INFO Main cmd:['speaker/rincon_000e588645e201400/led', '1']
2014-02-17 12:45:20 INFO Main data: |1|
2014-02-17 12:45:20 INFO Main update item
2014-02-17 12:45:20 INFO Main cmd:['speaker/rincon_000e588645e201400/volume', '18']
2014-02-17 12:45:20 INFO Main data: |18|
2014-02-17 12:45:20 INFO Main update item
2014-02-17 12:45:20 INFO Main cmd:['speaker/rincon_000e588645e201400/stop', '1\r']
|014-02-17 12:45:20 INFO Main data: |1
does not match type bool. Via Sonos Item sonos.bastel.stop: value 1
2014-02-17 12:45:20 INFO Main update item
2014-02-17 12:45:20 INFO Main cmd:['speaker/rincon_000e588645e201400/play', '0\r']
|014-02-17 12:45:20 INFO Main data: |0
does not match type bool. Via Sonos Item sonos.bastel.play: value 0
2014-02-17 12:45:20 INFO Main update item
2014-02-17 12:45:20 INFO Main cmd:['speaker/rincon_000e588645e201400/pause', '0']
2014-02-17 12:45:20 INFO Main data: |0|
2014-02-17 12:45:20 INFO Main update item
2014-02-17 12:45:20 INFO Main cmd:['speaker/rincon_000e588645e201400/stop', '1']
2014-02-17 12:45:20 INFO Main data: |1|
2014-02-17 12:45:20 WARNING Logger Item: sonos.bastel.stop -> True
2014-02-17 12:45:20 INFO Main update item
2014-02-17 12:45:20 INFO Main cmd:['speaker/rincon_000e588645e201400/play', '0']
2014-02-17 12:45:20 INFO Main data: |0|
2014-02-17 12:45:20 WARNING Logger Item: sonos.bastel.play -> False
2014-02-17 12:45:20 INFO Main update item
2014-02-17 12:45:20 INFO Main cmd:['speaker/rincon_000e588645e201400/pause', '0']
2014-02-17 12:45:20 INFO Main data: |0|
2014-02-17 12:45:20 INFO Main update item
2014-02-17 12:45:20 INFO Main cmd:['speaker/rincon_000e588645e201400/stop', '1\r']
|014-02-17 12:45:20 INFO Main data: |1
does not match type bool. Via Sonos Item sonos.bastel.stop: value 1
2014-02-17 12:45:20 INFO Main update item
2014-02-17 12:45:20 INFO Main cmd:['speaker/rincon_000e588645e201400/play', '0\r']
|014-02-17 12:45:20 INFO Main data: |0
does not match type bool. Via Sonos Item sonos.bastel.play: value 0
2014-02-17 12:45:20 INFO Main update item
2014-02-17 12:45:20 INFO Main cmd:['speaker/rincon_000e588645e201400/pause', '0']
2014-02-17 12:45:20 INFO Main data: |0|
2014-02-17 12:45:20 INFO Main update item
2014-02-17 12:45:20 INFO Main cmd:['speaker/rincon_000e588645e201400/track', 'Gib mir Sonne']
2014-02-17 12:45:20 INFO Main data: |Gib mir Sonne|
2014-02-17 12:45:20 INFO Main update item
2014-02-17 12:45:20 INFO Main cmd:['speaker/rincon_000e588645e201400/track_position', '0:00:00']
2014-02-17 12:45:20 INFO Main data: |0:00:00|
2014-02-17 12:45:20 INFO Main update item
2014-02-17 12:45:20 INFO Main cmd:['speaker/rincon_000e588645e201400/track_duration', '0:04:03']
2014-02-17 12:45:20 INFO Main data: |0:04:03|
2014-02-17 12:45:20 INFO Main update item
2014-02-17 12:45:20 INFO Main cmd:['speaker/rincon_000e588645e201400/artist', 'Rosenstolz']
2014-02-17 12:45:20 INFO Main data: |Rosenstolz|
2014-02-17 12:45:20 INFO Main update item
2014-02-17 12:45:20 INFO Main cmd:['speaker/rincon_000e588645e201400/streamtype', 'radio']
2014-02-17 12:45:20 INFO Main data: |radio|
Super, danke. Werde ich gleich einpflegen. Bei mir hatte die Warnung nie Auswirkungen gehabt. Läuft es nun bei dir wie gewünscht? Laut Log ändern sich die Werte Play / Stop korrekt.
Muss ich dann noch prüfen, ich hatte gestern den Eindruck, dass er ein Stop = True bzw. Play = False setzt, obwohl Musik an war. Ich geb aber nochmal Feedback...
Eine neue Version des Plugins, sowie des Brokers sind online.
Sonos-Broker v0.1.6:
minor bugfix: changed EOL (end-of-line) from '\r\n' to '\n' in sonos_command method
smarthome-Sonos-Plugin v0.3.1:
bugfix in parse_input method: '\r' was not stripped correctly
Ich habe das Problem sowohl beim Broker als auch beim Plugin entfernt. Der Broker sollte nun die Linefeeds korrekt setzen, das Plugin geht auf Nummer sicher und entfernt nun alle EOL (end-of-line) Zeichen.
Das Plugin ist noch nicht im Smarthome.py committed, die aktuellse Version von beiden Programmen gibts wie immer unter:
Als nächste schaue ich mal wie er sich verhält, wenn eine zone ohne strom ist. Ob der broker damit ein problem hat bezüglich den richtigen stati.
andere frage: gibt es eine funktion um abzufragen ob eine zone online ist? Dann müssten nicht 30 fehlermeldungen kommen "bad request"
Und noch eine bitte
Könntest du implemetiere, das die aktuelle queue (playlist) abgefragt werden kann? Hintergrund: ich würde gerne hinweise ausgeben lassen z.b waschmaschine fertig. Aber die playliste sollte danach wieder hergestellt werden.
Als nächste schaue ich mal wie er sich verhält, wenn eine zone ohne strom ist. Ob der broker damit ein problem hat bezüglich den richtigen stati.
andere frage: gibt es eine funktion um abzufragen ob eine zone online ist? Dann müssten nicht 30 fehlermeldungen kommen "bad request"
Und noch eine bitte
Könntest du implemetiere, das die aktuelle queue (playlist) abgefragt werden kann? Hintergrund: ich würde gerne hinweise ausgeben lassen z.b waschmaschine fertig. Aber die playliste sollte danach wieder hergestellt werden.
Gruss buffi
Ps: danke für deinen einsatz!
Hallo buffi,
Schön das es langsam geht. Wegen den Intervallen: du kannst in der Subscribe-Methode in der __init__.py den counter Wert beliebig nach oben setzen. Im Moment schaut das Plugin aller zwei Minuten nach, und resubscribed sich und holt sich automatisch die aktuellsten Werte. Alles was dazwischen kommt, kommt tatsächlich von den Sonos-Speakern. Aber das Bad-Request verhinderst du durch einen höheren Counter-Wert. Dann musst du aber sicherstellen, das der Broker vor dem initialisieren von smarthome.py läuft.
Das mit der Playlist war einer der Gründe, warum ich das Plugin machen wollte. Kommt diese Woche rein. Ich bin mir nur noch nicht so sicher , wo ich die Queue speichern soll. Auf dem Broker oder eher im Plugin (da würde sich eventuell die sqlite-Datenbank eignen). Persönlich tendiere ich eher zum Plugin als Speicherort.
Bez. bad request. Wäre es ne möglichkeit vor dem subscribe jeweils zu schauen welche speaker angemeldet sind (clients/list) und nur diese speaker(items) zu suscriben, welche auch in der clientliste vorhanden sind?
Kleiner Zwischenstand: um die nächsten Features einzubauen, musste ich den Code etwas anders gestalten. Dieser ist nun logischer und weniger Resourcen-fordernd. Anstelle jeden Status einzeln an die Clients zu senden, wird nun immer die komplette Eigenschaftsliste des jeweiligen Speakers im json-Format gesendet. Das macht das ganze System auch variabler. Im Moment bin ich noch dabei, das sh-Plugin dahingehend anzupassen. Ich denke das ich am Wochenende eine neues Relase bereitstellen kann.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar