NEWS
Logitech Squeezebox Weckersteuerung *gelöst*
-
@surfer09 sagte in Logitech Squeezebox Weckersteuerung:
@oliverio So ich habe das Skript jetzt mal umgebaut und beschreibe den Datenpunkt "cmdGeneral". Allerdings bleiben die Wecker weiterhin aktiv. Ist hier noch etwas verkehrt?
oh mann, warum hab ich mur nu so viel mühe gemach wenn es an der Aufmeksamkeit mangelt.
das hab ich oben geschriebenalso einen Alarm kannst du wie folgt setzen:
du schreibst in den Datenpunkt cmdGeneral das folgende rein:> "alarm","add","dow:1","enabled:1","playlist:file://some/playlist.m3u","time:9000"
Die Erklärung für die einzelnen Parameter findest du hier. Auch die Befehle zum löschen, aktivieren deaktivieren
https://github.com/elParaguayo/LMS-CLI-Documentation/blob/master/LMS-CLI.md#alarm-commands-and-queries -
@oliverio sagte in Logitech Squeezebox Weckersteuerung:
oh mann, warum hab ich mur nu so viel mühe gemach wenn es an der Aufmeksamkeit mangelt.
Ich glaube nicht, dass meine Aufmerksamkeit das Problem ist.
Es steht zwar beschrieben, wie ich einen neuen Alarm setze, aber nicht wie ich einen löschen kann. Wenn ich über die App die Alarme lösche, steht genau dieser Befehl in dem einen Datenpunkt, deswegen bin ich davon ausgegangen, dass dieser auch die Alarme löscht, wenn er in den Datenpunkt cmdGeneral geschrieben wird.
Sorry, aber wenn ich das noch nie gemacht habe kann ich das nicht wissen, daher habe ich ja diesen Beitrag geschrieben.... -
@surfer09
doch,
ein aufmerksamer leser hätte das gelesen was man in den datenpunkt reinschreibt
und nicht den inhalt aus dem daten punkt alarms(oder was das mit fade out n deinem blockly erkennen kann.ein aufmerksamer leser hätte in der anderen dokumentation neben dem parameter add auch noch die anderen erkannt, so wie ich es geschrieben habe aber ich koiere es dir hier nochmal rein
<playerid> alarm <add|update|delete|enableall|<wbr>disableall|defaultvolume> <taggedParameters>
da kann man erkennen, das es neben add auch noch update, enableall, disableall und delete gibt
weiter unten sogar mit beispiele
in kombination mit der dokumentation zum datenpunt cmdGeneral könnte man sich das herleitencmdGeneral a general command field to send commands to the player. every field must enclosed by quotation marks. parameters musst be seperated by comma. Example: "play","1"
am besten den ganzen thread nochmal lesen, fängt ganz oben an und auch die beiliegenden links
-
@oliverio Ich glaube schon, dass ich das Grundgerüst schon abgebildet habe, aber es tut sich trotzdem nichts. Vermutlich mache ich noch irgendwo einen Fehler..
Die ID vom Player und die ID vom Wecker sind hinterlegt, der "delete-Befehl" ebenfalls. -
ich geb dir mal nochmal eine tag zum überlegen.
tip, schau dir meinen Vorschlag für "add" ganz genau an und versuche die beschreibung von cmdGeneral ganz genau zu verstehen -
@oliverio Guten Morgen!
Also ich sitze jetzt schon 45 Minuten vor der Doku und bin immer noch kein Stück weiter, als vorher. In der Doku steht der Delete-Befehl so, wie ich ihn in Blockly sende, also schließe ich auch einen "," oder ""-Fehler aus. Auch die Player-ID und die ID vom Wecker sind korrekt.
Also wenn das Ganze wirklich so schwierig ist, dann mache ich das wohl weiterhin manuell.. Da machen mich dann auch keine 20 Seiten Doku schlauer - zumal ich auch kein Programmierer bin. -
Also
das ist die Beschreibung des iobroker-Adapters
https://github.com/oweitman/ioBroker.squeezeboxrpc
Hier stehen alle Datenpunkte, ihre Bedeutung und ihre Anwendung drindas hier ist die Beschreibung der Befehle für den LMS
https://github.com/elParaguayo/LMS-CLI-Documentation/blob/master/LMS-CLI.md#alarm-commands-and-queries
Hier steht was die einzelnen Parameter vom Inhalt her bedeuten (dow,time,url,etc)Der Adapter liefert dir einmal die Informationen aus dem LMS und gibt dir die Möglichkeit Funktionen auf dem LMS auszuführen. Manches wird von den widgets, im vis verwendet. die du verwenden kannst um auf einer schönen Oberfläche die wichtigsten Funktionen zum abspielen von Musik zu steuern.
Einige dieser Befehle werden bereits im iobroker direkt unterstützt.
Damit aber alle anderen, noch nicht direkt unterstützen Befehle auch durch den Adapter genutzt werden können,
habe ich den Befehlsdatenpunkt cmdGeneral eingeführt.
Damit der Adapter die einzelnen Parameter eines LMS-Befehls richtig interpretieren und weiterleiten kann, muss man eine gewisse Konvention einhalten.
Wir lesen aus der Adapterbeschreibung, ich übersetze direktcmdGeneral a general command field to send commands to the player. every field must enclosed by quotation marks. parameters musst be seperated by comma. Example: "play","1"
Ein allgemeines Befehlsfeld zum Senden von Befehlen an den Player. Jedes Feld muss in Anführungszeichen gesetzt werden. Parameter müssen durch Komma getrennt werden. Beispiel: "play", "1"
Darauf prüfst du, was ich mit dem Add-Befehl bereits geschrieben habe:
"alarm","add","dow:1","enabled:1","playlist:file://some/playlist.m3u","time:9000"
aha, wir sehen, verschiedene Parameter mit Komma getrennt und in Anführungsstriche.
Dann vergleichen wir mit dem original Befehlsbeispiel aus der LMS Dokumentation"bd:a5:a9:9b:9d:df alarm add dow:1 enabled:1 playlist:file://some/playlist.m3u time:9000"
Ich hoffe du erkennst den Unterschied und kannst das Schema nun anpassen.
Die PlayerID kann man weglassen, da der Befehl cmdGeneral-Befehl bereits direkt zu einem Player gehört und alle Befehle hier nur für den jeweiligen Player gelten. Aller anderen Parameter sind mit Komma getrennt und jeweils in AnführungsstrichenDas übertragen wir nun auf den Delete-Befehl
Hier das original Beispiel aus der LMS-Beschreibung"bd:a5:a9:9b:9d:df alarm delete id:eaf39"
Das übertragen wir dann auf das Schema von cmdGeneral
"alarm","delete","id:eaf39"
Die ID ist der eindeutige Namen eines Weckers und wird für jeden Wecker neu individuell vom LMS vergeben,
da musst du bei Alarms schauen wie der Wecker heist, den du löschen möchtest.Das Ergebnis, ob es funktioniert hat, kannst du aus dem Inhalt des Datenpunkt "Alarms" auslesen.
Der Datenpunkt Alarms aktualisiert sich glaube ich nur alle 30 Sekunden. Du musst uU ein wenig warten bis die neuen Daten da drin sind.
Da die Daten als JSON formatiert sind und in diesem kleinen Fenster schlecht zu lesen, verwende
den Kopierknopf,. Dieser wird eingeblendet, sobald du mit der Maus über den Inhalt des Datenpunks schwebst
und fügst es hier ein
https://jsonformatter.curiousconcept.com/#
Das formatiert die Daten so, das es besser lesbar ist.{ "fade":"1", "count":1, "alarms_loop":[ { "id":"43ea07eb", "dow":"1,2", "enabled":"1", "repeat":"1", "time":120, "volume":"50", "url":"http://116.202.214.140:16074/;" } ] }
Das ist nun die kleinklein-Beschreibung. Jetzt bin ich mal gespannt.
-
@oliverio sagte in Logitech Squeezebox Weckersteuerung:
"alarm","delete","id:eaf39"
Was soll ich dir sagen? Es hat funktioniert! Danke für deine Mühe und Geduld!
Ehrlich gesagt wäre ich in hundert Jahren nicht darauf gekommen, den Code so dort einzutragen.
Löschen klappt also schon einmal. Deaktivieren wäre in meinem Fall aber die bessere Lösung.
Was bedeutet hier das <wbr> vor dem "disableall"?<playerid> alarm <add|update|delete|enableall|<wbr>disableall|defaultvolume> <taggedParameters>
-
@surfer09 Kommando zurück, es hat doch schon funktioniert mit "alarm","disableall". Ich hatte gerade nur bei den einzelnen Alarmen in der App geschaut und die waren noch aktiv. Den Oberpunkt "Alle Alarme" hatte ich nicht gesehen.
Somit denke ich, dass ich vorerst damit klar komme.Ich danke dir nochmals für deine mühevolle Hilfe @OliverIO !
-
Hab auch nochmal geschaut was wbr heißt. ist aber in der doku nicht erklärt. das wbr kommt noch an anderen stellen vor.
Ich habe auch gerade noch ein Problem mit Alarms festgestellt. Der Datenpunkt enthält nur die Aktiven und nicht die deaktivierten Datenpunkte.
Habe das gerade hier lokal korrigiert.
Kommt dann in der nächsten offiziellen Version auf latest -
Ich fasse jetzt nochmal ganz laienhaft zuammen, wie sich die Wecker aktivieren / deaktivieren lassen.
ID zu dem entsprechenden Wecker heraussuchen (wird der Wecker komplett gelöscht und neu erstellt, gibt es eine neue ID!)
Im Blockly Skript (Sterungsblock) muss dann der Befehl eingetragen werden. Angesprochen wird der Datenpunkt "cmdGeneral"
Wecker mit der ID 81bf1cdf wird hier deaktiviert (Befehl; enabled:0), soll er aktiviert werden bitte "enabled:1" einsetzen.
Sollen alle Wecker deaktiviert werden "alarm,"disableall" als Befehl eingeben.Ich hoffe, das ist nun auch für Laien einmal kurz und bündig zusammengefasst .
-
https://forum.iobroker.net/topic/21809/test-adapter-squeezeboxrpc-v0-8-x-latest/207?_=1611219098580
In der Regel dauert es ein paar Stunden, bis der Update-Mechanismus von iobroker bemerkt das es eine neue Version gibt
Allerdings musst du dafür hier den Verwahrort nochmals temporär auf latest umstellen -
@oliverio Super, Danke!
-
@surfer09 sagte in Logitech Squeezebox Weckersteuerung *gelöst*:
Was bedeutet hier das <wbr> vor dem "disableall"?
@oliverio sagte in Logitech Squeezebox Weckersteuerung *gelöst*:
Hab auch nochmal geschaut was wbr heißt. ist aber in der doku nicht erklärt. das wbr kommt noch an anderen stellen vor.
Das <wbr> hat hier nichts zu suchen. In den mit dem LMS ausgelieferten Hilfeseiten (http://...:9000/html/docs/cli-api.html) sind diese Dinger an den entsprechenden Stellen nicht zu sehen. Ich denke, es handelt sich hier um Formatierungsanweisungen (word breaking???), die irgendwo auf dem Transportweg von Logitech zu GitHub versehentlich da rein gerutscht sind.