Bresser 5in1 in docker on Synology

176 views
Skip to first unread message

Kris_bresser

unread,
Jul 31, 2024, 4:49:09 AM7/31/24
to weewx-user
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] 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!

Kris_bresser

unread,
Jul 31, 2024, 3:09:44 PM7/31/24
to weewx-user
And there seems to be a second issue, look at the logs:

Jul 31 07:47:18 weewx[19] DEBUG user.interceptor: GET: ID=XXXX&PASSWORD=XXXX&action=updateraww&realtime=1&rtfreq=5&dateutc=now&baromin=30.06&tempf=68.1&dewptf=66.3&humidity=94&windspeedmph=0&windgustmph=0&winddir=22&rainin=0.01&dailyrainin=0.01&indoortempf=80.4&indoorhumidity=60

Jul 31 07:47:18 weewx[19] DEBUG user.interceptor: raw data: ID=XXXX&PASSWORD=XXX&action=updateraww&realtime=1&rtfreq=5&dateutc=now&baromin=30.06&tempf=68.1&dewptf=66.3&humidity=94&windspeedmph=0&windgustmph=0&winddir=22&rainin=0.01&dailyrainin=0.01&indoortempf=80.4&indoorhumidity=60

Jul 31 07:47:18 weewx[19] DEBUG user.interceptor: using rain_total 0.01 from dailyrainin

Jul 31 07:47:18 weewx[19] DEBUG user.interceptor: ignored parameter ID=XXXX

Jul 31 07:47:18 weewx[19] DEBUG user.interceptor: ignored parameter PASSWORD=XXXXXXXX

Jul 31 07:47:18 weewx[19] DEBUG user.interceptor: ignored parameter action=updateraww

Jul 31 07:47:18 weewx[19] DEBUG user.interceptor: ignored parameter realtime=1

Jul 31 07:47:18 weewx[19] DEBUG user.interceptor: ignored parameter rtfreq=5

Jul 31 07:47:18 weewx[19] INFO user.interceptor: unrecognized parameter rainin=0.01

Jul 31 07:47:18 weewx[19] DEBUG user.interceptor: raw packet: {'dateTime': 1722412038, 'usUnits': 1, 'rain_total': 0.01, 'barometer': 30.06, 'temperature_out': 68.1, 'dewpoint': 66.3, 'humidity_out': 94.0, 'wind_speed': 0.0, 'wind_gust': 0.0, 'wind_dir': 22.0, 'temperature_in': 80.4, 'humidity_in': 60.0, 'rain': 0.0}

Jul 31 07:47:18 weewx[19] DEBUG user.interceptor: mapped packet: {'dateTime': 1722412038, 'usUnits': 1, 'barometer': 30.06, 'outHumidity': 94.0, 'inHumidity': 60.0, 'outTemp': 68.1, 'inTemp': 80.4, 'windSpeed': 0.0, 'windGust': 0.0, 'windDir': 22.0, 'dewpoint': 66.3, 'rain': 0.0}

Jul 31 07:47:18 weewx[19] DEBUG user.mqtt: data: {'dateTime': '1722412038.0', 'barometer_mbar': '1017.9482805402474', 'outHumidity': '94.0', 'inHumidity': '60.0', 'outTemp_C': '20.055555555555554', 'inTemp_C': '26.888888888888893', 'windSpeed_kph': '0.0', 'windGust_kph': '0.0', 'dewpoint_C': '19.055555555555554', 'dayRain_mm': '0.0', 'appTemp_C': '23.31513352227849', 'cloudbase_meter': '165.3833616182381', 'heatindex_C': '20.571111111111115', 'humidex_C': '26.866234390281974', 'inDewpoint_C': '18.455042874306713', 'rainRate_mm_per_hour': '0.0', 'windchill_C': '20.055555555555554', 'usUnits': '16.0'}

Jul 31 07:47:18 weewx[19] 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.060&dateutc=2024-07-31%2007%3A47%3A18&dewptf=66.3&humidity=094&tempf=68.1&realtime=1&rtfreq=2.5&windgustmph=0.0&windspeedmph=0.0

Jul 31 07:47:18 weewx[19] INFO weewx.restx: MQTT: Published record 2024-07-31 07:47:18 UTC (1722412038)

Jul 31 07:47:18 weewx[19] 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.060&dateutc=2024-07-31%2007%3A47%3A18&dewptf=66.3&humidity=094&tempf=68.1&realtime=1&rtfreq=2.5&windgustmph=0.0&windspeedmph=0.0'

Jul 31 07:47:18 weewx[19] INFO weewx.restx: Wunderground-RF: Published record 2024-07-31 07:47:18 UTC (1722412038)


Rain_total = 0.01 (inch), which stems from dailyrainin, but this is not saved in dayRain or rain, as it is 0.0. 

Thank you for your help.

Kris

Kris_bresser

unread,
Aug 5, 2024, 3:06:50 AM8/5/24
to weewx-user
Hi all

everything is solved, I created my own docker, based on https://github.com/Daveiano/weewx-wdc-interceptor-docker.
Now I am running v5.1.0 and have no issues anymore. 

Many kudos to Daveiano for creating this simple github. This helped me to get the 5.1.0 working on my Synology.

Kris

On Wednesday, July 31, 2024 at 10:49:09 AM UTC+2 Kris_bresser wrote:
Reply all
Reply to author
Forward
0 new messages