Skip to content

API & Diagnostics

Le routeur expose une API REST et plusieurs endpoints de diagnostic pour le débogage en production. Cette page documente les interfaces accessibles via HTTP (généralement http://<ip_du_routeur>/).

Endpoint /status — État Complet du Système

L'endpoint GET /status retourne un objet JSON avec l'état complet du routeur à un instant T :

Données de Base

ChampTypeDescription
grid_powerfloatPuissance réseau (W). Positif = import, Négatif = export.
equipment_powerfloatPuissance totale redirigée (W)
eq1_real_powerfloatPuissance réelle Eq1 mesurée (W)
equip2_powerfloatPuissance Eq2 mesurée (W)
boost_activeboolBoost manuel actif
boost_remainingintMinutes restantes du boost
force_modeboolMode forcé actif
emergency_modeboolÉtat d'urgence actif
emergency_reasonstringRaison de l'urgence (ex: "ESP32 Overheat!", "SSR Temp Sensor Fault!")
ssr_tempfloat/nullTempérature SSR (°C), null si sonde déconnectée
esp_tempfloatTempérature interne ESP32 (°C)
fan_activeboolÉtat du ventilateur
fan_percentintVitesse du ventilateur (0-100)
grid_sourcestringSource de mesure : "JSY1", "JSY2", "MQTT", "HTTP"
shelly_linkboolShelly connecté
shelly_errorboolShelly en erreur
mqtt_statusboolBroker MQTT connecté
control_modestringMode SSR actuel : "trame", "burst", "phase", "cycle_stealing"
night_modeboolMode nuit actif
equip2_bypassedboolEq2 bypassé par météo
equip2_max_powerfloatPuissance Eq2 configurée (W)

Données de Santé

ChampTypeDescription
free_ramuint32RAM interne libre (octets)
total_ramuint32RAM interne totale (octets)
free_psramuint32PSRAM libre (octets)
total_psramuint32PSRAM totale (octets)
uptimeuint32Temps de fonctionnement (secondes)
rssiintPuissance du signal WiFi (dBm)
versionstringVersion du firmware
build_timestringDate/heure de compilation

Indicateurs de Fonctionnalité

ChampTypeDescription
stats_enabledboolStatistiques activées (désactivé sur WROOM)
history_enabledboolHistorique graphique activé (désactivé sur WROOM)
data_log_enabledboolJournal de données activé (désactivé sur WROOM)
max_stats_daysintJours de rétention de statistiques
e_ssr_tempboolSurveillance température SSR
e_equip1boolÉquipement 1 activé
e_equip2boolÉquipement 2 activé
equip1_namestringNom de l'équipement 1
equip2_namestringNom de l'équipement 2
shelly_mqtt_enabledboolMode MQTT Shelly activé
mqtt_enabledboolMQTT activé

Données AC (Phase)

Toutes les données AC sont regroupées sous l'objet ac :

ChampTypeDescription
ac.zx_counteruint32Nombre total de passages par zéro (cumulatif)
ac.zx_last_usuint32Dernier passage par zéro (microsecondes)
ac.half_cycle_paritystringParité du dernier demi-cycle ("odd" ou "even")
ac.full_cycle_indexintIndex du cycle complet actuel
ac.grid_hz_estfloatFréquence estimée du réseau (Hz)

Mode Trame (Bresenham)

Données regroupées sous l'objet trame :

ChampTypeDescription
trame.enabledboolMode Trame actif
trame.fire_full_cycleboolFeux de cycle complet en cours
trame.decision_on_odd_crossboolDécision sur passage impair
trame.decision_age_msuint32Âge de la dernière décision (ms)

Contrôle de Phase

Données regroupées sous l'objet phase :

ChampTypeDescription
phase.enabledboolMode Phase actif
phase.timer_arm_pendingboolTimer en attente d'armage
phase.last_requested_wait_usintDernier délai demandé (µs)

Validation des Broches (pin_validation)

Chaque broche configurée est vérifiée pour détecter les conflits :

json
"pin_validation": {
  "SSR": {"valid": true},
  "RELAY": {"valid": true},
  "FAN_PWM": {"valid": true},
  "ZX_INPUT": {"valid": false, "reason": "Pin conflict with JSY1_RX"},
  ...
}

Page Développeur (/web_dev)

La page cachée /web_dev offre un tableau de bord interactif en temps réel :

  • État des capteurs et actionneurs (SSR, relais, ventilateur)
  • Puissance réseau mesurée vs estimée
  • Journal d'événements (logs) accessible via téléchargement

Calibration Phase-Angle (/web_phase_cal)

Interface de calibration pour le mode Contrôle de Phase :

  • Lance un balayage automatique sur une plage de delays (µs).
  • Affiche en temps réel les résultats : puissance réseau, puissance équipement 1, delay actuel.
  • Boutons pause/resume/jump pendant l'exécution.
  • Les paramètres sont sauvegardés dans config.json et le routeur reboot après calibration.

Rafraîchissement Météo (/weather_refresh)

Endpoint GET /weather_refresh déclenche un appel immédiat à l'API Open-Meteo, en ignorant le cycle programmé (environ toutes les 15 minutes). Utile pour tester une nouvelle configuration météo ou obtenir des données fraîches après un changement de localisation.


Calibration d'Angle de Phase (/api/phase_cal)

Endpoint POST avec actions JSON :

  • start — Lance le balayage (avec paramètres optionnels : min, max, step, hold).
  • pause / resume / jump N — Contrôle en cours d'exécution.
  • exit — Arrête et reboot.
  • status — Retourne l'état actuel avec gridPower, equipPower, progress.

Test de Santé Shelly (/test_shelly)

Endpoint POST : /test_shelly?target=em|eq1|eq2
Effectue un contrôle à la demande du dispositif Shelly configuré. Retourne le JSON avec puissance, tension et génération (Gen1 ou Gen2). Utile pour diagnostiquer les problèmes de connectivité sans attendre le prochain cycle de polling automatique.


Endpoints de Migration & Restauration

Import de Statistiques (/import_stats)

Endpoint POST qui accepte un fichier stats.json au format attendu par le routeur (max 200 Ko). L'upload est atomique : écrit dans un fichier temporaire puis renomme. Redémarre le routeur en cas de succès.

Téléchargement des Données (/download_data)

Retourne les fichiers log.txt et solar_data.json pour analyse hors-ligne ou sauvegarde locale.

Téléchargement de la Configuration (/download_config)

Endpoint GET /download_config retourne la configuration courante en JSON (champ par champ de la structure Config). Authentification requise. Utile pour sauvegarder ou migrer la configuration.


Limitations Connues

  • Topic MQTT : Les topics dépassant 128 caractères sont tronqués silencieusement, ce qui peut causer des échecs de publication LWT avec un mqtt_name long.
  • Rate limiting : Les opérations save/reboot sont limitées à une fois toutes les 60 secondes (HTTP 429 sinon).
  • WROOM : La version ESP32-WROOM compile avec les flags -D DISABLE_STATS, -D DISABLE_HISTORY, -D DISABLE_DATA_LOG. L'endpoint /status retourne stats_enabled: false, etc.