Neues Modul für die WS980WiFi Wetterstation

Begonnen von choenig, 15 Februar 2019, 19:16:29

Vorheriges Thema - Nächstes Thema

Waldmensch

Seit dem shutdown restart heute morgen, sind auch keine Probleme mehr aufgetaucht, was Deine Aussage bestätigen würde.


Gesendet von iPhone mit Tapatalk

Waldmensch

#61
Irgendwie habe ich das Gefühl, das der "wind" speed nicht richtig im Plugin ankommt. Die Station zeigt auf dem Display zwischen 6 und 12 km/h an und das Plugin dümpelt bei 1-3 km/h rum. Kannst Du das mal prüfen? Vielleicht ist irgend ein Faktor falsch.

Edit: oder zeigt das Plugin m/s an?

choenig

Hi Waldmensch,

Zitat von: Waldmensch am 26 Februar 2019, 14:17:04
Irgendwie habe ich das Gefühl, das der "wind" speed nicht richtig im Plugin ankommt. Die Station zeigt auf dem Display zwischen 6 und 12 km/h an und das Plugin dümpelt bei 1-3 km/h rum. Kannst Du das mal prüfen? Vielleicht ist irgend ein Faktor falsch.

Der Wert im Reading sollte in m/s sein.

LG
Christian

Waldmensch

#63
ZitatDer Wert im Reading sollte in m/s sein.
OK, dann kommt das hin. Dann mache ich mir ein userreading für km/h  ;D

attr Wetterstation userReadings windkmh {ReadingsVal("Wetterstation","wind",0) * 3.6 ;;;; }

Waldmensch

#64
Falls Du das Plugin zur Perfektion treiben willst, könnte man die Einheiten über Attribute mit dropdowns einstellbar machen (entsprechend der Anzeigemöglichkeiten in der Station selbst) und intern verformeln. Aber wirklich nur als nice2have, da man sich mit userReadings ja super behelfen kann. Allerdings, wer Farenheit in allen Temperaturreadings haben möchte, müsste sehr viele UserReadings bauen. Ich weiß allerdings nicht, ob es FHEM Nutzer mit dieser Station in den Staaten gibt.  :D

CoolTux

@choenig

Am Freitag findet ein kleines Webinar statt.
https://forum.fhem.de/index.php/topic,97069.0.html

Gerne würde ich dort kurz Dein Modul erwähnen wenn es ok für Dich ist. Eventuell magst auch selbst ein zwei Worte sagen.



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

choenig

Hi,

Zitat von: CoolTux am 26 Februar 2019, 14:56:29
Am Freitag findet ein kleines Webinar statt.
https://forum.fhem.de/index.php/topic,97069.0.html

Gerne würde ich dort kurz Dein Modul erwähnen wenn es ok für Dich ist. Eventuell magst auch selbst ein zwei Worte sagen.

Sehr gerne darfst Du es erwähnen. Ich wär' auch gerne dabei, aber Freitag abends geht es leider nie :-\

LG
Christian

CoolTux

Zitat von: choenig am 26 Februar 2019, 16:18:20
Hi,

Sehr gerne darfst Du es erwähnen. Ich wär' auch gerne dabei, aber Freitag abends geht es leider nie :-\

LG
Christian

Gibt ein Video dann dazu. 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

curt

Zitat von: Waldmensch am 26 Februar 2019, 14:40:15
... Dann mache ich mir ein userreading für km/h  ;D
attr Wetterstation userReadings windkmh {ReadingsVal("Wetterstation","wind",0) * 3.6 ;;;; }


Als jemand, der sich mit so etwas immer schwer tut - danke ich herzlich!

P.S: Status: Wetterstation auf Gartentisch liegend in Probebetrieb. Material zur Mastinstallation heute gekauft. Handwerklich unbegabt - mal sehen.
RPI 4 - Jeelink HomeMatic Z-Wave

curt

Schon erledigt: Station jetzt da, wo sie hingehört.

Zitat von: choenig am 21 Februar 2019, 18:10:37
Zusätzlich hab' ich die Berechnung des relativen Luftdrucks eingebaut. Hierfür müsst ihr eure Höhe über NN setzen (Attribut altitude). Ansonsten wird pressureRel_calculated mit Höhe '0m' berechnet.

hmm - irgendwas ist da ... also ich habe in der Station KEINE Einstellungen vorgenommen.


pressureAbs                   1003.7 2019-02-27 21:45:58
pressureRel                   1003.7 2019-02-27 21:45:58
pressureRel_calculated        1019.2 2019-02-27 21:45:58


