2024-09-12 03:38:08 +02:00

67 lines
1.6 KiB
Python

import json
from requests import api
from dataclasses import dataclass
@dataclass
class EntityState:
timestamp: str
name:str
room:str
temperature:float
humidity:int
battery_percent:int
battery_volt:float
rssi:int
def test_api(gateway):
request = f'http://{gateway}:8000/api'
response = api.get(request)
if not response.ok: return False
response_json = json.loads(response.text)
version = response_json['version']['version']
return True
def get_state(gateway, device) -> EntityState | None:
request = f'http://{gateway}:8000/api/state/{device}'
response = api.get(request)
if not response.ok: return None
response_json = json.loads(response.text)
return EntityState(response_json['timestamp'],
response_json['name'],
response_json['room'],
response_json['temperature'],
response_json['humidity'],
response_json['battery_percent'],
response_json['battery_volt'],
response_json['rssi'])
def get_deices(gateway) -> list | None:
request = f'http://{gateway}:8000/api'
response = api.get(request)
if not response.ok: return None
response_json = json.loads(response.text)
return response_json['info']['devices']
def get_device(gateway, device) -> str | None:
devices = get_deices(gateway)
if device in devices:
index = devices.index(device)
return devices[index]
return None
def get_entity_state(entity_mac, gateway):
device = get_device(gateway, entity_mac)
if device is None: return None
entity_state = get_state(gateway, device)
return entity_state