I should also mention that under rare circumstances rtl_433 doesn't return a value for light_lux. This results in Packet.get_float(obj, 'light_lux') not being a float. This causes the conversion to watts per square meter to fail and weewx dies. This is in sdr.py in the weewx-sdr driver. I'm testing a fix for this, but since it occurs so rarely, I won't be confident of it for a couple of weeks at least.
There's been some movement on this problem. First, the weewx-sdr author made a change to the code that I suggested for the WH65B section. The WH65B returns a light value in lux. The WS-2902A console then converts that value to W/M^2 which is a radiation value. I had chosen to do this conversion in the weewx-sdr driver. He rightly determined that the driver should return the light value in lux and weewx should do any required conversions.
Technically, there is no way to convert from light in lux to radiation in W/M^2. But since the console does this, we need to get this to happen in weewx. Fine Offset has said that the conversion is
radiation(W/m2) = light(lux) / 126
But using that didn't agree with what the console was reading. Another common formula is
radiation(W/m2) = light(lux) * 0.0079
But that didn't quite agree with the console either. So, after some calculation I empirically determined that formula to be
radiation(W/m2) = light(lux) * 0.007893
This closely agrees with what my console shows.
So, to get the current weewx-sdr driver to work with weewx, a couple of changes need to made to weewx.conf. Here is the relevant portions of my weewx.conf.
[SDR]
# This section is for the software-defined radio driver.
# The driver to use
driver = user.sdr
path = /usr/local/bin
cmd = rtl_433 -q -U -F json -p 39.741 -R 78 -f 914980000
[[sensor_map]]
outTemp = temperature.89.FOWH65BPacket
outHumidity = humidity.89.FOWH65BPacket
windDir = wind_dir.89.FOWH65BPacket
windSpeed = wind_speed.89.FOWH65BPacket
windGust = wind_gust.89.FOWH65BPacket
rain_total = rain_total.89.FOWH65BPacket
# uv.89.FOWH65BPacket
UV = uv_index.89.FOWH65BPacket
light = light.89.FOWH65BPacket
outTempBatteryStatus = battery.89.FOWH65BPacket
inTemp = temperature.21.FOWH25Packet
inHumidity = humidity.21.FOWH25Packet
pressure = pressure.21.FOWH25Packet
inTempBatteryStatus = battery.21.FOWH25Packet
[[deltas]]
rain = rain_total
[StdCalibrate]
[[Corrections]]
# For each type, an arbitrary calibration expression can be given.
# It should be in the units defined in the StdConvert section.
# Example:
foo = foo + 0.2
radiation = light * 0.007893 if light is not None else None
There are two changes. The first one is to assign light.89.FOWH65BPacket to light instead of radiation. As before, the "89" is my ID. Yours will be different. The second change is to calculate radiation from light in the [StdCalibrate] portion of weewx.conf. There's also a check to make sure that light does actually have a value. This is necessary because the WH65B occasionally doesn't return a value for light. Again, these changes require the latest version of sdr.py in the weewx-sdr driver. I'm running this configuration so I should see any problems with it. But I don't anticipate any at this point.