diff --git a/gauge.py b/gauge.py index c0648fb..c060a2f 100644 --- a/gauge.py +++ b/gauge.py @@ -884,12 +884,25 @@ def _subscribe_all(c): c.subscribe(f"{prefix}/status_led/green/set") +def _probe_tcp(host, port, timeout_s=10): + """Open and immediately close a TCP connection to verify the route is up.""" + import usocket + s = usocket.socket() + s.settimeout(timeout_s) + try: + s.connect(usocket.getaddrinfo(host, port)[0][-1]) + finally: + s.close() + + def connect_mqtt(): global client_ref, _mqtt_connected info(f"Connecting to MQTT broker {MQTT_BROKER}:{MQTT_PORT} ...") last_error = None for attempt in range(3): try: + _probe_tcp(MQTT_BROKER, MQTT_PORT) + if client_ref is not None: try: client_ref.disconnect()