From 9e09b3fa2775b7d0a8e675c04de7706d6c376692 Mon Sep 17 00:00:00 2001 From: "Adrian A. Baumann" Date: Sat, 11 Apr 2026 23:33:49 +0200 Subject: [PATCH] All light commands collected under "led" mqtt topic --- gaugemqttcontinuous.py | 80 +++++++++--------------------------------- 1 file changed, 17 insertions(+), 63 deletions(-) diff --git a/gaugemqttcontinuous.py b/gaugemqttcontinuous.py index 0abd080..33fadc7 100644 --- a/gaugemqttcontinuous.py +++ b/gaugemqttcontinuous.py @@ -194,50 +194,6 @@ def make_gauge_topics(prefix, gauge_id): "led_red_disc": f"homeassistant/switch/{MQTT_CLIENT_ID}_g{gauge_id}_red/config", "led_green_disc": f"homeassistant/switch/{MQTT_CLIENT_ID}_g{gauge_id}_green/config", "led_bl_disc": f"homeassistant/light/{MQTT_CLIENT_ID}_g{gauge_id}_bl/config", - "status_red": f"{prefix}/gauge{gauge_id}/status_led/red/set", - "status_green": f"{prefix}/gauge{gauge_id}/status_led/green/set", - "status_red_state": f"{prefix}/gauge{gauge_id}/status_led/red/state", - "status_green_state": f"{prefix}/gauge{gauge_id}/status_led/green/state", - "status_red_disc": f"homeassistant/switch/{MQTT_CLIENT_ID}_g{gauge_id}_status_red/config", - "status_green_disc": f"homeassistant/switch/{MQTT_CLIENT_ID}_g{gauge_id}_status_green/config", - } - - -gauge_topics = [make_gauge_topics(MQTT_PREFIX, g["id"]) for g in gauges] - -T_SET = f"{MQTT_PREFIX}/set" -T_STATE = f"{MQTT_PREFIX}/state" -T_STATUS = f"{MQTT_PREFIX}/status" -T_ZERO = f"{MQTT_PREFIX}/zero" - -T_DISC_GAUGE = f"homeassistant/number/{MQTT_CLIENT_ID}/config" -T_DISC_RED = f"homeassistant/switch/{MQTT_CLIENT_ID}_red/config" -T_DISC_GREEN = f"homeassistant/switch/{MQTT_CLIENT_ID}_green/config" -T_DISC_BL = f"homeassistant/light/{MQTT_CLIENT_ID}_bl/config" - - -def make_gauge_topics(prefix, gauge_id): - return { - "set": f"{prefix}/gauge{gauge_id}/set", - "state": f"{prefix}/gauge{gauge_id}/state", - "status": f"{prefix}/gauge{gauge_id}/status", - "zero": f"{prefix}/gauge{gauge_id}/zero", - "disc": f"homeassistant/number/{MQTT_CLIENT_ID}_g{gauge_id}/config", - "led_red": f"{prefix}/gauge{gauge_id}/led/red/set", - "led_green": f"{prefix}/gauge{gauge_id}/led/green/set", - "led_bl": f"{prefix}/gauge{gauge_id}/led/backlight/set", - "led_red_state": f"{prefix}/gauge{gauge_id}/led/red/state", - "led_green_state": f"{prefix}/gauge{gauge_id}/led/green/state", - "led_bl_state": f"{prefix}/gauge{gauge_id}/led/backlight/state", - "led_red_disc": f"homeassistant/switch/{MQTT_CLIENT_ID}_g{gauge_id}_red/config", - "led_green_disc": f"homeassistant/switch/{MQTT_CLIENT_ID}_g{gauge_id}_green/config", - "led_bl_disc": f"homeassistant/light/{MQTT_CLIENT_ID}_g{gauge_id}_bl/config", - "status_red": f"{prefix}/gauge{gauge_id}/status_led/red/set", - "status_green": f"{prefix}/gauge{gauge_id}/status_led/green/set", - "status_red_state": f"{prefix}/gauge{gauge_id}/status_led/red/state", - "status_green_state": f"{prefix}/gauge{gauge_id}/status_led/green/state", - "status_red_disc": f"homeassistant/switch/{MQTT_CLIENT_ID}_g{gauge_id}_status_red/config", - "status_green_disc": f"homeassistant/switch/{MQTT_CLIENT_ID}_g{gauge_id}_status_green/config", } @@ -356,11 +312,7 @@ def _flush_backlight(client): }, "brightness": int(backlight_brightness[i] * 2.55), } - client.publish( - f"{gt['set'].replace('/set', '/backlight/state')}", - ujson.dumps(payload), - retain=True, - ) + client.publish(gt["led_bl_state"], ujson.dumps(payload), retain=True) info( f"Gauge {i} backlight: {payload['state']} {backlight_color[i]} @ {backlight_brightness[i]}%" ) @@ -559,17 +511,19 @@ def on_message(topic, payload): info(f"Gauge {i} backlight → #{r:02x}{g:02x}{b:02x} @ {brightness}%") return - if topic == gt["status_red"]: + if topic == gt["led_status_red"]: state = payload.upper() == "ON" set_status_led(i, "red", state) - _publish(gt["status_red_state"], "ON" if state else "OFF", retain=True) + _publish(gt["led_status_red_state"], "ON" if state else "OFF", retain=True) info(f"Gauge {i} status red → {'ON' if state else 'OFF'}") return - if topic == gt["status_green"]: + if topic == gt["led_status_green"]: state = payload.upper() == "ON" set_status_led(i, "green", state) - _publish(gt["status_green_state"], "ON" if state else "OFF", retain=True) + _publish( + gt["led_status_green_state"], "ON" if state else "OFF", retain=True + ) info(f"Gauge {i} status green → {'ON' if state else 'OFF'}") return @@ -602,8 +556,8 @@ def connect_mqtt(): client.subscribe(gt["led_red"]) client.subscribe(gt["led_green"]) client.subscribe(gt["led_bl"]) - client.subscribe(gt["status_red"]) - client.subscribe(gt["status_green"]) + client.subscribe(gt["led_status_red"]) + client.subscribe(gt["led_status_green"]) _mqtt_connected = True info(f"MQTT connected client_id={MQTT_CLIENT_ID}") return client @@ -654,8 +608,8 @@ def check_mqtt(): client_ref.subscribe(gt["led_red"]) client_ref.subscribe(gt["led_green"]) client_ref.subscribe(gt["led_bl"]) - client_ref.subscribe(gt["status_red"]) - client_ref.subscribe(gt["status_green"]) + client_ref.subscribe(gt["led_status_red"]) + client_ref.subscribe(gt["led_status_green"]) _mqtt_connected = True info("MQTT reconnected!") publish_discovery(client_ref) @@ -761,13 +715,13 @@ def publish_discovery(client): info(f"Discovery: gauge {i} backlight") client.publish( - gt["status_red_disc"], + gt["led_status_red_disc"], ujson.dumps( { "name": f"{g['name']} Status Red", "uniq_id": f"{MQTT_CLIENT_ID}_g{i}_status_red", - "cmd_t": gt["status_red"], - "stat_t": gt["status_red_state"], + "cmd_t": gt["led_status_red"], + "stat_t": gt["led_status_red_state"], "pl_on": "ON", "pl_off": "OFF", "icon": "mdi:led-on", @@ -780,13 +734,13 @@ def publish_discovery(client): info(f"Discovery: gauge {i} status red") client.publish( - gt["status_green_disc"], + gt["led_status_green_disc"], ujson.dumps( { "name": f"{g['name']} Status Green", "uniq_id": f"{MQTT_CLIENT_ID}_g{i}_status_green", - "cmd_t": gt["status_green"], - "stat_t": gt["status_green_state"], + "cmd_t": gt["led_status_green"], + "stat_t": gt["led_status_green_state"], "pl_on": "ON", "pl_off": "OFF", "icon": "mdi:led-on",