forked from platypush/platypush
79 lines
2 KiB
Python
79 lines
2 KiB
Python
from sqlalchemy import (
|
|
Boolean,
|
|
Column,
|
|
ForeignKey,
|
|
Integer,
|
|
JSON,
|
|
String,
|
|
)
|
|
|
|
from platypush.common.db import Base
|
|
|
|
from .devices import Device
|
|
|
|
|
|
if 'bluetooth_device' not in Base.metadata:
|
|
|
|
class BluetoothDevice(Device):
|
|
"""
|
|
Entity that represents a Bluetooth device.
|
|
"""
|
|
|
|
__tablename__ = 'bluetooth_device'
|
|
|
|
id = Column(
|
|
Integer, ForeignKey(Device.id, ondelete='CASCADE'), primary_key=True
|
|
)
|
|
|
|
connected = Column(Boolean, default=False)
|
|
""" Whether the device is connected. """
|
|
|
|
paired = Column(Boolean, default=False)
|
|
""" Whether the device is paired. """
|
|
|
|
trusted = Column(Boolean, default=False)
|
|
""" Whether the device is trusted. """
|
|
|
|
blocked = Column(Boolean, default=False)
|
|
""" Whether the device is blocked. """
|
|
|
|
rssi = Column(Integer, default=None)
|
|
""" Received Signal Strength Indicator. """
|
|
|
|
tx_power = Column(Integer, default=None)
|
|
""" Reported transmission power. """
|
|
|
|
manufacturers = Column(JSON)
|
|
""" Registered manufacturers for the device, as an ID -> Name map. """
|
|
|
|
uuids = Column(JSON)
|
|
"""
|
|
Service/characteristic UUIDs exposed by the device, as a
|
|
UUID -> Name map.
|
|
"""
|
|
|
|
brand = Column(String)
|
|
""" Device brand, as a string. """
|
|
|
|
model = Column(String)
|
|
""" Device model, as a string. """
|
|
|
|
model_id = Column(String)
|
|
""" Device model ID. """
|
|
|
|
manufacturer_data = Column(JSON)
|
|
"""
|
|
Latest manufacturer data published by the device, as a
|
|
``manufacturer_id -> data`` map, where ``data`` is a hexadecimal
|
|
string.
|
|
"""
|
|
|
|
service_data = Column(JSON)
|
|
"""
|
|
Latest service data published by the device, as a ``service_uuid ->
|
|
data`` map, where ``data`` is a hexadecimal string.
|
|
"""
|
|
|
|
__mapper_args__ = {
|
|
'polymorphic_identity': __tablename__,
|
|
}
|