FHEM Forum

FHEM => Frontends => FHEMapp => Thema gestartet von: australien am 03 Oktober 2022, 11:42:52

Titel: Connected und menu
Beitrag von: australien am 03 Oktober 2022, 11:42:52
Hallo zusammen,

ich hab bei meinen Sonos eine Mqtt Version. In dem device SonosBridge gibt es 2 Readings, einmal Favorites und einmal favlist. Diese zwei sollen im menue angezeigt werden, nur ich schaffe es irgendwie nicht.

Das addOption wird im device Esszimmer aufgerufen.

Danke für eure Hilfe

oder wie bekommt Ihr die Favoriten in ein Menü?

addOptions

appOptions

{"template": "sonosmqtt", "connected": {"favquelle":"SonosBridge"}, "name": "Sonos Esszimmer", "dashboard": true, "group": "Sonos", "sortby": "2"}


template:
{
  "name": "sonosplay_mqtt",
  "author": "robert",
  "date": "2022-03-24",
  "expand": true,
  "status": {
    "bar": ["transportState:PLAYING:100:success","transportState:TRANSITIONING:100:warning","transportState:(STOPPED|PAUSED_PLAYBACK):100:error"],
"error": []
  },
  "main": [
    {
      "leftBtn": ["currentTrack_ProtocolInfo:sonos.com-http:mdi-skip-previous:disabled","currentTrack_ProtocolInfo::mdi-skip-previous"],
      "leftClick": ["transportState::previous"],
      "midBtn": ["transportState:PLAYING:mdi-pause", "transportState::mdi-play"],
      "midClick": ["transportState::toggle"],
      "rightBtn": ["currentTrack_ProtocolInfo:sonos.com-http:mdi-skip-next:disabled","currentTrack_ProtocolInfo::mdi-skip-next"],
      "rightClick": ["state::next"]
    },
    {
      "leftBtn": ["mute:false:mdi-volume-high", "mute:true:mdi-volume-mute"],
      "leftClick": ["mute:false:mute true", "mute:true:mute false"],
      "slider": ["volume::volume %v:%n:0:70"],

    "rightBtn": "mdi-menu",
        "rightMenu": ["Connected.favquelle.Readings.favlist.Value.%s:Connected.favquelle.Readings.Favorites.Value.%s"
    },
{
      "leftBtn": ["currentTrack_ProtocolInfo:sonos.com-http:mdi-skip-previous:disabled","currentTrack_ProtocolInfo::mdi-skip-previous"],
      "leftClick": ["transportState::previous"],
      "rightBtn": ["currentTrack_ProtocolInfo:sonos.com-http:mdi-skip-next:disabled","currentTrack_ProtocolInfo::mdi-skip-next"],
      "rightClick": ["state::next"]
    },
{
      "text": ["nextTrack_Artist::%s"],
      "text2": ["nextTrack_Title::%s"]
    }
  ],
  "info": {
    "left1": ["mute:true::mdi-volume-off", "transportState:PLAYING::mdi-play", "transportState:::mdi-pause"],
    "left2": ["currentTrack_Artist:$:%s"],
    "right2": ["currentTrack_Title::%s"]
  }
}


Readings  Favorites in SonosBridge
{"Result":[{"AlbumArtUri":"http://cdn-profiles.tunein.com/s172072/images/logoq.png","Title":"2Day Buddha (Chill)","UpnpClass":"object.itemobject.item.sonos-favorite","ItemId":"FV:2/9","ParentId":"FV:2","TrackUri":"x-sonosapi-stream:s172072?sid=254&flags=8224&sn=0","ProtocolInfo":"x-sonosapi-stream:*:*:*"},{"AlbumArtUri":"http://cdn-profiles.tunein.com/s202791/images/logoq.png?t=155748","Title":"Boom","UpnpClass":"object.itemobject.item.sonos-favorite","ItemId":"FV:2/4","ParentId":"FV:2","TrackUri":"x-sonosapi-stream:s202791?sid=254&flags=8224&sn=0","ProtocolInfo":"x-sonosapi-stream:*:*:*"},{"AlbumArtUri":"https://static.radio.de/images/broadcasts/22/0c/2703/1/c300.png","Title":"FM4","UpnpClass":"object.itemobject.item.sonos-favorite","ItemId":"FV:2/22","ParentId":"FV:2","TrackUri":"x-sonosapi-stream:STATION:2703?sid=264&flags=8232&sn=7","ProtocolInfo":"x-sonosapi-stream:*:*:*"},{"AlbumArtUri":"https://static.radio.de/images/broadcasts/37/bf/4524/1/c175.png","Title":"Gold FM","UpnpClass":"object.itemobject.item.sonos-favorite","ItemId":"FV:2/5","ParentId":"FV:2","TrackUri":"x-sonosapi-stream:STATION:4524?sid=264&flags=8224&sn=3","ProtocolInfo":"x-sonosapi-stream:*:*:*"},{"AlbumArtUri":"https://static.radio.de/images/broadcasts/6e/9c/122244/1/c175.png","Title":"Heart 80s","UpnpClass":"object.itemobject.item.sonos-favorite","ItemId":"FV:2/8","ParentId":"FV:2","TrackUri":"x-sonosapi-stream:STATION:122244?sid=264&flags=8224&sn=3","ProtocolInfo":"x-sonosapi-stream:*:*:*"},{"AlbumArtUri":"https://static.radio.de/images/broadcasts/47/5f/4511/c175.png","Title":"Hitradio Ö3","UpnpClass":"object.itemobject.item.sonos-favorite","ItemId":"FV:2/21","ParentId":"FV:2","TrackUri":"x-sonosapi-stream:STATION:4511?sid=264&flags=8224&sn=7","ProtocolInfo":"x-sonosapi-stream:*:*:*"},{"AlbumArtUri":"https://static.radio.de/images/broadcasts/c5/c5/9012/1/c300.png","Title":"ooe Radio Oberösterreich","UpnpClass":"object.itemobject.item.sonos-favorite","ItemId":"FV:2/11","ParentId":"FV:2","TrackUri":"x-sonosapi-stream:STATION:9012?sid=264&flags=8224&sn=3","ProtocolInfo":"x-sonosapi-stream:*:*:*"},{"AlbumArtUri":"https://static.radio.de/images/broadcasts/a3/fe/9807/1/c300.png","Title":"ORF Radio Burgenland","UpnpClass":"object.itemobject.item.sonos-favorite","ItemId":"FV:2/12","ParentId":"FV:2","TrackUri":"x-sonosapi-stream:STATION:9807?sid=264&flags=8224&sn=3","ProtocolInfo":"x-sonosapi-stream:*:*:*"},{"AlbumArtUri":"http://cdn-profiles.tunein.com/s265024/images/logoq.jpg?t=158163","Title":"smooth fm Brisbane","UpnpClass":"object.itemobject.item.sonos-favorite","ItemId":"FV:2/6","ParentId":"FV:2","TrackUri":"x-sonosapi-stream:s265024?sid=254&flags=8224&sn=0","ProtocolInfo":"x-sonosapi-stream:*:*:*"},{"AlbumArtUri":"http://cdn-profiles.tunein.com/s8786/images/logoq.jpg?t=153330","Title":"Sydneys-2CH","UpnpClass":"object.itemobject.item.sonos-favorite","ItemId":"FV:2/7","ParentId":"FV:2","TrackUri":"x-sonosapi-stream:s8786?sid=254&flags=8224&sn=0","ProtocolInfo":"x-sonosapi-stream:*:*:*"},{"AlbumArtUri":"http://cdn-radiotime-logos.tunein.com/s294407q.png","Title":"Triple M Greatest Hits (Classic Rock)","UpnpClass":"object.itemobject.item.sonos-favorite","ItemId":"FV:2/10","ParentId":"FV:2","TrackUri":"x-sonosapi-stream:s294407?sid=254&flags=8224&sn=0","ProtocolInfo":"x-sonosapi-stream:*:*:*"}],"NumberReturned":11,"TotalMatches":11,"UpdateID":2}

Readings favlist in SonosBridge
Day.Buddha.(Chill),Boom,FM4,Gold.FM,Heart.80s,Hitradio.Ö3,ORF.Radio.Burgenland,Sydneys-2CH,Triple.M.Greatest.Hits.(Classic.Rock),ooe.Radio.Oberösterreich,smooth.fm.Brisbane
Titel: Antw:Connected und menu
Beitrag von: australien am 03 November 2022, 11:26:31
Ist es eigentlich möglich ein Menü aus einem array zu erstellen?
Das ist glaub ich jetzt, das eigentliche Problem.
Titel: Antw:Connected und menu
Beitrag von: jemu75 am 03 November 2022, 12:13:19
Das Menü ist recht einfach aufgebaut und kann nur mit fest definierten "Wertepaaren", bestehend aus einem Text und einem Kommando, befüllt werden. Siehe dazu auch die Beschreibung unter https://github.com/jemu75/fhemApp#eigene-templates-erstellen (https://github.com/jemu75/fhemApp#eigene-templates-erstellen)

Grüße
Jens :)
Titel: Antw:Connected und menu
Beitrag von: jemu75 am 03 November 2022, 13:15:30
Beinhalten die beiden Readings die selben Favoriten?
Titel: Antw:Connected und menu
Beitrag von: australien am 03 November 2022, 15:15:20
Die Readings kommen aus der SonosBridge.
Das eine favlist beinhaltet den Text und die Favorites den Befehl (html). Die Reihenfolge ist natürlich die gleiche.

