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"