En este artículo exploraremos cómo integrar un Shelly Dimmer en Home Assistant utilizando el protocolo REST, prescindiendo del uso de MQTT y permitiendo así mantener su funcionamiento a través de la nube de Shelly. Aunque existe la opción de utilizar un custom component para esta integración, optaremos por una aproximación mediante REST, proporcionándonos un mayor control y personalización. Además, esta metodología nos independiza de posibles errores asociados a los custom components durante futuras actualizaciones de Home Assistant.
Para comenzar, instalaremos el Shelly Dimmer y lo configuraremos utilizando la aplicación oficial de Shelly. Se recomienda realizar la calibración durante este proceso, aunque pueda llevar un poco de tiempo, ya que garantiza resultados óptimos en el funcionamiento del dispositivo.
En lo que respecta a ha, vamos a configurar lo siguiente:
Así que manos a la obra. Empezamos creando el sensor rest para conocer el estado de la luz:
1 2 3 4 5 6 7 8 9 10 |
- platform: rest name: "shellydmcomedor" scan_interval: 1 resource: http://192.168.1.74/light/0 value_template: 'OK' json_attributes: - ison - brightness headers: content-type: application/x-www-form-urlencoded |
Sustituid la ip por la de vuestro shelly. Si tenéis varios, tendréis que definir un sensor para cada uno.
Como podéis ver estamos sacando dos attributos de json:
Ahora vamos a crear los dos rest_command. Uno encenderá y apagará, mientras que el otro será para establecer el brillo
Al contrario que con el sensor, no es necesario declarar uno por cada shelly dimmer que tengamos, porque en este caso le pasaremos en el momento de actuar 3 parámetros:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
shelly_dimmer_action: url: http://{{ip}}/light/0 method: POST headers: accept: 'application/json, text/html' payload: 'turn={{action}}' content_type: 'application/x-www-form-urlencoded' verify_ssl: true shelly_dimmer_set_brightness: url: http://{{ip}}/light/0 method: POST headers: accept: 'application/json, text/html' payload: 'turn=on&brightness={{(brightness | float * 0.3882 + 1) | round(0)}}' content_type: 'application/x-www-form-urlencoded' verify_ssl: true |
Finalmente, para completar la integración, crearemos una entidad light
de tipo template en Home Assistant. Esto nos permitirá utilizar los valores del sensor que hemos declarado previamente. Asegúrate de sustituir la dirección IP por la del Shelly Dimmer que estés configurando. Si tienes más de un Shelly Dimmer, deberás declarar una entidad light
para cada uno de ellos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
- platform: template lights: shellydm: friendly_name: Lámpara Comedor level_template: "{{ (state_attr('sensor.shellydmcomedor', 'brightness') | float * 2.55) | round(0) }}" value_template: "{% if state_attr('sensor.shellydmcomedor', 'ison') %} on {% else %} off {% endif %}" turn_on: service: rest_command.shelly_dimmer_action data: ip: 192.168.1.74 action: 'on' turn_off: service: rest_command.shelly_dimmer_action data: ip: 192.168.1.74 action: 'off' set_level: service: rest_command.shelly_dimmer_set_brightness data_template: ip: 192.168.1.74 brightness: "{{ brightness }}" data: ip: 192.168.1.74 brightness: brightness |
Una vez hayamos configurado todo ya sólo nos queda añadirlo en una card de tipo light y podremos controlar sin problema nuestro shelly dimmer.