Reading favlist

2Day.Buddha.(Chill),Boom,FM4,Gold.FM,Heart.80s,Hitradio.Ö3,ORF.Radio.Burgenland,Sydneys-2CH,Triple.M.Greatest.Hits.(Classic.Rock),ooe.Radio.Oberösterreich,smooth.fm.Brisbane


Readings Favorites
{"Result":[{"AlbumArtUri":"http://cdn-profiles.tunein.com/s172072/images/logoq.png","Title":"2Day Buddha (Chill)","UpnpClass":"object.itemobject.item.sonos-favorite","ItemId":"FV:2/9","ParentId":"FV:2","TrackUri":"x-sonosapi-stream:s172072?sid=254&flags=8224&sn=0","ProtocolInfo":"x-sonosapi-stream:*:*:*"},{"AlbumArtUri":"http://cdn-profiles.tunein.com/s202791/images/logoq.png?t=155748","Title":"Boom","UpnpClass":"object.itemobject.item.sonos-favorite","ItemId":"FV:2/4","ParentId":"FV:2","TrackUri":"x-sonosapi-stream:s202791?sid=254&flags=8224&sn=0","ProtocolInfo":"x-sonosapi-stream:*:*:*"},{"AlbumArtUri":"https://static.radio.de/images/broadcasts/22/0c/2703/1/c300.png","Title":"FM4","UpnpClass":"object.itemobject.item.sonos-favorite","ItemId":"FV:2/22","ParentId":"FV:2","TrackUri":"x-sonosapi-stream:STATION:2703?sid=264&flags=8232&sn=7","ProtocolInfo":"x-sonosapi-stream:*:*:*"},{"AlbumArtUri":"https://static.radio.de/images/broadcasts/37/bf/4524/1/c175.png","Title":"Gold FM","UpnpClass":"object.itemobject.item.sonos-favorite","ItemId":"FV:2/5","ParentId":"FV:2","TrackUri":"x-sonosapi-stream:STATION:4524?sid=264&flags=8224&sn=3","ProtocolInfo":"x-sonosapi-stream:*:*:*"},{"AlbumArtUri":"https://static.radio.de/images/broadcasts/6e/9c/122244/1/c175.png","Title":"Heart 80s","UpnpClass":"object.itemobject.item.sonos-favorite","ItemId":"FV:2/8","ParentId":"FV:2","TrackUri":"x-sonosapi-stream:STATION:122244?sid=264&flags=8224&sn=3","ProtocolInfo":"x-sonosapi-stream:*:*:*"},{"AlbumArtUri":"https://static.radio.de/images/broadcasts/47/5f/4511/c175.png","Title":"Hitradio Ö3","UpnpClass":"object.itemobject.item.sonos-favorite","ItemId":"FV:2/21","ParentId":"FV:2","TrackUri":"x-sonosapi-stream:STATION:4511?sid=264&flags=8224&sn=7","ProtocolInfo":"x-sonosapi-stream:*:*:*"},{"AlbumArtUri":"https://static.radio.de/images/broadcasts/c5/c5/9012/1/c300.png","Title":"ooe Radio Oberösterreich","UpnpClass":"object.itemobject.item.sonos-favorite","ItemId":"FV:2/11","ParentId":"FV:2","TrackUri":"x-sonosapi-stream:STATION:9012?sid=264&flags=8224&sn=3","ProtocolInfo":"x-sonosapi-stream:*:*:*"},{"AlbumArtUri":"https://static.radio.de/images/broadcasts/a3/fe/9807/1/c300.png","Title":"ORF Radio Burgenland","UpnpClass":"object.itemobject.item.sonos-favorite","ItemId":"FV:2/12","ParentId":"FV:2","TrackUri":"x-sonosapi-stream:STATION:9807?sid=264&flags=8224&sn=3","ProtocolInfo":"x-sonosapi-stream:*:*:*"},{"AlbumArtUri":"http://cdn-profiles.tunein.com/s265024/images/logoq.jpg?t=158163","Title":"smooth fm Brisbane","UpnpClass":"object.itemobject.item.sonos-favorite","ItemId":"FV:2/6","ParentId":"FV:2","TrackUri":"x-sonosapi-stream:s265024?sid=254&flags=8224&sn=0","ProtocolInfo":"x-sonosapi-stream:*:*:*"},{"AlbumArtUri":"http://cdn-profiles.tunein.com/s8786/images/logoq.jpg?t=153330","Title":"Sydneys-2CH","UpnpClass":"object.itemobject.item.sonos-favorite","ItemId":"FV:2/7","ParentId":"FV:2","TrackUri":"x-sonosapi-stream:s8786?sid=254&flags=8224&sn=0","ProtocolInfo":"x-sonosapi-stream:*:*:*"},{"AlbumArtUri":"http://cdn-radiotime-logos.tunein.com/s294407q.png","Title":"Triple M Greatest Hits (Classic Rock)","UpnpClass":"object.itemobject.item.sonos-favorite","ItemId":"FV:2/10","ParentId":"FV:2","TrackUri":"x-sonosapi-stream:s294407?sid=254&flags=8224&sn=0","ProtocolInfo":"x-sonosapi-stream:*:*:*"}],"NumberReturned":11,"TotalMatches":11,"UpdateID":1}
Titel: Antw:Connected und menu
Beitrag von: jemu75 am 04 November 2022, 06:54:01
Mir erschließt sich noch nicht, wozu du das Reading favlist verwenden möchtest. Der Name befindet sich auch in dem Reading Favorites, wenn ich das richtig sehe. (steht in der JSON Definition unter "Title")
Gibt es da einen Unterschied zwischen den beiden Readings?

