Start
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
"""Shared data models for Sternwarte."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass, field
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
class SternwarteState:
|
||||
"""Parsed state from the Web-IO."""
|
||||
|
||||
inputs: list[bool] = field(default_factory=lambda: [False] * 12)
|
||||
outputs: list[bool] = field(default_factory=lambda: [False] * 12)
|
||||
counters: list[int] = field(default_factory=lambda: [0] * 12)
|
||||
wind_speed_kmh: float = 0.0
|
||||
|
||||
@property
|
||||
def roof_closed(self) -> bool:
|
||||
return self.inputs[10]
|
||||
|
||||
@property
|
||||
def roof_open(self) -> bool:
|
||||
return self.inputs[11]
|
||||
|
||||
@property
|
||||
def roof_moving(self) -> bool:
|
||||
return self.inputs[9]
|
||||
|
||||
@property
|
||||
def raining(self) -> bool:
|
||||
return self.inputs[7]
|
||||
|
||||
@property
|
||||
def roof_power(self) -> bool:
|
||||
return self.outputs[0]
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
class SternwarteSchedule:
|
||||
"""Persistent schedule state."""
|
||||
|
||||
open_at: str = ""
|
||||
close_at: str = ""
|
||||
open_done: bool = False
|
||||
close_done: bool = False
|
||||
open_power_on_at: str = ""
|
||||
close_power_on_at: str = ""
|
||||
rain_close_power_on_at: str = ""
|
||||
close_power_off_at: str = ""
|
||||
pending_auto_close: bool = False
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
class WindSample:
|
||||
"""Single wind measurement."""
|
||||
|
||||
time: datetime
|
||||
kmh: float
|
||||
Reference in New Issue
Block a user