Sonos: Neues Feature "Bookmarks"

Begonnen von Reinerlein, 14 Juni 2015, 16:17:53

Vorheriges Thema - Nächstes Thema

Reinerlein

Hallo zusammen,

ich habe mal die ganzen offenen Entwicklungsstränge geschlossen, und einen Abschluß ins Subversion eingecheckt.

Wichtigste Erneuerung: Automatische Bookmarks

Nach Anregung von Andre (justme1968) habe ich automatische Bookmarks eingebaut. Diese arbeiten nach Konfiguration automatisch und im Kontext des SubProzesses, und damit sehr nah an den Ereignissen der Player.
Im Wiki habe ich ein eigenes Kapitel für die Einrichtung des Features beschrieben: http://www.fhemwiki.de/wiki/SONOS#Zusammenfassung_der_Bookmarkeinrichtung

Des Weiteren habe ich ein paar neue Setter eingebaut, die sich auf Surround und Sub beziehen, sowie das AudioDelay der PlayBar einstellen können.

Folgendes ist jetzt eingebaut:

  • Zwei weitere Ausnahmen für das Neustarten des SubThreads eingefügt.
  • ControlPoint.pm: Beim Renew von Subscription wurde aus dem "carp" ein "croak" gemacht. Dadurch greifen die darüberliegenden Auffangmassnahmen.
  • Neues Feature: Bookmarks für Playlisten und Titel
  • Changelog in der Quelltextdatei enthält nur noch für die letzten vier Veröffentlichungen. Die komplette Liste ist nur noch im Wiki vorhanden. Dadurch wird die Dateigröße geringer.
  • SetEQ eingebaut, um Subwoofer und Surroundeinstellungen vornehmen zu können: "SurroundEnable", "SurroundLevel", "SubEnable", "SubGain" und "AudioDelay"
Wie immer ab heute im SVN oder ab Morgen per Update...
Viel Spaß damit :)

Grüße
Reinerlein

justme1968

hallo reiner,

ich bin eben erst dazu gekommen die bookmarks zu probieren.

die erste zeit bin ich darüber gestolpert das die attribute scheinbar nicht an den child prozess durchgereicht werden. erst nach einem disable 1 / disable 0 hat es dann funktioniert.

für einzelne lange files wie z.b. podcasts funktioniert alles sehr gut. die reaktionszeit ist absolut klasse. das geht so schnell das man nicht mal das springen merkt. klasse.

probleme habe ich aber noch mit hörbüchern die aus einzelnen traks/titel bestehen.

in meiner variante wurde der hash in diesem fall auf den album titel und nicht den track titel berechnet. der sprung punkt war dann titel nummer und position. dadurch wurden alle titel eines albums logisch zusammengefasst und der bookmark bezog sich auf das ganze album. d.h. ich konnte ein album irgendwo mitten drin abbrechen und beim nächsten start von anfang an (oder jeder anderen stelle vor dem bookmark) wurde wieder zum passenden titel an die passende stelle gesprungen.

das scheint mir bei deiner version (noch :) ) nicht zu funktionieren. alle bookmarks sind immer nur titelbasiert.

bekommen wir das noch besser hin ?

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Reinerlein

Hi Andre,

dafür gibt es eigentlich die beiden Bereiche für Playlist-Bookmarks und Titel-Bookmarks.

Bei den Playlist-Bookmarks geht es um das Speichern des aktuellen Titels der aktuellen Abspielliste und bei den Titel-Bookmarks um die Position innerhalb der Titels.
Eigentlich sollte deine Anforderung durch eine Kombination beider möglich sein (zumindest wenn dein Hörbuch die gesamte aktuelle Abspielliste ausmacht).

Am Besten die RegEx-Angaben für Player und/oder TrackURI so genau wie möglich auf den benötigten Anwendungszweck fokussieren. Sonst gibt es u.U. ungeahnte Effekte bei der Wiedergabe von "normalen" Titeln :)

Oder meinst du eine andere Art des Features?

Grüße
Reiner

P.S.: Das mit dem (Nicht-)Durchreichen zum Subprozess zur Laufzeit ist eher Absicht. Ich hatte mir gedacht, dass man ja erst alle Einstellungen komplett fertig machen möchte (gerade die zwei Bereiche möchte man ja vielleicht zusammengehörig konfigurieren), und dann die Sache erst scharfstellen möchte.
Aber ich werde dazu einen entsprechenden Kommentar im Wiki ablegen...