VG
Jens
Titel: Antw:Connected und menu
Beitrag von: australien am 04 November 2022, 07:51:18
Stimmt, hatte ich übersehen. Sorry.

Aber du verstehst was ich vor habe? Oder?
Ist jetzt nicht so, dass sich die Favoriten permanent ändern, aber so wäre es halt für andere auch gut zu verwenden. Bzw vielleicht/sicher gibt es noch andere dynamischen Menüpunkte.

Zu meinem Problem zurück.
Sollte also mit regex zu machen sein, wenn ich das nur könnte 🥲
Titel: Antw:Connected und menu
Beitrag von: jemu75 am 04 November 2022, 10:10:03
Wie schon geschrieben, lässt sich die Definition für menu bisher nicht dynamisch füllen. Und regex wird dir hier auch nicht weiterhelfen. Ich könnte mir generell nochmal Gedanken machen, wie sich menu dynamisch befüllen lassen könnte. Auf jeden Fall benötige ich für jeden Menüeintrag eine Bezeichnung (Text) und ein zugehoriges Kommando. Beides müsste optimaler Weise aus jedem FHEM Device in gleicher Form auslesbar sein, damit ich nicht für jede Art von Device (im konkreten Fall sonosbridge) eine individuelle Implementierung bauen müsste. Wie das FHEM-seitig am besten zu realisieren wäre, habe ich bisher noch nicht rausgefunden und wäre für Ideen offen.  :)

