weewx-fhem - Erfahrungen?

Begonnen von maddinthebrain, 28 Februar 2020, 14:55:43

Vorheriges Thema - Nächstes Thema

maddinthebrain

Hallo,

ich bin gerade dabei meine Wetterstation aus verschiedenen Gründen von CumulusMX auf weewx umzustellen. Im Moment nutze ich die angenehme Funktion von Cumulus ein txt-File wo hin zu schreiben wo FHEM sie lesen kann.

Bei weewx ist das schwieriger. Es hat sich aber mal jemand dazu Gedanken gemacht und ein Plugin für weewx geschrieben. https://github.com/matthewwall/weewx-fhem

Nun meine Frage: Hat das jemand im Einsatz? Oder gibt es eine andere Lösung? Ich habe bisher nicht viel finden können, außer dass man mit viel Mühe die Weewx HTML Seite parsen kann, was wohl auch nicht so einfach ist. https://forum.fhem.de/index.php?topic=56271.0

Viele Grüße

Martin

Viele Grüße
Martin

Futro mit Proxmox und Debian: FHEM, Signalduino 433MHz & 868MHz, MAX!, WeeWX, FHEM2FHEM,
Raspi 4 mit ConBee mit deCONZ und Phoscon für ZigBee Aktoren und Sensoren

regenbieger

Hi, meine Wetterstation ist zwar nur noch ein Trümmerhaufen, aber Temperatur, Lufdruck und Humidity überträgt die immer noch brav seit Jahren. Das alles per WeeWx und dem MQTT-Plugin.
https://github.com/weewx/weewx/wiki/mqtt
War vor 5 Jahren der einfachste Weg, ist er evtl. immer noch.

Viel Spaß und gutes Wetter
regenbieger
FHEM und WEEWX auf Raspberry

maddinthebrain

Das ist ja toll! Das wusste ich gar nicht, dass es das gibt. Wie hast du das in Fhem eingebunden? Ich hätte das jetzt mit FileRead und regex versucht...

Wie sieht dein Device aus?
Bei mir ist Fhem selbst der MQTT Broker, das ist aber ein Mqtt2 Server.

Grüße Martin
Viele Grüße
Martin

Futro mit Proxmox und Debian: FHEM, Signalduino 433MHz & 868MHz, MAX!, WeeWX, FHEM2FHEM,
Raspi 4 mit ConBee mit deCONZ und Phoscon für ZigBee Aktoren und Sensoren

regenbieger

Moin.
ich habe MQTT und WeeWx auf dem gleichen Raspi laufen mit dem ich auch Fhem betreibe. MQTT2 hab ich keine Erfahrung, sollte aber nicht viel anders sein.
Das ist meine Wetterstation:
defmod Wetterstation MQTT_DEVICE
attr Wetterstation DbLogInclude inHumidity:300,inTemp_C:300,barometer_mbar:300,temperature:300,humidity:300
attr Wetterstation IODev mqtt
attr Wetterstation event-on-change-reading inHumidity:1,inTemp_C:0.1,outHumidity:1,outTemp_C:0.1,pressure_mbar:1,temperature:0.1,humidity:1
attr Wetterstation group Umwelt
attr Wetterstation room Wetter
attr Wetterstation stateFormat WZ:inTemp_C°C inHumidity% \
Balkon:outTemp_C°C outHumidity%  \
Luftdruck: barometer_mbar mbar
attr Wetterstation subscribeReading_altimeter_mbar WS23XX/altimeter_mbar
attr Wetterstation subscribeReading_barometer_mbar WS23XX/barometer_mbar
attr Wetterstation subscribeReading_cloudbase_meter WS23XX/cloudbase_meter
attr Wetterstation subscribeReading_dewpoint_C WS23XX/dewpoint_C
attr Wetterstation subscribeReading_heatindex_C WS23XX/heatindex_C
attr Wetterstation subscribeReading_inDewpoint WS23XX/inDewpoint
attr Wetterstation subscribeReading_inHumidity WS23XX/inHumidity
attr Wetterstation subscribeReading_inTemp_C WS23XX/inTemp_C
attr Wetterstation subscribeReading_maxSolarRad WS23XX/maxSolarRad
attr Wetterstation subscribeReading_outHumidity WS23XX/outHumidity
attr Wetterstation subscribeReading_outTemp_C WS23XX/outTemp_C
attr Wetterstation subscribeReading_pressure_mbar WS23XX/pressure_mbar
attr Wetterstation userReadings msgOut {"G ".sprintf('%.1f',ReadingsVal('Wetterstation','outTemp_C',''))."°C ".sprintf('%.1f',ReadingsVal('Wetterstation','outHumidity',''))."%" },msgIn {"W ".sprintf('%.1f',ReadingsVal('Wetterstation','inTemp_C',''))."°C ".sprintf('%.1f',ReadingsVal('Wetterstation','inHumidity',''))."%" },humidity {sprintf('%.1f',ReadingsVal('Wetterstation','outHumidity','')) },temperature {sprintf('%.2f',ReadingsVal('Wetterstation','outTemp_C','')) }

