This write-up could easily be entitled The Rise and the Inevitable Demise of my FT0310 weather station, but to appease the Gods of SEO, I’ll focus on the weewx angle.
The Decline
As you may have guessed, my FT0310 weather station written up here has bitten the dust after a little over two years in operation. A few weeks ago the console stopped displaying illumination and UV data because the external sensor unit began sending what I assume is error code data (insanely high lux and UV values). A cursory check showed water droplets on the inside of the light sensor hatch, so I assumed that something wasn’t waterproofed sufficiently.
Interestingly, after doing a post-mortem, I found a family of spiders happily living inside my sensor unit. Although there was some moisture on the UV sensor board, there is no evident damage. Visual inspection provided no clues as to why both the UV and the temperature/humidity boards have failed, but the investigation is still ongoing.
I also correctly assumed the possibility of a cascade failure and immediately did some light research and ordered a replacement/backup unit, namely the VEVOR 7-in-1 Wi-Fi Weather Station, YT60234, produced by Youtong.
A few weeks later the console stopped displaying humidity and temperature data, thus expediting the replacement.
This part was fairly easy, I just reused my Weathercloud and Weather Underground station ID’s on the new station and got it running in less than half an hour, since its firmware and WIFI support rely on a similar backend.
YT60234 Vevor 7-in-1 weather station in Weewx
To get its data into Weewx, I had to do the following:
- Change the RTL_433 run command in
sdr.py
plugin to listen on the correct frequency, which is 868.3 MHz, thus something along the lines ofrtl_433 -M utc -F json -f 868.3M
. This is the frequency you’d also use when troubleshooting. - Add a new entry for the station in
sdr.py
. Please note that this station provides wind speed in km/h so convert values accordingly if necessary. I’ve included a function to convert km/h to m/s in case you need it.class Vevor7in1Packet(Packet):
# {"time" : "2024-11-13 13:27:59", "model" : "Vevor-7in1", "id" : 52266, "channel" : 0, "battery_ok" : 1, "temperature_C" : 5.400, "humidity" : 76, "wind_avg_km_h" : 0.700, "wind_max_km_h" : 2.667, "wind_dir_deg" : 87, "rain_mm" : 12.116, "uv" : 0, "light_lux" : 7213, "mic" : "CHECKSUM"}'
IDENTIFIER = "Vevor-7in1"
@staticmethod
def parse_json(obj):
pkt = dict()
pkt['dateTime'] = Packet.parse_time(obj.get('time'))
pkt['usUnits'] = weewx.METRICWX
station_id = Packet.get_int(obj, 'id')
pkt['battery'] = Packet.get_int(obj, 'battery_ok')
pkt['temperature'] = Packet.get_float(obj, 'temperature_C')
pkt['humidity'] = Packet.get_float(obj, 'humidity')
pkt['wind_gust'] = kmh_to_ms(Packet.get_float(obj, 'wind_max_km_h'))
pkt['wind_speed'] = kmh_to_ms(Packet.get_float(obj, 'wind_avg_km_h'))
pkt['wind_dir'] = Packet.get_float(obj, 'wind_dir_deg')
pkt['total_rain'] = Packet.get_float(obj, 'rain_mm')
pkt['light_lux'] = Packet.get_int(obj, 'light_lux')
pkt['uv'] = Packet.get_float(obj, 'uv')
pkt = Packet.add_identifiers(pkt, station_id, Vevor7in1Packet.__name__)
return pkt
def kmh_to_ms(v):
if v is not None:
v /= 3.6
return v - map the
sdr.py
data inweewx.conf
(52266 is my unique station ID, yours will probably be different).[[sensor_map]]
windDir = wind_dir.52266.Vevor7in1Packet
windSpeed = wind_speed.52266.Vevor7in1Packet
windGust = wind_gust.52266.Vevor7in1Packet
outTemp = temperature.52266.Vevor7in1Packet
outHumidity = humidity.52266.Vevor7in1Packet
rain_total = total_rain.52266.Vevor7in1Packet
UV = uv.52266.Vevor7in1Packet
luminosity = light_lux.52266.Vevor7in1Packet
If any of the above instructions are unclear, make sure to check out my original post, because it contains more information.