Jens
Titel: Antw:Connected und menu
Beitrag von: mark24 am 04 November 2022, 23:50:12
ich stehe vor der gleichen Herausforderung mit den Menu Einträgen.
Für mich klingt der Versuch das mit einer wie auch immer geartete Logik in FHEMapp zu lösen, nicht sinnvoll da es imho unnötig Komplexität rein bringt.
Einfacher wäre es doch die Logik in FHEM zu belassen und dort die fertige Syntax in ein Reading zu speichern.
FHEMapp zieht dann "nur" den Wert des readings und baut daraus das Menu (sollte das bereits funktionieren, brauch ich mal bitte ein Beispiel zum abschreiben).


Das Ergebnis der FHEM Logik mal simuliert:

setreading Sonos_Wohnzimmer appMenu ["George FM:StartFavourite George%20FM", "Jump FM:StartFavourite Jump%20FM"]


im FHEMapp template:

"rightMenu": ["appMenu %s"]


Sofern der Ansatz überhaupt realisierbar ist, wäre der flexibel einsetzbar.

grüße
Marcus
Titel: Antw:Connected und menu
Beitrag von: binford6000 am 05 November 2022, 10:56:05
Zitat von: mark24 am 04 November 2022, 23:50:12
ich stehe vor der gleichen Herausforderung mit den Menu Einträgen.
Für mich klingt der Versuch das mit einer wie auch immer geartete Logik in FHEMapp zu lösen, nicht sinnvoll da es imho unnötig Komplexität rein bringt.
Einfacher wäre es doch die Logik in FHEM zu belassen und dort die fertige Syntax in ein Reading zu speichern.
FHEMapp zieht dann "nur" den Wert des readings und baut daraus das Menu (sollte das bereits funktionieren, brauch ich mal bitte ein Beispiel zum abschreiben).


