implement topic config

This commit is contained in:
joBr99
2023-11-20 16:57:25 +01:00
parent 891230144a
commit b55d2b9c06
2 changed files with 10 additions and 14 deletions

View File

@@ -26,35 +26,30 @@ has_sent_reload_command = False
mqtt_client_name = "NSPanelLovelaceManager_" + str(get_mac()) mqtt_client_name = "NSPanelLovelaceManager_" + str(get_mac())
client = mqtt.Client(mqtt_client_name) client = mqtt.Client(mqtt_client_name)
logging.basicConfig(level=logging.DEBUG) logging.basicConfig(level=logging.DEBUG)
panel_mqtt_recv_topics = {}
def on_connect(client, userdata, flags, rc): def on_connect(client, userdata, flags, rc):
global panels global panels, panel_mqtt_recv_topics
# global settings
logging.info("Connected to MQTT Server") logging.info("Connected to MQTT Server")
# for panel in settings["nspanels"].values(): for name, panel in panels.items():
# print(panel) panel_mqtt_recv_topics[panel.recvTopic] = panel
# client.subscribe(panel["panelRecvTopic"]) client.subscribe(panel.recvTopic)
client.subscribe("tele/tasmota_nspdev2/RESULT")
def on_ha_update(entity_id): def on_ha_update(entity_id):
for panel in panels.values(): for panel in panels.values():
panel.ha_event_callback(entity_id) panel.ha_event_callback(entity_id)
def on_message(client, userdata, msg): def on_message(client, userdata, msg):
global panels global panels, panel_mqtt_recv_topics
try: try:
if msg.payload.decode() == "": if msg.payload.decode() == "":
return return
parts = msg.topic.split('/') parts = msg.topic.split('/')
if msg.topic == "tele/tasmota_nspdev2/RESULT": if msg.topic in panel_mqtt_recv_topics.keys():
data = json.loads(msg.payload.decode('utf-8')) data = json.loads(msg.payload.decode('utf-8'))
if "CustomRecv" in data: if "CustomRecv" in data:
if parts[1] in panels: panel = panel_mqtt_recv_topics[msg.topic]
panels[parts[1]].customrecv_event_callback(data["CustomRecv"]) panel.customrecv_event_callback(data["CustomRecv"])
else:
logging.error(
"Got message for unknown panel: %s - %s", parts[1], data["CustomRecv"])
else: else:
logging.debug("Received unhandled message on topic: %s", msg.topic) logging.debug("Received unhandled message on topic: %s", msg.topic)

View File

@@ -17,6 +17,7 @@ class LovelaceUIPanel:
self.name = name_panel self.name = name_panel
self.settings = settings_panel self.settings = settings_panel
self.sendTopic = self.settings["panelSendTopic"] self.sendTopic = self.settings["panelSendTopic"]
self.recvTopic = self.settings["panelRecvTopic"]
self.model = self.settings.get("model", "eu") self.model = self.settings.get("model", "eu")