Système de fichiers en lecture seule sur mon Pi passerelle RaspAP : que deviennent les mesures tamponnées ?
Traduit de English par IA ·
De retour avec le Pi de la serre (celui que je n’ai pas exposé à internet, encore merci). Il fait maintenant tourner RaspAP comme petit point d’accès pour six capteurs ESP8266. Ils publient vers mosquitto sur le Pi, et un script Python transmet tout à Hermetry comme passerelle sur v1/gw/telemetry, avec un enfant par ESP.Deux coupures de courant en une semaine, et la carte SD est revenue une fois avec un mosquitto.db corrompu. Les gens disent d’utiliser un système de fichiers en lecture seule. Mais j’ai aussi lu que RaspAP « verrouille » le système de fichiers ou n’aime pas les overlays ? Et mon transmetteur garde un tampon dans un fichier SQLite pour les moments où la 4G tombe. Si le système de fichiers est en lecture seule, où cela va-t-il ?Désolé, trois questions en une.
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.
Traduit de English par IA ·
La corruption de la carte SD en cas de coupure de courant est la panne classique du Pi. Le système de fichiers overlay via raspi-config (Performance Options > Overlay File System) fonctionne bien.
SD corruption on power loss is the classic Pi failure. Overlay FS through raspi-config (Performance Options > Overlay File System) works well.
Traduit de English par IA ·
Combien de temps durent généralement les coupures ? Quelques minutes ou plusieurs heures ?
How long are the outages usually? Minutes or hours?
Traduit de English par IA ·
Les coupures 4G durent quelques minutes. Les coupures de courant, c’est la faute du jardin ouvrier, quelques heures.
4G drops are minutes. Power cuts are the allotment’s fault, a few hours.
Traduit de English par IA ·
RaspAP ne verrouille rien : il écrit sa configuration sous /etc/raspap ainsi que dans les fichiers hostapd/dnsmasq. Avec l’overlay activé, toute modification faite dans son interface web disparaît après redémarrage. C’est le fameux « il n’aime pas les 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.
Traduit de English par IA ·
Un petit HAT UPS éviterait totalement que les coupures de courant posent problème.
A small UPS HAT would stop the power cuts being a problem at all.
Traduit de English par IA ·
Les mesures issues de la coupure s’afficheraient-elles toujours à la bonne heure lorsqu’elles seront enfin envoyées ?
Would the readings from the outage still show at the right time when they finally get sent?
Traduit de English par IA ·
J’exploite une trentaine de ces petites passerelles dans des postes électriques, avec le même schéma.Overlay activé pour le système de fichiers racine, oui. Effectue tes modifications RaspAP avec l’overlay désactivé, redémarre, puis réactive-le. Pénible mais rare.Le tampon a besoin d’un emplacement qui survit aux redémarrages et aux coupures de courant : une seconde partition sur la carte (ou une clé USB) montée en lecture-écriture avec ext4 et son journal, en dehors de l’overlay. Dirige SQLite vers cet emplacement, avec PRAGMA journal_mode=WAL et synchronous=NORMAL. Une coupure ne coûte alors que les dernières écritures au maximum, pas la base. Déplace aussi la persistance de mosquitto vers là, ou désactive-la puisque ton forwarder tamponne déjà.Pour la question de Rachel : oui, si tu horodates chaque mesure avec ts en millisecondes UTC au moment où l’ESP l’envoie (seulement si l’horloge du Pi est synchronisée, ce qui est le cas une fois la 4G active, et garde un fake-hwclock pour ne pas revenir en 1970 après une coupure). Envoie le retard par lots, par enfant :
{"esp-bed3": [{"ts": 1767254400000, "values": {"soil_pct": 41}},
{"ts": 1767254460000, "values": {"soil_pct": 41}}]}
Les enregistrements sont placés à leur propre heure dans l’historique. Un message dont tous les enregistrements sont antérieurs d’une minute est compté comme une rejeu et doit respecter le débit de rejeu du profil ; un long retard se résorbe donc progressivement. Ne panique pas si tout n’apparaît pas en une seconde. Et attends le PUBACK avant de supprimer des lignes. Voir 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.
Traduit de English par IA ·
Overlay activé, buffer.db sur une clé USB en ext4, mode WAL, persistance de mosquitto désactivée. J’ai débranché volontairement pendant une coupure 4G : le Pi est revenu, les 20 minutes de mesures se sont vidées en une minute environ et apparaissent aux bonnes heures sur le graphique. Emily, merci, j’aurais perdu mes réglages AP sans savoir pourquoi.
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.
- Vous devez être connecté pour répondre à ce sujet.
Rejoignez la discussion
Connectez-vous pour poser et répondre à des questions, aimer les messages utiles et marquer la réponse qui a résolu votre problème. Chaque contribution rapporte des points et des niveaux.

