Servo dampers driven from wall buttons and a dashboard slider get out of sync
Facility manager at a hotel. Our two conference rooms have small motorised vent dampers that a contractor built: an ESP32 with two MG996R servos, plus two push buttons on the wall per room (open more / close more, 15 degrees per press). The ESP32 already reports temperature and CO2 to Hermetry.
I want the events team to adjust the dampers from a dashboard on the reception PC. I added a command damper.set with a parameter angle to the profile and put a Slider control card on the board. Sending works, the damper moves.
But the slider keeps showing the wrong position. If someone pressed the wall button, the slider still says 45 when the damper is at 75. And sometimes after I move the slider it jumps back to the old value a second later, which confuses everyone.
Is there a way to make the dashboard follow the real position, or do I have to remove the wall buttons? Guests like the buttons.
Following this, we have the same with motorised blinds.
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.
That was it, Current value was bound to the command parameter instead of a reported key. Contractor added the publish after the button press and a repeat every 5 minutes with the CO2 reading. Slider follows the wall buttons now. Ask before running is off, the events team thanks you.
Sending this to our blinds contractor, same idea should work.
- You must be logged in to reply to this topic.
Join the conversation
Sign in to ask and answer, like helpful posts and mark the reply that solved your problem. Every contribution earns points and levels.

