Files
weather-base-station/environment/wireless_sensor.py
T

43 lines
1.2 KiB
Python

# 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 {}