Hi all
I am enjoying a lot my Bresser Wifi Pro 5in1 weather station and I am
pushing the data into my home assistant via the WeeWX docker. I first
explain a bit how I did it, as it may help users with similar hardware, but
at the end, I do have a question.
These are the things I did to get it working:
My weather station unfortunately did not allow for a direct connection to a
home server, but it does allow for an upload to Wunderground. I created an
account, and filled out the details and from then onwards, my station is
sending data to Wunderground. But, I still wanted to capture the traffic
for using in my home assistant. That's why in my ASUS router with Merlin
firmware, I created some IP-tables to redirect the traffic to Wunderground
to my WeeWx server:
iptables -t nat -A PREROUTING -s bresserIP -p tcp --dport 80 -j DNAT
--to-destination weewx-serverIP:3010
iptables -t nat -A POSTROUTING -j MASQUERADE
Now all packets will be redirected to port 3010.
Then I installed a docker container on my synology via docker-compose. The
docker is from felddy, weewx. This combines MQTT, weewx and the
interceptor, as I am redirecting traffic.
--------------------------
version: "3.8"
services:
weewx:
container_name: weewx_bresser
image: felddy/weewx
init: true
restart: "always"
privileged: true
network_mode: host
ports:
- 8102:80
volumes:
- /volume1/docker/weewx/:/data
- /volume1/docker/weewx/html/:/home/weewx/public_html/
environment:
- timezone=Europe/Brussels
- WEEWX_UID=weewx
- WEEWX_GID=dialout
-------------------
This docker requires in my data folder of course the configuration file. At
first install, this file is created, then, you can fill it out. I copy here
the most important parts of my weewx.conf.
##############################################################################
# This section is for general configuration information.
# Set to 1 for extra debug info, otherwise comment it out or set to zero
debug = 2
# Root directory of the weewx data file hierarchy for this station
WEEWX_ROOT = /home/weewx
# Whether to log successful operations. May get overridden below.
log_success = True
# Whether to log unsuccessful operations. May get overridden below.
log_failure = True
# Do not modify this. It is used when installing and updating weewx.
version = 4.10.2
##############################################################################
# This section is for information about the station.
[Station]
# Description of the station location
location = "Thuis"
# Latitude in decimal degrees. Negative for southern hemisphere
latitude = fill_in_your_latitude
# Longitude in decimal degrees. Negative for western hemisphere.
longitude = fill_in_your_longitude
# Altitude of the station, with the unit it is in. This is used only
# if the hardware cannot supply a value.
altitude = 41, meter # Choose 'foot' or 'meter' for unit
# Set to type of station hardware. There must be a corresponding stanza
# in this file, which includes a value for the 'driver' option.
station_type = Interceptor
# If you have a website, you may specify an URL. This is required if you
# intend to register your station.
#station_url = http://www.example.com
# The start of the rain year (1=January; 10=October, etc.). This is
# downloaded from the station if the hardware supports it.
rain_year_start = 1
# Start of week (0=Monday, 6=Sunday)
week_start = 0
##############################################################################
[Interceptor]
# This section is for the network traffic interceptor driver.
# The driver to use:
driver = user.interceptor
device_type = wu-client #### this is used for all undefined clients
which just upload to Wunderground.
mode = listen
address = my_weewx_server_ip_address
port = 3010
##################################################
# This section is for uploading data to Internet sites
[StdRESTful]
# Uncomment and change to override logging for uploading services.
# log_success = True
# log_failure = True
I put all uploads on false, except for Weather Underground.
[[Wunderground]]
# This section is for configuring posts to the Weather Underground.
# If you wish to post to the Weather Underground, set the option
'enable' to true, then
# specify a station (e.g., 'KORHOODR3') and password. To guard
against parsing errors, put
# the password in quotes.
enable = true
station = 'station_name'
password = 'myKEY'
# Set the following to True to have weewx use the WU "Rapidfire"
# protocol. Not all hardware can support it. See the User's Guide.
rapidfire = true
[[MQTT]]
server_url = mqtt://my_mqtt_server_IP:1883/
topic = weather
retain = false
unit_system = METRIC
binding = loop
[[[inputs]]]
[[[[rain]]]]
name = dayRain_mm
units = mm
[[[[rainRate]]]]
name = rainRate_mm_per_hour
units = mm_per_hour
So far, so good. Then, I copy here an excerpt of the logs of the docker:
########################
Jul 31 06:33:42 weewx[18] DEBUG user.interceptor: GET:
ID=XXX&PASSWORD=XXXX&action=updateraww&realtime=1&rtfreq=5&dateutc=now&baromin=30.03&tempf=69.8&dewptf=65.3&humidity=86&windspeedmph=0&windgustmph=0&winddir=22&rainin=0.0&dailyrainin=0.0&indoortempf=80.6&indoorhumidity=56
Jul 31 06:33:42 weewx[18] DEBUG user.interceptor: raw data:
ID=XXX&PASSWORD=zUTmwZDQ&action=updateraww&realtime=1&rtfreq=5&dateutc=now&baromin=30.03&tempf=69.8&dewptf=65.3&humidity=86&windspeedmph=0&windgustmph=0&winddir=22&rainin=0.0&dailyrainin=0.0&indoortempf=80.6&indoorhumidity=56
Jul 31 06:33:42 weewx[18] DEBUG user.interceptor: using rain_total 0.0 from
dailyrainin
Jul 31 06:33:42 weewx[18] DEBUG user.interceptor: ignored parameter ID=XXX
Jul 31 06:33:42 weewx[18] DEBUG user.interceptor: ignored parameter
PASSWORD=XXXXXXXX
Jul 31 06:33:42 weewx[18] DEBUG user.interceptor: ignored parameter
action=updateraww
Jul 31 06:33:42 weewx[18] DEBUG user.interceptor: ignored parameter
realtime=1
Jul 31 06:33:42 weewx[18] DEBUG user.interceptor: ignored parameter rtfreq=5
Jul 31 06:33:42 weewx[18] INFO user.interceptor: unrecognized parameter
rainin=0.0
Jul 31 06:33:42 weewx[18] DEBUG user.interceptor: raw packet: {'dateTime':
1722407622, 'usUnits': 1, 'rain_total': 0.0, 'barometer': 30.03,
'temperature_out': 69.8, 'dewpoint': 65.3, 'humidity_out': 86.0,
'wind_speed': 0.0, 'wind_gust': 0.0, 'wind_dir': 22.0, 'temperature_in':
80.6, 'humidity_in': 56.0, 'rain': 0.0}
Jul 31 06:33:42 weewx[18] DEBUG user.interceptor: mapped packet:
{'dateTime': 1722407622, 'usUnits': 1, 'barometer': 30.03, 'outHumidity':
86.0, 'inHumidity': 56.0, 'outTemp': 69.8, 'inTemp': 80.6, 'windSpeed':
0.0, 'windGust': 0.0, 'windDir': 22.0, 'dewpoint': 65.3, 'rain': 0.0}
Jul 31 06:33:42 weewx[18] DEBUG user.mqtt: data: {'dateTime':
'1722407622.0', 'barometer_mbar': '1016.9323640926025', 'outHumidity':
'86.0', 'inHumidity': '56.0', 'outTemp_C': '20.999999999999996',
'inTemp_C': '26.999999999999996', 'windSpeed_kph': '0.0', 'windGust_kph':
'0.0', 'dewpoint_C': '18.499999999999996', 'dayRain_mm': '0.0',
'appTemp_C': '24.039355932473097', 'cloudbase_meter': '344.7133813089929',
'heatindex_C': '21.401111111111113', 'humidex_C': '27.428644270883083',
'inDewpoint_C': '17.46023916206098', 'rainRate_mm_per_hour': '0.0',
'windchill_C': '20.999999999999996', 'usUnits': '16.0'}
Jul 31 06:33:42 weewx[18] DEBUG weewx.restx: Ambient: url:
https://rtupdate.wunderground.com/weatherstation/updateweatherstation.php?action=updateraw&ID=XXX&PASSWORD=XXX&softwaretype=weewx-4.10.2&baromin=30.030&dateutc=2024-07-31%2006%3A33%3A42&dewptf=65.3&humidity=086&tempf=69.8&realtime=1&rtfreq=2.5&windgustmph=0.0&windspeedmph=0.0
Jul 31 06:33:42 weewx[18] DEBUG weewx.restx: Wunderground-RF url:
'https://rtupdate.wunderground.com/weatherstation/updateweatherstation.php?action=updateraw&ID=XXX&PASSWORD=XXX&softwaretype=weewx-4.10.2&baromin=30.030&dateutc=2024-07-31%2006%3A33%3A42&dewptf=65.3&humidity=086&tempf=69.8&realtime=1&rtfreq=2.5&windgustmph=0.0&windspeedmph=0.0'
Jul 31 06:33:42 weewx[18] INFO weewx.restx: MQTT: Published record
2024-07-31 06:33:42 UTC (1722407622)
Jul 31 06:33:42 weewx[18] INFO weewx.restx: Wunderground-RF: Published
record 2024-07-31 06:33:42 UTC (1722407622)
########################
So, in fact it all works nicely. There is a few (minor) questions I have:
- the docker is ignoring rainin and calculating the rain from the
dailyrainin. I guess this works, but I do not understand why he is not
sending rain data to Wunderground. In fact, as we are capturing directly a
stream to rtupdate, why can he not just forward this stream. The rain data,
originated from my weather station is in.
- why does the docker upload twice, first as Ambient, then as
Wunderground-RF?
- what if we want to use a newer version of WeeWx, and the Felddy container
is not updated?
- Is it possible to combine the Felddy container with other containers, or
options, such as skins?
- I think that there is a newer version perhaps of the WeeWx-Interceptor.
That's something I would like to try as well.
*I hope first of all that this may help people getting started with this. I
am very happy and grateful that these dockers exist and now, via MQTT, this
data is sent to my home assistant! *But, as I like to be up-to-date, I also
hope there are options to get updated packages, or include the reports and
an own website via the containers.
Thanks a lot!
--
You received this message because you are subscribed to the Google Groups
"weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/weewx-user/7cdef1bd-f370-4f37-87c1-3a9c7a7bc9f4n%40googlegroups.com.