Catch bad OwnTrack data, add WH51 soil sensor
This commit is contained in:
@@ -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,19 +408,27 @@ async def fetch_mqtt():
|
|||||||
|
|
||||||
|
|
||||||
async def owntracks(request):
|
async def owntracks(request):
|
||||||
data = await request.json()
|
try:
|
||||||
logging.debug('Web data: %s', str(data))
|
data = await request.json()
|
||||||
|
logging.debug('Web data: %s', str(data))
|
||||||
|
|
||||||
if data.get('_type', '') == 'location':
|
if data.get('_type', '') == 'location':
|
||||||
data['id'] = data['topic'].split('/')[-1]
|
data['id'] = data['topic'].split('/')[-1]
|
||||||
data['timestamp'] = datetime.utcfromtimestamp(data['tst'])
|
data['timestamp'] = datetime.utcfromtimestamp(data['tst'])
|
||||||
if 'inregions' in data:
|
if 'inregions' in data:
|
||||||
data['inregions'] = ','.join(data['inregions'])
|
data['inregions'] = ','.join(data['inregions'])
|
||||||
await process_data(data)
|
await process_data(data)
|
||||||
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'))
|
||||||
|
|||||||
Reference in New Issue
Block a user