OpenCode experiments...

This commit is contained in:
2026-04-21 21:15:10 +02:00
parent ad50fd2ee5
commit 423b9f91be

View File

@@ -25,19 +25,10 @@ import network
import utime
import ujson
import gc
import usocket
from umqtt.robust import MQTTClient
from machine import UART
# Activate WiFi driver before any heavy heap allocation so it can claim its
# contiguous DRAM block before the Python heap fragments the address space.
# Only activate if not already running (e.g. boot.py may have started it).
gc.collect()
_early_wlan = network.WLAN(network.STA_IF)
if not _early_wlan.active():
_early_wlan.active(True)
del _early_wlan
gc.collect()
# ---------------------------------------------------------------------------
# Logging
# ---------------------------------------------------------------------------
@@ -577,6 +568,22 @@ def connect_wifi(ssid, password, timeout_s=15, force_reconnect=False):
info(f" MAC : {mac}")
info(f" IP : {ip} mask:{mask} gw:{gw} dns:{dns}")
utime.sleep_ms(500)
if dns in ("0.0.0.0", ""):
info("DNS not yet from DHCP — waiting ...")
for _ in range(30):
utime.sleep_ms(200)
ip, mask, gw, dns = _wifi_sta.ifconfig()
if dns not in ("0.0.0.0", ""):
info(f"DHCP settled: DNS={dns}")
break
info(" still waiting ...")
utime.sleep_ms(1000)
info(f"Testing DNS for {MQTT_BROKER} ...")
try:
ai = usocket.getaddrinfo(MQTT_BROKER, MQTT_PORT)
info(f"DNS resolved: {ai[0][4][0]}")
except Exception as e:
warn(f"DNS test failed: {e}")
return ip
except Exception as e:
last_error = e
@@ -894,16 +901,25 @@ def connect_mqtt():
except Exception:
pass
broker_ip = MQTT_BROKER
try:
ai = usocket.getaddrinfo(MQTT_BROKER, MQTT_PORT)
broker_ip = ai[0][4][0]
info(f"Resolved {MQTT_BROKER}{broker_ip}")
except Exception as e:
warn(f"Could not resolve {MQTT_BROKER}: {e} — using hostname as-is")
client = MQTTClient(
client_id=MQTT_CLIENT_ID,
server=MQTT_BROKER,
server=broker_ip,
port=MQTT_PORT,
user=MQTT_USER,
password=MQTT_PASSWORD,
keepalive=30,
)
client.set_callback(on_message)
client.sock.settimeout(15)
client.connect()
client.sock.settimeout(0)
client_ref = client
_mqtt_connected = True
info(f"MQTT connected client_id={MQTT_CLIENT_ID}")
@@ -1311,6 +1327,11 @@ def apply_motion_defaults():
def main():
gc.collect()
_w = network.WLAN(network.STA_IF)
if not _w.active():
_w.active(True)
del _w
gc.collect()
info("=" * 48)
info("Gauge MQTT controller starting")