Discovery missing effects

This commit is contained in:
2026-04-21 23:08:16 +02:00
parent 70a6719553
commit cf36a2c07f

View File

@@ -923,6 +923,59 @@ def connect_mqtt():
raise last_error
def check_mqtt():
global client_ref, _mqtt_connected, _last_mqtt_check
now = utime.ticks_ms()
if utime.ticks_diff(now, _last_mqtt_check) < _mqtt_check_interval_ms:
return _mqtt_connected
_last_mqtt_check = now
if client_ref is None:
return False
try:
client_ref.ping()
_mqtt_connected = True
return True
except Exception as e:
log_err(f"MQTT connection lost: {e}")
_mqtt_connected = False
log_err("Attempting MQTT reconnection...")
from umqtt.robust import MQTTClient
for attempt in range(3):
try:
client_ref = MQTTClient(
client_id=MQTT_CLIENT_ID,
server=MQTT_BROKER,
port=MQTT_PORT,
user=MQTT_USER,
password=MQTT_PASSWORD,
keepalive=30,
)
client_ref.set_callback(on_message)
client_ref.connect()
_mqtt_connected = True
info("MQTT reconnected!")
schedule_discovery()
_subscribe_all(client_ref)
publish_online(client_ref)
publish_state(client_ref)
publish_backlight_states(client_ref)
return True
except Exception as e2:
log_err(f"MQTT reconnect attempt {attempt + 1} failed: {e2}")
try:
client_ref.sock.close()
except Exception:
pass
gc.collect()
utime.sleep_ms(2000)
log_err("MQTT reconnection failed after 3 attempts")
return False
_mqtt_check_interval_ms = 30000
_last_mqtt_check = 0
_discovery_queue = []