Das Ergebnis der FHEM Logik mal simuliert:

setreading Sonos_Wohnzimmer appMenu ["George FM:StartFavourite George%20FM", "Jump FM:StartFavourite Jump%20FM"]


im FHEMapp template:

"rightMenu": ["appMenu %s"]


Sofern der Ansatz überhaupt realisierbar ist, wäre der flexibel einsetzbar.

grüße
Marcus

Moin,
ohne Eingriff in die FHEMapp durch Jens wird das m.E. nichts werden...
Ich hatte mir mal was gebaut um dark/light-Theme, Debug-Modus und Update zu steuern. Dabei ändere ich die config.json per sed:
fhemapp.d:.* {
  if ($EVENT =~ /light/) {
    fhem("\"sed -i 's/\"dark\": true,/\"dark\": false,/g' ./www/fhemapp/cfg/config.json\"")
  }
  elsif ($EVENT =~ /dark/) {
    fhem("\"sed -i 's/\"dark\": false,/\"dark\": true,/g' ./www/fhemapp/cfg/config.json\"")
  }
  elsif ($EVENT =~ /on/) {
    fhem("\"sed -i 's/\"debugMode\": false,/\"debugMode\": true,/g' ./www/fhemapp/cfg/config.json\"")
  }
  elsif ($EVENT =~ /off/) {
    fhem("\"sed -i 's/\"debugMode\": true,/\"debugMode\": false,/g' ./www/fhemapp/cfg/config.json\"")
  }
  elsif ($EVENT =~ /debug_level/) {
    my $level = (split ' ', $EVENT)[-1];
    fhem("\"sed -i 's/\"debugLevel\": .*/\"debugLevel\": $level/g' ./www/fhemapp/cfg/config.json\"")
  }
  elsif ($EVENT =~ /update/) {
    fhem("\"/opt/fhem/scripts/update_fhemapp.sh\"")
  }
}


Sowas könnte man auch auf ein SONOS-Template anwenden um die Favourites zu ändern.
Nur mal so als Denkanstoß...  ;)

VG sebastian
Titel: Antw:Connected und menu
Beitrag von: jemu75 am 05 November 2022, 13:40:40
Vielen Dank für eure Rückmeldungen. Ich wäre grundsätzlich bereit, in FHEMapp was passendes zu implementieren. Optimaler Weise aber eben so, dass ich nicht für jedes FHEM Device eine spezielle Implementierung bauen muss. Der Ansatz mit dem setreading sieht auf jeden Fall schonmal gut aus. Sowas könnte ich in FHEMapp auslesen und das menu damit befüllen.
Gut wäre natürlich, wenn sich das setreading automatisch aus den Sonos Favoriten generieren würde. Ansonsten läuft es ja letztlich wieder auf eine manuelle Definition der Menüeinträge raus. Nur, dass diese dann im setreading anstatt im Template hinterlegt werden.
Titel: Antw:Connected und menu
Beitrag von: mark24 am 05 November 2022, 22:46:19
Quelle: reading FavouritesListAlias der Sonos

