Hauptmenü

Windrichtung als Text

Begonnen von en-trust, 17 Juni 2016, 23:15:46

Vorheriges Thema - Nächstes Thema

en-trust

Es gibt dieses Porplanta Modul, womit man in der html die windrichtung als Grafik anzeigen lassen kann.

data-type = wind_direction ...

Jetzt würde ich aber die Windrichtung als Text in dem Falle des list S angeben statt 180 oder das icon windDirIcon. Aber statt der Grad die Richtung wie SO, No, etc. wäre auch gut.


     2016-06-17 23:07:32   wind            10.8
     2016-06-17 23:07:32   windDir         180
     2016-06-17 23:07:32   windDirIcon     http://www.proplanta.de/wetterdaten/images/symbole/w27.gif
   Fhem:
     LOCAL      0
     modulVersion $Date: 2016-04-07 17:24:09 +0200 (Thu, 07 Apr 2016) $
   Helper:
Attributes:
   INTERVAL   600
   forecastDays 7
   group      Wettervorhersage
   room       Wetter


Ist das machbar ?

betateilchen

Du kannst Dir in Deiner 99_myUtils.pm einfach eine Funktion bauen, die Gradzahlen in Text umrechnet:


sub windDirName($) {
  my ($dir) = @_;
  my @winddir_name=("N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW");
  return $winddir_name[int((($dir + 11.25) % 360) / 22.5)];
}


dann kannst Du mit {windDirName(47)} die Windrichtung 47° als Text "NE" zurückbekommen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

en-trust

Wie müsste ich das in fhem.cfg bzw in der html dann ausgeben ?

Prof. Dr. Peter Henning

Gar nicht. Sondern die Perl-Funktion aufrufen. Siehe Anfänger-Doku.

LG

pah

en-trust

Als Anfänger bin ich auch mit der Doku nicht weitergekommen. Dürfte ich denn vielleicht ein funktionierendes Coding bekommen bzw. wie ich es einbinden muss ?

kumue

#5
Wie betateilchen schon schrieb...
In die 99_myUtils.pm den Code eintragen
sub windDirName($) {
  my ($dir) = @_;
  my @winddir_name=("N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW");
  return $winddir_name[int((($dir + 11.25) % 360) / 22.5)];
}



Handling zu 99_myUtils.pm steht hier
http://www.fhemwiki.de/wiki/99_myUtils_anlegen
Damit die neue Routine erkannt wird, die 99_myUtils neu laden.
reload 99_myUtils

Dann kannst Du dir in deinem Proplanta ein neues Reading für die Text-Windrichtung anlegen.
attr <DEIN_PROPLANTA> userReadings winddirText {windDirName(ReadingsVal("<DEIN_PROPLANTA>", "windDir",""))}

<DEIN_PROPLANTA> entsprechend deiner Konfig anpassen.
Der Name ist in deinem ersten Post nicht ersichtlich.

Wenn alles passt, taucht in deinem Proplanta ein neues Reading namens windirText auf.

Edit:
ein "d" vergessen
Wenn alles passt, taucht in deinem Proplanta ein neues Reading namens winddirText auf.

betateilchen

Zitat von: kumue am 20 Juni 2016, 10:05:37

Damit die neue Routine erkannt wird, die 99_myUtils neu laden.
reload 99_myUtils


Wenn man die 99_myUtils.pm so editiert, wie es vorgesehen ist, nämlich über "Edit files" im fhem Frontend, wird die Datei nach dem Speichern automatisch neu geladen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

kumue

Zitat von: betateilchen am 20 Juni 2016, 10:28:56
Wenn man die 99_myUtils.pm so editiert, wie es vorgesehen ist, nämlich über "Edit files" im fhem Frontend, wird die Datei nach dem Speichern automatisch neu geladen.

Ich bin vom externen Editor ausgegangen...   :) ;)

nee, wußte ich auch noch nicht... man lernt immer wieder was dazu... thx

en-trust

Kumue danke für die Anleitung. Werde ich später testen und berichten. Mus eigentlich in jede eigene *.pm Datei am Ende das 1;

betateilchen

Zitat von: kumue am 20 Juni 2016, 10:36:48
nee, wußte ich auch noch nicht... man lernt immer wieder was dazu

Muss man nicht wissen, kann man aber nachlesen, wenn man in die Doku schaut ;)

Zitat von: en-trust am 20 Juni 2016, 11:07:28
Muss eigentlich in jede eigene *.pm Datei am Ende das 1;

Wenn Du die Datei in fhem verwenden willst: ja. Perl Grundlagen...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

kumue

Zitat von: en-trust am 20 Juni 2016, 11:07:28
Mus eigentlich in jede eigene *.pm Datei am Ende das 1;

Da ich es selbst nicht weiss, ob es zwingend erforderlich ist, habe ich gegoogelt..

ZitatEingebundene Perl-Dateien müssen am Ende so etwas wie 1; enthalten. Dadurch wird sichergestellt, dass das Modul oder die Modul-Funktion korrekt ausgeführt wird.
Quelle: https://wiki.selfhtml.org/wiki/Perl/Funktionen_f%C3%BCr_Module_und_Packages





en-trust

Unter Attributes steht nun

userReadings   winddirText {windDirName(ReadingsVal("Wetter_Pro", "windDir",""))}
Allerdings finde ich nirgends den Text.

kumue

Unter den Readings deines Proplanta findet sind kein Reading winddirText ?

en-trust

Jetzt steht die neue Variable unter den Readings. Wert 180 ergibt beim Text S.

Danke an alle.