Angenommen, altitude wäre nicht eingestellt - dann müssten alle drei Werte doch gleich sein, oder?

Ich habe das als globales Attribut:

attr global altitude 120


Bei 120 Metern müsste der relative Luftdruck doch .... ähmmm, Moment. Ich habe es vielleicht nicht verstanden: Welches Reading ist denn der real bei mir gemessene Wert? Und muss der relative Wert höher oder niedriger sein?
RPI 4 - Jeelink HomeMatic Z-Wave

Waldmensch

 Nur der _calculated wird im Plugin berechnet, die anderen Beiden kommen aus der Station. Das Plugin nimmt den ABS aus der Station zur Berechnung.


Gesendet von iPhone mit Tapatalk

choenig

Hi,

Zitat von: Waldmensch am 26 Februar 2019, 14:55:59
Falls Du das Plugin zur Perfektion treiben willst, könnte man die Einheiten über Attribute mit dropdowns einstellbar machen (entsprechend der Anzeigemöglichkeiten in der Station selbst) und intern verformeln.

Ich wollte mich zunächst mal mit Einheiten und Unit.pm beschäftigen, ich muss mir noch angucken, wie das funktioniert. Kennst Du ein anderes Modul, wo man Einheiten konfigurieren kann? Ich find' die Idee nicht schlecht, insbesondere bei m/s vs. km/h und so.

Zitat von: curt am 27 Februar 2019, 22:07:32


pressureAbs                   1003.7 2019-02-27 21:45:58
pressureRel                   1003.7 2019-02-27 21:45:58
pressureRel_calculated        1019.2 2019-02-27 21:45:58


Angenommen, altitude wäre nicht eingestellt - dann müssten alle drei Werte doch gleich sein, oder?

Ich habe das als globales Attribut:

attr global altitude 120


Bei 120 Metern müsste der relative Luftdruck doch .... ähmmm, Moment. Ich habe es vielleicht nicht verstanden: Welches Reading ist denn der real bei mir gemessene Wert? Und muss der relative Wert höher oder niedriger sein?

Wenn möglich verwende ich zur Berechnung die altitude aus global, wenn es nicht im Modul selbst eingestellt ist.

Dann:
pressureAbs ist der von der Station gemessene, echte Luftdruck.
pressureRel ist der von der Station berechnete Absolute Luftdruck. Da die Station aber keine Höhe kennt, verwendet sie hier nur den Offset, den Du in der Station konfiguriert hast. Hast Du das nicht getan, ist der Wert gleich.
pressureRel_calculated ist der Wert, der nach QFF formel von mir berechnet wird:

sub WS980_calculateRelPressure_QFF($$$$)
{
my ($Temperature, $AirPressureAbsolute, $Altitude, $Humidity) = @_;

my $g_n = 9.80665;     # Erdbeschleunigung (m/s^2)
my $gam = 0.0065;      # Temperaturabnahme in K pro geopotentiellen Metern (K/gpm)
my $R   = 287.06;      # Gaskonstante für trockene Luft (R = R_0 / M)
my $M   = 0.0289644;   # Molare Masse trockener Luft (J/kgK)
my $R_0 = 8.314472;    # allgemeine Gaskonstante (J/molK)
my $T_0 = 273.15;      # Umrechnung von °C in K
my $C   = 0.11;        # DWD-Beiwert für die Berücksichtigung der Luftfeuchte

my $E_0 = 6.11213;                # (hPa)
my $f_rel = $Humidity / 100;      # relative Luftfeuchte (0-1.0)
# momentaner Stationsdampfdruck (hPa)
my $e_d = $f_rel * $E_0 * exp((17.5043 * $Temperature) / (241.2 + $Temperature));

my $p = $AirPressureAbsolute * exp(($g_n * $Altitude) / ($R * ($Temperature + $T_0 + $C * $e_d + (($gam * $Altitude) / 2))));
return $p;
}


Und nochmal die Bitte:

Falls ihr Verbesserungsvorschläge für die Namen der Readings habt, bitte her damit!

LG
Christian

Waldmensch

