Las compuertas servo controladas por botones de pared y un deslizador del panel se desincronizan
Traducido del English por IA ·
Soy el responsable de instalaciones de un hotel. Nuestras dos salas de conferencias tienen pequeñas compuertas de ventilación motorizadas que construyó un contratista: un ESP32 con dos servos MG996R, además de dos pulsadores en la pared por sala (abrir más / cerrar más, 15 grados por pulsación). El ESP32 ya envía la temperatura y el CO2 a Hermetry.Quiero que el equipo de eventos ajuste las compuertas desde un panel en el PC de recepción. Añadí al perfil un comando damper.set con un parámetro angle y coloqué una tarjeta de control Slider en el panel. El envío funciona, la compuerta se mueve.Pero el deslizador sigue mostrando la posición incorrecta. Si alguien pulsó el botón de la pared, el deslizador todavía marca 45 cuando la compuerta está en 75. A veces, después de mover el deslizador, vuelve al valor anterior un segundo más tarde, lo que confunde a todos.¿Hay forma de que el panel siga la posición real, o tengo que quitar los botones de pared? A los huéspedes les gustan los botones.
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.
Traducido del English por IA ·
Siguiendo con esto, tenemos lo mismo con las persianas motorizadas.
Following this, we have the same with motorised blinds.
Traducido del English por IA ·
Conserve los botones. El deslizador solo puede mostrar lo que el dispositivo le comunica a Hermetry, así que el ESP32 tiene que informar la posición después de cada movimiento, ya sea desde un botón o desde un comando.Apuesto a que el salto de vuelta se debe a su enlace de Current value. Revise a qué apunta la ranura Current value del deslizador. Si lee algo que solo cambia cuando envía (o nada), vuelve a ese valor. Enlácelo a una clave de telemetría que el propio ESP32 envíe, por ejemplo damper1_pos.En el ESP32, después de cualquier movimiento:
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
Ajustes del deslizador que nos funcionaron: Minimum 0, Maximum 90, Step 15 para que coincida con los pasos de los botones. El deslizador envía una vez al soltarlo, no mientras arrastra, así que el servo no recibe un bombardeo de órdenes. Para una compuerta puede activar Ask before running off; si no, recepción recibe un cuadro de confirmación en cada movimiento. Deje el comando en nivel Basic, una placa no envía nada superior.También está «Disable the control when the reading is old», activado por defecto. Si el ESP32 solo informa cuando hay cambios y nadie la ha tocado en horas, el deslizador puede aparecer en gris. Haga que repita la posición cada pocos minutos junto con las demás lecturas.Los pasos de configuración están en 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.
Traducido del English por IA ·
Eso era, Current value estaba vinculado al parámetro de comando en lugar de a una clave reportada. El contratista añadió la publicación tras la pulsación del botón y una repetición cada 5 minutos con la lectura de CO2. El deslizador ahora sigue a los botones de pared. «Preguntar antes de ejecutar» está desactivado, el equipo de eventos les da las gracias.
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.
Traducido del English por IA ·
Se lo envío a nuestro contratista de persianas, la misma idea debería funcionar.
Sending this to our blinds contractor, same idea should work.
- Debes estar registrado para responder a este debate.
Únete a la conversación
Inicia sesión para preguntar y responder, dar me gusta a las publicaciones útiles y marcar la respuesta que resolvió tu problema. Cada aportación suma puntos y niveles.

