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