Moin,
ich versuche mich nun fast seit einer Woche an meiner Anzeige für das Wetter, mit dem Modul Weather habe ich es bereits gut hinbekommen die Daten herunterzulanden und die benötigten Werte als einen Dummy zu hinterlegen, so dass ich im Floorplan meine Daten einzeln per Drag & Drop positionieren kann, allerdings bekomme ich das mit dem Wettericon bei Poplanta nicht hin, ich denke dass das eine recht einfache Aufgabe ist für jemanden, der sich etwas mit Programierung auskennt.
Mein Ziel ist es eine Anzeige über den Tag zu haben Früh, Mittag, Abend, Nacht und dazu die passenden Logos.
In meinem "fc0_weatherDayIcon" Reading steht aktuell:
"http://www.proplanta.de/wetterdaten/images/symbole/t7.gif"
damit kann ich allerdings im Floorplan kein Bild aufrufen. Wie kann ich also das Reading kürzen auf: "t7"
Ich denke ich sollte irgendwo so etwas eingeben: {$VALUE=~m/\S+\/(\S+)\.gif/;;$1}
So sieht meine fhem.cfg für diesen Teil zur Zeit aus.
#Wetter Heute Tags Proplanta
define ProplantaWetterTags_Text dummy
attr ProplantaWetterTags_Text room Wetter
define n_ProplantaWetterTags_Text notify ProplantaWetter:fc0_weatherDay.* { fhem "set ProplantaWetterTags_Text ".ReadingsVal("ProplantaWetter","fc0_weatherDay",0)}
define ProplantaWetterTags_Symbol dummy
attr ProplantaWetterTags_Symbol room Wetter
define n_ProplantaWetterTags_Symbol notify ProplantaWetter:fc0_weatherDayIcon.* { fhem "set ProplantaWetterTags_Symbol ".ReadingsVal("ProplantaWetter","fc0_weatherDayIcon",0) }
define ProplantaWetterTags_Temp dummy
attr ProplantaWetterTags_Temp room Wetter
define n_ProplantaWetterTags_Temp notify ProplantaWetter:fc0_temp12.* { fhem "set ProplantaWetterTags_Temp ".ReadingsVal("ProplantaWetter","fc0_temp12",0)."°C" }
define ProplantaWetterTags_Regen dummy
attr ProplantaWetterTags_Regen room Wetter
define n_ProplantaWetterTags_Regen notify ProplantaWetter:fc0_chOfRain12.* { fhem "set ProplantaWetterTags_Regen ".ReadingsVal("ProplantaWetter","fc0_chOfRain12",0)."%" }
Code-Tags sind schön aber gleich alles in Code-Tags zu setzen ::)
Bearbeite deinen Beitrag doch nochmal und setze das in Tags was in Tags gehört - dann wird das alles leserlicher und auch verständlicher was du willst.
Schon passiert ;)
($b,$c) = $a =~ m|^(.*[/\\])([^/\\]+?)$|;
Und schon gibt es ne Lösung ;)
Sehr gut vielen Dank ihr zwei,
wenn mir jetzt Beta noch sagen könnte an welche Stelle ich das ($b,$c) = $a =~ m|^(.*[/\\])([^/\\]+?)$|; bastele dann wäre ich super glücklich.
define n_ProplantaWetterTags_Symbol notify ProplantaWetter:fc0_weatherDayIcon.* { fhem "set ProplantaWetterTags_Symbol ".ReadingsVal("ProplantaWetter","fc0_weatherDayIcon",0) }
Danke
ZitatBeta
DAS liest er nicht so gerne 8)
Na wenn es hilft betateilchen ;).
Sorry für die dumme Frage aber wie man links sieht bin ich noch ein absoluter Newbie und versuche mir überall ein paar Codes zusammenzufügen.
Zitat von: stumpelrielschen am 10 Januar 2016, 22:19:33
und versuche mir überall ein paar Codes zusammenzufügen.
Das bringt Dich nicht weiter. Beschäftige Dich bitte mit perl-Grundlagen.
Um auf meinen Lösungsansatz zurückzukommen:
$a ist die gesamte URL
$b ist der Teil vor dem Dateinamen
$c ist der Dateiname
Super Beispiel. Das kann man immer mal gebrauchen. Daher möchte ich mich bedanken.
Grüße
@CoolTux: vergiss das Beispiel, mit perl-Bordmitteln (http://perldoc.perl.org/File/Basename.html) geht das viel eleganter.
Aber der Fragesteller hatte ja ausdrücklich nach regexp gefragt.
@betateilchen
Du wirst lachen, aber ich habe mein html parsing ausschließlich mit regexp gemacht. Ich weiß das es da noch sowas wie html::parser gibt. Aber ich hatte ja nur was kleines zu parsen
Grüße
Vielen Dank erstmal betateilchen,
ich werde mich über Perl mal her machen mal schauen, ob ich das blicke oder ob es da einfach bei mir aufhört. Irgendwie muss ich ja das Reading kurz bekommen. Sonst gibt es weiterhin nur das Yahoowetter.
gib doch mal in die Kommandozeile Deines fhem folgendes ein:
{use File::Basename;; basename("http://www.proplanta.de/wetterdaten/images/symbole/t7.gif")}
und staune...
;D das sieht doch wesentlich durchschaubarer aus.
Fhem antwortet mir dann "t7.gif".
Wenn ich also
{use File::Basename;; basename(ReadingsVal("ProplantaWetter","fc0_weatherEveningIcon",0))}
oben bei FHEM eingebe sagt es mir das gleiche aber mit dem aktuellen Reading (perfekt).
Soweit so gut nur leider funktioniert das nicht mit dem Wert setzen. Wenn ich also eingebe:
set ProplantaWetterAbends_Symbol {use File::Basename;; basename(ReadingsVal("ProplantaWetter","fc0_weatherEveningIcon",0))}
dann führt FHEM das nicht aus.
Danke
Das ganze sollte in die 99_myUtils.pm ausgelagert werden.
Der Teil
use File::Basename
ist zumindest dort gut aufgehoben.
Dann noch eine sub definieren die die Bearbeitung macht und passend aufgerufen wird.
Der Rückgabewert kann dann in FHEM weiterverarbeitet werden.
Infos zum anlegen der 99_myUtils.pm findest du im Wiki http://www.fhemwiki.de/wiki/99_myUtils_anlegen (http://www.fhemwiki.de/wiki/99_myUtils_anlegen)
Sorry aber ich kann dir keine fertige Lösung "aus dem Ärmel schütteln" ohne das in meiner Testumgebung nachzubauen.