FavouritesListAlias: 1LIVE diggi - Multimedia - 1LIVE|BBC Radio 1 98.8 (Top 40/Pop)|BBC Radio 1Xtra (Hip Hop)|DASDING|Fritz vom rbb|George FM


Logik:

attr sonos userReadings appMenu:FavouritesListAlias.* {\
my $result;; my $command=':StartFavourite ';;\
foreach my $item (split(/\|/, ReadingsVal($name, "FavouritesListAlias" ,""))) { \
   my $item_html = $item;;\
   $item_html =~ s/\s/%20/g;;\
   if($result ne "") {$result .= ', '}\
   $result .= '"' . $item . $command . $item_html . '"';;\
};;\
{return $result};;\
}


Ergebins: neues reading appMenu

appMenu: "1LIVE diggi - Multimedia - 1LIVE:StartFavourite 1LIVE%20diggi%20-%20Multimedia%20-%201LIVE", "BBC Radio 1 98.8 (Top 40/Pop):StartFavourite BBC%20Radio%201%2098.8%20(Top%2040/Pop)", "BBC Radio 1Xtra (Hip Hop):StartFavourite BBC%20Radio%201Xtra%20(Hip%20Hop)", "DASDING:StartFavourite DASDING", "Fritz vom rbb:StartFavourite Fritz%20vom%20rbb", "George FM:StartFavourite George%20FM"


Wenn es eine Möglichkeit gibt, das FHEMapp im Command Teil nicht nach dem ersten Space aufhört, könnte der ganze $item_html und das replace entfallen.
Titel: Antw:Connected und menu
Beitrag von: jemu75 am 06 November 2022, 11:13:08
Das ist ein guter Ansatz!  :)
Wenn das userReading ein Array mit folgendem Inhalt liefert, würde ich das als Grundlage verwenden -> ["text1:command1", "text2:command2", "text3:command3", ...]
Die Leerzeichen in den Kommandos fange ich intern in FHEMapp bereits ab. Das könnte also in der Definition des userReading entfallen.

Ich mache mir mal Gedanken, wie ich das in die Definition menu implementiere und würde dann ein neues Release zur Verfügung stellen.

Jens.  :)
Titel: Antw:Connected und menu
Beitrag von: mark24 am 06 November 2022, 21:42:40
ich sehe dass FHEMapp space in %20 umwandelt


Request: http://fhem:80/fhem?fwcsrf=csrf_1234&cmd=set%20Sonos_Kueche%20StartFavourite%20DASDING


aber das scheint für den Fall eines Wertes mit Leerzeichen nicht zu reichen.


Request: http://fhem:80/fhem?fwcsrf=csrf_1234&cmd=set%20Sonos_Kueche%20StartFavourite%20George%20FM

Sonos_Kueche: LastActionResult: StartFavourite: Favourite "George" not found. Choose one of: ...,"George FM",...


mit %20 im Kommando sieht es so aus

Request: http://fhem:80/fhem?fwcsrf=csrf_1234&cmd=set%20Sonos_Kueche%20StartFavourite%20George%2520FM

und startet wie gewünscht.


noch das Update für die [ ]

attr Sonos_Kueche userReadings appMenu:FavouritesListAlias.* {\
my $result;; my $command=':StartFavourite ';;\
foreach my $item (split(/\|/, ReadingsVal($name, "FavouritesListAlias" ,""))) { \
   if($result ne "") {$result .= ', '}\
   $result .= '"' . $item . $command . $item . '"';;\
};;\
$result = '[' . $result . ']';;\
{return $result};;\
}



appMenu: ["1LIVE diggi - Multimedia - 1LIVE:StartFavourite 1LIVE diggi - Multimedia - 1LIVE", "BBC Radio 1 98.8 (Top 40/Pop):StartFavourite BBC Radio 1 98.8 (Top 40/Pop)", "BBC Radio 1Xtra (Hip Hop):StartFavourite BBC Radio 1Xtra (Hip Hop)", "DASDING:StartFavourite DASDING"]
Titel: Antw:Connected und menu
Beitrag von: jemu75 am 07 November 2022, 14:51:52
Ich wollte das eben testen und habe festgestellt, dass es bei meinen Sonosplayern kein Reading mit dem Name FavouritesListAlias gibt.  ???
Titel: Antw:Connected und menu
Beitrag von: mark24 am 07 November 2022, 22:44:14
ich gehe mal davon aus, dass deine SONOSPLAYER im attr userReadings Funktionen für "Favourites", "Radio" usw. enthalten.
Das ist laut Wiki der "alte" Weg.

