All light commands collected under "led" mqtt topic
This commit is contained in:
@@ -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_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_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",
|
"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),
|
"brightness": int(backlight_brightness[i] * 2.55),
|
||||||
}
|
}
|
||||||
client.publish(
|
client.publish(gt["led_bl_state"], ujson.dumps(payload), retain=True)
|
||||||
f"{gt['set'].replace('/set', '/backlight/state')}",
|
|
||||||
ujson.dumps(payload),
|
|
||||||
retain=True,
|
|
||||||
)
|
|
||||||
info(
|
info(
|
||||||
f"Gauge {i} backlight: {payload['state']} {backlight_color[i]} @ {backlight_brightness[i]}%"
|
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}%")
|
info(f"Gauge {i} backlight → #{r:02x}{g:02x}{b:02x} @ {brightness}%")
|
||||||
return
|
return
|
||||||
|
|
||||||
if topic == gt["status_red"]:
|
if topic == gt["led_status_red"]:
|
||||||
state = payload.upper() == "ON"
|
state = payload.upper() == "ON"
|
||||||
set_status_led(i, "red", state)
|
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'}")
|
info(f"Gauge {i} status red → {'ON' if state else 'OFF'}")
|
||||||
return
|
return
|
||||||
|
|
||||||
if topic == gt["status_green"]:
|
if topic == gt["led_status_green"]:
|
||||||
state = payload.upper() == "ON"
|
state = payload.upper() == "ON"
|
||||||
set_status_led(i, "green", state)
|
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'}")
|
info(f"Gauge {i} status green → {'ON' if state else 'OFF'}")
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -602,8 +556,8 @@ def connect_mqtt():
|
|||||||
client.subscribe(gt["led_red"])
|
client.subscribe(gt["led_red"])
|
||||||
client.subscribe(gt["led_green"])
|
client.subscribe(gt["led_green"])
|
||||||
client.subscribe(gt["led_bl"])
|
client.subscribe(gt["led_bl"])
|
||||||
client.subscribe(gt["status_red"])
|
client.subscribe(gt["led_status_red"])
|
||||||
client.subscribe(gt["status_green"])
|
client.subscribe(gt["led_status_green"])
|
||||||
_mqtt_connected = True
|
_mqtt_connected = True
|
||||||
info(f"MQTT connected client_id={MQTT_CLIENT_ID}")
|
info(f"MQTT connected client_id={MQTT_CLIENT_ID}")
|
||||||
return client
|
return client
|
||||||
@@ -654,8 +608,8 @@ def check_mqtt():
|
|||||||
client_ref.subscribe(gt["led_red"])
|
client_ref.subscribe(gt["led_red"])
|
||||||
client_ref.subscribe(gt["led_green"])
|
client_ref.subscribe(gt["led_green"])
|
||||||
client_ref.subscribe(gt["led_bl"])
|
client_ref.subscribe(gt["led_bl"])
|
||||||
client_ref.subscribe(gt["status_red"])
|
client_ref.subscribe(gt["led_status_red"])
|
||||||
client_ref.subscribe(gt["status_green"])
|
client_ref.subscribe(gt["led_status_green"])
|
||||||
_mqtt_connected = True
|
_mqtt_connected = True
|
||||||
info("MQTT reconnected!")
|
info("MQTT reconnected!")
|
||||||
publish_discovery(client_ref)
|
publish_discovery(client_ref)
|
||||||
@@ -761,13 +715,13 @@ def publish_discovery(client):
|
|||||||
info(f"Discovery: gauge {i} backlight")
|
info(f"Discovery: gauge {i} backlight")
|
||||||
|
|
||||||
client.publish(
|
client.publish(
|
||||||
gt["status_red_disc"],
|
gt["led_status_red_disc"],
|
||||||
ujson.dumps(
|
ujson.dumps(
|
||||||
{
|
{
|
||||||
"name": f"{g['name']} Status Red",
|
"name": f"{g['name']} Status Red",
|
||||||
"uniq_id": f"{MQTT_CLIENT_ID}_g{i}_status_red",
|
"uniq_id": f"{MQTT_CLIENT_ID}_g{i}_status_red",
|
||||||
"cmd_t": gt["status_red"],
|
"cmd_t": gt["led_status_red"],
|
||||||
"stat_t": gt["status_red_state"],
|
"stat_t": gt["led_status_red_state"],
|
||||||
"pl_on": "ON",
|
"pl_on": "ON",
|
||||||
"pl_off": "OFF",
|
"pl_off": "OFF",
|
||||||
"icon": "mdi:led-on",
|
"icon": "mdi:led-on",
|
||||||
@@ -780,13 +734,13 @@ def publish_discovery(client):
|
|||||||
info(f"Discovery: gauge {i} status red")
|
info(f"Discovery: gauge {i} status red")
|
||||||
|
|
||||||
client.publish(
|
client.publish(
|
||||||
gt["status_green_disc"],
|
gt["led_status_green_disc"],
|
||||||
ujson.dumps(
|
ujson.dumps(
|
||||||
{
|
{
|
||||||
"name": f"{g['name']} Status Green",
|
"name": f"{g['name']} Status Green",
|
||||||
"uniq_id": f"{MQTT_CLIENT_ID}_g{i}_status_green",
|
"uniq_id": f"{MQTT_CLIENT_ID}_g{i}_status_green",
|
||||||
"cmd_t": gt["status_green"],
|
"cmd_t": gt["led_status_green"],
|
||||||
"stat_t": gt["status_green_state"],
|
"stat_t": gt["led_status_green_state"],
|
||||||
"pl_on": "ON",
|
"pl_on": "ON",
|
||||||
"pl_off": "OFF",
|
"pl_off": "OFF",
|
||||||
"icon": "mdi:led-on",
|
"icon": "mdi:led-on",
|
||||||
|
|||||||
Reference in New Issue
Block a user