Sistema de archivos de solo lectura en mi Pi gateway con RaspAP: ¿qué pasa con las lecturas en búfer?
Traducido del English por IA ·
De vuelta con la Pi del invernadero (la que no expuse a internet, gracias de nuevo). Ahora ejecuta RaspAP como un pequeño punto de acceso para seis sensores ESP8266. Publican en mosquitto en la Pi, y un script de Python reenvía todo a Hermetry como gateway en v1/gw/telemetry, con un hijo por cada ESP.Dos cortes de luz en una semana, y la tarjeta SD volvió una vez con un mosquitto.db corrupto. La gente dice que use un sistema de archivos de solo lectura. Pero también leí que RaspAP «bloquea» el sistema de archivos o que no le gustan los overlays. Además, mi reenviador guarda un búfer en un archivo SQLite para cuando se cae el 4G. Si el sistema de archivos es de solo lectura, ¿dónde va eso?Perdón, tres preguntas en una.
Back with the greenhouse Pi (the one I didn’t expose to the internet, thanks again). It now runs RaspAP as a little access point for six ESP8266 sensors. They publish to mosquitto on the Pi, and a Python script forwards everything to Hermetry as a gateway on v1/gw/telemetry, one child per ESP.
Two power cuts in a week and the SD card came back with a corrupted mosquitto.db once. People say use a read-only filesystem. But I also read that RaspAP «locks» the filesystem or doesn’t like overlays? And my forwarder keeps a buffer in a SQLite file for when the 4G drops. If the filesystem is read-only, where does that go?
Sorry, three questions in one.
Traducido del English por IA ·
La corrupción de la tarjeta SD por un corte de energía es el fallo clásico de la Pi. El sistema de archivos overlay mediante raspi-config (Performance Options > Overlay File System) funciona bien.
SD corruption on power loss is the classic Pi failure. Overlay FS through raspi-config (Performance Options > Overlay File System) works well.
Traducido del English por IA ·
¿Cuánto duran normalmente los cortes? ¿Minutos u horas?
How long are the outages usually? Minutes or hours?
Traducido del English por IA ·
Las caídas de 4G duran minutos. Los cortes de corriente son culpa del huerto comunitario, unas pocas horas.
4G drops are minutes. Power cuts are the allotment’s fault, a few hours.
Traducido del English por IA ·
RaspAP no bloquea nada: escribe su configuración en /etc/raspap y en los archivos de hostapd/dnsmasq. Con el overlay activado, cualquier cambio que hagas en su interfaz web desaparece tras reiniciar. Esa es la historia de «no le gustan los overlays».
RaspAP doesn’t lock anything, it writes its config under /etc/raspap and the hostapd/dnsmasq files. With the overlay on, any change you make in its web UI is gone after reboot. That’s the «it doesn’t like overlays» story.
Traducido del English por IA ·
Un pequeño UPS HAT evitaría por completo que los cortes de energía supongan un problema.
A small UPS HAT would stop the power cuts being a problem at all.
Traducido del English por IA ·
¿Las lecturas de la interrupción seguirían mostrando la hora correcta cuando por fin se envíen?
Would the readings from the outage still show at the right time when they finally get sent?
Traducido del English por IA ·
Tengo unas treinta de estas pequeñas pasarelas en subestaciones, con el mismo patrón.Overlay activado para el sistema de archivos raíz, sí. Haz tus cambios de RaspAP con el overlay desactivado, reinicia y vuelve a activarlo. Molesto pero poco frecuente.El búfer necesita un lugar que sobreviva a reinicios y cortes de energía: una segunda partición en la tarjeta (o una memoria USB) montada en lectura-escritura con ext4 y su journal, fuera del overlay. Apunta SQLite allí, con PRAGMA journal_mode=WAL y synchronous=NORMAL. Un corte entonces te costará como mucho las últimas escrituras, no la base de datos. Mueve también la persistencia de mosquitto allí, o desactívala ya que tu forwarder ya almacena en búfer.Sobre la pregunta de Rachel: sí, si marcas cada lectura con ts en milisegundos UTC cuando el ESP la envía (solo si el reloj de la Pi está sincronizado, lo cual ocurre una vez que 4G está activo, y mantén un fake-hwclock para que no aparezca 1970 tras un corte de energía). Envía el acumulado en lotes por hijo:
{"esp-bed3": [{"ts": 1767254400000, "values": {"soil_pct": 41}},
{"ts": 1767254460000, "values": {"soil_pct": 41}}]}
Los registros se guardan en su propio momento del historial. Un mensaje cuyos registros tienen todos más de un minuto de antigüedad cuenta como reproducción y debe ajustarse a la tasa de reproducción del perfil, así que un acumulado largo se vacía con el tiempo. No te preocupes si no aparece todo en un segundo. Y espera al PUBACK antes de borrar filas. Consulta Devices behind a gateway.
I run about thirty of these little gateways on substations, same pattern.
Overlay on for the root filesystem, yes. Do your RaspAP changes with the overlay switched off, reboot, switch it back on. Annoying but rare.
The buffer needs a place that survives reboots and power loss: a second partition on the card (or a USB stick) mounted read-write with ext4 and its journal, outside the overlay. Point SQLite there, with PRAGMA journal_mode=WAL and synchronous=NORMAL. A cut then costs you at most the last few writes, not the database. Move mosquitto’s persistence there too, or turn persistence off since your forwarder already buffers.
On Rachel’s question: yes, if you stamp each reading with ts in UTC milliseconds when the ESP sends it (only if the Pi’s clock is synced, which it is once 4G is up, and keep a fake-hwclock so it isn’t 1970 after a power cut). Send the backlog in batches per child:
{"esp-bed3": [{"ts": 1767254400000, "values": {"soil_pct": 41}},
{"ts": 1767254460000, "values": {"soil_pct": 41}}]}
Records land at their own time in history. A message whose every record is older than a minute counts as a replay and has to fit the profile’s replay rate, so a long backlog drains over a while. Don’t panic when it doesn’t all appear in one second. And wait for the PUBACK before deleting rows. See Devices behind a gateway.
Traducido del English por IA ·
Overlay activado, buffer.db en un USB con ext4, modo WAL, persistencia de mosquitto desactivada. Desconecté la corriente a propósito durante un corte 4G: el Pi volvió, las 20 minutos de lecturas se vaciaron en aproximadamente un minuto y aparecen en las horas correctas en la gráfica. Emily, gracias, habría perdido mis ajustes de AP sin saber por qué.
Overlay on, buffer.db on a USB stick with ext4, WAL mode, mosquitto persistence off. Pulled the plug during a 4G outage on purpose: Pi came back, the 20 minutes of readings drained over about a minute and sit at the right times on the chart. Emily, thanks, I’d have lost my AP settings without knowing why.
- 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.

