da ich langsam meine homematic wetterstation in den griff kriege, frag ich mich grade, ob man eine windrose für (fast)echtzeitdarstellungen mit fhem bordmitteln realisieren könnte.
darin dargestellt müssten 3 werte sein: windSpeed, windDirection und zur richtung noch windDirRange drauf.
ich dachte, man könnte da eventuell was mit einem dummy mit state:knob in der setList machen, hab aber keine ahnung, wie ich dem readings übergeben soll, oder ob das überhaupt möglich ist.
was ich gerne vermeiden würde wäre auf externe mittel zurückgreifen zu müssen. nicht, dass ich da was gefunden hätte bis jetzt *g*.
hat da jemand ideen dazu, oder gibts etwa was fertiges, das ich nach 4 tagen suche immer noch nicht gefunden hab?
Meinst Du soetwas wir hier beschrieben:
https://de.wikipedia.org/wiki/Windrose_(Meteorologie) (https://de.wikipedia.org/wiki/Windrose_(Meteorologie))
Daran bastele ich auch schon länger. Da ich DbLog nutze, hatte ich mir SQL-Abfragen gebasteltet, die die entsprechenden Daten generieren.
Leider habe ich bisher allerdings noch keine Möglichkeit gefunden, das in FHEM ansprechend graphisch aufzubereiten.
ja, nur kein diagramm, sondern die einfach echtzeit-version.
im endefeckt ne art kompass mit der angabe, wo der wind her kommt und wie "breit" er auftritt (darunter oder mitten drinnen einfach die windgschw. in zahlen. <-- das is eher kein problem *g*)
z.b. sowas http://www.kar.schulnetz.hamm.de/kar/wp-content/uploads/2011/05/Windrose.jpg mit ner richtungsanzeige (ist nur die erstbeste gfx, nix besonderes)
ZitatWetterlexikon - Windrose
Windrose
Diese kreisförmige Windrichtungsskala ist mit einer Grad- oder Stricheinteilung versehen. Meist wird die Windrose in 36 gleiche Stücke geteilt, um neben den acht Hauptwindrichtungen auch die einzelnen Untersektoren wie beispielsweise die Süd-Süd-West-Richtung darzustellen. Oft wird die Windrose mit der Häufigkeit eines bestimmten Klimaelements kombiniert.
Hast Du einen Webserver laufen (apache, nigx o.Ä.)?
Dann währe dieses durch php und etwas "script_magie" durchführbar. Ob es direkt in FHEM ??????
webserver hab ich für smartvisu am laufen, ja.
hast du wo was rumliegen oder nen link?
smartVisu kann das doch out-of-the box ?
http://docu.smartvisu.de/2.7/index.php?page=design/design_icons
vg
joerg
ja und das verwend ich auch, nur das dashboard von fhem kann sowas scheints nicht - zumindest hab ich dort nix gefunden.
ausserdem fehlt bei smartvisu auch die windrange, wobei ich das dort verkraften kann. am dashboard will ich da dann schon was gscheites haben *g*.
Du kannst doch in FHEM ein "html-Objekt" einbinden. Wenn Du dann dort auf Deine woanders "gebaute" Windrose verweist ...
ja, und genau so ne windrose such ich.
bis jetzt is mir da nur eine untergekommen http://wiki.sandaysoft.com/a/SteelSeries_Gauges
das ist aber wieder viel zu viel des guten und wenn ich das richtig seh, bleibt da einiges von denen weg aufzurufen = will ich nicht, ich will lokal bleiben.
Eine sub, ein notify und ein dummy dann kommt das dabei raus ---> Siehe Screenshot
VG
Frank
wäre ein schöner anfang - wie gemacht?
die "kompassnadel" hätte ich mir wie im anhang vorgestellt (nur mal so als grundgedanke).
die schwankungsbreite kommt ebenfalls in grad daher und sollte 45° nie übersteigen (sagen zumindest einige websites, ich weiß es nicht wirklich).
dann einfach noch irgendwo die windgeschw. dazu geschrieben und schon hat man was man (oder ich) will *g*.
Hier die sub, dummy und notify
Zitatsub Windstate()
{
my $wndst = ReadingsVal("myWS1080_dummy","Wind-Dir",0);
if( $wndst > 0.1 && $wndst < 45 ) {
fhem "set Wind_Symb_dummy 1"
}
if( $wndst == 45 ) {
fhem "set Wind_Symb_dummy 2"
}
if( $wndst > 45 && $wndst < 90 ) {
fhem "set Wind_Symb_dummy 3"
}
if( $wndst == 90 ) {
fhem "set Wind_Symb_dummy 4"
}
if( $wndst > 90 && $wndst < 135 ) {
fhem "set Wind_Symb_dummy 5"
}
if( $wndst == 135 ) {
fhem "set Wind_Symb_dummy 6"
}
if( $wndst > 135 && $wndst < 180 ) {
fhem "set Wind_Symb_dummy 7"
}
if( $wndst == 180 ) {
fhem "set Wind_Symb_dummy 8"
}
if( $wndst > 180 && $wndst < 225 ) {
fhem "set Wind_Symb_dummy 9"
}
if( $wndst == 225 ) {
fhem "set Wind_Symb_dummy a"
}
if( $wndst > 225 && $wndst < 270 ) {
fhem "set Wind_Symb_dummy b"
}
if( $wndst == 270 ) {
fhem "set Wind_Symb_dummy c"
}
if( $wndst > 270 && $wndst < 315 ) {
fhem "set Wind_Symb_dummy d"
}
if( $wndst == 315 ) {
fhem "set Wind_Symb_dummy e"
}
if( $wndst > 315 && $wndst < 360 ) {
fhem "set Wind_Symb_dummy f"
}
if( $wndst == 360 ) {
fhem "set Wind_Symb_dummy g"
}
if( $wndst == 0 ) {
fhem "set Wind_Symb_dummy h"
}
}
###########################################
#dummy:
define Wind_Symb_dummy dummy
attr Wind_Symb_dummy alias Windrichtung
attr Wind_Symb_dummy devStateIcon 1.*:ws_NNO_kl.png 2.*:ws_NO_kl.png 3.*:ws_ONO_kl.png 4.*:ws_O_kl.png 5.*:ws_OSO_kl.png 6.*:ws_SO_kl.png 7.*:ws_SSO_kl.png 8.*:ws_S_kl.png 9.*:ws_SSW_kl.png a.*:ws_SW_kl.png b.*:ws_WSW_kl.png c.*:ws_W_kl.png d.*:ws_WNW_kl.png e.*:ws_NW_kl.png f.*:ws_NNW_kl.png g.*:ws_N_kl.png h.*:ws_N_kl.png
attr Wind_Symb_dummy event-on-update-reading .*
attr Wind_Symb_dummy room Garten
#notify:
define myWS1080_nty notify myWS1080_dummy.* {if( $EVTPART1 >= 0 && $EVTPART1 <= 360 ) {\ #Filter auf unplausible Werte
Windstate\
}\
}
VG
Frank
wow - thx!!!!
wäre es vermessen zu fragen, ob du mir noch schnell die grafiken rüberwerfen könntest?
Die findest du unter /fhem/www/images/default, dort habe ich die, sonst must du das www/images Verzeichnis mal durchsuchen.
ich werd schon alt und blind *g*
so, dann sag ich nochmal vielen dank für die flotte hilfe, und schau mal, ob meine fhem-kenntnisse (hab ich sowas?) reichen, um mir das anzupassen ...
btw - deinen filter "myWS1080_nty" brauch ich eig. nur, wenn meine wetterstation andere werte als 0-360 liefern würde. hab ich das richtig verstanden?
Zitatbtw - deinen filter "myWS1080_nty" brauch ich eig. nur, wenn meine wetterstation andere werte als 0-360 liefern würde. hab ich das richtig verstanden?
Ja, meine Wetterstation liefert manchmal unsinnige Werte (schlechter Empfang, Störungen) aber den notify brauchst du, der triggert die sub, einfach den "Filter Teil" weglassen.
VG
Frank
wow, ich hab richtig gedacht - is ne neuheit bei mir und fhem *g*
so, jetzt hab ich meine erste ganz eigene lösung - gut, fleißig abgeschrieben von dir *g* - dafür so, dass ich mir selber helfen kann in nur einer einzigen readingsgroup.
noch weiß ich nicht, obs wirklich 100% rennt, aber schaun ma mal:
Internals:
CFGFN
DEF Wetterstation:windDirection
NAME rg_Windrose
valueFormat {
return "1" if( $VALUE > 0.1 && $VALUE < 45 );
return "2" if( $VALUE == 45 );
return "3" if( $VALUE > 45 && $VALUE < 90 );
return "4" if( $VALUE == 90 );
return "5" if( $VALUE > 90 && $VALUE < 135 );
return "6" if( $VALUE == 135 );
return "7" if( $VALUE > 135 && $VALUE < 180 );
return "8" if( $VALUE == 180 );
return "9" if( $VALUE > 180 && $VALUE < 225 );
return "a" if( $VALUE == 225 );
return "b" if( $VALUE > 225 && $VALUE < 270 );
return "c" if( $VALUE == 270 );
return "d" if( $VALUE > 270 && $VALUE < 315 );
return "e" if( $VALUE == 315 );
return "f" if( $VALUE > 315 && $VALUE < 360 );
return "g" if( $VALUE == 360 );
return "h" if( $VALUE == 0 );
}
Positions:
Wetterstation.windDirection 1:1
Valueicon:
windDirection.1 ws_NNO_kl.png
windDirection.2 ws_NO_kl.png
windDirection.3 ws_ONO_kl.png
windDirection.4 ws_O_kl.png
windDirection.5 ws_OSO_kl.png
windDirection.6 ws_SO_kl.png
windDirection.7 ws_SSO_kl.png
windDirection.8 ws_S_kl.png
windDirection.9 ws_SSW_kl.png
windDirection.a ws_SW_kl.png
windDirection.b ws_WSW_kl.png
windDirection.c ws_W_kl.png4
windDirection.d ws_WNW_kl.png
windDirection.e ws_NW_kl.png
windDirection.f ws_NNW_kl.png
windDirection.g ws_N_kl.png
windDirection.h ws_N_kl.png
Attributes:
nonames 1
notime 1
room Testgeräte
valueFormat {
return "1" if( $VALUE > 0.1 && $VALUE < 45 );
return "2" if( $VALUE == 45 );
return "3" if( $VALUE > 45 && $VALUE < 90 );
return "4" if( $VALUE == 90 );
return "5" if( $VALUE > 90 && $VALUE < 135 );
return "6" if( $VALUE == 135 );
return "7" if( $VALUE > 135 && $VALUE < 180 );
return "8" if( $VALUE == 180 );
return "9" if( $VALUE > 180 && $VALUE < 225 );
return "a" if( $VALUE == 225 );
return "b" if( $VALUE > 225 && $VALUE < 270 );
return "c" if( $VALUE == 270 );
return "d" if( $VALUE > 270 && $VALUE < 315 );
return "e" if( $VALUE == 315 );
return "f" if( $VALUE > 315 && $VALUE < 360 );
return "g" if( $VALUE == 360 );
return "h" if( $VALUE == 0 );
}
valueIcon {
'windDirection.1'=>'ws_NNO_kl.png',
'windDirection.2'=>'ws_NO_kl.png',
'windDirection.3'=>'ws_ONO_kl.png',
'windDirection.4'=>'ws_O_kl.png',
'windDirection.5'=>'ws_OSO_kl.png',
'windDirection.6'=>'ws_SO_kl.png',
'windDirection.7'=>'ws_SSO_kl.png',
'windDirection.8'=>'ws_S_kl.png',
'windDirection.9'=>'ws_SSW_kl.png',
'windDirection.a'=>'ws_SW_kl.png',
'windDirection.b'=>'ws_WSW_kl.png',
'windDirection.c'=>'ws_W_kl.png4',
'windDirection.d'=>'ws_WNW_kl.png',
'windDirection.e'=>'ws_NW_kl.png',
'windDirection.f'=>'ws_NNW_kl.png',
'windDirection.g'=>'ws_N_kl.png',
'windDirection.h'=>'ws_N_kl.png'
}
Hallo Ratman,
kann es sein das in der Definition noch ein kleiner "Denkfehler" ist?
Z.B. die Pos 45 = 2 wird nur ausgegeben wenn es genau 45 Grad sind.
Diesen Wert wird es in der Realität nie geben.
Also wird immer dann die Pos 1 oder 3 ausgegeben.
Gruß Wolfdieter
jo, wird so sein ... hab ich ja nur kopiert damals *g*