setstate Wetterstation WZ:23.50°C 48.00% \
Balkon:9.50°C 63.00%  \
Luftdruck: 993.95 mbar
setstate Wetterstation 2020-03-01 11:09:00 altimeter_mbar 993.46
setstate Wetterstation 2020-03-01 11:09:00 barometer_mbar 993.95
setstate Wetterstation 2020-03-01 11:09:00 cloudbase_meter 945.38
setstate Wetterstation 2020-03-01 11:09:00 dewpoint_C 2.79
setstate Wetterstation 2020-03-01 11:09:00 heatindex_C 9.50
setstate Wetterstation 2020-03-01 11:09:49 humidity 63.0
setstate Wetterstation 2020-03-01 11:09:00 inHumidity 48.00
setstate Wetterstation 2020-03-01 11:09:00 inTemp_C 23.50
setstate Wetterstation 2020-03-01 11:09:49 msgIn W 23.5°C 48.0%
setstate Wetterstation 2020-03-01 11:09:49 msgOut G 9.5°C 63.0%
setstate Wetterstation 2020-03-01 11:09:00 outHumidity 63.00
setstate Wetterstation 2020-03-01 11:09:00 outTemp_C 9.50
setstate Wetterstation 2020-03-01 11:09:00 pressure_mbar 980.70
setstate Wetterstation 2020-03-01 11:09:49 temperature 9.50
setstate Wetterstation 2020-03-01 11:09:49 transmission-state subscription acknowledged


und das ist der Teil in der WeeWx Config:

[StdRESTful]
....... 
    [[MQTT]]
        server_url = mqtt://WS23XX:empty@localhost:1883/
        topic = WS23XX
        unit_system = METRIC
        obs_to_upload = none
        binding = loop
        [[[inputs]]]
            [[[[altimeter]]]]
                format = %.2f
            [[[[barometer]]]]
                format = %.2f
            [[[[cloudbase]]]]
                format = %.2f
            [[[[dewpoint]]]]
                format = %.2f
            [[[[heatindex]]]]
                format = %.2f
            [[[[humidex]]]]
                format = %.2f
            [[[[inDewpoint]]]]
                format = %.2f
            [[[[inHumidity]]]]
                format = %.2f
            [[[[inTemp]]]]
                format = %.2f
            [[[[maxSolarRad]]]]
                format = %.2f
            [[[[outHumidity]]]]
                format = %.2f
            [[[[outTemp]]]]
                format = %.2f
            [[[[pressure]]]]
                format = %.2f

nur noch in der WeeWx config im Block Engine/Service user.mqtt.MQTT eintragen:
[Engine]
   
    [[Services]]
        # This section specifies the services that should be run. They are
        # grouped by type, and the order of services within each group
        # determines the order in which the services will be run.
        prep_services = weewx.engine.StdTimeSynch
        data_services = ,
        process_services = weewx.engine.StdConvert, weewx.engine.StdCalibrate, weewx.engine.StdQC, weewx.wxservices.StdWXCalculate
        archive_services = weewx.engine.StdArchive
        restful_services = weewx.restx.StdStationRegistry, ......, user.mqtt.MQTT
        report_services = weewx.engine.StdPrint, weewx.engine.StdReport


Bitte behalte dabei im Hinterkopf das ich nur ein klicki klacki Friemler und Lötheinz bin der kaum weiß was er da tut. Aber es klappt so für mich. Wenn es Dir Hilft um so besser  ;)

Schönen Sonntag noch
regenbieger
FHEM und WEEWX auf Raspberry

maddinthebrain

Hallo,

ZitatBitte behalte dabei im Hinterkopf das ich nur ein klicki klacki Friemler und Lötheinz bin der kaum weiß was er da tut. Aber es klappt so für mich. Wenn es Dir Hilft um so besser
willkommen im Club. Ich bin auf froh, wenn ich zu nem Thema ein schönes Tutorial finde, das auch funktioniert.

Der MQTT report wird schon erzeugt und gepublished. Jetzt muss der Fhem nur subscribe und noch was damit machen.

