Catch bad OwnTrack data, add WH51 soil sensor

This commit is contained in:
2026-06-07 00:04:19 +00:00
parent cd547a15e6
commit 34f21791cc
+20 -2
View File
@@ -269,6 +269,15 @@ class SoilSensor(Sensor):
except TypeError: except TypeError:
pass pass
class WH51SoilSensor(Sensor):
type_ = 'soil'
bad_keys = [
'model',
'mic',
'battery_ok',
]
update_period = 60*30
class P2ProScaleSensor(Sensor): class P2ProScaleSensor(Sensor):
type_ = 'scale' type_ = 'scale'
skip_cooldown = 60.0 * 60 * 18 # 18 hours skip_cooldown = 60.0 * 60 * 18 # 18 hours
@@ -399,6 +408,7 @@ async def fetch_mqtt():
async def owntracks(request): async def owntracks(request):
try:
data = await request.json() data = await request.json()
logging.debug('Web data: %s', str(data)) logging.debug('Web data: %s', str(data))
@@ -411,7 +421,14 @@ async def owntracks(request):
else: else:
logging.info('Not a location, skipping.') logging.info('Not a location, skipping.')
return web.Response() return web.json_response({'status': 'ok'}, status=200)
except BaseException as e:
logging.exception('Problem with OwnTracks data: {} - {}'.format(e.__class__.__name__, str(e)))
try:
logging.info('Data: %s', str(data))
except:
pass
return web.json_response({'error': str(e)}, status=500)
def share_sha256(measurement, share_start, share_end, api_key): def share_sha256(measurement, share_start, share_end, api_key):
@@ -691,7 +708,7 @@ if __name__ == '__main__':
sensors.add(AirSensor('air1', 'Laundry Room')) sensors.add(AirSensor('air1', 'Laundry Room'))
sensors.add(AirSensor('air2', 'Bedroom')) sensors.add(AirSensor('air2', 'Bedroom'))
sensors.add(AirSensor('air3', 'Kitchen')) sensors.add(AirSensor('air3', 'Kitchen'))
sensors.add(Acurite606TX('185', 'Outside', 0.0)) sensors.add(Acurite606TX('252', 'Outside', 0.0))
sensors.add(AcuRite6002RM('999999', 'Seeds', 0.0)) # A sensors.add(AcuRite6002RM('999999', 'Seeds', 0.0)) # A
sensors.add(AcuRite6002RM('999998', 'Misc', 0.7, -1.0)) # A sensors.add(AcuRite6002RM('999998', 'Misc', 0.7, -1.0)) # A
sensors.add(AcuRite6002RM('12516', 'Basement', 0.7, -1.0)) # A sensors.add(AcuRite6002RM('12516', 'Basement', 0.7, -1.0)) # A
@@ -702,6 +719,7 @@ if __name__ == '__main__':
sensors.add(SoilSensor('soil1', 'Dumb Cane')) sensors.add(SoilSensor('soil1', 'Dumb Cane'))
sensors.add(SoilSensor('soil2', 'Kitchen Pothos')) sensors.add(SoilSensor('soil2', 'Kitchen Pothos'))
sensors.add(SoilSensor('soil3', 'Dracaena')) sensors.add(SoilSensor('soil3', 'Dracaena'))
sensors.add(WH51SoilSensor('0fafff', 'Side Garden'))
sensors.add(P2ProScaleSensor('scale1', 'Master Bathroom')) sensors.add(P2ProScaleSensor('scale1', 'Master Bathroom'))
sensors.add(QotMotionSensor('qot_dc3c', 'Bedroom')) sensors.add(QotMotionSensor('qot_dc3c', 'Bedroom'))