work: добавил каркас под управление вытяжкой!
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
from dataclasses import dataclass
|
||||
|
||||
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class ExhaustConfig:
|
||||
mqtt_host: str
|
||||
mqtt_port: int = 1883
|
||||
|
||||
# Topic устройства в Tasmota
|
||||
topic: str = "exhaust"
|
||||
|
||||
# Длительность виртуального нажатия кнопки
|
||||
pulse_ms: int = 300
|
||||
|
||||
# Соответствие реле функциям Elica.
|
||||
# Если после приезда платы каналы окажутся другими,
|
||||
# меняем только конфигурацию.
|
||||
power_relay: int = 1
|
||||
speed_relay: int = 2
|
||||
light_relay: int = 3
|
||||
timer_relay: int = 4
|
||||
|
||||
@property
|
||||
def command_prefix(self) -> str:
|
||||
return f"cmnd/{self.topic}"
|
||||
|
||||
@property
|
||||
def state_prefix(self) -> str:
|
||||
return f"stat/{self.topic}"
|
||||
|
||||
@property
|
||||
def telemetry_prefix(self) -> str:
|
||||
return f"tele/{self.topic}"
|
||||
|
||||
@property
|
||||
def lwt_topic(self) -> str:
|
||||
return f"{self.telemetry_prefix}/LWT"
|
||||
|
||||
@property
|
||||
def state_topic(self) -> str:
|
||||
return f"{self.telemetry_prefix}/STATE"
|
||||
|
||||
@property
|
||||
def status2_topic(self) -> str:
|
||||
return f"{self.state_prefix}/STATUS2"
|
||||
|
||||
@property
|
||||
def result_topic(self) -> str:
|
||||
return f"{self.state_prefix}/RESULT"
|
||||
Reference in New Issue
Block a user