From 6d3755e465d22ac665121058b2da09a94959eea2 Mon Sep 17 00:00:00 2001 From: DasMoorhuhn Date: Thu, 12 Sep 2024 15:19:48 +0200 Subject: [PATCH] try to fix integration --- home_assistant_integration/__init__.py | 2 -- home_assistant_integration/api.py | 14 ++++++++------ home_assistant_integration/gateway.py | 12 ++++++++++++ home_assistant_integration/sensor.py | 12 ++++++------ 4 files changed, 26 insertions(+), 14 deletions(-) create mode 100644 home_assistant_integration/gateway.py diff --git a/home_assistant_integration/__init__.py b/home_assistant_integration/__init__.py index 0a98898..5c82138 100644 --- a/home_assistant_integration/__init__.py +++ b/home_assistant_integration/__init__.py @@ -1,7 +1,5 @@ DOMAIN = "atc_mi_thermometer_gateway" -from .discover_gateways import start_discovery_client - def setup(hass, config): hass.states.set("hello_state.world", "Paulus") diff --git a/home_assistant_integration/api.py b/home_assistant_integration/api.py index ace1a76..f34afb2 100644 --- a/home_assistant_integration/api.py +++ b/home_assistant_integration/api.py @@ -14,6 +14,7 @@ class EntityState: battery_percent:int battery_volt:float rssi:int + mac:str def test_api(gateway): @@ -25,8 +26,8 @@ def test_api(gateway): return True -def get_state(gateway, device) -> EntityState | None: - request = f'http://{gateway}:8000/api/state/{device}' +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) @@ -37,7 +38,8 @@ def get_state(gateway, device) -> EntityState | None: response_json['humidity'], response_json['battery_percent'], response_json['battery_volt'], - response_json['rssi']) + response_json['rssi'], + entity_mac) def get_deices(gateway) -> list | None: @@ -48,10 +50,10 @@ def get_deices(gateway) -> list | None: return response_json['info']['devices'] -def get_device(gateway, device) -> str | None: +def get_device(gateway, entity_mac) -> str | None: devices = get_deices(gateway) - if device in devices: - index = devices.index(device) + if entity_mac in devices: + index = devices.index(entity_mac) return devices[index] return None diff --git a/home_assistant_integration/gateway.py b/home_assistant_integration/gateway.py new file mode 100644 index 0000000..722fa88 --- /dev/null +++ b/home_assistant_integration/gateway.py @@ -0,0 +1,12 @@ +from api import * +from sensor import MiThermometer + + +def find_all_devices(gateway) -> list: + found_devices = [] + devices = get_deices(gateway=gateway) + for device in devices: + device_state = get_state(entity_mac=device, gateway=gateway) + found_devices.append(MiThermometer(state=device_state)) + + return found_devices diff --git a/home_assistant_integration/sensor.py b/home_assistant_integration/sensor.py index c326c69..862fca2 100644 --- a/home_assistant_integration/sensor.py +++ b/home_assistant_integration/sensor.py @@ -4,6 +4,7 @@ from __future__ import annotations import logging from api import * +from .gateway import find_all_devices import voluptuous as vol import homeassistant.helpers.config_validation as cv @@ -28,15 +29,14 @@ def setup_platform( add_entities: AddEntitiesCallback, discovery_info: DiscoveryInfoType | None = None): - devices = get_deices(gateway=config[CONF_HOST]) + devices = find_all_devices(gateway=config[CONF_HOST]) for device in devices: - device_state = get_state(gateway=config[CONF_HOST], device=device) - add_entities([MiThermometer(mac=device, state=device_state)]) + add_entities(device) class MiThermometer(SensorEntity): - def __init__(self, mac:str, state:EntityState): - self._mac = mac + def __init__(self, state:EntityState): + self._mac = state.mac self._online = False self._last_update = "" self._temperature = state.temperature @@ -79,4 +79,4 @@ class MiThermometer(SensorEntity): return self._rssi def update(self) -> None: - pass + state = get_state(gateway=config[CONF_HOST], entity_mac=self._mac)