38 lines
1.2 KiB
Python
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())
|