Allow downloading site data as diagnostics

This commit is contained in:
2022-10-16 22:19:01 +02:00
parent 85190aa9dd
commit 1812642773
6 changed files with 34 additions and 6 deletions

View File

@@ -4,7 +4,7 @@ from datetime import timedelta
from bleak_retry_connector import close_stale_connections
from .mesh import PlejdMesh
from .api import get_cryptokey, get_devices
from .api import get_cryptokey, get_devices, get_site_data
from .plejd_device import PlejdDevice
from .const import PLEJD_SERVICE
@@ -32,6 +32,9 @@ class PlejdManager:
def connected(self):
return self.mesh is not None and self.mesh.connected
async def get_site_data(self):
return await get_site_data(**self.credentials)
async def get_devices(self):
devices = await get_devices(**self.credentials)
self.devices = {k: PlejdDevice(self, **v) for (k,v) in devices.items()}

View File

@@ -43,13 +43,17 @@ async def _get_site_details(session, siteId):
# fp.write(json.dumps(data))
return data
site_data = None
async def get_site_data(username, password, siteId):
# TODO: Memoize this somehow?
global site_data
if site_data is not None:
return site_data
async with ClientSession(base_url=API_BASE_URL, headers=headers) as session:
session_token = await _login(session, username, password)
_LOGGER.debug("Session token: %s", session_token)
session.headers["X-Parse-Session-Token"] = session_token
details = await _get_site_details(session, siteId)
site_data = details
return details
async def get_sites(username, password):

View File

@@ -7,10 +7,10 @@ Device = namedtuple("Device", ["model", "type", "dimmable"])
LIGHT = "light"
SENSOR = "sensor"
SWITCH = "switch"
UNKNOWN = "unknown"
HARDWARE_TYPES = {
"0": Device("-unknown-", LIGHT, False),
"0": Device("-unknown-", UNKNOWN, False),
"1": Device("DIM-01", LIGHT, True),
"2": Device("DIM-02", LIGHT, True),
"3": Device("CTR-01", LIGHT, False),