Select Widget - selektierte wert bevor an device abgeben wird anpassen

Begonnen von Avatar, 05 Mai 2016, 09:21:40

Vorheriges Thema - Nächstes Thema

Avatar

Hallo Zusammen

Ich würde gerne den Wert aus dem "Select Widget", welcher selektiert wurde, bevor der an das Device übergeben wird anpassen.

In der Art, value=uri_escape(value).

geht dies?

Grüsse
Eric

FHEm2005

Hallo Eric,
die auszuwählenden Werte stehen doch unter data-alias, die dazugehörenden Werte liest Du in data-list aus fhem aus bzw. ein.

In dem Device würde ich ein userReadings hinzufügen und mit einer Liste füllen, in der die Sonderzeichen mit ESC-Sequenzen gefüllt sind. Die Listeeinträge müssen mit ":" separiert werden. Dann würde aus der data-alias-Liste der zugehörige Wert aus dem UserReadings gelesen werden.

Beispiel :
in FHEM:
attr <device> userreadings FAVSTR_SORT {my $t="Heart_Beat_Radio_Memory_Hits:Bear_Family_Radio:ANTENNE_BAYERN_Oldies_but_Goldies:1LIVE_-_Das_junge_Radio_des_WDR:WDR2_Aachen_und_Region:WDR3_-_Aus_Lust_am_Hoeren:WDR4_-_Melodien_fuer_ein_gutes_Gefuehl:WDR5_-_Hoeren_erleben";return($t)}
in FTUI:
data-list="FAVSTR_SORT"
data-alias='["Memory Hits FM","Bear Family","Antenne Bayern Oldies but Goldies","1Live","WDR2","WDR3","WDR4","WDR5"]'


So mache ich es mit einer Auswahl von Sendern, bei deren Auswahl der ohne Sonderzeichen "modifizierte" Wert an den Server gesendert wird.

Gruß Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM, BSB-LAN

Avatar

Hallo Eberhard
Danke für dein Feedback. Das wäre ok, wenn die liste statisch wäre. Nur ist meine Playliste dynamisch. Einfacher wäre es, wenn ich den Wert dann an das format anpassen könnte was ich dann übergeben sollte, da er sonst nicht schön lesbar in der Liste wäre.

Ich könnte natürlich über ein dummy gehen und ein notify darauf setzen, aber dies gefällt mir nicht wirklich.

Grüsse
Eric

FHEm2005

Hallo Eric,
welcher Player? Die Liste der PL muss doch im Player vorliegen (unbearbeited) sie wird ja vom SErver an den Player übermittelt.
PL in Variable $xy packen, mit dem Perl-Befehl  my $encoded = uri_escape($xy); und mit return($encoded) in ein UserReading zurückgeben. Achtung ungetestet!
Das Modul URI::ESCAPE muss installiert sein. Ob es bereits in FHEM vorhanden ist, entzieht siich meiner Kenntnis.
Gruß Eberhard

Edit: Für FTUI ist der Datensatztrenner ein ":" , in FHEM kann ein anderer Trenner not wendig werden z.B. ein ",". Das müsste noch geändert werden.
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM, BSB-LAN

setstate

Ich bin eh gerade an einem widget_medialist dran. Das kann man dann für Playlisten, TV Programm oder Senderliste nutzen, links das Coverbild in klein, rechts Text und Zeiten, wie Artist, Titel usw.
Das Ganze soll scrollbar sein und bei Click auf ein Item, dessen ID an den Player geschickt werden.
Ich versuche das generisch zu machen, obwohl ich das für zu aller erst für mein MPD Player und Spotify brauche.

Avatar

Hallo Setstate, das finde ich eine sehr gute Idee.

