Reading in sensors - need to decode 18 bit stream into....floats?
This commit is contained in:
@@ -12,21 +12,46 @@ import struct
|
||||
|
||||
from bleak import BleakClient
|
||||
from bleak import _logger as logger
|
||||
|
||||
from bitstring import BitArray
|
||||
from struct import Struct
|
||||
BUTTON = 1
|
||||
GYROSCOPE = 2
|
||||
ACCELEROMETER = 3
|
||||
BATTERY = 4
|
||||
TEMPERATURE = 5
|
||||
|
||||
CHARACTERISTIC_UUIDS = {
|
||||
("64a7000d-f691-4b93-a6f4-0968f5b648f8"):BUTTON,#Button
|
||||
# ("64a7000d-f691-4b93-a6f4-0968f5b648f8"):BUTTON,#Button
|
||||
# ("64a7000a-f691-4b93-a6f4-0968f5b648f8"):GYROSCOPE,#9 axis
|
||||
# ("64a7000c-f691-4b93-a6f4-0968f5b648f8"):ACCELEROMETER#Accel
|
||||
("64a7000c-f691-4b93-a6f4-0968f5b648f8"): ACCELEROMETER, # Accel
|
||||
# ("64a70007-f691-4b93-a6f4-0968f5b648f8"):BATTERY,
|
||||
# ("64a70014-f691-4b93-a6f4-0968f5b648f8"):TEMPERATURE
|
||||
# Accel
|
||||
} # <--- Change to the characteristic you want to enable notifications from.
|
||||
|
||||
device_address = "e3:ae:cd:af:28:e2"
|
||||
# device_address = "e3:ae:cd:af:28:e2"
|
||||
device_address = "D8:9B:12:D1:08:80"
|
||||
|
||||
def decode_button(data):
|
||||
print(data)
|
||||
print(struct.unpack('>H', data))
|
||||
print(int.from_bytes(data, byteorder='big'))
|
||||
|
||||
def decode_accelerometer(data):
|
||||
# print(data)
|
||||
# print(len(data))
|
||||
print([x for x in data])
|
||||
print(int.from_bytes())
|
||||
|
||||
def decode_battery(data):
|
||||
print(len(data))
|
||||
print(data)
|
||||
print(int.from_bytes(data, byteorder='big'))
|
||||
|
||||
def decode_temp(data):
|
||||
print(len(data))
|
||||
print(data)
|
||||
print(struct.unpack("h", data))
|
||||
|
||||
|
||||
def notification_handler(sender, data):
|
||||
"""Simple notification handler which prints the data received."""
|
||||
@@ -35,9 +60,22 @@ def notification_handler(sender, data):
|
||||
print(f"BUTTON PRESSED {data}")
|
||||
decode_button(data)
|
||||
elif sender == GYROSCOPE:
|
||||
print(f"GYRO CHANGED - {data}")
|
||||
# print(f"GYRO CHANGED - {data}")
|
||||
print(BitArray(data).bin[:1])
|
||||
elif sender == ACCELEROMETER:
|
||||
print(f"ACCEL CHANGED - {data}")
|
||||
# print(f"ACCEL CHANGED - {data}")
|
||||
# print(BitArray(data).bin[:1])
|
||||
# print(struct.unpack("h",data[:2]))
|
||||
s = Struct("h")
|
||||
print([x for x in s.iter_unpack(data)])
|
||||
# print(struct.unpack("e",data[:2]))
|
||||
# print(struct.unpack("f", data[:4]))
|
||||
|
||||
# decode_accelerometer(data)
|
||||
elif sender == BATTERY:
|
||||
decode_battery(data)
|
||||
elif sender == TEMPERATURE:
|
||||
decode_temp(data)
|
||||
|
||||
|
||||
async def start_notify(client):
|
||||
|
||||
Reference in New Issue
Block a user