Discovery missing effects
This commit is contained in:
53
gauge.py
53
gauge.py
@@ -923,6 +923,59 @@ def connect_mqtt():
|
|||||||
raise last_error
|
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
|
_mqtt_check_interval_ms = 30000
|
||||||
_last_mqtt_check = 0
|
_last_mqtt_check = 0
|
||||||
_discovery_queue = []
|
_discovery_queue = []
|
||||||
|
|||||||
Reference in New Issue
Block a user