69 lines
1.7 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
mac:str
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, entity_mac) -> EntityState | None:
request = f'http://{gateway}:8000/api/state/{entity_mac}'
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'],
entity_mac)
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, entity_mac) -> str | None:
devices = get_deices(gateway)
if entity_mac in devices:
index = devices.index(entity_mac)
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