first commit

This commit is contained in:
mega 2026-03-19 11:32:17 +00:00
commit 4b98219bf7
144 changed files with 31561 additions and 0 deletions

View file

@ -0,0 +1,41 @@
from bots.base import BaseBot
class WaterLeakBot(BaseBot):
"""Water leak sensor — normally clear, triggers on LEAK_DETECTED scenario."""
interval = 120
def __init__(
self,
site_id: str,
sensor_id: str,
floor_zone: str = "general",
under_floor: bool = False,
near_crac: bool = False,
room_id: str | None = None,
) -> None:
super().__init__()
self.site_id = site_id
self.sensor_id = sensor_id
self.floor_zone = floor_zone
self.under_floor = under_floor
self.near_crac = near_crac
self.room_id = room_id
self._leaked = False
def get_topic(self) -> str:
return f"bms/{self.site_id}/leak/{self.sensor_id}"
def set_scenario(self, name: str | None) -> None:
super().set_scenario(name)
self._leaked = (name == "LEAK_DETECTED")
def get_payload(self) -> dict:
return {
"state": "detected" if self._leaked else "clear",
"floor_zone": self.floor_zone,
"under_floor": self.under_floor,
"near_crac": self.near_crac,
"room_id": self.room_id,
}