Simulateur de capteurs
Un script Node.js pour tester le système d'alertes et les mises à jour temps réel sans avoir de capteurs ESP32 physiques.
Le simulateur utilise l'endpoint POST /api/dev/inject-sensor qui n'est disponible qu'en mode development. Il retourne 403 en production.
Commandes npm
npm run simulatenpm run simulate:co2npm run simulate:tempnpm run simulate:humnpm run simulate:suddenOptions avancées
# Intervalle personnalisé (défaut : 3000ms)
node scripts/simulate-sensors.mjs --interval 2000
# URL personnalisée (défaut : http://localhost:3000)
node scripts/simulate-sensors.mjs --url http://localhost:3003
# Combinaison
node scripts/simulate-sensors.mjs --anomaly co2 --interval 1000Sortie console
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Aurora Home — Simulateur de capteurs
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Mode : anomalie "co2"
Serveur : http://localhost:3000
Intervalle: 3000ms
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Ctrl+C pour arrêter
[10:32:01] step= 1 | T= 21.5°C H= 55.0% P= 1013.2hPa CO₂= 530ppm L= 312lx
[10:32:04] step= 2 | T= 21.6°C H= 55.2% P= 1013.1hPa CO₂= 618ppm L= 298lx
[10:32:07] step= 3 | T= 21.4°C H= 55.1% P= 1013.3hPa CO₂= 712ppm L= 321lxEndpoint POST /api/dev/inject-sensor
Le simulateur poste vers cet endpoint à chaque intervalle. Pour chaque capteur fourni, le serveur crée un DataPoint, lance la détection d'anomalie et émet les événements SSE.
{
"temperature": "22.5",
"humidity": "58.0",
"pressure": "1013.2",
"co2": "820",
"light": "310"
}Crée un DataPoint en base pour chaque capteur
Récupère les 6 derniers relevés pour calculer la moyenne glissante
Appelle detectAnomaly() — vérifie seuils et variation soudaine
Si anomalie détectée et aucune alerte récente → crée une Alert + émet alert_created via SSE
Émet sensor_update via SSE pour mettre à jour les cartes du dashboard
Tester le système d'alertes
Les modes anomalie font monter les valeurs progressivement sur ~20 étapes jusqu'à dépasser les seuils WARNING puis HIGH. Exemple avec --anomaly co2 :
- → Étape ~4 : CO₂ dépasse 800 ppm → alerte WARNING générée
- → Étape ~11 : CO₂ dépasse 1500 ppm → alerte HIGH générée
- → Étape ~16 : CO₂ dépasse 2000 ppm → alerte CRITICAL générée
Commandes de seeding
Des scripts npm permettent de remplir la base de données avec des données historiques réalistes pour tester les graphiques et le score IAQ.
npm run seed:7daysnpm run seed:7days:clearnpm run test:iaqnpm run test:iaq:excellentnpm run test:iaq:goodnpm run test:iaq:moderatenpm run test:iaq:poor