Ich werde mich melden.

Erst mal danke! Schönen Abend noch.

Grüße Martin
Viele Grüße
Martin

Futro mit Proxmox und Debian: FHEM, Signalduino 433MHz & 868MHz, MAX!, WeeWX, FHEM2FHEM,
Raspi 4 mit ConBee mit deCONZ und Phoscon für ZigBee Aktoren und Sensoren

maddinthebrain

So, und funzt das auch. Das Attribut readingList mit folgendem Inhalt befüllen und dann geht's los:

weather/outTemp_C:.* temperature
weather/cloudbase_meter:.* cloudbase
weather/outHumidity:.* humidity
weather/pressure_mbar:.* pressure
weather/rain_cm:.* rainfall
weather/barometer_mbar:.* barometer
weather/dewpoint_C:.* dewpoint
weather/rainTotal:.* rainTotal
weather/heatindex_C:.* heatindex
weather/dayRain_cm:.* day_rain
weather/inDewpoint:.* in_dewpoint
weather/altimeter_mbar:.* altimeter
weather/appTemp_C:.* appTemp
weather/windGust_kph:.* wind_gust
weather/rain24_cm:.* rain_24h
weather/hourRain_cm:.* rain_1h
weather/windSpeed_kph:.* wind
weather/rainRate_cm_per_hour:.* rainrate
weather/windDir:.* winddir
weather/inHumidity:.* in_humidity

Die Werte sind nen für mich sinnvolle Auswahl.
Das war echt einfach, als was mit regex aus ner Text-Datei ziehen. Das ist eigentlich einen Wiki - Eintrag wert. Mal sehen, wenn mich mal die Muße habe, werde ich das tun. Nochmals Dankeschön für diesen tollen Hinweis!

Grüße Martin
Viele Grüße
Martin

Futro mit Proxmox und Debian: FHEM, Signalduino 433MHz & 868MHz, MAX!, WeeWX, FHEM2FHEM,
Raspi 4 mit ConBee mit deCONZ und Phoscon für ZigBee Aktoren und Sensoren

maddinthebrain

Noch eine Ergänzung:

ich habe in der weewx.conf das unit_system auf METRICWX gestellt, da mir das mit den cm und km/h nicht gefallen hat.

Es waren dann noch Änderungen am readingList nötig:

weather/outTemp_C:.* temperature
weather/cloudbase_meter:.* cloudbase
weather/outHumidity:.* humidity
weather/pressure_mbar:.* pressure
weather/rain_mm:.* rainfall
weather/barometer_mbar:.* barometer
weather/dewpoint_C:.* dewpoint
weather/rainTotal:.* rainTotal
weather/heatindex_C:.* heatindex
weather/dayRain_mm:.* day_rain
weather/inDewpoint:.* in_dewpoint
weather/altimeter_mbar:.* altimeter
weather/appTemp_C:.* appTemp
weather/windGust_mps:.* wind_gust
weather/rain24_mm:.* rain_24h
weather/hourRain_mm:.* rain_1h
weather/windSpeed_mps:.* wind
weather/rainRate_mm_per_hour:.* rainrate
weather/windDir:.* winddir
weather/inHumidity:.* in_humidity


Viele Grüße

Martin
Viele Grüße
Martin

Futro mit Proxmox und Debian: FHEM, Signalduino 433MHz & 868MHz, MAX!, WeeWX, FHEM2FHEM,
Raspi 4 mit ConBee mit deCONZ und Phoscon für ZigBee Aktoren und Sensoren

regenbieger

Super das ich Dir damit helfen konnte, METRICWX war für meine Werte nicht mehr erforderlich, ist aber ein guter Punkt. Das A und O ist die Formatierung in der weewx.config, wenn man da ein bischen Zeit investiert hat man nachher viel weniger Schaff.

mfg regenbieger
FHEM und WEEWX auf Raspberry

Beta-User

Zitat von: maddinthebrain am 01 März 2020, 23:29:18
Das ist eigentlich einen Wiki - Eintrag wert. Mal sehen, wenn mich mal die Muße habe, werde ich das tun.
Du kannst gerne eine RAW-Def hier einstellen, dann könnte man das in die attrTemplate-Liste für MQTT2_DEVICE übernehmen...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

maddinthebrain

Zitat von: Beta-User am 03 März 2020, 08:04:48
Du kannst gerne eine RAW-Def hier einstellen, dann könnte man das in die attrTemplate-Liste für MQTT2_DEVICE übernehmen...
Sehr gerne, was ist dafür nötig? Wie muss das aussehen?