Im SONOS Device gibt es ein paar neue Schalter

define Sonos SONOS localhost:4711
attr Sonos getFavouritesListAtNewVersion 1
attr Sonos getListsDirectlyToReadings 1

Damit übernimmt das Modul die Aufbereitung und füllt die Readings im SONOSPLAYER.

Dazu kommt noch ein notify

define Sonos_GetNewFavouritesNotify notify Sonos_[^_]+:FavouritesVersion.* { fhem("get $NAME FavouritesWithCovers");; fhem("get $NAME Favourites");; }


Sobald dann eine Änderung an der Favoriten-Liste (add/del) erfolgt, tauchen die neuen Readings auf.
Titel: Antw:Connected und menu
Beitrag von: jemu75 am 27 November 2022, 13:11:46
Ich habe eben das Release 3.36.0 freigegeben. Mit diesem kann der Parameter leftmenu, midmenu bzw. rightmenu jetzt auch über ein reading befüllt werden.
Damit die Favoriten für SONOS korrekt gestartet werden, muss das Userreading, wie hier von mark24 beschrieben erstellt werden.


appMenu:FavouritesListAlias.* {
my $result;; my $command=':StartFavourite ';;
foreach my $item (split(/\|/, ReadingsVal($name, "FavouritesListAlias" ,""))) {
   my $item_html = $item;;
   $item_html =~ s/\s/%20/g;;
   if($result ne "") {$result .= ', '}
   $result .= '"' . $item . $command . $item_html . '"';;
};;
{return $result};;
}
Titel: Antw:Connected und menu
Beitrag von: mark24 am 10 Dezember 2022, 22:05:25
Works like a charm  8)
Danke fürs einbauen!
Titel: Antw:Connected und menu
Beitrag von: binford6000 am 11 Dezember 2022, 16:52:51
Wie muss es im Template denn jetzt lauten? So...
"rightMenu": ["fhemApp_FavList %s"]
...passiert jedenfalls nichts beim Klick auf das Menu. Das Reading ist natürlich vorhanden und befüllt wie es sein soll...  ;)
Neuste Version ist auch drauf.

VG Sebastian
Titel: Antw:Connected und menu
Beitrag von: jemu75 am 14 Dezember 2022, 22:39:13
Hi Sebastian,

wenn das Menu durch ein Reading befüllt werden soll, dann wird der Name des Reading einfach als String in dem Parameter angegeben. Vermutlich habe ich das in der Doku etwas missverständlich geschrieben. Probiere bitte mal folgendes in deinem Template.

"rightMenu": "fhemApp_FavList"

Beste Grüße
jens  :)
Titel: Antw:Connected und menu
Beitrag von: binford6000 am 15 Dezember 2022, 07:38:26
Moin Jens,
das hatte ich bereits ausprobiert. Dann sieht das device so aus wie im Anhang...

VG Sebastian
Titel: Antw:Connected und menu
Beitrag von: jemu75 am 17 Dezember 2022, 20:34:38
Hi Sebastian,

wie sieht der Inhalt deines Readings fhemApp_FavList aus?

Bei mir sieht das Reading wie folgt aus und damit funktioniert es
["ABSOLUTE CHILLOUT:StartFavourite ABSOLUTE%20CHILLOUT", "ANTENNE BAYERN Chillout:StartFavourite ANTENNE%20BAYERN%20Chillout", "Absolut relax:StartFavourite Absolut%20relax"]

und die Definition vom userreading sieht wie folgt aus
appMenu:FavouritesListAlias.* {
my $result;; my $command=':StartFavourite ';;
foreach my $item (split(/\|/, ReadingsVal($name, "FavouritesListAlias" ,""))) {
   my $item_html = $item;;
   $item_html =~ s/\s/%20/g;;
   if($result ne "") {$result .= ', '}
   $result .= '"' . $item . $command . $item_html . '"';;
};;
$result = '[' . $result . ']';;
{return $result};;
}


Grüße
Jens  :)