设备具有重新传数据的功能,也就是没有上传成功数据,就会被重新上传,服务器可能会接收到同一个数据很多次,所以我们不能采集降雨量的变化量。
我们在服务器上可以很容易的解决这个问题
async def fixed_rainfall_data(uuid, payload):
rainfall = payload.get('rainfall')
if rainfall is None:
return {}
last = await siri_get_last(uuid)
if not last:
last = {'rainfall': 0, 'rainfall_base': 0}
last_rainfall = last.get('rainfall', 0)
base = last.get('rainfall_base', 0)
fixed_rainfall = rainfall + base
if fixed_rainfall >= last_rainfall:
return {'rainfall': fixed_rainfall}
base = last_rainfall
fixed_rainfall = rainfall + base
return {'rainfall': fixed_rainfall, 'rainfall_base': base}
我们从数据库里面查出最后的数据,加上基础数据,然后对比最后的数据,如果比最后的数据大,说明是正常上传,否则以最后的数据作为基础数据。
通过这种方式,我们修复了断电的BUG,也保证的采集到的数据的可靠性。














网友评论