Grüße Martin
Viele Grüße
Martin

Futro mit Proxmox und Debian: FHEM, Signalduino 433MHz & 868MHz, MAX!, WeeWX, FHEM2FHEM,
Raspi 4 mit ConBee mit deCONZ und Phoscon für ZigBee Aktoren und Sensoren

Beta-User

Benötigt wird erst mal nur und einfach der output von "list <device> -R", mehr Details: https://wiki.fhem.de/wiki/Import_von_Code_Snippets oder - wenn du das attrTemplate vollständig selbst entwickeln willst bzw. weitere Infos brauchst im MQTT-Bereich im "contributing..."-Thread.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

maddinthebrain

Zitat von: Beta-User am 03 März 2020, 11:10:10
Benötigt wird erst mal nur und einfach der output von "list <device> -R"
Das funzt bei mir nicht. Da wird nur wieder die Fhem Startseite angezeigt. Ohne -R kommt dieses Ergebnis:Internals:
   DEVICETOPIC Wetterstation
   FUUID      5e5b6f17-f33f-ab72-91e1-4c4d14c61476bf93
   IODev      MQTT2_FHEM_Server
   LASTInputDev MQTT2_FHEM_Server
   MQTT2_FHEM_Server_MSGCNT 30964
   MQTT2_FHEM_Server_TIME 2020-03-03 22:36:10
   MSGCNT     30964
   NAME       Wetterstation
   NR         314
   STATE      ???
   TYPE       MQTT2_DEVICE
   Helper:
     DBLOG:
       altimeter:
         logmysql:
           TIME       1583271370.3829
           VALUE      1008.0
       appTemp:
         logmysql:
           TIME       1583271370.39772
           VALUE      -2.80191936591
       barometer:
         logmysql:
           TIME       1583271370.29744
           VALUE      1010.2
       cloudbase:
         logmysql:
           TIME       1583271370.26192
           VALUE      762.5
       day_rain:
         logmysql:
           TIME       1583271370.36846
           VALUE      4.2
       dewpoint:
         logmysql:
           TIME       1583271370.31826
           VALUE      -4.0
       heatindex:
         logmysql:
           TIME       1583271370.3456
           VALUE      -0.3
       humidity:
         logmysql:
           TIME       1583271370.27236
           VALUE      76.0
       in_humidity:
         logmysql:
           TIME       1583271370.49591
           VALUE      43.0
       pressure:
         logmysql:
           TIME       1583271370.28271
           VALUE      972.9
       rainTotal:
         logmysql:
           TIME       1583271370.32862
           VALUE      36.03
       rain_1h:
         logmysql:
           TIME       1583271370.42703
           VALUE      0.0
       rain_24h:
         logmysql:
           TIME       1583271370.47071
           VALUE      4.2
       rainfall:
         logmysql:
           TIME       1583271370.46035
           VALUE      0.0
       rainrate:
         logmysql:
           TIME       1583271370.30792
           VALUE      0.0
       temperature:
         logmysql:
           TIME       1583271370.40822
           VALUE      -0.3
       wind:
         logmysql:
           TIME       1583271370.48541
           VALUE      0.0
       wind_gust:
         logmysql:
           TIME       1583271370.43738
           VALUE      0.0
       winddir:
         logmysql:
           TIME       1583268942.60196
           VALUE      270.0
   OLDREADINGS:
   READINGS:
     2020-03-03 22:36:10   altimeter       1008.0
     2020-03-03 22:36:10   appTemp         -2.80191936591
     2020-03-03 22:36:10   barometer       1010.2
     2020-03-03 22:36:10   cloudbase       762.5
     2020-03-03 22:36:10   day_rain        4.2
     2020-03-03 22:36:10   dewpoint        -4.0
     2020-03-03 22:36:10   heatindex       -0.3
     2020-03-03 22:36:10   humidity        76.0
     2020-03-03 22:36:10   in_humidity     43.0
     2020-03-03 22:36:10   pressure        972.9
     2020-03-03 22:36:10   rainTotal       36.03
     2020-03-03 22:36:10   rain_1h         0.0
     2020-03-03 22:36:10   rain_24h        4.2
     2020-03-03 22:36:10   rainfall        0.0
     2020-03-03 22:36:10   rainrate        0.0
     2020-03-03 22:36:10   temperature     -0.3
     2020-03-03 22:36:10   wind            0.0
     2020-03-03 22:36:10   wind_gust       0.0
     2020-03-03 21:55:42   winddir         270.0
