Traduit de English par IA ·
Gardez les boutons. Le curseur ne peut afficher que ce que l’appareil remonte à Hermetry, donc l’ESP32 doit signaler la position après chaque mouvement, qu’il vienne d’un bouton ou d’une commande.Je parie que le retour en arrière vient de votre liaison Current value. Vérifiez vers quoi pointe l’emplacement Current value du curseur. S’il lit une valeur qui ne change qu’à l’envoi (ou rien du tout), il revient à cette valeur. Liez-le à une clé de télémétrie que l’ESP32 envoie lui-même, par exemple damper1_pos.Sur l’ESP32, après chaque mouvement :
void moveTo(int ch, int angle) {
angle = constrain(angle, 0, 90);
servo[ch].write(angle);
pos[ch] = angle;
char buf[48];
snprintf(buf, sizeof buf, "{"damper%d_pos":%d}", ch + 1, angle);
mqtt.publish("v1/telemetry", buf);
}
// button handler: moveTo(ch, pos[ch] + 15);
// command handler for damper.set: moveTo(ch, params["angle"]); then answer ok
Réglages du curseur qui ont fonctionné chez nous : Minimum 0, Maximum 90, Step 15 pour correspondre aux pas des boutons. Le curseur envoie une seule fois au relâchement, pas pendant le glissement, ce qui évite de saturer le servo. Pour un volet, vous pouvez activer Ask before running off, sinon l’accueil reçoit une boîte de confirmation à chaque mouvement. Laissez la commande au niveau Basic, une carte n’envoie rien de plus élevé.Il existe aussi « Disable the control when the reading is old », activé par défaut. Si l’ESP32 ne signale qu’en cas de changement et que personne n’a touché au volet pendant des heures, le curseur peut se griser. Faites-lui répéter la position toutes les quelques minutes avec les autres mesures.Les étapes de configuration sont dans Control cards.
Keep the buttons. The slider can only show what the device tells Hermetry, so the ESP32 has to report the position after every move, from a button or from a command.
I’d bet the jump-back is your Current value binding. Check what the slider’s Current value slot points at. If it reads something that only changes when you send (or nothing), it snaps back to that. Bind it to a telemetry key the ESP32 sends itself, for example damper1_pos.
On the ESP32, after any move:
void moveTo(int ch, int angle) {
angle = constrain(angle, 0, 90);
servo[ch].write(angle);
pos[ch] = angle;
char buf[48];
snprintf(buf, sizeof buf, "{"damper%d_pos":%d}", ch + 1, angle);
mqtt.publish("v1/telemetry", buf);
}
// button handler: moveTo(ch, pos[ch] + 15);
// command handler for damper.set: moveTo(ch, params["angle"]); then answer ok
Slider settings that worked for us: Minimum 0, Maximum 90, Step 15 so it matches the button steps. The slider sends once when you let go, not while dragging, so the servo isn’t spammed. For a damper you can turn Ask before running off, otherwise reception gets a confirm dialog on every move. Leave the command Basic tier, a board won’t send anything higher.
There’s also « Disable the control when the reading is old » on by default. If the ESP32 only reports on change and nobody touched it for hours, the slider may grey out. Have it repeat the position every few minutes with the other readings.
Setup steps are on Control cards.

