# Conventions ## Nommage des fichiers - Un capteur = un fichier `sensors/.md` en minuscules, sans tiret dans le nom s'il n'est pas dans la marque (`nextpm.md`, `sps30.md`, `bme280.md`). - Un parser = un fichier `parsers/-.md` (`udp-miotiq.md`, `mqtt-tb.md`). - Un format = un fichier `formats/.md` décrivant le schéma et les exemples. ## Style Markdown - Titre de niveau 1 unique en haut du fichier. - Tables pour les registres, commandes, champs de payload. - Blocs de code annotés du langage (` ```c `, ` ```python `, ` ```json `). - Unités explicites dans chaque champ : `µg/m³`, `°C`, `%HR`, `ms`. - Endianness toujours précisée pour les champs multi-octets. ## Versioning - Ce repo suit la branche `main`. Pas de tag de version pour l'instant. - Si un protocole évolue de façon **incompatible**, créer une section « Historique » en bas du fichier capteur/format, dater le changement et décrire le breaking change. Les firmwares référencent la révision du fichier qu'ils implémentent. - Pour les breaking changes majeurs (nouvelle structure payload, renommage de champ), ouvrir une PR et taguer le repo `vX` après merge. ## Code d'exemple - Les snippets dans cette doc sont **illustratifs**. Le code de production vit dans les repos firmware/backend. - Toujours lier vers le fichier source réel quand c'est possible (ex : `server/sites/data.mobileair.fr/udp_miotiq_byte.php`). - Éviter les exemples qui dépendent de constantes secrètes (clés API, tokens) — remplacer par ``. ## Unités et types de données canoniques | Grandeur | Unité | Type JSON | Notes | |------------------------|---------|-----------|-------------------------------------| | PM1 / PM2.5 / PM10 | µg/m³ | number | 1 décimale suffit | | Température | °C | number | 1 décimale | | Humidité relative | % | number | 0–100 | | Pression | hPa | number | | | Latitude / Longitude | degrés | number | WGS84, 6 décimales | | Timestamp | secondes UTC | integer | Unix epoch, UTC toujours | | Signal cellulaire | dBm ou % | integer | préciser selon capteur |