Topher Webb – LTUAE

WeeWx and ECOWITT WH2910 7-in-1 Weather Station

In the past I have been playing around with SwitchDoc Labs weather gear and while it was running, it was great. When it wasnt, it was a pain to say the least.

Fast forward 2 years and my SDL gear is boxed up and gathering dust. I started looking at getting a new store-bought weather station and looking at getting some data collected again.

I was looking at the solar and wifi stations and decided on the Ambient Weather WS-2902 which had a knock off called the Ecowitt WH-2910

Setup was pretty simple. Use WSVIEW app from the google play store (I have a Samsung phone) and connect to the inside display wifi.

After I added my WUnderground and Cloud Weather API keys everything was running. I still needed to calibrate the barometer, but I was more interested with the station sending data at this stage.

I have 2x Helios 4 NAS drives and one of them runs my ADS-B plane tracking software, so, the other one, I decided to install WeeWX again and see if I can parse data from WUnderground to it.

This proved to be more painful than I remember from using the SDL gear, and I started to look around at blogs, forums or anything else where people have the Ecowitt 2910.

What I found was something new for me… using a SDR (software defined radio) to niff out the data packets from the outside unit. A few git clone commands and I found the data without too much issue. The trouble came when I was trying to configure the CONF file.

I had a bunch of extensions installed and they were all conflicting, somehow, with each other. After uninstalling WeeWx and reinstalling it, it found my old config file and was still using that.. so I had to wipe anything WeeWx and start again.

Reinstalling WeeWx worked and I could upload data to my website ( http://www.weather2880.com )

As long as I was running from command line everything was working, however it was now not allowing me to run WeeWx as a service. How to overcome this will be included in an update to this, however I think I will wipe the NAS operating system and start completely from scratch and see how things go.

How I did it :

I pretty much just followed instructions from Tom Keffer and below is a list for copy & paste purposes

sudo apt-get install cmake libusb-1.0-0-dev build-essential autoconf libtool pkg-config

Install rtl-sdr

git clone git://git.osmocom.org/rtl-sdr.git
cd rtl-sdr
mkdir build
cd build
cmake -DINSTALL_UDEV_RULES=ON ..
make
sudo make install
sudo ldconfig

Install rtl_433

git clone https://github.com/merbanan/rtl_433
cd rtl_433
mkdir build
cd build
cmake ..
make
sudo make install
# install weeWX
wget -qO - http://weewx.com/keys.html | sudo apt-key add -
wget -qO - http://weewx.com/apt/weewx.list | sudo tee /etc/apt/sources.list.d/weewx.list
sudo apt-get update
sudo apt-get install weewx

# shut down weeWX
sudo /etc/init.d/weewx stop

# install weewx-sdr extension and enable the driver
git clone https://github.com/matthewwall/weewx-sdr.git
sudo wee_extension --install weewx-sdr
sudo wee_config --reconfigure
# see what devices are broadcasting data - let this run for awhile
sudo rtl_433 -G

# or run it like this to see the output in JSON format
sudo rtl_433 -M utc -F json -G
# see how the sensor data from rtl_433 are mapped to fully-qualified names
sudo PYTHONPATH=/usr/share/weewx python /usr/share/weewx/user/sdr.py --cmd="rtl_433 -M utc -F json -G"
parsed: {'humidity.3.FOWH65BPacket': 15.0, 'battery.3.FOWH65BPacket': 0, 'rain_total.3.FOWH65BPacket': 1.524, 'dateTime': 1550372806, 'temperature.3.FOWH65BPacket': 37.2, 'wind_speed.3.FOWH65BPacket': 2.168, 'light.3.FOWH65BPacket': 120357.0, 'uv.3.FOWH65BPacket': 3774.0, 'wind_gust.3.FOWH65BPacket': 3.06, 'wind_dir.3.FOWH65BPacket': 287.0, 'uv_index.3.FOWH65BPacket': 9.0, 'usUnits': 17}
parsed: {'temperature.121.FOWH2Packet': 28.4, 'usUnits': 16, 'dateTime': 1550372807}
out: ['{"time" : "2019-02-17 03:07:02", "model" : "Fine Offset WH65B", "id" : 3, "temperature_C" : 37.200, "humidity" : 15, "wind_dir_deg" : 281, "wind_speed_ms" : 1.976, "gust_speed_ms" : 2.550, "rainfall_mm" : 1.524, "uv" : 3763, "uvi" : 9, "light_lux" : 120202.000, "battery" : "OK", "mic" : "CRC"}\n']
parsed: {'humidity.3.FOWH65BPacket': 15.0, 'battery.3.FOWH65BPacket': 0, 'rain_total.3.FOWH65BPacket': 1.524, 'dateTime': 1550372822, 'temperature.3.FOWH65BPacket': 37.2, 'wind_speed.3.FOWH65BPacket': 1.976, 'light.3.FOWH65BPacket': 120202.0, 'uv.3.FOWH65BPacket': 3763.0, 'wind_gust.3.FOWH65BPacket': 2.55, 'wind_dir.3.FOWH65BPacket': 281.0, 'uv_index.3.FOWH65BPacket': 9.0, 'usUnits': 17}

[SDR]
# This section is for the software-defined radio driver.

[[sensor_map]]
    outTemp = temperature.3.FOWH65BPacket
    outHumidity = humidity.3.FOWH65BPacket
    extraTemp1 = temperature.75.FOWH2Packet
    extraTemp2 = temperature.121.FOWH2Packet
    windDir = wind_dir.3.FOWH65BPacket
    windSpeed = wind_speed.3.FOWH65BPacket
    windGust = wind_gust.3.FOWH65BPacket
    rain = rain_total.3.FOWH65BPacket
    UV = uv.3.FOWH65BPacket
    radiation = light.3.FOWH65BPacket
    outTempBatteryStatus = battery.3.FOWH65BPacket

I still have an issue with RAIN data on this. I think that rain = rain_total.3.FOWH65BPacket is daily rain, or month rain as its recording as latest rain and since I dont get much rain out here, this needs to be investigated as to the correct data code. Once I have everything running smoothly as a service, I will run water into the rain bucket and check the data packets that are being transmitted during that time to grab the correct code as not everything is being transmitted every few seconds.

# run weewx directly to verify the data collection (ctrl-c to stop)
weewxd /etc/weewx/weewx.conf
# run weewx as a daemon and forget about it!
sudo /etc/init.d/weewx start

The indoor unit has the Barometer, Indoor Temp, Indoor Hum and does not transmit. So, in order to post the barometer stats, im going to have to dust off the old SDL gear and rebuild that. I had an issue with the LoRa boards, which transmit data on 433Mhz funny enough, so sent them away. I really wish I had them right now. I may look around for how I can overcome this and then add an edit.

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: