diff --git a/mqtt_gateway_monitor.py b/mqtt_gateway_monitor.py index 1abecee..0b6d9bd 100644 --- a/mqtt_gateway_monitor.py +++ b/mqtt_gateway_monitor.py @@ -3,7 +3,7 @@ import json import logging import os import time -from typing import Dict, Optional, Tuple +from typing import Dict, Optional import config_env from logica_reslevis.gateway import GatewayJsonRepository @@ -43,7 +43,7 @@ def _norm_mac(value: str) -> str: return "".join(ch for ch in str(value).strip().lower() if ch.isalnum()) -def _parse_line(line: str) -> Optional[Tuple[str, bool]]: +def _parse_line(line: str) -> Optional[str]: line = line.strip() if not line or " " not in line: return None @@ -75,14 +75,7 @@ def _parse_line(line: str) -> Optional[Tuple[str, bool]]: return None nums = gateway_entry.get("nums") if gateway_entry else None - has_data = len(data) > 1 - if nums is not None: - try: - has_data = has_data and int(nums) > 0 - except (TypeError, ValueError): - pass - - return mac, has_data + return mac class MqttGatewayMonitor: @@ -107,7 +100,6 @@ class MqttGatewayMonitor: self._gateway_repo = gateway_repo or GatewayJsonRepository() self._last_seen: Dict[str, float] = {} - self._last_has_data: Dict[str, bool] = {} self._lock = asyncio.Lock() self._stop_event = asyncio.Event() self._reader_task: Optional[asyncio.Task] = None @@ -165,16 +157,14 @@ class MqttGatewayMonitor: line = await self._proc.stdout.readline() if not line: break - parsed = _parse_line(line.decode("utf-8", errors="ignore")) - if not parsed: + mac = _parse_line(line.decode("utf-8", errors="ignore")) + if not mac: continue - mac, has_data = parsed mac_norm = _norm_mac(mac) if not mac_norm: continue async with self._lock: self._last_seen[mac_norm] = time.monotonic() - self._last_has_data[mac_norm] = bool(has_data) finally: if self._proc and self._proc.returncode is None: self._proc.terminate() @@ -194,7 +184,6 @@ class MqttGatewayMonitor: async with self._lock: last_seen = dict(self._last_seen) - last_has_data = dict(self._last_has_data) status_by_mac: Dict[str, str] = {} for gw in gateways: @@ -203,8 +192,7 @@ class MqttGatewayMonitor: continue seen_at = last_seen.get(mac_norm) - has_data = last_has_data.get(mac_norm, False) - if seen_at is None or (now - seen_at) > self._stale_after or not has_data: + if seen_at is None or (now - seen_at) > self._stale_after: status = "disabled" else: status = "active"