Hallo,
ich habe mich wirklich schon hoch und runter gesucht, finde aber keine Lösung.
Mit wird ein Reeding mit XML gefüllt. Darin ist ein Link, den ich gerne als Bild anzeigen würde. Wie extrahiere ich aus dem Reading den link?
Hier der Wert des Readings:
<p>
<img src="https://assets.amuniversal.com/ee6a3ca08d7f013808e1005056a9545d" alt="Dilbert by Scott Adams on Fri, 03 Jul 2020" title="Dilbert by Scott Adams on Fri, 03 Jul 2020">
</p>
<p>
<a href="https://dilbert.com/strip/2020-07-03">Source</a> -
<a href="https://www.patreon.com/bePatron?u=6855838">Patreon</a>
</p>
Ich brauch den Wert aus dem src Attribut. Daraus möchte ich ein eigenes Reading machen und das als Wert einer Weblink Definition anhängen.
Kann mir jemand helfen?
Danke und Gruß,
Jakl
Hi,
als Denkansatz ein Oneliner für die FHEM Kommandozeile:
{my $in = '<img src="https://assets.amuniversal.com/ee6a3ca08d7f013808e1005056a9545d" alt="Dilbert by Scott Adams on Fri, 03 Jul 2020" title="Dilbert by Scott Adams on Fri, 03 Jul 2020">';;my @a = split('"', $in);;return $a[1]}
Musst Du bloß my $in=ReadingsVal() umbauen.
Gruß Otto
Gleich in devstateIcon umsetzen wenns nicht unbedingt eine Weblink Definition sein muss :)
Für den RAW-Import:
attr <devicename> devStateIcon {my $url = ReadingsVal($name,"url","undef");;my @a = split('"', $url);;\
"<img src='$a[1]' style='width:80px;;height:80px;;'>" }
Gruß
Thomas
Damit kriegst Du spätestens dann ein Problem, wenn der default-Wert von ReadingsVal() gezogen wird.
Ich würde das Ganze mittels regex lösen.
Wenn das Reading sich nicht grundsätzlich ändert und es bei dem split bleiben kann könnte man doch darüber nachdenken den default-Wert auch anzupassen:
ReadingsVal('url','url','"fhem/www/images/openautomation/scene_making_love.svg"')
Der default-Wert ist aber doch weniger das Problem, in dem Reading wird doch wohl immer was drinstehen und das Reading selbst auch existieren.
Nur ausführen wenn die Anzahl der Elemente 1 ergibt wär wohl eher angesagt.
oder so mit einem regexp:
attr url devStateIcon { my $rep = 'fhem/www/images/fhemSVG/rc_BLANK.svg';
my $img = ReadingsVal('url','url',$rep) =~ m,<img.*?src="(.*?)"[^\>]+>, ? $1 : $rep;"<img src='$img' style='width:80px;height:80px;'>"}
Vielen Dank. Der Denkanstoß hat geholfen... ;-)
Ich habe mir ein UserReading angelegt, was mit den Beispielen von euch den Link befüllt. Und darauf reagiere ich mit einem Notify das per defmod den Weblink aktualisiert.