FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: arminius am 27 November 2016, 20:24:17

Titel: Image aus HEX URL auslesen und in Reading speichern
Beitrag von: arminius am 27 November 2016, 20:24:17
Hallo zusammen,

ich bin neu im Forum und und habe auch gleich eine Frage.

Ich habe das Modul XBMC an FHEM angeschlossen und möchte nun das Readingfeld thumbnail nutzen, um das entsprechende Image in Tablet UI darzustellen.

Ich mir dazu eine Perlskript geschrieben und würde das nun gerne in die 99_myutils.pm überführen.
Das Skript macht aus dem Feldeintrag von thumbnail eine URL auf das entsprechende Image im Internet.
Des weiteren soll ein Event ausgelöst werden durch ein notify und eine Sub wird aufgerufen im 99_myutils.pm, wenn der Status auf play im XBMC (KODI) steht und dies . Danach wird die URL editiert und das Ergebnis soll in ein Userreadung geschrieben werden.

Folgendes habe ich gemacht.

Readings im Kodi:
Thumbnail:
image://https%3A%2F%2Fwww.nnnnnnnn.de%2Fsg%2Fbin%2FEPGChannel%2Fweb%2Fchannel_151.png/
Status:
Userreading:
user_image_url = <zur Zeit leer>

Notify:
WZ_KODI:playStatus:.*played { cut_image_url($EVENT) }

99_myutils.pm:
sub cut_image_url($)
{
   my ($aktion) = @_;

   if (ReadingsVal("WZ_KODI", "playStatus", "played") eq "played")
   {
        ReadingVal("WZ_KODI", "thumbnail", "") =~ /\{image:\/\/(.*)\/}/;
        my $Link1 = $1;
        $Link1 =~ s/%([A-Fa-f\d]{2})/chr hex $1/eg;
        fhem("setreading WZ_KODI user_image_url $Link1");
   }
}


-> fhem("setreading WZ_KODI user_image_url {$Link1}");
In dieser Form hat es auch nicht funktioniert.

Hat jemand eine Lösung für das Problem?
Ist mein Nofify in Ordnung?
Ich die Überführung des Perl Skripts in die 99_myutils.pm korrekt?
Wie wird die Variable $Link1 korrekt an das userreading übergeben?

Vielen Dank für euere Hilfe.

Gruß
Ete
Titel: Antw:Image aus HEX URL auslesen und in Reading speichern
Beitrag von: viegener am 27 November 2016, 21:21:07
Schau Dir am besten nochmal den Abschnitt userReadings in der commandref an, denn eigentlich wäre das Vorgehen:

Deine Subroutine würde das Reading nicht selber setzen, sondern als Rückgabewert zurückgeben.
Die FHEM-Routine würde in der Definition des userReadings aufgefrufen
Statt des Notify würde das ebenfalls in der Definition des userReadings angegeben

Das userreading würde da in der Definition ungefähr so aussehen

attr WZ_KODI userReadings playStatus:.*played { cut_image_url($EVENT) }


Habe das allerdings jetzt nicht im Detail überprüft