Initial commit
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
# 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 {}
|
||||
Reference in New Issue
Block a user