Hauptmenü

Device Internals ändern

Begonnen von hermann1514, 27 Juni 2016, 10:04:29

Vorheriges Thema - Nächstes Thema

hermann1514

Hallo,

ich möchte gerne meine Squeezeboxen in das TabletUI einbinden. Dazu möchte ich gerne ein Listenfeld haben, welches mir meine Playlists vom Server anzeigt.
Die Lister der Playlisten kann ich über die INTERNALS Serverplaylists aufrufen. Jeodch werden die Einträge durch ein Komma getrennt. Das SELECT Widget benötigt aber einen ":" um die Listen getrennt anzuzeigen.

Meine Idee ist es jetzt ein neues UserReadings anzulegen, welches die SERVERPLAYLISTS ausliest und die Komma's durch einen Doppelpunkt ersetzt.
Wie kann ich das umsetzten?

Danke für eine Starthilfe ;-)

Gruß
Hermann

marvin78

Du kannst Internals mit InternalVal auslesen und dann als UserReading ablegen. Zu beachten ist hier jedoch, dass Internals keine Events auslösen und somit das userReading (je nach Modul) nur bei einem DEF oder shutdown restart gefüllt würde.

Ich würde hier ggf. eher ein at verwenden, welches das Internal regelmäßig ausliest und dann per setreading in ein Reading schreibt.

+00:30:00 {my $INTERNAL=InternalVal("DEVICENAME","INTERNAL",undef);fhem("setreading DEVICENAME READING $INTERNAL")}

(Code für den DEF Bereich des ats).

Du müsstest den Code natürlich anpassen, da du ja Änderungen am Inhalt durchführen möchtest. Dann sollte der Code auch gg.f. in deine myUtils ausgelagert werden.

Icinger

Du könntest auch ein Userreading machen (basierend auf marvin's Vorschlag), das auf ein Event triggert, welches halbwegs regelmäßig kommt.
Dann kannst du dir ein zusätzliches AT ersparen, bzw. ist die Logik gleich innerhalb desselben Devices.

lg, Stefan
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

hermann1514

Hi,

danke für die Antwort.

Aber ich denke ich muß mich nochmal mit USerreadings usw. beschäftigen. Da stehe ich doch ziemlich aufm Schlauch.
Gibt es noch eine gute Anleitung für die 99_myutils.pm? Wie kann ich das auf die Device Eigenschaften zugreifen usw...???

Danke.
Gruß
Hermann

marvin78

Klar gibt es die: Die FHEM-Doku (commandref). Unter Perl Specials, userReadings und utils findest du alles, was du brauchst. Auch im Wiki und hier im Forum findest du Hilfen zur myUtils. Bezüglich Perl findest du hier ein gutes Einsteigerhandbuch:

https://wiki.selfhtml.org/wiki/Perl


hermann1514

Hey Danke für Starthilfe.

Habe es nun hinbekommen. Mein Problem war, dass die Userreadings erst nach einem Statuswechsel angezeigt werden. Das hatte ich nicht gemacht.

So, nun habe ich in meiner 99_myUtils.pm eine weitere Funktion eingebaut, die meine Liste jetzt mit Doppelpunkten zurückliefert.

sub PLAYLISTS($) {
my ($device) = @_;
my $PLAYLIST = InternalVal($device,"SERVERPLAYLISTS",0);

$PLAYLIST =~ tr/,/:/;
return $PLAYLIST;

}


Eigentlich kein großes Ding - aber für ein kleines Erfolgserlebnis :-)

Gruß
Hermann