Novedad: el cortafuegos de IA supervisa toda la plataforma y explica cada incidente con palabras sencillas. Vea cómo funciona

Pasarela Pi que alterna entre el WiFi de casa y el punto de acceso del móvil en el huerto

Pasarela Pi que alterna entre el WiFi de casa y el punto de acceso del móvil en el huerto

Resuelto 5 5

Traducido del English por IA ·

Hola a todos. Tengo una Pi 4 que lee la humedad del suelo y un par de DS18B20 en nuestro huerto comunitario los sábados, y el resto de la semana está en casa, sobre la mesa, leyendo los sensores del invernadero. Publica en Hermetry con paho-mqtt.Problema: solo se conecta a mi WiFi de casa. En el huerto activo el punto de acceso de mi móvil, pero la Pi no se une, así que vuelvo a casa sin ningún dato en Hermetry ese día. Seguí una guía y añadí ambas redes en /etc/wpa_supplicant/wpa_supplicant.conf con priority=, pero parece que el archivo se ignora.

$ cat /etc/os-release | head -1
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
$ nmcli -t -f NAME,TYPE con show
preconfigured:802-11-wireless
lo:loopback

Segunda cuestión, relacionada: si se queda sin conexión un rato, ¿puedo guardar las lecturas y enviarlas después? Ahora mismo el script simplemente las descarta cuando falla la publicación.

♥ 0

Traducido del English por IA ·

Bookworm ahora usa NetworkManager, así que wpa_supplicant.conf ya no se lee. La forma correcta es nmcli.

Measure twice, poll once.
♥ 0

Traducido del English por IA ·

Kevin tiene razón, y la conexión «preconfigured» es la que creó el imager a partir de tu WiFi de casa. Añade el hotspot como segunda conexión de NetworkManager y asigna una prioridad a ambas. Yo llevo una Pi entre dos fábricas exactamente con esta configuración.

sudo nmcli con add type wifi ifname wlan0 con-name allotment 
     ssid "Aisha-phone" wifi-sec.key-mgmt wpa-psk wifi-sec.psk "********"
sudo nmcli con modify allotment connection.autoconnect yes connection.autoconnect-priority 10
sudo nmcli con modify preconfigured connection.autoconnect-priority 20
nmcli -f NAME,AUTOCONNECT,AUTOCONNECT-PRIORITY con show

Si ambas están al alcance, gana la prioridad más alta, así que primero la de casa. Enciende el hotspot antes de alimentar la Pi; si arranca primero, dale un minuto, NetworkManager vuelve a escanear.Para el almacenamiento temporal: guarda las lecturas en una tabla SQLite pequeña o incluso en un archivo JSONL, y cuando vuelva la conexión envíalas con sus propias marcas de tiempo, en lotes:

[{"ts": 1762668000000, "values": {"soil.bed3": 31.5, "air.temp": 12.1}},
 {"ts": 1762668300000, "values": {"soil.bed3": 31.2, "air.temp": 12.6}}]

ts está en milisegundos UTC. Borra una fila solo después de confirmar la publicación (QoS 1, espera el PUBACK en paho con wait_for_publish()).Una trampa con la Pi: no tiene reloj con batería de respaldo. Si arranca en el huerto y no obtiene red durante un rato, el reloj es incorrecto hasta que NTP se sincroniza, y las lecturas marcadas con ese reloj acaban con la hora equivocada o se descartan (más de 10 minutos en el futuro se rechaza). Marca las lecturas con hora solo cuando timedatectl show -p NTPSynchronized diga yes; si no, envíalas sin ts y deja que Hermetry use la hora de llegada.

Ground loops are my cardio.
Solución aceptada♥ 3

Traducido del English por IA ·

Compré una RTC HAT barata justo para este motivo, una DS3231, por un par de libras. Así el reloj está bien incluso sin conexión.

Ask me about 4–20 mA.
♥ 0

Traducido del English por IA ·

Y mantén los lotes en un tamaño razonable: el valor por defecto es de 10 mensajes por segundo y por dispositivo. Una acumulación grande enviada de una vez se descarta.

QoS 1 and a lot of patience.
♥ 0

Traducido del English por IA ·

Resuelto. Añadí el punto de acceso con nmcli como escribió tsmith, prioridades 20/10. El sábado se conectó al teléfono unos 40 s después del arranque. Las lecturas se guardaron en un archivo JSONL mientras el teléfono no tenía señal en los bancales del fondo, y luego se enviaron en lotes de 50 cuando volvió la señal. La primera semana, las horas estaban desfasadas una hora en las primeras lecturas, justo el tema del NTP, así que encargué un DS3231 como Michael. Mientras llega, el script comprueba NTPSynchronized antes de poner la marca de tiempo.

♥ 0
Viendo 6 entradas – de la 1 a la 6 (de un total de 6)
  • Debes estar registrado para responder a este debate.

Únete a la conversación

Inicia sesión para preguntar y responder, dar me gusta a las publicaciones útiles y marcar la respuesta que resolvió tu problema. Cada aportación suma puntos y niveles.

Compartir