Hi,
Not a software engineer, first time with Python, but I did manage to struggle through with writing a parser for sdr.py for an inexpensive Temp/Humidity sensor sold at Amazon under the name BALDR Wireless Weather Station - Remote Sensor, Shelf Standing or Wall Hanging, Battery Powered for Home Weather Stations. This sensor identifies as a Bresser-3CH, there was no parser defined for it, so I managed to cobble one together. I am using it with weewx, and RTL.SDR unit. I thought I would post it here if on the next update for SDR.PY someone that's an expert can review and include if they deem as decent. One strange thing with this sensor is that it can change unit's metric to US, on a battery change so I left the choices as commented out, so one can choose the appropriate units. Maybe I missed something?
any rate here it is
class BresserTH(Packet):
# 2026-13-1 : Bresser Temperature and Humidity Sensor
#{"time" : "2026-01-13 16:08:56", "model" : "Bresser-3CH", "id" : 41, "channel" : 1, "battery_ok" : 1, "temperature_F" : 64.400, "humidity" : 38, "mic" : "CHECKSUM"}\n', '{"time" : "2026-01-13 16:08:57", "model" : "Bresser-3CH", "id" : 41, "channel" : 1, "battery_ok" : 1, "temperature_F" : 64.400, "humidity" : 38, "mic" : "CHECKSUM"}\n']
IDENTIFIER = "Bresser-3CH"
@staticmethod
def parse_json(obj):
channel = obj.get('channel')
device_id = obj.get('id')
sensor_id = f"{channel}:{device_id}" if channel else str(device_id) # Prefix channel to device ID
pkt = dict()
pkt['dateTime'] = Packet.parse_time(obj.get('time'))
pkt['usUnits'] = weewx.US
pkt['usUnits'] = weewx.METRIC
pkt['temperature'] = Packet.get_float(obj, 'temperature_F')
pkt['temperature'] = Packet.get_float(obj, 'temperature_C')
pkt['humidity'] = Packet.get_float(obj, 'humidity')
pkt['battery'] = Packet.get_battery(obj)
pkt['channel'] = obj.get('channel') # Optional: Keep if needed for logging, but not required for mapping
pkt = Packet.add_identifiers(pkt, sensor_id, BresserTH.__name__)
return pkt
A line from my config file to select the appropriate logical channel
extraTemp1 = temperature.1:41.BresserTH
extraTemp2 = temperature.2:125.BresserTH
extraHumid1 = humidity.1:41.BresserTH
extraHumid2 = humidity.2:125.BresserTH
Happy Weather!
Hi,
Not a software engineer, first time with Python, but I did manage to struggle through with writing a parser for sdr.py for an inexpensive Temp/Humidity sensor sold at Amazon under the name BALDR Wireless Weather Station - Remote Sensor, Shelf Standing or Wall Hanging, Battery Powered for Home Weather Stations. This sensor identifies as a Bresser-3CH, there was no parser defined for it, so I managed to cobble one together. I am using it with weewx, and RTL.SDR unit. I thought I would post it here if on the next update for SDR.PY someone that's an expert can review and include if they deem as decent. One strange thing with this sensor is that it can change unit's metric to US, on a battery change so I left the choices as commented out, so one can choose the appropriate units. Maybe I missed something?
any rate here it is
class BresserTH(Packet):
# 2026-13-1 : Bresser Temperature and Humidity Sensor
#{"time" : "2026-01-13 16:08:56", "model" : "Bresser-3CH", "id" : 41, "channel" : 1, "battery_ok" : 1, "temperature_F" : 64.400, "humidity" : 38, "mic" : "CHECKSUM"}\n', '{"time" : "2026-01-13 16:08:57", "model" : "Bresser-3CH", "id" : 41, "channel" : 1, "battery_ok" : 1, "temperature_F" : 64.400, "humidity" : 38, "mic" : "CHECKSUM"}\n']
pkt['usUnits'] = weewx.US
pkt['temperature'] = Packet.get_float(obj, 'temperature_F')
A line from my config file to select the appropriate logical channel
extraTemp1 = temperature.1:41.BresserTH
extraTemp2 = temperature.2:125.BresserTH
extraHumid1 = humidity.1:41.BresserTH
extraHumid2 = humidity.2:125.BresserTH
Happy Weather!