HeatValve: Automatic configuration implemented

This commit is contained in:
Dirk Alders 2024-05-26 18:43:39 +02:00
parent 985e18e27f
commit 8573dcf43f
2 changed files with 17 additions and 2 deletions

View File

@ -27,6 +27,8 @@ class base(mqtt_base):
RX_IGNORE_TOPICS = []
RX_IGNORE_KEYS = []
RX_FILTER_DATA_KEYS = []
#
CFG_DATA = {}
def __init__(self, mqtt_client, topic):
super().__init__(mqtt_client, topic, default_values=dict.fromkeys(self.RX_KEYS))
@ -37,7 +39,15 @@ class base(mqtt_base):
#
self.add_callback(None, None, self.__state_logging__, on_change_only=True)
def __cfg_callback__(self, key, value):
if self.CFG_DATA.get(key) != value:
self.logger.warning("Differing configuration identified: %s=%s --> %s=%s",
repr(key), repr(value), repr(key), repr(self.CFG_DATA.get(key)))
self.send_command(key, self.CFG_DATA.get(key))
def set(self, key, data, block_callback=[]):
if key in self.CFG_DATA:
self.__cfg_callback__(key, data)
if key in self.RX_IGNORE_KEYS:
pass # ignore these keys
elif key in self.RX_KEYS:

View File

@ -52,11 +52,16 @@ class brennenstuhl_heatingvalve(base):
#
RX_KEYS = [KEY_LINKQUALITY, KEY_BATTERY, KEY_HEATING_SETPOINT, KEY_TEMPERATURE]
RX_IGNORE_KEYS = [KEY_AWAY_MODE, KEY_CHILD_LOCK, KEY_PRESET, KEY_SYSTEM_MODE, KEY_VALVE_DETECTION, KEY_WINDOW_DETECTION]
#
CFG_DATA = {
KEY_WINDOW_DETECTION: "ON",
KEY_VALVE_DETECTION: "ON",
KEY_SYSTEM_MODE: "heat",
KEY_PRESET: "manual"
}
def __init__(self, mqtt_client, topic):
super().__init__(mqtt_client, topic)
self.mqtt_client.send(self.topic + '/' + self.TX_TOPIC, json.dumps({self.KEY_WINDOW_DETECTION: "ON",
self.KEY_CHILD_LOCK: "UNLOCK", self.KEY_VALVE_DETECTION: "ON", self.KEY_SYSTEM_MODE: "heat", self.KEY_PRESET: "manual"}))
self.add_callback(self.KEY_HEATING_SETPOINT, None, self.__valave_temp_rx__)
self.__tx_temperature__ = None
self.__rx_temperature__ = None