justme1968

das hörbuch ist nicht die gesamte liste.

das problem ist vielleicht das ich eigentlich überhaupt keine listen verwende. es nervt mich sogar das die aktuelle liste immer allen möglichen kram enthält den ich nicht gespielt habe :)

es kann durchaus sein das in der aktuellen liste ein paar alben musik sind, und ein paar hörbücher. diese sollten jeweils ein eigenes bookmark setzen. wenn ich dann nich ein hörbuch über jetzt spielen auswähle soll es auch ein eigenes bookmark bekommen.

ich habe gerade beide attribute auf all stehen und bekomme nur titelweise bookmarks. wenn ich mehret tracks eines solchen hörbuchs kurz anspiele hat jeder titel ein eigenes. ich kann beliebig hin und her springen und jeder titel springt zur eigenen gemerkten position. . das funktioniert perfekt. aber in diesem fall möchte ich ja ein bookmark für das ganze album haben. egal auf welche art ich es starte. wenn ich dann innerhalb des albums springe soll kein bookmark wieder her gestellt werden. erst wenn ich von etwas das nicht dieses album ist wieder zurück wechsle soll die letzte position wieder angesprungen werden.

ich glaube der knackpunkt ist das die abspielliste in meinem fall egal sein muss sondern der album titel das gruppierungs kriterium ist.

gruss
  andre

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Reinerlein

Hi Andre,

OK, dann habe ich das jetzt verstanden. Ich mache mir mal Gedanken dazu...

In der jetzigen Variante funktioniert es nur auf der kompletten Abspielliste, also indem du ein Hörbuch durch "Liste ersetzen" zum Abspielen hinzufügst, dann sollte es zumindest mit dem anspringen klappen.

Grüße
Reiner

rapster

Hi Reiner,

wollte heute Abend eigtl. noch bischen das Bookmark-feature testen, allerdings läuft da irgendwas mit der PlayerDeviceRegEx schief.

z.B.
fhem-definition: Sonos_Schlafzimmer
sonos-app-definition: Schlafzimmer

bei bookmarkPlaylistDefinition: "Schlafzimmer:Sonos_Schlafzimmer", "Schlafzimmer:s_Schlafzimmer", "Schlafzimmer:s.Schlafzimmer", "Schlafzimmer:.*Sonos.Schlafzimmer.*"
wird nicht gespeichert und ich erhalte im Log nur:
2015.06.29 23:54:03.351 4: SONOS1: Calling SONOS_SaveBookmarkValues("undef", "undef") ~ SaveDir: "/opt/fhem/SonosBookmarks"
2015.06.29 23:54:03.350 4: SONOS1: SONOS_Client_Data_Retreive(SONOS, attr, bookmarkSaveDir, .) -> /opt/fhem/SonosBookmarks



bei bookmarkPlaylistDefinition: "Schlafzimmer:..Schlafzimmer$"
funktioniert das speichern, nur was genau hat er denn da jetzt gefunden?
2015.06.29 23:57:28.053 3: SONOS1: Successfully saved Queue-Bookmarks of group "Schlafzimmer" to file "/opt/fhem/SonosBookmarks/SONOS_BookmarksPlaylists_Schlafzimmer.save"!
2015.06.29 23:57:28.053 4: SONOS1: Calling SONOS_SaveBookmarkValues("undef", "undef") ~ SaveDir: "/opt/fhem/SonosBookmarks"
2015.06.29 23:57:28.053 4: SONOS1: SONOS_Client_Data_Retreive(SONOS, attr, bookmarkSaveDir, .) -> /opt/fhem/SonosBookmarks


Laut Wiki sollte die RegExp ja auf die fhem-def gehen, kannst du das mal prüfen, oder mach ich hier was falsch?

Danke und Gruß
Claudiu

Reinerlein

Hi Claudiu,

die Meldungen sagen doch nur, dass es erfolgreich war.,  bzw. dass der Speichern-Vorgang aufgerufen wurde. Landen die Dateien denn nicht im Filesystem?
Wenn nicht, dann mal die Schreibrechte des Ordners überprüfen...
Im Normalfall ist Verbose 4 etwas zu hoch :) 3 ist deutlich besser...

