Sortie · sept. 2026

AccueilWatt-SensorsManuel

ESP32 · DS18B20 · SONDE MULTI-CANAUX

Manuel — Watt-Sensors

Chaque écran de l'interface web embarquée du capteur de température : sondes DS18B20, réseau, broker MQTT, sauvegardes et diagnostic. Pour chaque zone de saisie et chaque bouton : ce que ça fait, les valeurs acceptées et les comportements.

Le Watt-Sensors est un capteur multi-sondes : il lit une ou plusieurs DS18B20 sur un bus OneWire et publie les températures en MQTT avec auto-découverte Home Assistant. Cette page documente écran par écran son interface web, servie sur son adresse locale.

Conventions de lecture

Le id est l'identifiant technique du champ (utile au support). Sauf mention contraire, modifier un champ ne change la valeur qu'en mémoire : tant que vous n'avez pas cliqué un bouton Sauvegarder, rien n'est écrit. Un indicateur « modifications non enregistrées » s'allume dans la barre du haut dès qu'un champ est touché.

Badges utilisés dans cette page

Immédiat appliqué à chaud   Reboot effectif au prochain démarrage   opt-in désactivé par défaut   conditionnel visible selon le matériel ou la config

Éléments communs à toutes les pages

La barre latérale, la barre du haut et le pied de page sont identiques sur toutes les pages de gestion (sauf en mode point d'accès, qui a sa propre mise en page). Ils ne sont pas redécrits dans chaque écran.

Barre latérale (menu)

ÉlémentRôle
sensors (logo)Lien vers la racine / (tableau de bord). Le libellé name est remplacé par le nom réel du capteur.
Bloc d'étatVersion du firmware version, SSID Wi-Fi WIFI, signal RSSI en dBm — rafraîchis depuis /state.
Configuration · Broker MQTT · Réseau Wifi · SauvegardesPages de réglage.
Informations système · Debug · Console logsDiagnostic.
RebootLien /reboot : redémarrage immédiat.

Barre du haut & pied de page

En haut : un bandeau d'état global (status-banner ; vert = normal, orange = partiel, rouge = erreur) et l'horloge locale heure-topbar. En bas : lien vers le site et l'année. Tous les messages d'état sont des clés i18n (interface bilingue FR / EN, sélecteur sur la page Configuration).

Chargement sérialisé. Sur ESP32 sans PSRAM, les pages chargent leurs ressources une par une (« chain ») pour ne pas saturer la pile réseau. Les scripts de chaque page n'agissent qu'une fois jQuery et i18n prêts.

Écran « Tableau de bord »

Accès : racine / (index.html) une fois le capteur connecté au Wi-Fi. Vue en lecture seule, rafraîchie toutes les 3 s depuis /state.

Carte (id)AfficheComportement
Température — temperatureTempérature de la sonde maître (°C).Si plusieurs sondes sont détectées, la carte bascule sur le nombre de sondes (libellé temperature-label).
Sonde Dallas — dallas-statusÉtat du bus OneWire.Vert « Connectée » (dallas_status=1), rouge « Signal perdu » (=2), gris « Non détectée » (=0).
Heap libre — heap-freeheap_free en kB.Indicateur mémoire (santé du firmware).
Délégation HTTPS — proxyCardIndexStatut du watt-proxy, hôte:port résolu.conditionnel visible uniquement si le proxy est activé. Boutons Re-tester (POST /proxy/discover) et Configurer.

Les badges d'en-tête bdg-wifi / bdg-mqtt / bdg-ntp passent au vert/rouge selon WIFI, mqtt_connected et ntp_sync.

Liste multi-sondes. Une section dallas-section apparaît dès qu'au moins une sonde est détectée : une vignette par sonde (nom personnalisé name, adresse ROM addr, température). Masquée si dallas_devices est vide.

Écran « Accueil point d'accès » (onboarding Wi-Fi)

Accès : à la première mise sous tension (ou après un factory reset), le capteur démarre en point d'accès WATT-SENSORS-xxxx. La racine sert alors cet écran d'accueil dédié (fichiers index-ap.html et wifi-ap.html, identiques). Mise en page autonome, sans barre latérale ; basculement langue FR / EN en bas.

Champ (id)TypeRôle
Réseau Wi-Fi — ssidSelectlisteRéseaux détectés au scan (scanwifi), triés par signal, avec cadenas et barres de force. Dernière option : « Réseau caché ».
Bouton Re-scannerrescanBtnboutonRelance scanwifi et repeint la liste.
Nom du réseau (SSID) — ssidManualtexteconditionnel apparaît uniquement quand « Réseau caché » est choisi (max 31 car.).
Signal — signalRowindicateurForce (Excellent / Bon / Moyen / Faible) + dBm + cadenas Sécurisé/Ouvert du réseau sélectionné.
Mot de passe — passwordmot de passeClé Wi-Fi (max 63 car.). Bouton œil togglePwdBtn pour afficher/masquer.
Bouton Connecter et redémarrersubmitBtnsubmitEnvoie savewifi?ssid=&password= puis affiche l'écran de redémarrage (rebootOverlay).

L'en-tête affiche l'identité du produit (productName, serial, version) lue depuis getwifi.

Repli automatique. Si la connexion échoue, le capteur revient de lui-même en mode point d'accès après quelques minutes — l'écran reste accessible.

Écran « Configuration »

Accès : menu › Configuration. Regroupe les sondes Dallas, les broches GPIO, l'heure (NTP), la langue, la délégation HTTPS (proxy) et le relais cloud. /config pré-remplit les champs au chargement.

Carte « Sondes de température » 🌡

Boutons d'en-tête : Rechercher (btnScanDallas/restartdallas, relance la détection du bus) et Reset Dallas (/resetdallas, oublie les sondes mémorisées). L'état global s'affiche dans dallas-status / dallas-count.

La liste dallasList est construite à partir de dallas_devices (lu sur /config) : une carte par sonde.

Élément (id)TypePlageRôle
Adresse ROM + températurelectureAffiche l'adresse 16 hex (addr) et la dernière mesure ; badge « absente » si la sonde n'est plus détectée.
Nom personnalisé — dallas-name-inputtextemax 22Étiquette lisible (ex : « Ballon ECS haut »). Utilisée en MQTT / Home Assistant.
Bouton Supprimer (corbeille)boutonRetire la sonde de la config (/setdallas?dallas_remove=<addr>), après confirmation.

Le bouton Enregistrer les noms (saveDallasNames) envoie tous les libellés d'un coup (/setdallas?name_<addr>=…). Immédiat les noms sont persistés sans reboot.

Carte « GPIO » 🔧 (repliable)

Champ (id)TypePlageDéfautEffet
Pin OneWire (Dallas) — pin_one_wirenombre0–4025Broche du bus des sondes. Vide = valeur par défaut default_one_wire. Immédiat
Résolution Dallas — temperature_precisionliste9–12 bits10Compromis précision / temps de conversion (9 bits ≈ 94 ms … 12 bits ≈ 750 ms). Immédiat

Le bouton Appliquer les GPIO (applyGpio) envoie /setgpio et réinitialise la détection des sondes.

Cartes « Serveur NTP & Fuseau » 🕐 et « Langue » 🌐

Élément (id)TypeRôle
Serveur NTP — ntp_server + bouton TestertexteAdresse du serveur de temps ; le bouton btnTestNtp vérifie la synchro (/testntp).
Fuseau horaire — ntp_timezonelisteListe mondiale (Europe, Afrique, Asie, Amériques, Pacifique) ; gère l'heure d'été automatiquement.
Langue — langlisteFR / EN. Peuplée via /languages ; /setlanguage?lang= applique le changement immédiatement sur la page courante.

Cartes « Proxy HTTPS » et « Relais cloud » ☁

La carte Proxy HTTPS (watt-proxy) délègue le handshake TLS à un watt-proxy ESP32-S3 pour soulager la mémoire pendant les MAJ OTA.

Champ (id)TypeRôle
Activer la délégation — proxy_enabledcaseActive le passage par un watt-proxy. Optionnel.
Découverte mDNS — proxy_auto_discovercaseCherche automatiquement un proxy (SolarMeshLabs._tcp).
Hôte manuel — proxy_hosttexteVide = mDNS auto. Sinon ip:port. Bouton Découvrir maintenant (POST /proxy/discover) ; statut via /proxy/status (rafraîchi toutes les 15 s).

Relais cloud (carte cloudCard). opt-in désactivé par défaut. Active l'envoi périodique d'un instantané chiffré (AES-256-GCM, zero-knowledge, lecture seule) au relais cloud, pour la consultation à distance via l'app companion. Champs : cloud_enabled, URL du relais cloud_ingest_url (max 92 car.). Statut : cl_claimed (clé E2E appairée), cl_count (envois réussis), cl_status (dernier code HTTP). Boutons Enregistrer (/setcloud) et Tester l'envoi (/cloud/test).

Le bouton vert Sauvegarder et Appliquer (saveAll) enregistre le proxy (/setproxy), applique le NTP (/applyntp) et persiste la config (/get?save=yes). Les cartes Relais cloud et la langue ont leur propre action.

Mode point d'accès. Tant que le capteur n'est pas connecté au Wi-Fi, c'est l'écran d'accueil point d'accès (voir plus haut) qui est servi à la racine — la page Configuration complète n'est disponible qu'en mode connecté.

Écran « Broker MQTT »

Accès : menu › Broker MQTT. Un bandeau d'état (brokerStatusBar) reste visible en haut : non testé / connecté / non connecté. /getmqtt pré-remplit les champs.

Champ (id)TypeDéfautRôle
Serveur — MQTT_SERVERtexteIP ou hostname du broker (ex. 192.168.1.40 ou broker.local).
Port — MQTT_PORTnombre1883Port du broker (non chiffré par défaut).
Utilisateur — MQTT_USERtexte(vide)Optionnel — laisser vide si pas d'authentification.
Mot de passe — MQTT_PASSWORDmot de passe(vide)Optionnel.
Activer Home Assistant — HA_ENABLEDinterrupteuractivéPublie les topics d'auto-découverte HA (une entité par sonde).

Bouton Tester (btnTest/testmqtt) : vérifie la joignabilité sans sauvegarder. Bouton Sauvegarder et Appliquer (btnSave/applymqtt) : enregistre et reconnecte Immédiat sans reboot. Toute modification du serveur/port repasse le bandeau en « non testé ».

Topics publiés : SolarMeshLabs/Watt-Sensors/<id>/...

Écran « Réseau Wi-Fi »

Accès : menu › Réseau Wifi. Permet de reconfigurer le Wi-Fi en mode connecté (sans repasser par le point d'accès). Un badge wifiStatusBadge indique Connecté / Non connecté ; /getwifi et /state alimentent l'état.

Champ (id)TypeRôle
SSID — ssidtexteNom du réseau cible (saisi ou choisi dans les résultats de scan).
Password — passwordmot de passeClé du réseau.
Bouton RechercherbtnScanWifiboutonScan (/scanwifi, 3–5 s) ; résultats en badges cliquables (wifiResults) qui remplissent le SSID.
Bouton Sauvegarder et AppliquerwifiSubmitBtnsubmitEnvoie get?ssid=&password= et applique la nouvelle config réseau.

Écran « Sauvegarde et restauration »

Accès : menu › Sauvegardes. Trois zones : fichier local, broker MQTT, et zone dangereuse.

Carte « Sauvegarde sur fichier »

Bouton (id)EndpointRôle
Télécharger la sauvegarde — backup/config/exportGénère un JSON (config + mqtt, champs sensibles chiffrés) nommé AAAA-MM-JJ-…-Watt-Sensors-XXXX.json.
Restaurer depuis un fichier — restoreBtnPOST /config/importCharge un JSON local (restoreFile) et l'importe ; redémarrage avec compte à rebours puis redirection.

Carte « Sauvegarde MQTT »

Statut mqttStatusBadge (Connecté / Déconnecté) et date de dernière sauvegarde mqttLastBackup via /mqttbackup/status (rafraîchi 10 s). Les boutons sont conditionnel désactivés tant que le broker n'est pas connecté.

Élément (id)EndpointRôle
Sauvegarde auto — mqttAutoToggle/get?mqtt_backup=&save=1Publie (retain) la config sur le broker au boot et à chaque reconnexion, et la restaure si manquante.
Sauvegarder vers MQTT — mqttPush/mqttbackup/pushPublie immédiatement la config sur le broker.
Restaurer depuis MQTT — mqttPull/mqttbackup/pullRécupère la config (jusqu'à 20 s) ; si restaurée, reboot automatique avec compte à rebours.

Carte « Zone dangereuse »

Bouton (id)EndpointRôle
Reset config (garde WiFi) — eraseBtn/config/eraseEfface la config mais garde le Wi-Fi — l'appareil reste joignable après reboot.
Factory reset (efface tout) — eraseAllBtn/config/erase?all=1Efface tout, Wi-Fi compris — reboot en mode point d'accès.

Irréversible. Les deux effacements demandent une confirmation puis redémarrent le capteur. Après un factory reset, il faut repasser par l'écran d'accueil point d'accès.

Écran « Informations système »

Accès : menu › Informations système. Tableaux statiques (lus une fois via /info) regroupés en cartes :

CarteChamps (ids préfixés i_)
Identitéi_name, i_board, i_fw (BUILD_FW), i_fs (BUILD_FS + badge ⚠ si FW/FS désynchronisés), i_release, i_compile.
Matérieli_chip, i_rev, i_cores, i_freq, i_flash, i_psram (n/a sur ESP32 sans PSRAM), i_mac.
Mémoirei_heap, i_heap_min, i_maxalloc, i_spiffs.
Réseaui_netmode, i_ssid, i_rssi, i_ip, i_gw, i_subnet, i_dns.
Sondes Dallasi_scount (détectées), i_slost (point vert/rouge), liste i_stemps (adresse + °C).
MQTTi_mqbroker, i_mqconn, i_mqha.
Systèmei_uptime, i_reset (cause + code du dernier reset).

Mise à jour (modale OTA). Le bouton btn.ota_check ouvre la modale otaModal : préflight (/ota/preflight), vérification du manifest GitHub (/ota/check), puis états disponible / en cours / succès / à jour / erreur. Le lancement otaApply appelle POST /ota/apply et suit l'avancement via /ota/status et les évènements SSE ota_status sur /events. Compte à rebours 180 s. Penser à vider le cache du navigateur après une MAJ.

Écran « Debug forensic »

Accès : menu › Debug. Page de diagnostic avancée (sans i18n ni bandeau d'état). Bouton Refresh et case auto 10s (autoRefresh) ; les 4 lectures sont échelonnées pour ménager la mémoire.

CarteEndpointContenu
Reboot précédent (NVS)/debug/bootNuméro de reboot, dernier uptime, reset code, tâche active au crash, heap/maxBlk précédents.
Heap now + deltas/debug/heapFree, max alloc, min historique, fragmentation, deltas 1 h/6 h/24 h, PSRAM, sparkline 24 h.
Tasks + mutex/debug/tasksPar tâche : âge heartbeat, seuil, stalls, stack HWM ; compteurs mutex OK / timeouts.
Mutex hold-time/debug/mutexTemps de détention par callsite (uniquement si -D DEBUG_LOCK_TIMING).
Event ring buffer/debug/ring?n=Derniers N évènements (r_n 30/50/100, filtre niveau r_lvl), colorés par sévérité.

Écran « Console logs »

Accès : menu › Console logs. Flux de logs en direct (logContainer), interrogé toutes les 2 s via /cs?c2=<id>. Format structuré : [HH:MM:SS][NIV][TAG] message, colorisé par niveau.

Contrôle (id)Rôle
Filtres niveau — badge-filterTOUT / INF / WRN / ERR / DBG : masque les lignes hors du niveau choisi.
Auto-scroll — scrollBtnSuit automatiquement le bas du flux (bascule ON/OFF).
Pause — pauseBtnGèle l'arrivée des nouvelles lignes (le pastille pollDot passe à l'orange).
ViderEfface l'affichage local (clearLog).
log.txtTélécharge le journal brut (/log.txt).

À retenir. Le Watt-Sensors est une brique de mesure pure : il ne pilote aucune charge. Sa valeur vient des sondes (jusqu'à plusieurs DS18B20 nommées) et de leur publication MQTT / Home Assistant. Les Watt-Guardian et Watt-Modulator peuvent ensuite consommer ces températures comme sondes distantes.