NEWS
Test/Support Adapter SqueezeboxRPC
-
Upps! Hatte ich gesucht - und übersehen. Sorry & Danke!
-
Das Löschen von Favoriten hinterlässt "Leichen" im Favoriten-Objektbaum von SqueezeboxRPC. Ein Beispiel:
- Die Ausgangslage:
-
Der Eintrag "Test eins" wird auf dem LMS gelöscht:
-
Der Button squeezeboxrpc.0.Server.getFavorites wird gedrückt. Das Objektfenster im Browser wird zur Vorsicht geschlossen. Es wird ein neues Objektfenster im Browser geöffnet:
Man sieht nun:
- Der Eintrag "Test zwei" ist nach oben gerutscht, um den vorherigen Platz von "Test eins" einzunehmen.
- Auf dem bisherigen Platz von "Test zwei" bleibt jedoch sein alter Eintrag stehen (siehe Timestamps)
- Die Ausgangslage:
-
Ja, der objektbaum hinterlässt manchmal artefakte. Die Objekte existieren eigentlich nicht mehr, sondern kommen wahrscheinlich aus dem Browser Cache
Oben links gibt es für den objektbaum ein aktualisieren Knopf. Spätestens dann müssten diese Zombie Objekte weg sein. Wenn nicht, dann schauen wir weiter.Technisch wird bei jedem aktualisieren im Hintergrund alle Favoriten states gelöscht und dann neu angelegt.
-
@OliverIO sagte in Test Adapter SqueezeboxRPC v0.8.x Latest:
Die Objekte existieren eigentlich nicht mehr, sondern kommen wahrscheinlich aus dem Browser Cache
Oben links gibt es für den objektbaum ein aktualisieren Knopf. Spätestens dann müssten diese Zombie Objekte weg sein. Wenn nicht, dann schauen wir weiter.Ja, dann lass uns mal bitte weiterschauen.
Der Refresh-Knopf brachte keine Heilung.
Nachdem zwei Stunden nach dem Löschvorgang vier verschiedene Browser auf demselben PC sowie zwei verschiedene Browser auf einem zweiten PC immer noch den Zombie im Objekt-Fenster anzeigten, habe ich dann meinen Knopf für das Auslesen des Favoriten-Objektbaums bemüht. Das Log zeigt dann folgendes an:
2020-02-04 16:59:46.144 - info: javascript.0 script.js.common.MultiMedia.SqueezeBoxFavorites: Debug Info: FavoriteId: 1.0 2020-02-04 16:59:46.144 - info: javascript.0 script.js.common.MultiMedia.SqueezeBoxFavorites: Debug Info: FavoriteName: DR+P8+Jazz . 2020-02-04 16:59:46.144 - info: javascript.0 script.js.common.MultiMedia.SqueezeBoxFavorites: Debug Info: FavoriteId: 1.1 2020-02-04 16:59:46.144 - info: javascript.0 script.js.common.MultiMedia.SqueezeBoxFavorites: Debug Info: FavoriteName: Test zwei 2020-02-04 16:59:46.144 - info: javascript.0 script.js.common.MultiMedia.SqueezeBoxFavorites: Debug Info: FavoriteId: 1.2 2020-02-04 16:59:46.144 - info: javascript.0 script.js.common.MultiMedia.SqueezeBoxFavorites: Debug Info: FavoriteName: Test zwei 2020-02-04 16:59:46.145 - info: javascript.0 script.js.common.MultiMedia.SqueezeBoxFavorites: Debug Info: FavoriteId: 10.0 2020-02-04 16:59:46.145 - info: javascript.0 script.js.common.MultiMedia.SqueezeBoxFavorites: Debug Info: FavoriteName: Ö1 .
Das scheint also kein reines Anzeigeproblem zu sein.
Hier zum Quercheck mein Code-Schnipsel, der obige Logeinträge erzeugt:
AnfangsLaenge = FavoritesAccessKey.split('.').length; TrefferListe = $(FavoritesAccessKey + '.*.id'); TrefferListe.each(function (Key, Position) { Tmp = Key.split('.'); if(Tmp.length == (AnfangsLaenge + 2)) { if (getState(NachbarKey(Key, 'isaudio')).val) { if (getState(NachbarKey(Key, 'type')).val == 'audio') { Id = getState(Key).val; Log(true, 'FavoriteId: ' + Id); Name = getState(NachbarKey(Key, 'Name')).val; Log(true, 'FavoriteName: ' + Name);
Technisch wird bei jedem aktualisieren im Hintergrund alle Favoriten states gelöscht und dann neu angelegt.
Vielleicht läuft ja in dieser Ecke etwas schief. Wäre schön, wenn Du da nochmal rein schauen könntest. Besten Dank im Voraus.
-
@hsteinme ich hab etwas gefunden, was temporär zu Differenzen führt und nun in 0.8.31 behoben.
Die Favoriten sind nur im refresh gelöscht worden und nicht wenn man individuell abfragt.
jetzt wird es jedes mal gelöscht. -
@BoehserWolf said in Neuer Adapter SqueezeboxRPC:
Musste nach dem Update 1x den Upload anschieben damit die neuen Widgets übernommen wurden - nur zur Info.
@OliverIO sagte in Test Adapter SqueezeboxRPC v0.8.x Latest:
Ja weiß ich, ich glaube wenn man über den normalen Updatemechanismus von iobroker aktualisiert, wird das automatisch gemacht. Ich werde einen Hinweis in die Doku mit aufnehmen
Ich habe keinen Upload-Hinweis in der README.md gefunden. Habe ich da was übersehen?
-
@hsteinme ne stimmt, war noch nicht drin. habe es gerade eingebaut. wird dann beim nächsten release dann auch in der onlinedoku landen.
der befehl lautet
iobroker upload squeezeboxrpc
-
@OliverIO sagte in Test Adapter SqueezeboxRPC v0.8.x Latest:
ich hab etwas gefunden, was temporär zu Differenzen führt und nun in 0.8.31 behoben
Danke schön!
Ich habe nun folgendes getan
- Update SqueezeboxRPC über die github-Adresse
- sudo iobroker upload squeezeboxrpc
- Version im Adapter-Reiter überprüft:
** 0.8.31 - Im LMS wie vor zwei Tagen die Favoriten Test eins und Test zwei angelegt
- Favorit Test zwei gelöscht
- Button squeezeboxrpc.0.Server.getFavorites gedrückt
- Browser geschlossen
- Browser erneut geöffnet
- Im Objects-Reiter squeezeboxrpc.0.Favorites.* überprüft:
** Test eins ist nicht mehr vorhanden
** Test zwei hat dessen Platz eingenommen mit aktuellem Timestamp
** Ein zweiter Test zwei Eintrag mit älterem Timestamp steht weiterhin auf dem früheren Platz von Test zwei - Per Javascript den Favoritenbaum ausgelesen:
** Zwei Einträge für den Favoriten Test zwei werden gefunden
Was habe ich wo falsch gemacht?
Übrigens: Auch nach einem etwa 20 Minuten nach der Favorit-Löschung erfolgten Restart des ioBroker ist der veraltete Eintrag von Test zwei immer noch vorhanden.
-
@OliverIO sagte in Test Adapter SqueezeboxRPC v0.8.x Latest:
habe es gerade eingebaut
-
@hsteinme ok, der löschbefehl vom iobroker scheint nicht so zu funktionieren wie er soll.
muss da nähers recherchieren. -
@hsteinme ok, einen klein stück bin ich weiter gekommen, aber auf ein weiteres Problem gestossen
Das Löschen funktioniert wieder richtig (ich meine früher hat das auch funktioniert, aber zwischenzeitlich nicht mehr)
ich denke am iobroker befehl wurde geschraubt.das nächste Problem was ich sehe ist,
ausgangslage:
ich habe im LMS 3 untereinträge
12.1=fav1
12.2=fav2
12.3=fav3lösche ich den 12.2 fav2 im LMS und lese die favs neu ein,
dann sind korrekter weise nur noch
12.1 und 12.2 im iobroker da, aber wie heisen die?
12.1=fav1
12.2=fav2wie gesagt, von meiner seite aus wird nun alles ordentlich gelöscht.
lege ich den status nun neu an und übergebe auch den wert fav3
steht trotzdem fav2 drin.da muss ich erst einmal einen nachvollziehbaren test aufbauen und im forum posten.
da scheint noch ein Fehler zu sein. -
ok, es scheint am browser zu liegen.
die states habe sich geändert und nach schliessen des Browser tabs und neu öffnen, erscheint der richtige wert.
ich mach mal neues release für meine letzte änderung -
Neue Version 0.8.32
Fehler beim Umgang mit dem löschen von Favoriten behoben.
ggfs. kann es noch zu Fehlern in der Browseransicht im iobroker Objektbau geben.
Das ist aber rein visueller natur und kann durch schließen und öffnen des Browser-Tabs behoben werden. -
@OliverIO: Jetzt läuft es bestens
Ganz herzlichen Dank für Deine Bemühungen: für Deine Diagnosen, für Deine Behebungen und insbesondere für Dein Drumherumprogrammieren um die schwächelnde deleteChannel-Funktion des ioBrokers.
Übrigens: Ein Blick in die Forumsvergangenheit zeigt, dass Dein Adapter nicht der erste ist, der sich über deleteChannel "wundert".
-
@OliverIO : Ich wollte mich für diesen Adapter bedanken! Nachdem sich Sonos dazu entschieden hat, nicht mehr anwenderfreundlich zu sein, baue ich mir ein neues System, basierend auf max2play, auf. Nun bin ich auf deinen Adapter gestossen, mit dem ich das ganze auch in die Hausautomation integrieren kann. Herzlichen Dank!!
Ich werde demnächst rund 10 Player am laufen haben. Evtl. kann ich dann auch etwas zum Testing beitragen. -
@baerengraben Super, danke,
Bin gerade dabei ins stabile repository zu gehen. Muss nur noch das Discovery testen.Wenn du noch Ideen für sinnvolle Erweiterungen hast, dann gerne.
-
@OliverIO : Ich versuche gerade über deinen Adapter meine beiden Testboxen zu synchronisieren bzw. in eine Gruppe zusammen zu binden. Hast du mir einen Tip, über welches ioBroker-Objekt ich das bewerkstelligen kann? Mache ich das über squeezeboxrpc>Server>SyncGroups?
-
@baerengraben
Genau, das widget für das organisieren der Syncgruppen ist SyncGroups in Zusammenspiel mit dem player widget.Am besten du platzierst SyncGroups in der Nähe des Player widgets.
Wenn du nun einen Player in Players auswählst zeigt dir SyncGroup an, welche Player in der gleichen SyncGroup ist (blauer Rahmen), in einer anderen SyncGroup ist (rötlicher Rahmen), oder in keiner SyncGroup ist (kein leuchtender Rahmen).Wenn du dann in SyncGroups einen Player auswählst, wird er in die Syncgroup aufgenommen oder herausgenommen (je nachdem ob er vorher drin war oder nicht). Wenn der Player in einer anderen Syncgroup ist, dann wird er aus dieser entfernt und in die aktuelle aufgenommen.
So kannst du an einer Stelle für alle Player ein oder mehrere Syncgroups erzeugen
Ich habe versucht das in der widget Hilfe zu beschreiben. widget auswählen und den folgenden Knopf oben links in vis editor drücken
-
@OliverIO
Super, Merci für die Erklärung. Die Visu habe ich mir ehrlich gesagt noch gar nicht angeschaut. Aber das kann ich sicherlich dann auch noch gut brauchenIch verwende den ioBroker als KNX-Gateway um an KNX-Lichtschaltern auch mein Max2Play bzw. meine Squeezebox-Boxen steuern zu können. Ich möchte auch über einen KNX-Taster den "Party-Modus" im ganzen Haus starten können. Also alle Boxen inkl. cooler Sound auf allen vorhandenen Boxen einschalten
Die Logik dafür verpacke ich in ein Script im ioBroker, welches die Objekte von squeezeboxrpc korrekt setzt.
Mit deinem Tipp war es mir möglich die Logik nachzuverfolgen. Soweit ich verstanden habe muss man in den jeweiligen Playern die Mac-Adresse für SyncMaster und SyncSlaves setzen und den "mode" auf play setzen.
Habe ich das richtig verstanden? -
@baerengraben
ah verstehe.
In den Playerattributen gibt es die beiden Felder Syncmaster und Syncslave.
Da stehen die aktuellen Zustände drin.
Diese Felder habe ich aber nicht beschreibbar gemacht, weil das kein täglicher Anwendungsfall ist und für die meisten zu kompliziert ist das richtig zu bestückenFür deinen Fall kannst du das Befehlsattribut cmdGeneral auch bei den Playern verwenden.
Was du da reinschreibst kannst du im folgenden Dokument nachlesen
https://github.com/elParaguayo/LMS-CLI-Documentation/blob/master/LMS-CLI.md
Suche dann darin nach folgendem Text<playerid> sync <playerindex|playerid|-|?>
In cmdGeneral musst du dann alles nach der ersten Playerid reinschreiben.
Also bspw, wenn der andere Player den du in die SyncGroup aufnehmen möchtest 04:20:00:12:23:21 als Mac hatsync 04:20:00:12:23:21