dev-env/python/capture-thermometer-data.py
2024-08-04 21:31:58 +02:00

38 lines
1.2 KiB
Python

import asyncio
import json
from datetime import datetime
from bleak import BleakScanner
async def handle_discovery(device, advertisement_data):
if device.address == "DB:17:6C:7D:81:F6":
keys = list(advertisement_data.manufacturer_data.keys())
humKey = keys[len(keys)-1]
battery = humKey & 0xFF
temperature = (humKey >> 8)/10.0
if humKey < 32767: #If Key is bigger than a smallint, temperature is lower than one byte (256)
temperature = temperature + 25.6
data = {}
data['temp'] = temperature
data['battery'] = battery / 256.0;
data['humid'] = advertisement_data.manufacturer_data[humKey][1]
data['timestamp'] = datetime.now().strftime("%d.%m.%Y %H:%M:%S")
jsonString = json.dumps(data)
with open("/home/flo/local-weedkeeper/systems/backend/weedkeeper/var/temperature.data", "a") as dataFile:
dataFile.write(jsonString+",\n")
#print(jsonString)
await scanner.stop()
async def scan():
global scanner
scanner = BleakScanner(handle_discovery)
await scanner.start()
await asyncio.sleep(10)
await scanner.stop()
async def main():
await scan()
asyncio.run(main())