connection + notifs current
This commit is contained in:
commit
f03dced25c
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
__pycache__
|
54
main.py
Normal file
54
main.py
Normal file
@ -0,0 +1,54 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import argparse
|
||||
import asyncio
|
||||
import logging
|
||||
import struct
|
||||
|
||||
from bleak import BleakClient, BleakScanner
|
||||
from bleak.backends.characteristic import BleakGATTCharacteristic
|
||||
from bleak.uuids import normalize_uuid_str
|
||||
|
||||
import myUUIDs
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
def current_meas_handler(characteristic: BleakGATTCharacteristic, data: bytearray):
|
||||
value = struct.unpack("<I", data)[0]
|
||||
logger.info("%s: %f", characteristic.description, value * 1.0e-6)
|
||||
|
||||
|
||||
async def main():
|
||||
logger.info("starting scan...")
|
||||
|
||||
device = await BleakScanner.find_device_by_address("84:F7:03:1B:C6:A2", cb=dict(use_bdaddr=False))
|
||||
if device is None:
|
||||
logger.error("could not find device with address")
|
||||
return
|
||||
|
||||
logger.info("connecting to device...")
|
||||
|
||||
async with BleakClient(device) as client:
|
||||
logger.info("Connected")
|
||||
|
||||
current_svc_handle = 0
|
||||
services = client.services.services
|
||||
metrology_svcs = [services[i] for i in services if services[i].uuid == normalize_uuid_str(myUUIDs.METROLOGY_SERVICE)]
|
||||
|
||||
current_meas_svc = next(s for s in metrology_svcs if s.get_characteristic(myUUIDs.ELECTRIC_CURRENT_CHAR))
|
||||
|
||||
for c in current_meas_svc.characteristics:
|
||||
await client.start_notify(c, current_meas_handler)
|
||||
|
||||
await asyncio.Event().wait()
|
||||
# await client.stop_notify(args.characteristic)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
logging.basicConfig(
|
||||
level="INFO",
|
||||
format="%(asctime)-15s %(name)-8s %(levelname)s: %(message)s",
|
||||
)
|
||||
|
||||
loop = asyncio.get_event_loop()
|
||||
loop.create_task(main())
|
||||
loop.run_forever()
|
23
myUUIDs.py
Normal file
23
myUUIDs.py
Normal file
@ -0,0 +1,23 @@
|
||||
METROLOGY_SERVICE = "1878"
|
||||
CONFIGURATION_SERVICE = "1879"
|
||||
METROLOGY_RANGE_SERVICE = "1880"
|
||||
ELECTRIC_CURRENT_CHAR = "2AEE"
|
||||
VOLTAGE_CHAR = "2B18"
|
||||
SAMPLING_RATE_CHAR = "2C12"
|
||||
ZERO_CALI_CHAR = "2C13"
|
||||
ZERO_CALI_NSAMP = "2C14"
|
||||
ELECTRIC_CURRENT_RANGE_CHAR = "2AEF"
|
||||
AUTO_RANGE_CHAR = "2C15"
|
||||
CHAR_PRES_FORMAT = "2904"
|
||||
PPM_UNIT_UUID = "27C4"
|
||||
PERCENT_UNIT_UUID = "27AD"
|
||||
POWER_UNIT_UUID = "2726"
|
||||
TESLA_UNIT_UUID = "272D"
|
||||
AMPERE_UNIT_UUID = "2704"
|
||||
VOLTS_UNIT_UUID = "2728"
|
||||
HERTZ_UNIT_UUID = "2722"
|
||||
SECONDS_UNIT_UUID = "2703"
|
||||
UNITLESS_UNIT_UUID = "2700"
|
||||
NSP_DESC_MAIN = "0106"
|
||||
NSP_DESC_INSIDE = "010B"
|
||||
NSP_DESC_OUTSIDE = "010C"
|
Loading…
x
Reference in New Issue
Block a user