@Eberhard
Das ist genau so wie ich es mache, nur wenn du die Liste dann mit mit dem Select Widget anschaust, ist sie nicht sehr schön lesbar. Ich mache es mit dem Sonos. Schön wäre ein UserReading, normal lesbar - und da sind eben spaces als spaces drinnen. Nur in dem Format kannst Du es dem Player nicht übergeben.
Beispiel wenn ich in der Select Liste den Wert auswähle : "94.1FM GOLD COAST | (Unterhaltungsmusik)" kann ich den an Sonos Player nur wie folgt übergeben:
set Sonos_Wohnzimmer playFavourite 94.1FM%20GOLD%20COAST%20%7C%20%28Unterhaltungsmusik
Wenn ich die Select liste mit uri_escape bereitstelle, dann ist es eben nicht schön/gut lesbar.

Grüsse
Eric

setstate

Man kann den zu sendenden String auch in Anführungszeichen setzen

data-quote='"'

Avatar

Hallo Setstate
Das hatte ich auch versucht, leider geht dies bei dem Sonos (Sonos modul) nicht.

justme1968

du kannst beim sonos modul die regex varainte verwenden: /das.ist.mein.sender/ das ist meist lesbarer.

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

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

Avatar

Hallo Andre
Danke für den Tip, ich weiss dass ich meine Favourites in Songs umbenennen kann. Ich würde gerne diese Umgehungslösung nicht einsetzen wenn es gehen würde.
Es wäre einfach schön, den Wert entsprechend anpassen zu können bevor ich den übergebe.

Grüsse
Eric

FHEm2005

Hallo Avatar,

poste doch mal bitte den Teil der Select-Liste. Ich habe in der Küche zwei Sonos, da kann ich mal probieren.

Gruß Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM, BSB-LAN

setstate

Ich baue gerne nich ein url-encode in das select ein, wenn es notwendig ist. Aber vielleicht haben die Sonos-Besitzer noch eine Idee.  :D

FHEm2005

Vorab: Diesen Beitrag hatte ich bereits fälschlicherweise in einem anderen Thread gepostet.

Ich bin fast fertig, habe nur ein kleines Problem.

Das UserReadings sieht wie folgt aus:

FAV_FTUI:     ANTENNE BAYERN Oldies but Goldies:Abba The Radio:Heart Beat Radio Memory Hits:Schwany 3 Volksmusik:Schwany 4 Blasmusik:Schwany 5 Oberkrain:Schwany Instrumental:WDR2 Rheinland
FAV_SEND:         "/ANTENNE.BA/":"/Abba.The.R/":"/Heart.Beat/":"/Schwany.3./":"/Schwany.4./":"/Schwany.5./":"/Schwany.In/":"/WDR2.Rhein/"


Aus diesen Favoriten soll über ein PullDown Liste ein Sender für Sonos ausgewählt werden.

Die FTUI-Konfiguration sieht wie folgt aus:
<div data-type="select"
data-device="Sonos_Kueche_RF"
data-list="FAV_FTUI"
data-get="FAV_SEND"
data-set="StartFavourite"
data-cmd="set" >
</div>


Nach Auswahl eines Sender wird herausgesendet:   set Sonos_Kueche_RF StartFavourite WDR2 Rheinland    Es sollte aber: set Sonos_Kueche_RF StartFavourite /WDR2.Rhein/  gesendet werden.

Er hat also offensichtlich mit der FAV_SEND Probleme und benutzt einfach die FAV_FTUI. Gibt es einen Tipp für mich, wie ich es schaffe den Satz aus FAV_SEND nativ zu senden??

Gruß Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM, BSB-LAN

FHEm2005

Zusatzfrage:

sind die Attribute data-items und data-alias des Select-Widgets wirklich statisch, oder kann man sie mit einem Perl-Ausdruck, der auf das Reading zeigt, befüllen? Wie müsste der Perl-Ausdruck denn dann aussehen?

Gruß Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM, BSB-LAN

setstate

nö, man kann auch ein data-list angeben. Im FHEM kannst du dann das Reading beliebig füllen. Wichtig, die Item müssen mit : getrennt  sein .

data-list="inputs"

Zitatinputs    AUX:Airplay:BD/DVD:BLUETOOTH:FM:NET:PHONO:SAT:Game:Webradio    deleteattr

Wenn data-list="setList" ist, wird die setList Spezialität beachtet.

attr setList state1:wert1,wert2 state2:wert3,wert4