367 lines
17 KiB
JSON
367 lines
17 KiB
JSON
{
|
|
"versions": [
|
|
{
|
|
"version": "1.6.4",
|
|
"date": "2026-04-02",
|
|
"changes": {
|
|
"features": [
|
|
"Page modem: boutons Activer/Desactiver LED status connexion PCB (AT+UGPIOC=16,2 / AT+UGPIOC=16,255)"
|
|
],
|
|
"improvements": [
|
|
"Page modem: messages de progression en 3 etapes pendant le reset hardware (coupure, redemarrage, test connexion)",
|
|
"Page modem: bouton reset hardware desactive pendant l'operation pour eviter les doubles clics"
|
|
],
|
|
"fixes": [],
|
|
"compatibility": []
|
|
},
|
|
"notes": "Le reset hardware affiche maintenant les etapes en temps reel (~20s). Deux nouveaux boutons permettent de controler la LED bleue du PCB qui indique l'etat de la connexion reseau du modem."
|
|
},
|
|
{
|
|
"version": "1.6.3",
|
|
"date": "2026-04-01",
|
|
"changes": {
|
|
"features": [
|
|
"Page logs: bouton Auto-refresh pour suivre les logs SARA en temps reel (polling 3s)"
|
|
],
|
|
"improvements": [
|
|
"Service SARA: ajout flag python3 -u (unbuffered) pour ecriture immediate des logs dans le fichier"
|
|
],
|
|
"fixes": [],
|
|
"compatibility": [
|
|
"Necessite re-execution de setup_services.sh pour activer le mode unbuffered (optionnel, pas d'impact si non fait)"
|
|
]
|
|
},
|
|
"notes": "Les logs SARA sont maintenant visibles en temps reel sur la page logs grace au mode unbuffered Python et au rafraichissement automatique. Aucun impact sur les anciennes installations qui ne relancent pas setup_services.sh."
|
|
},
|
|
{
|
|
"version": "1.6.2",
|
|
"date": "2026-03-27",
|
|
"changes": {
|
|
"features": [],
|
|
"improvements": [
|
|
"Simplification du script de boot SARA (start.py): suppression config AirCarto, uSpot/SSL, PDP et geolocalisation",
|
|
"La configuration modem est desormais entierement geree par le script principal (SARA_send_data_v2.py)"
|
|
],
|
|
"fixes": [],
|
|
"compatibility": []
|
|
},
|
|
"notes": "Le script de boot ne fait plus que 3 choses: reset modem_config_mode, alimentation modem GPIO 16, detection modele R4/R5. Toute la configuration (URLs, certificats, PDP, geolocalisation) est deja geree par le script principal qui tourne chaque minute avec gestion d'erreur et retry."
|
|
},
|
|
{
|
|
"version": "1.6.1",
|
|
"date": "2026-03-19",
|
|
"changes": {
|
|
"features": [
|
|
"Sonometre NSRT MK4: detection deconnexion avec message explicite (page capteurs + self-test)",
|
|
"Colonne noise_status dans data_NOISE (0x00=OK, 0xFF=deconnecte)",
|
|
"ERR_NOISE (bit 5, byte 66) dans error_flags UDP quand sonometre deconnecte"
|
|
],
|
|
"improvements": [
|
|
"Script NSRT_mk4_get_data.py ecrit en base meme si capteur deconnecte (valeurs a 0, noise_status=0xFF)",
|
|
"Script read.py: message d'erreur clair au lieu de l'exception Python brute",
|
|
"Self-test: affiche 'Capteur deconnecte — verifiez le cablage USB' au lieu de l'erreur technique"
|
|
],
|
|
"fixes": [],
|
|
"compatibility": [
|
|
"Migration automatique: colonne noise_status ajoutee via set_config.py lors du firmware update"
|
|
]
|
|
},
|
|
"notes": "Gestion de la deconnexion du sonometre NSRT MK4 alignee sur le modele NPM: ecriture en base avec status d'erreur, flag ERR_NOISE dans la payload UDP, et messages utilisateur explicites sur l'interface web."
|
|
},
|
|
{
|
|
"version": "1.6.0",
|
|
"date": "2026-03-18",
|
|
"changes": {
|
|
"features": [
|
|
"Payload UDP Miotiq: envoi npm_status (byte 67) — registre status NextPM en temps reel"
|
|
],
|
|
"improvements": [
|
|
"npm_status lu depuis la derniere mesure en base (rowid DESC, pas de moyenne ni de timestamp)"
|
|
],
|
|
"fixes": [],
|
|
"compatibility": [
|
|
"Necessite mise a jour du parser Miotiq pour decoder le byte 67 (npm_status)"
|
|
]
|
|
},
|
|
"notes": "Le capteur envoie maintenant le registre status du NextPM dans chaque trame UDP (byte 67). La valeur est prise de la derniere mesure sans moyenne (un code erreur ne se moyenne pas). Utilise rowid pour eviter toute dependance au RTC."
|
|
},
|
|
{
|
|
"version": "1.5.2",
|
|
"date": "2026-03-18",
|
|
"changes": {
|
|
"features": [
|
|
"Page capteurs: lecture NPM via get_data_modbus_v3.py --dry-run (meme script que le timer)",
|
|
"Page capteurs: affichage temperature et humidite interne du NPM",
|
|
"Page capteurs: decodage npm_status avec flags d'erreur individuels"
|
|
],
|
|
"improvements": [
|
|
"NPM get_data_modbus_v3.py: mode --dry-run (print JSON sans ecriture en base)",
|
|
"Page capteurs: status NPM affiche en vert (OK) ou orange/rouge (erreurs decodees)"
|
|
],
|
|
"fixes": [
|
|
"Page capteurs: suppression unite ug/m3 sur le champ message/status"
|
|
],
|
|
"compatibility": []
|
|
},
|
|
"notes": "La page capteurs utilise maintenant le meme script Modbus que le timer systemd, en mode dry-run pour eviter les conflits d'ecriture SQLite. Le status NPM est decode bit par bit."
|
|
},
|
|
{
|
|
"version": "1.5.1",
|
|
"date": "2026-03-18",
|
|
"changes": {
|
|
"features": [
|
|
"Payload UDP Miotiq: bytes 69-71 firmware version (major.minor.patch)",
|
|
"README: documentation complete de la structure des 100 bytes UDP"
|
|
],
|
|
"improvements": [],
|
|
"fixes": [],
|
|
"compatibility": [
|
|
"Necessite mise a jour du parser Miotiq pour decoder les bytes 69-71 (firmware version)"
|
|
]
|
|
},
|
|
"notes": "Le capteur envoie maintenant sa version firmware dans chaque trame UDP. Cote serveur, bytes 69/70/71 = major/minor/patch. Documentation payload complete ajoutee au README."
|
|
},
|
|
{
|
|
"version": "1.5.0",
|
|
"date": "2026-03-18",
|
|
"changes": {
|
|
"features": [
|
|
"Payload UDP Miotiq: byte 66 error_flags (erreurs systeme RTC/capteurs)",
|
|
"Payload UDP Miotiq: byte 67 npm_status (registre status NextPM)",
|
|
"Payload UDP Miotiq: byte 68 device_status (etat general du boitier, specification)",
|
|
"Methodes SensorPayload: set_error_flags(), set_npm_status(), set_device_status()"
|
|
],
|
|
"improvements": [
|
|
"Initialisation bytes 66-68 a 0x00 au lieu de 0xFF pour eviter faux positifs cote serveur",
|
|
"Escalade erreur UDP: si PDP reset echoue, notification WiFi + hardware reboot + exit"
|
|
],
|
|
"fixes": [],
|
|
"compatibility": [
|
|
"Necessite mise a jour du parser Miotiq pour decoder les bytes 66-68 (error_flags, npm_status, device_status)"
|
|
]
|
|
},
|
|
"notes": "Ajout de registres d'erreur et d'etat dans la payload UDP (bytes 66-68). Les bytes de status sont initialises a 0x00 (aucune erreur) au lieu de 0xFF. Le flag RTC est implemente, les autres flags seront actives progressivement."
|
|
},
|
|
{
|
|
"version": "1.4.6",
|
|
"date": "2026-03-17",
|
|
"changes": {
|
|
"features": [
|
|
"Page Admin: comparaison RTC vs heure du navigateur (au lieu de system time)",
|
|
"Page Admin: ajout champ Browser time (UTC) dans l'onglet Clock",
|
|
"Page Admin: bloquer update firmware en mode hotspot avec message explicatif",
|
|
"Page Admin: liens Gitea pour mise a jour hors-ligne (releases + main.zip)"
|
|
],
|
|
"improvements": [
|
|
"Page Admin: RTC time mis en evidence (label bold, input large, bordure bleue)",
|
|
"Page Admin: System time replie dans un details/summary (non utilise par le capteur)",
|
|
"Page Admin: descriptions ajoutees pour System time, RTC time et Synchroniser le RTC"
|
|
],
|
|
"fixes": [
|
|
"Fix forget_wifi scan: delai 5s + rescan explicite pour remplir wifi_list.csv",
|
|
"Fix blocage navigateur: revert optimisations fetch qui saturaient la limite 6 connexions/domaine"
|
|
],
|
|
"compatibility": []
|
|
},
|
|
"notes": "L'onglet Clock compare maintenant le RTC a l'heure du navigateur, plus fiable que le system time Linux (non utilise par le capteur). L'update firmware est bloque en mode hotspot avec un message explicatif. La mise a jour hors-ligne via upload .zip reste disponible."
|
|
},
|
|
{
|
|
"version": "1.4.5",
|
|
"date": "2026-03-17",
|
|
"changes": {
|
|
"features": [
|
|
"Page WiFi: bouton Oublier le reseau pour passer en mode hotspot sans reboot",
|
|
"Page WiFi: badge Mode Hotspot visible dans la sidebar (lien vers page WiFi)",
|
|
"Page WiFi: scan des reseaux WiFi en mode hotspot via cache CSV (scan au demarrage)"
|
|
],
|
|
"improvements": [
|
|
"Page WiFi: refonte UI avec cards contextuelles (infos connexion detaillees si connecte, scan si hotspot)",
|
|
"Page WiFi: affichage SSID, signal, IP, passerelle, hostname, frequence, securite",
|
|
"Page WiFi: scan WiFi masque quand deja connecte, scan avec colonnes signal et securite",
|
|
"Page WiFi: migration de config.json vers get_config_sqlite",
|
|
"Endpoint internet enrichi: SSID, signal, frequence, securite, passerelle, hostname",
|
|
"Scan WiFi en mode hotspot: lecture du fichier wifi_list.csv avec notice explicative",
|
|
"forget_wifi.sh: scan WiFi avec rescan explicite et delai avant lancement hotspot"
|
|
],
|
|
"fixes": [
|
|
"Correction VERSION 1.4.3 -> 1.4.4",
|
|
"Fix IP hotspot: 192.168.43.1 -> 10.42.0.1 (defaut NetworkManager)",
|
|
"Fix forget_wifi.sh: appel bash explicite + disconnect wlan0 avant delete"
|
|
],
|
|
"compatibility": []
|
|
},
|
|
"notes": "Le bouton Oublier le reseau supprime la connexion WiFi sauvegardee, scanne les reseaux disponibles, puis demarre le hotspot (pas de reboot necessaire). En mode hotspot, la page WiFi affiche les reseaux scannes au demarrage via un cache CSV. Adresse hotspot: http://10.42.0.1/html/"
|
|
},
|
|
{
|
|
"version": "1.4.4",
|
|
"date": "2026-03-16",
|
|
"changes": {
|
|
"features": [
|
|
"Bouton Self Test disponible sur les pages Accueil, Capteurs et Admin (en plus de Modem 4G)",
|
|
"Test du module RTC DS3231 integre dans le self-test (connexion + synchronisation horloge)"
|
|
],
|
|
"improvements": [
|
|
"Refactoring self-test : code JS et HTML des modals extraits dans des fichiers partages (selftest.js, selftest-modal.html)",
|
|
"Le modal self-test est charge dynamiquement via fetch, plus besoin de dupliquer le HTML"
|
|
],
|
|
"fixes": [],
|
|
"compatibility": []
|
|
},
|
|
"notes": "Le self-test est maintenant accessible depuis toutes les pages principales. Le test RTC verifie la connexion du module et l'ecart avec l'heure systeme."
|
|
},
|
|
{
|
|
"version": "1.4.3",
|
|
"date": "2026-03-16",
|
|
"changes": {
|
|
"features": [
|
|
"Page database: bouton telecharger toute la table (bypass filtre dates)",
|
|
"Page database: validation obligatoire des dates avant telechargement par periode"
|
|
],
|
|
"improvements": [
|
|
"Payload UDP bruit: bytes 22-23 = noise_cur_leq, 24-25 = noise_cur_level, 26-27 = max_noise (reserve)",
|
|
"Envoi des deux valeurs bruit (cur_LEQ + DB_A_value) en UDP Miotiq au lieu d'une seule"
|
|
],
|
|
"fixes": [],
|
|
"compatibility": [
|
|
"Necessite mise a jour du parser Miotiq pour decoder les nouveaux champs noise_cur_leq et noise_cur_level"
|
|
]
|
|
},
|
|
"notes": "Mise a jour structure UDP bruit pour alignement avec parser Miotiq et ameliorations page database."
|
|
},
|
|
{
|
|
"version": "1.4.2",
|
|
"date": "2026-03-14",
|
|
"changes": {
|
|
"features": [],
|
|
"improvements": [],
|
|
"fixes": [
|
|
"Fix envoi UDP Miotiq: desynchronisation serie causant l'envoi de la commande AT+USOWR comme payload au lieu des donnees capteurs",
|
|
"Ajout flush buffer serie (reset_input_buffer) avant chaque etape UDP critique",
|
|
"Verification du prompt @ du modem avant envoi des donnees binaires",
|
|
"Abort propre de l'envoi UDP si creation socket, connexion ou prompt @ echoue",
|
|
"Retry creation socket apres reset PDP reussi"
|
|
],
|
|
"compatibility": []
|
|
},
|
|
"notes": "Corrige un bug ou le modem SARA envoyait la commande AT+USOWR comme donnees UDP, causant des erreurs UNKNOWN_DEVICE sur le parser Miotiq."
|
|
},
|
|
{
|
|
"version": "1.4.1",
|
|
"date": "2026-03-12",
|
|
"changes": {
|
|
"features": [],
|
|
"improvements": [
|
|
"Migration capteur bruit de l'ancien systeme I2C vers le sonometre NSRT MK4 en USB",
|
|
"Nouveau script sound_meter/read.py pour lecture a la demande (retour JSON)",
|
|
"Page capteurs: carte USB avec affichage LEQ et dB(A) au lieu de l'ancien format texte",
|
|
"Self-test modem: parsing JSON du NSRT MK4 au lieu de texte brut"
|
|
],
|
|
"fixes": [
|
|
"Correction du self-test bruit qui affichait 'Unexpected value' avec le nouveau capteur"
|
|
],
|
|
"compatibility": []
|
|
},
|
|
"notes": "Mise a jour necessaire si le sonometre NSRT MK4 est connecte en USB. L'ancien capteur I2C n'est plus supporte sur la page capteurs."
|
|
},
|
|
{
|
|
"version": "1.4.0",
|
|
"date": "2026-03-10",
|
|
"changes": {
|
|
"features": [
|
|
"Mise a jour firmware hors-ligne par upload de fichier ZIP via l'interface web admin",
|
|
"Barre de progression pour suivre l'upload du fichier",
|
|
"Fichier .update-exclude versionne pour gerer les exclusions rsync de maniere evolutive"
|
|
],
|
|
"improvements": [
|
|
"Vidage du buffer serie avant chaque commande AT dans sara.py (evite les URCs residuelles au demarrage)"
|
|
],
|
|
"fixes": [],
|
|
"compatibility": [
|
|
"Necessite l'ajout de update_firmware_from_file.sh dans les permissions sudo de www-data",
|
|
"Necessite Apache mod_rewrite pour html/.htaccess (upload 50MB)"
|
|
]
|
|
},
|
|
"notes": "Permet la mise a jour du firmware sans connexion internet : telecharger le .zip depuis Gitea, se connecter au hotspot du capteur, et uploader via admin.html."
|
|
},
|
|
{
|
|
"version": "1.3.0",
|
|
"date": "2026-02-17",
|
|
"changes": {
|
|
"features": [
|
|
"Onglet 'Ecran' pour le controle de l'affichage HDMI (ModuleAir Pro uniquement)",
|
|
"Demarrage et arret du script d'affichage via l'interface web",
|
|
"Verification automatique du type d'appareil pour afficher l'onglet"
|
|
],
|
|
"improvements": [
|
|
"Ajout de logs console pour le debougage des commandes web",
|
|
"Traduction de l'element de menu 'Ecran'"
|
|
],
|
|
"fixes": [
|
|
"Correction des permissions d'execution des scripts python via web (sudo)",
|
|
"Correction de la visibilite des onglets du menu lateral (doublons ID)"
|
|
],
|
|
"compatibility": [
|
|
"Necessite python3-kivy installe",
|
|
"Necessite l'ajout de permissions sudo pour www-data (voir documentation)"
|
|
]
|
|
},
|
|
"notes": "Ajout de la fonctionnalite de controle d'ecran pour les demonstrations."
|
|
},
|
|
{
|
|
"version": "1.2.0",
|
|
"date": "2026-02-17",
|
|
"changes": {
|
|
"features": [
|
|
"Integration capteur CO2 MH-Z19 (scripts, base de donnees, service systemd, interface web)",
|
|
"Carte test CO2 sur la page capteurs",
|
|
"Checkbox activation CO2 sur la page admin",
|
|
"Consultation et telechargement des mesures CO2 sur la page base de donnees"
|
|
],
|
|
"improvements": [],
|
|
"fixes": [
|
|
"Logo ModuleAir Pro ne s'affichait pas (script dans innerHTML non execute)"
|
|
],
|
|
"compatibility": [
|
|
"Necessite re-execution de create_db.py, set_config.py et setup_services.sh apres mise a jour"
|
|
]
|
|
},
|
|
"notes": "Ajout du support capteur CO2 MH-Z19 pour le ModuleAir Pro. La transmission SARA sera integree dans une version ulterieure."
|
|
},
|
|
{
|
|
"version": "1.1.0",
|
|
"date": "2026-02-16",
|
|
"changes": {
|
|
"features": [
|
|
"Card informations base de donnees (taille, nombre d'entrees, dates min/max par table)",
|
|
"Telechargement CSV complet par table depuis la page base de donnees",
|
|
"Bouton version firmware NextPM sur la page capteurs",
|
|
"Tests capteurs integres dans l'auto-test modem",
|
|
"Logo dynamique selon le type d'appareil (NebuleAir/ModuleAir)"
|
|
],
|
|
"improvements": [
|
|
"Reordonnancement de l'auto-test : capteurs avant communication"
|
|
],
|
|
"fixes": [],
|
|
"compatibility": []
|
|
},
|
|
"notes": "Ameliorations de l'interface web : meilleure visibilite sur l'etat de la base de donnees et des capteurs."
|
|
},
|
|
{
|
|
"version": "1.0.0",
|
|
"date": "2026-02-11",
|
|
"changes": {
|
|
"features": [
|
|
"Support multi-device : NebuleAir Pro / ModuleAir Pro",
|
|
"Systeme de versioning firmware",
|
|
"Changelog viewer dans l'interface web"
|
|
],
|
|
"improvements": [],
|
|
"fixes": [],
|
|
"compatibility": [
|
|
"Les capteurs existants sont automatiquement configures en 'nebuleair_pro'"
|
|
]
|
|
},
|
|
"notes": "Premiere version tracee. Les capteurs anterieurs recevront device_type=nebuleair_pro par defaut lors de la mise a jour."
|
|
}
|
|
]
|
|
} |