# environment/wireless_sensor.py import logging from datetime import datetime import requests from constants import SENSOR_HTTP logger = logging.getLogger(__name__) class WirelessSensor: def __init__(self, session: requests.Session) -> None: self._sensor_data = {} self._last_poll = None self._session = session def _poll_sensor(self) -> None: try: resp = self._session.get(SENSOR_HTTP, timeout=6) resp.raise_for_status() self._last_poll = datetime.now() self._sensor_data = resp.json() except requests.RequestException as e: logger.error(f"Network error connecting to wireless sensor: {e}") except Exception as e: logger.error(f"Error parsing wireless sensor data: {e}") def get(self) -> dict: logger.debug("Polling Wireless Sensor...") self._poll_sensor() if self._last_poll: age_seconds = abs((datetime.now() - self._last_poll).total_seconds()) if age_seconds < 600: return self._sensor_data else: logger.warning("Wireless sensor data is too old (over 10 mins).") return {}