Wenn du allein dein Schlafzimmer beachten möchtest, kannst du auch direkt den Namen angeben:

attr Sonos bookmarkPlaylistDefinition Schlafzimmer:Sonos_Schlafzimmer


Zum Testen einfach die Playlist des Schlafzimmers durch eine andere ersetzen, und wieder zurück-ersetzen. Dann sollte der Vorherige Titel wieder aktiviert worden sein...

Grüße
Reiner

rapster

Hi Reiner,

nein, wie geschrieben, bei bookmarkPlaylistDefinition: "Schlafzimmer:..Schlafzimmer$" wird eine Datei geschrieben,

bei den ganzen anderen Definitions wird keine Datei geschrieben.

Verbose 4 habe ich nur temporär angehabt um dem Fehler auf die Spur zu kommen, leider wurde hier trotzdem nichts hilfreiches ausgegeben  :-\
Im Normalbetrieb läuft Sonos auf ruhigen verbose 1 :)

bei deiner Vorgeschlagenen definition taucht ja genau das Problem auf, dass das Device "Sonos_Schlafzimmer" nicht gefunden wird, respektive keine Datei geschrieben wird.

Gruß  Claudiu

Reinerlein

Hi Claudiu,

OK, dann hatte ich das falsch gelesen, sorry :-[

Im Log wird beim Start des SubProzesses die erkannte Definition ausgegeben. Was wird dort denn ausgegeben?
Komisch das ganze... natürlich geht das im Normalfall alles :)
Es sollte auch immer eine Datei für jede Gruppe geschrieben werden. Es kann halt sein, dass die Datei dann nur einen leeren Hash enthält, aber sie muss da sein...

Aber du hast auch nach der Konfigurationsänderung einen Neustart des SubProzesses veranlasst? Das ist wichtig, da die Konfiguration sinnvoll nur beim Start des Prozesses geladen werden kann...

Grüße
Reiner

rapster

Hi Reiner,
sooo, hab nun nochmal bisi genauer hingesehen was denn da so bei verbose4 geloggt wird...

Im Log taucht öfter "SONOS_Schlafzimmer" auf.

Wenn ich als RegEx "Schlafzimmer:SONOS_Schlafzimmer" angebe funktioniert es nun auch.

Das verwirrende ist allerdings dass in Fhem das Device als "Sonos_Schlafzimmer" angelegt ist.

Danke soweit schonmal - nun kann ich mal weitertesten mit den Bookmarks  ;)

Im Anhang nochmal ein Log-mitschnitt, mit der alten RegEx wo es noch nicht funktionierte beim Start.

Gruß Claudiu

Reinerlein

Hi Claudiu,

hmm... das mit der Groß-/Kleinschreibung ist komisch. Wird das vielleicht auf der Oberfläche nur anders angezeigt?
Ist das vielleicht einfach ein Alias?

Grüße
Reiner

rapster

#11
Hab dir mal ein list des players angehangen, sieht für mich normal aus, kein alias und keine fhemweb täuschung  ;D

Gruß Claudiu

EDIT:

Evtl. hilfreich, mein SONOS-Device ist groß geschrieben, also "SONOS" ;-)

Reinerlein

Hi Claudiu,

da muss ich dir schon zustimmen :)
Aber wo kommt das her? Dem SubProzess werden zu Beginn alle Namen aller bekannten Player übertragen.
Das kannst du mal mit verbose 5 prüfen, da wird ausgegeben, was da so übertragen wird...

Wenn der Name falsch wäre, könnte er eigentlich auch keine Readings aktualisieren... das ist ja echt mysteriös...

Grüße
Reiner

rapster

Hier mal die verbose5 Flut, zum Glück gibts Morgen neue Logfiles  ;D

Habe zwar einige male "Sonos_Schlafzimmer" drin gefunden, aber guck mal ob du was siehst  ;)

Gruß Claudiu

Reinerlein

Hi Claudiu,

danke für den Log. Ich habe da tatsächlich den Fehler drin gefunden :)
Bei bestehenden Devices wurde trotzdem der generierte Name im SubProzess verwendet. Das merkt man sonst nicht, aber bei den Bookmarks stimmt dann halt der zu vergleichende Devicename nicht (weil alles im SubProzess abgearbeitet wird).

Da ich heute nicht zum einchecken gekommen bin, versuche ich das Morgen...

Grüße
Reiner