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())