Traducido del English por IA ·
Todavía tenemos algunos de estos en campo. La diferencia está en quién controla DHCP.Con wpa-conf, ifupdown inicia wpa_supplicant con tu configuración y luego ejecuta dhclient en wlan0 por sí mismo. wpa_supplicant elige una red de los bloques del archivo; a ifupdown no le importa cuál. Es sencillo, y suficiente para «conectarse a cualquiera de estas dos que esté disponible».Con wpa-roam, wpa_supplicant funciona en modo de roaming y llama a wpa_action en cada conexión y desconexión, que a su vez levanta una interfaz lógica. Cada bloque de red puede llevar un id_str que indica la interfaz lógica a usar, y cualquiera sin él recae en iface default. Está pensado para tener ajustes IP distintos por red. El problema es que wpa_action debe ver la desconexión para liberar el arrendamiento anterior; cuando el nodo se traslada y el AP desaparece en un orden extraño, quedas asociado sin ningún arrendamiento. Ese es el síntoma que tenéis en campo.Para dos redes con DHCP, usa wpa-conf y prioridades:
# /etc/network/interfaces
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
# /etc/wpa_supplicant/wpa_supplicant.conf
network={
ssid="LAB-WIFI"
psk="..."
priority=10
}
network={
ssid="FIELD-AP"
psk="..."
priority=5
}
En el lado de Hermetry, cada cambio entre redes elimina la sesión MQTT, así que haz que tu cliente se reconecte con backoff y vuelva a suscribirse. Si el nodo tiene una alarma de desconexión, ajusta su tiempo de open-after por encima de lo que tarda caminar del laboratorio a la parcela, o recibirás una en cada viaje.
We still have a few of these in the field. The difference is who drives DHCP.
With wpa-conf, ifupdown starts wpa_supplicant with your config and then runs dhclient on wlan0 itself. wpa_supplicant picks a network from the blocks in the file, ifupdown doesn’t care which one. Simple, and enough for «connect to whichever of these two is around».
With wpa-roam, wpa_supplicant runs in roaming mode and calls wpa_action on every connect and disconnect, which then brings up a logical interface. Each network block can carry an id_str that names the logical interface to use, and anything without one falls to iface default. It’s meant for different IP settings per network. The catch is that wpa_action must see the disconnect to take the old lease down; when the node is carried away and the AP disappears in a funny order, you end up associated with no lease. That’s your field symptom.
For two DHCP networks use wpa-conf and priorities:
# /etc/network/interfaces
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
# /etc/wpa_supplicant/wpa_supplicant.conf
network={
ssid="LAB-WIFI"
psk="..."
priority=10
}
network={
ssid="FIELD-AP"
psk="..."
priority=5
}
On the Hermetry side, each move between networks drops the MQTT session, so make your client reconnect with backoff and resubscribe. If the node has an offline alarm, set its open-after time longer than a walk from the lab to the plot or you’ll get one every trip.

