mirror of
https://github.com/joBr99/nspanel-lovelace-ui.git
synced 2025-12-21 15:04:24 +01:00
implement topic config
This commit is contained in:
@@ -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)
|
||||||
|
|
||||||
|
|||||||
@@ -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")
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user