@choenig, unit.pm kenne ich gar nicht. Ich würde das jetzt aber auch nicht übertreiben. Du hast ja im Prinzip nur Wind, Licht, Temperatur und Druck. Feuchte ist international Prozent. Dafür würde ich einfach 4 Umrechnungs-Funktionen bauen und die Werte durchjagen. Es ist ja unwahrscheinlich, dass jemand außen Fahrenheit und innen Celsius haben möchte. Also schickst du einfach alle Temperaturwerte (auch die max/min und die historischen) durch die Temperaturfunktion und spuckst sie abhängig vom Userwunsch (Attribut) entweder als Farenheit oder Celsius in die Readings. Wenn dann jemand EIN einzelnes Reading anders haben will, kann er das ja per Userreading umrechnen.

Ein Featurerequest wäre noch: 2 boolesche oder 0/1 Werte, abhängig vom Lichtwert, ,,Dunkel", ,,Dämmerung" mit konfigurierbaren Schwellwerten und Hysterese. Dann könnte man, ohne zusätzliche DOIF z.B. Bewegungsmelder scharfschalten oder Lampen/Rollläden schalten. Ist aber auch nice2have, wenn Du Langeweile hast. ;) Ich habe das derzeit (ESPEasy Lichtsensor) in einer Rule direkt im ESP definiert. Der Wert Dämmerung und Dunkel kommen dadurch direkt neben dem Lichtwert über MQTT rein. Das spart viel Konfiguration im FHEM.


Gesendet von iPhone mit Tapatalk

choenig

Hi,

ich habe gerade Version 0.13.0 hochgeladen. Diese hat einige spannende Änderungen:

  • new attribute: connection Keep-Alive|Close to be able to connect to WS980 on-the-fly
    Hiermit ist es möglich, jetzt wieder auf das alte Verhalten zurückzuschalten, sodass die Verbindung nicht stehend bleibt, sondern wieder geschlossen wird, wenn ein Request durch ist. Achtung: Wenn ihr »connection« auf »Close« setzt, bleibt die Anzeige des Verbindungsstatus die meiste Zeit auf disconnected, was korrekt ist.
  • increase connect timeout to 250msecs and display connect error in lastError
    Hiermit sollten weniger Verbindungsprobleme entstehen, so meine Hoffnung :)
  • implement unit conversion for temperature, pressure, wind, rain and light
    Ihr könnt jetzt über die Attribute unit_temperature, unit_pressure, unit_wind, unit_rain und unit_light die Einheiten einstellen, in der die Readings angezeigt werden sollen  8)
  • show ConnectionState as internal instead of using »state«
  • remove decimals from »humidity« and »uv«
  • show »T: 12.5°C H: 70% W: 2.0m/s P: 1011.3hPa« in »state«
  • commandref: document altitude, pressureRel_calculated and hide unsupported entries

Aufgrund einer Änderung von 0.12.0 auf 0.13.0 ist ein Neustart von FHEM eine gute Idee :)

LG
Christian

choenig

Zitat von: Waldmensch am 28 Februar 2019, 10:10:16
@choenig, unit.pm kenne ich gar nicht. Ich würde das jetzt aber auch nicht übertreiben. Du hast ja im Prinzip nur Wind, Licht, Temperatur und Druck. Feuchte ist international Prozent. Dafür würde ich einfach 4 Umrechnungs-Funktionen bauen und die Werte durchjagen. Es ist ja unwahrscheinlich, dass jemand außen Fahrenheit und innen Celsius haben möchte. Also schickst du einfach alle Temperaturwerte (auch die max/min und die historischen) durch die Temperaturfunktion und spuckst sie abhängig vom Userwunsch (Attribut) entweder als Farenheit oder Celsius in die Readings. Wenn dann jemand EIN einzelnes Reading anders haben will, kann er das ja per Userreading umrechnen.

Done. S.o :)

Zitat von: Waldmensch am 28 Februar 2019, 10:10:16
Ein Featurerequest wäre noch: 2 boolesche oder 0/1 Werte, abhängig vom Lichtwert, ,,Dunkel", ,,Dämmerung" mit konfigurierbaren Schwellwerten und Hysterese. Dann könnte man, ohne zusätzliche DOIF z.B. Bewegungsmelder scharfschalten oder Lampen/Rollläden schalten. Ist aber auch nice2have, wenn Du Langeweile hast. ;) Ich habe das derzeit (ESPEasy Lichtsensor) in einer Rule direkt im ESP definiert. Der Wert Dämmerung und Dunkel kommen dadurch direkt neben dem Lichtwert über MQTT rein. Das spart viel Konfiguration im FHEM.

Finde ich auch interessant. Das lässt sich vermutlich besser umsetzen, als die Regenmenge ;)
Mit der Regenmenge möchte ich mich aber auch noch beschäftigen.

LG
Christian