Attributes:
   IODev      MQTT2_FHEM_Server
   readingList weather/outTemp_C:.* temperature
weather/cloudbase_meter:.* cloudbase
weather/outHumidity:.* humidity
weather/pressure_mbar:.* pressure
weather/rain_mm:.* rainfall
weather/barometer_mbar:.* barometer
weather/dewpoint_C:.* dewpoint
weather/rainTotal:.* rainTotal
weather/heatindex_C:.* heatindex
weather/dayRain_mm:.* day_rain
weather/inDewpoint:.* in_dewpoint
weather/altimeter_mbar:.* altimeter
weather/appTemp_C:.* appTemp
weather/windGust_mps:.* wind_gust
weather/rain24_mm:.* rain_24h
weather/hourRain_mm:.* rain_1h
weather/windSpeed_mps:.* wind
weather/rainRate_mm_per_hour:.* rainrate
weather/windDir:.* winddir
weather/inHumidity:.* in_humidity
   room       Wetter


So wie ich das verstanden habe, fehlt fürs Template noch etwas Formalkram. Wäre für Tipps dankbar.

Grüße Martin
Viele Grüße
Martin

Futro mit Proxmox und Debian: FHEM, Signalduino 433MHz & 868MHz, MAX!, WeeWX, FHEM2FHEM,
Raspi 4 mit ConBee mit deCONZ und Phoscon für ZigBee Aktoren und Sensoren

Beta-User

Sorry, hatte wohl auf die Schnelle die Reihenfolge vertauscht. "list -r <device>" wäre wohl zielführender gewesen...

Egal, vielleicht kannst/magst du das mal mit einer Kopie deines Devices testen (Anleitung steht im "contributing"-Thread im ersten Beitrag bzw. im wiki zu AttrTemplate):name:weewx_weather_station
filter:TYPE=MQTT2_DEVICE
desc:See source post: https://forum.fhem.de/index.php/topic,108815.msg1027867.html#msg1027867 for details. For setting up weewx for MQTT use see https://github.com/weewx/weewx/wiki/mqtt
order:X_20
par:BASE_ID;BASE_ID typically is weather;{ AttrVal("DEVICE","readingList","") =~ m,(weather)[/][^/]+[/].*:, ? $1 : undef }
par:ICON;ICON as set, defaults to weather_station;{ AttrVal("DEVICE","icon","weather_station") }
attr DEVICE icon ICON
attr DEVICE event-on-change-reading .*
attr DEVICE readingList BASE_ID/outTemp_C:.* temperature\
  BASE_ID/cloudbase_meter:.* cloudbase\
  BASE_ID/outHumidity:.* humidity\
  BASE_ID/pressure_mbar:.* pressure\
  BASE_ID/rain_mm:.* rainfall\
  BASE_ID/barometer_mbar:.* barometer\
  BASE_ID/dewpoint_C:.* dewpoint\
  BASE_ID/rainTotal:.* rainTotal\
  BASE_ID/heatindex_C:.* heatindex\
  BASE_ID/dayRain_mm:.* day_rain\
  BASE_ID/inDewpoint:.* in_dewpoint\
  BASE_ID/altimeter_mbar:.* altimeter\
  BASE_ID/appTemp_C:.* appTemp\
  BASE_ID/windGust_mps:.* wind_gust\
  BASE_ID/rain24_mm:.* rain_24h\
  BASE_ID/hourRain_mm:.* rain_1h\
  BASE_ID/windSpeed_mps:.* wind\
  BASE_ID/rainRate_mm_per_hour:.* rainrate\
  BASE_ID/windDir:.* winddir\
  BASE_ID/inHumidity:.* in_humidity
attr DEVICE stateFormat T: temperature°C, H: humidity%rH, P: barometer hPa
deletereading -q DEVICE (?!associatedWith).*
attr DEVICE model weewx_weather_station


Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

maddinthebrain

Ich hatte es über den beschriebenen Weg versucht, aber aus irgendeinem Grund taucht weewx_weather_station nicht in der attrTemplate Liste auf. Ich habe deinen Code in weewx.template File kopiert und im Ordner wo die anderen Templates sind abgelegt. { AttrTemplate_Initialize() } ausgeführt. Aber es taucht nicht auf. Fhem Neustart bringt auch nix...

Was passt da nicht?

Viele Grüße
Martin

Futro mit Proxmox und Debian: FHEM, Signalduino 433MHz & 868MHz, MAX!, WeeWX, FHEM2FHEM,
Raspi 4 mit ConBee mit deCONZ und Phoscon für ZigBee Aktoren und Sensoren

Beta-User

Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files