Hauptmenü

Readings kürzen

Begonnen von stumpelrielschen, 10 Januar 2016, 19:47:26

Vorheriges Thema - Nächstes Thema

stumpelrielschen

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)."%" }

 

Puschel74

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.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

stumpelrielschen


betateilchen

($b,$c) = $a =~ m|^(.*[/\\])([^/\\]+?)$|;
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Puschel74

Und schon gibt es ne Lösung  ;)
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

stumpelrielschen

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

Puschel74

ZitatBeta
DAS liest er nicht so gerne  8)
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

stumpelrielschen

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.

betateilchen

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
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

CoolTux

Super Beispiel. Das kann man immer mal gebrauchen. Daher möchte ich mich bedanken.



Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

betateilchen

@CoolTux: vergiss das Beispiel, mit perl-Bordmitteln geht das viel eleganter.
Aber der Fragesteller hatte ja ausdrücklich nach regexp gefragt.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

CoolTux

@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
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

stumpelrielschen

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.

betateilchen

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...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

stumpelrielschen

 ;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