Les textes data-i18n de la sidebar etaient vides car les traductions
s'appliquaient avant que la sidebar soit chargee via fetch.
topbar-logo.js re-applique maintenant les traductions via son
MutationObserver, ce qui corrige le probleme sur toutes les pages.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- topbar-logo.js expose la config via event 'nebuleair-config-ready'
- wifi.html ecoute l'event au lieu de re-fetcher get_config_sqlite
- Supprime le doublon load_ethernet_info (get_internet fait deja tout)
- Passe de ~9 requetes simultanees a ~5 au chargement
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Reduit de 3 a 2 les fetch au DOMContentLoaded, liberant un slot
de connexion HTTP. Corrige le blocage "pending" cause par la limite
de 6 connexions simultanees par domaine dans Chrome/Firefox.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
L'appel nmcli dans get_config_sqlite bloquait les workers Apache.
Le statut WiFi est maintenant gere uniquement par les scripts shell
(connexion.sh, forget_wifi.sh, boot_hotspot.sh).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Si nmcli est lent ou bloque, on garde la valeur DB au lieu de
freezer toutes les pages.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Le WIFI_status en DB peut etre desynchronise (ex: reconnexion
manuelle via SSH). Maintenant get_config_sqlite detecte le vrai
etat de wlan0 via nmcli et corrige la DB si necessaire.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
En mode hotspot, le scan live est impossible (wlan0 occupée).
Utilise wifi_list.csv (scan au boot) avec notice explicative.
Ajout timeout 10s sur le scan live pour eviter blocage.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Extraction du code self-test dans des fichiers partagés (selftest.js +
selftest-modal.html) pour éviter la duplication. Ajout du bouton Run
Self Test sur les pages index, sensors et admin. Nouveau test RTC qui
vérifie la connexion du module DS3231 et la synchronisation horloge.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Empêche le téléchargement par dates si début/fin non renseignées
- Ajoute une carte "Télécharger toute la table" (bypass dates)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Nouveau script sound_meter/read.py pour lecture à la demande (JSON)
- launcher.php: appel du script Python au lieu de l'ancien binaire C
- sensors.html: carte USB, suppression boutons start/stop, affichage JSON
- Traductions fr/en: I2C → USB, NSRT MK4
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Sépare le bouton SIM en deux : Get Data (ICCID) et Get Data (IMSI)
- Ajout fonction getImsiInfo() avec commande AT+CIMI
- Parse la réponse pour extraire le numéro IMSI (15 chiffres)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Le script get_data.py retourne maintenant toujours du JSON, meme en cas
d'erreur (port serie, absence de donnees). Cote web, les erreurs sont
affichees proprement dans la carte capteur.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Scripts MH-Z19/get_data.py (lecture standalone) et write_data.py (écriture SQLite)
- Table data_MHZ19, config MHZ19, cleanup et service systemd (120s)
- Web UI : carte test sensors, checkbox admin, boutons database + CSV download
- SARA_send_data_v2.py non modifié (sera fait dans un second temps)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Le script dans topbar.html ne s'exécutait pas car innerHTML ignore les
balises <script>. Déplacé la logique dans un fichier JS séparé
(topbar-logo.js) avec MutationObserver pour détecter l'insertion du topbar.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Le logo ModuleAir n'était pas suivi par git, empêchant
l'affichage sur les capteurs configurés en ModuleAir Pro.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Each table row in the stats card now has a download button that exports
the entire table as CSV with proper column headers, generated server-side.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Show table info (entry count, oldest/newest dates, total DB size) in a
new card on the database page, with auto-refresh and i18n support.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add VERSION file (1.0.0) and changelog.json for firmware tracking
- Add device_type config param (nebuleair_pro default, backward compatible via INSERT OR IGNORE)
- Add device_type select in admin.html Protected Settings
- Add version badge and changelog modal in Updates section
- Add get_firmware_version and get_changelog PHP endpoints
- Display firmware version in update_firmware.sh after git pull
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sensor tests (NPM, BME280, Noise, Envea) now run first, followed by
communication tests (WiFi, Modem, SIM, Signal, Network) with a
visual separator between the two sections.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add a "Firmware Version" button next to "Get Data" in the NextPM card
that calls firmware_version.py and displays the result as a badge.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add dynamic sensor testing (NPM, BME280, Noise, Envea) to the self-test
based on enabled sensors in config. Results are included in the diagnostic report.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add new "Share Report" modal with readable textarea
- Add instructions to send logs to contact@aircarto.fr
- Add "Download (.txt)" button to save report as file
- Add "Select All" button for easy manual copy
- Remove complex clipboard API code that wasn't working
- Filename format: logs_nebuleair_{deviceId}_{date}.txt
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add system info collection at start of test (device ID, name, RTC time, GPS)
- Display device info in logs header
- Fix clipboard copy with fallback for non-HTTPS contexts
- Use execCommand fallback for older browsers
- Use ASCII-safe characters for better compatibility
- Add error handling with manual copy fallback
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add "Copy Report" button that generates a formatted diagnostic report:
- Device info (ID, modem version, timestamp)
- Test results summary with status icons
- Raw AT command responses for debugging
- Detailed execution logs
- Nicely formatted for sharing with manufacturer support
Enhanced logging with raw AT responses displayed in monospace format.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add informational network status check at the beginning of self-test:
- Shows connection mode (Hotspot, WiFi, or Ethernet)
- Displays SSID/connection name
- Shows IP address and hostname.local
- Add wifi_status endpoint in launcher.php using nmcli
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add two more tests to the modem self-test:
- Test 3: Signal Strength (AT+CSQ) with quality thresholds
- Test 4: Network Connection (AT+COPS?) with operator name lookup
Respects 1 second delay between each AT command.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add "Run Self Test" button that opens a modal and runs diagnostic tests:
- Automatically enables modem_config_mode before tests
- Test 1: Modem connection (ATI command)
- Test 2: SIM card detection (AT+CCID? command)
- Respects delays between AT commands
- Always disables modem_config_mode after tests (even on failure)
- Shows real-time progress and detailed logs
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add colored signal bars (1-5) based on signal power level.
Show signal quality description, RSSI in dBm, and quality index.
Color coding: red (poor) -> orange -> yellow -> green -> blue (excellent).
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add operators.json with MCC/MNC codes for common operators.
Parse AT+COPS? response to show operator name, country, technology,
and connection mode in a user-friendly format.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add user-friendly alert for SIM card status with ICCID number.
Change all modem/SIM status messages to English.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace raw AT command output with Bootstrap alerts showing modem
connection status and model. Add collapsible section for raw logs.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>