The previous doc described only the proprietary 0x81 UART protocol, but all current AirCarto firmwares (NebuleAir Pro 4G, ModuleAir light) talk to the NextPM in Modbus RTU. Document the actual register mapping (PM at 0x38/0x44 for 10s/60s averages, T/HR at 0x6B/0x6A, status at 0x13, 5 granulometric channels at 0x80-0x88), the LSW-MSW word order, and both reading strategies (per-register and bulk read). Move the proprietary 0x81 protocol to an annex; drop Python/C examples (to be published in separate docs). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
aircarto-protocols
Documentation de référence pour tous les capteurs AirCarto : protocoles de communication (UART, I2C, UDP, HTTP, MQTT…), formats de données, parsers et conventions.
Public visé — chaque projet firmware ou backend AirCarto consomme cette doc pour intégrer la logique commune (dialogue capteur, format d'envoi, parsing côté serveur) sans réinventer ni diverger.
Structure
aircarto-protocols/
├── CONVENTIONS.md Nommage, versioning, style doc
├── data-budget.md Estimation conso cellulaire vs budget Miotiq 1 Go/10 ans
├── formats/ Formats d'échange et parsers associés
│ ├── json-payload.md Format JSON canonique des mesures
│ ├── iso-pollutant-codes.md Mapping ISO_XX → polluant / grandeur
│ ├── mqtt.md Topics et conventions MQTT
│ └── udp-miotiq.md Webhook Miotiq (UDP → HTTPS JSON) + descripteur binaire
└── sensors/ Un fichier par capteur
├── _TEMPLATE.md Gabarit à copier pour tout nouveau capteur
└── nextpm.md NextPM (Tera Sensor) — UART
Index des capteurs
| Capteur | Interface | Doc | État |
|---|---|---|---|
| NextPM | UART | sensors/nextpm.md | Complet |
Index des parsers
| Nom | Transport | Doc | État |
|---|---|---|---|
| UDP Miotiq | UDP → HTTPS JSON | formats/udp-miotiq.md | Descripteur NebuleAir Pro 4G + legacy MobileAir |
Comment ajouter une entrée
- Nouveau capteur : copier
sensors/_TEMPLATE.mdverssensors/<nom>.md, remplir les sections, mettre à jour l'index ci-dessus. - Nouveau format ou parser : créer le fichier sous
formats/, mettre à jour l'index. - Voir CONVENTIONS.md pour le style et le nommage.
Pourquoi ce repo
Avant : chaque firmware AirCarto (NebuleAir, ModuleAir, MobileAir…) redéfinissait ses trames et son format JSON dans son coin. Les parsers côté serveur (data.mobileair.fr/udp_miotiq_*.php, gestion.aircarto.fr) devaient suivre. Résultat : dérives silencieuses entre capteurs, bugs d'intégration.
Ici on centralise la spécification :
- Capteur → Miotiq : payload UDP binaire, décodé côté Miotiq via un descripteur (
formats/udp-miotiq.md). - Miotiq → serveur AirCarto : JSON canonique 2026 (
formats/json-payload.md) posté surapi.aircarto.com/receive_data. - Vocabulaire polluants : codes ISO LCSQA (
formats/iso-pollutant-codes.md). - Capteurs physiques : docs individuelles sous
sensors/(protocole UART/I2C, câblage, commandes).
Le code de référence reste dans les repos des projets (firmwares, backends) ; ce repo décrit ce qui est attendu sur le fil.