3.5 KiB
3.5 KiB
Format JSON canonique — mesures capteurs
Format recommandé pour tout nouvel envoi de mesures d'un capteur AirCarto vers un backend (HTTP POST, MQTT publish, webhook…).
Les chemins d'envoi existants (Miotiq binaire 17 octets, CSV) restent documentés dans
parsers/udp-miotiq.mdpour compatibilité. Ce JSON est la cible pour les nouveaux développements.
Schéma
{
"token": "string",
"ts": 1713830400,
"type_conn": "LTE-M",
"measurements": {
"pm1": 0.0,
"pm25": 0.0,
"pm10": 0.0,
"temperature": 0.0,
"humidity": 0.0
},
"gps": {
"lat": 43.605,
"lon": 1.444,
"sats": 8
},
"link": {
"signal": -78,
"imsi": "208xxxxxxxxxxx"
},
"fw": "1.4.2"
}
Champs
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
token |
string | oui | Identifiant unique du capteur (= clé en base capteurs.capteurs). |
ts |
integer | oui | Timestamp Unix UTC en secondes de la mesure (pas de la réception). |
type_conn |
string | oui | Un des : WiFi, LTE-M, LTE-BIN, NB-IoT, LoRa, Ethernet. |
measurements.pm1 |
number | si mesuré | µg/m³ |
measurements.pm25 |
number | si mesuré | µg/m³ |
measurements.pm10 |
number | si mesuré | µg/m³ |
measurements.temperature |
number | si mesuré | °C |
measurements.humidity |
number | si mesuré | % HR |
gps.lat |
number | si GPS | Degrés décimaux WGS84, 6 décimales. |
gps.lon |
number | si GPS | Idem. |
gps.sats |
integer | si GPS | Nombre de satellites vus. |
link.signal |
integer | non | RSSI en dBm (négatif) ou % de qualité ; préciser dans type_conn. |
link.imsi |
string | non | IMSI de la SIM (modem cellulaire uniquement). |
fw |
string | non | Version firmware du capteur, ex. 1.4.2. |
Règles
- Omettre un champ si non mesuré. Ne pas envoyer
nullni-1comme valeur sentinelle (hérité du legacy CSV Miotiq). tscôté capteur si dispo (GPS / NTP), sinon côté serveur à la réception — documenter au cas par cas dans la doc du capteur.- Toutes les valeurs numériques utilisent le point
.comme séparateur décimal. - Un seul capteur par message. Pas de batch (à revoir si besoin).
Réponse attendue du serveur
{ "ok": true }
Ou en cas d'erreur :
{ "ok": false, "error": "token inconnu" }
HTTP 200 dans les deux cas pour ne pas déclencher de retry cellulaire côté modem ; le ok: false indique à la supervision qu'il y a un problème applicatif.
Exemple minimal
{
"token": "001",
"ts": 1713830400,
"type_conn": "WiFi",
"measurements": { "pm25": 12.3 }
}