Convertir Interruptor SIMON en pulsador inteligente e integrarlo en Home Assistant

Hoy os explicare como cambie mis interruptores y conmutadores Simon 75101 a pulsadores sin tener que cambiar prácticamente nada y luego les agregue a cada uno un Xiaomi switch para conectarlos a Home Assistant

Lo primero será abrir el interior del mecanismo , para ello usaremos un destornillador pequeño plano y sacaremos con sumo cuidado el eje central soltándolo de los lados , hay que tener cuidado porque en el interior lleva unas pequeñas piezas metálicas que en caso de moverse o girarse hará que no funcione , pero con cuidado ya veréis que es bien fácil.

Al abrirlo veréis cuatro agujeros en los que cabe perfectamente un muelle , en uno de los lados , ya sea en la parte de las teclas rojas o las blancas insertaremos un par de muelles para que recupere y pase de ser interruptor/conmutador a pulsador , yo después de varias pruebas encontré estos en aliexpress que van perfectos , son de 3 mms de ancho , por 10 mms de largo y la espira de 0,3 mms.

Ahora ya tenemos lista la parte mecánica y procedemos a modificar el Xiaomi switch para ser usado con nuestro nuevo flamante pulsador tuneado , desmontaremos con cuidado toda la estructura del switch hasta quedarnos solamente con el circuito impreso.

Soldaremos con cuidado dos cablecitos en los puntos que os muestro que son los del pulsador original

Y dejaremos los extremos estañados con un centímetro y medio mas o menos para que entren bien el pulsador Simon

Una vez alimentado lo emparejamos en zigbee2mqtt siguiendo el procedimiento habitual , aquí podréis encontrar mas información : https://www.zigbee2mqtt.io/devices/WXKG01LM.html

Conectado a zigbee2mqtt expone mas modos que mediante el gateway de Xiaomi , los modos son : single,  double,  triple,  quadruplehold,  release,  many que nos vendrán de maravilla para las automatizaciones

Crearemos los sensores de entrada

### CONMUTADOR 1 ORIOL - platform: "mqtt" state_topic: "zigbee2mqtt/puls_conmut_1_oriol" availability_topic: "zigbee2mqtt/bridge/state" icon: "mdi:toggle-switch" value_template: "{{ value_json.action }}" name: "puls_conmut_1_oriol_evento" - platform: "mqtt" state_topic: "zigbee2mqtt/puls_conmut_1_oriol" availability_topic: "zigbee2mqtt/bridge/state" unit_of_measurement: "%" icon: "mdi:battery" device_class: "battery" value_template: "{{ (((value_json.voltage | float(0) | round(5,default=0))-2800)/5)| int(0) }}" expire_after: 21600 force_update: true name: "puls_conmut_1_oriol_bateria" - platform: "mqtt" state_topic: "zigbee2mqtt/puls_conmut_1_oriol" availability_topic: "zigbee2mqtt/bridge/state" icon: "mdi:signal" unit_of_measurement: "lqi" value_template: "{{ value_json.linkquality }}" name: "puls_conmut_1_oriol_estado"
Lenguaje del código: PHP (php)

El sensor de batería lo recalculo para que sea lo mas aproximado a la realidad y le asignaremos el icono en función del porcentaje de batería restante

conmutador_1_oriol_battery_level: friendly_name: Conmutador 1 Oriol value_template: "{{ states.sensor.puls_conmut_1_oriol_bateria.state |default(-1)| int(0) if states.sensor.puls_conmut_1_oriol_bateria is not none }}" unit_of_measurement: '%' icon_template: '{% if states.sensor.puls_conmut_1_oriol_bateria.state| int(0) == 100 %} mdi:battery {% elif states.sensor.puls_conmut_1_oriol_bateria.state| int(0) >= 90 %} mdi:battery-90 {% elif states.sensor.puls_conmut_1_oriol_bateria.state| int(0) >= 80 %} mdi:battery-80 {% elif states.sensor.puls_conmut_1_oriol_bateria.state| int(0) >= 70 %} mdi:battery-70 {% elif states.sensor.puls_conmut_1_oriol_bateria.state| int(0) >= 60 %} mdi:battery-60 {% elif states.sensor.puls_conmut_1_oriol_bateria.state| int(0) >= 50 %} mdi:battery-50 {% elif states.sensor.puls_conmut_1_oriol_bateria.state| int(0) >= 40 %} mdi:battery-40 {% elif states.sensor.puls_conmut_1_oriol_bateria.state| int(0) >= 30 %} mdi:battery-30 {% elif states.sensor.puls_conmut_1_oriol_bateria.state| int(0) >= 20 %} mdi:battery-20 {% elif states.sensor.puls_conmut_1_oriol_bateria.state| int(0) >= 10 %} mdi:battery-10 {% else %} mdi:battery-outline {% endif %}'
Lenguaje del código: PHP (php)

Pondremos los valores en el customize.yaml

sensor.puls_conmut_1_oriol_evento: friendly_name: Conmutador Oriol 1 sensor.puls_conmut_1_oriol_bateria: friendly_name: Conmutador Oriol 1 sensor.puls_conmut_1_oriol_estado: friendly_name: Conmutador Oriol 1
Lenguaje del código: CSS (css)

Crearemos las automatizaciones para el evento single , en este caso para manejar un plafón de Xiaomi y dos tiras led en función del estado y controlando el brillo en función de la hora del día

- alias: luz Oriol single 1 y 2 ON Tramo 1 # Encendemos la luz ya que esta apagada y ponemos el brillo en funcion de noche o dia initial_state: 'on' trigger: - platform: state entity_id: sensor.puls_conmut_1_oriol_evento to: 'single' - platform: state entity_id: sensor.puls_conmut_2_oriol_evento to: 'single' condition: - condition: state entity_id: light.luz_oriol state: 'off' - condition: sun after: sunrise after_offset: "00:30:00" - condition: time before: "22:30:00" action: - service: automation.turn_off entity_id: automation.Change_Brightness_oriol - service: input_number.set_value entity_id: input_number.slider_lamp_oriol_bright data: value: 235 - service: light.turn_on entity_id: light.luz_oriol data: brightness: 235 rgb_color: [255,255,255] # color_temp: 1000 - service: light.turn_on data: entity_id: light.tira_led_cama_oriol brightness_pct: 100 rgb_color: [0,0,0] white_value: 255 - service: light.turn_on data: entity_id: light.tira_led_mesa_oriol brightness_pct: 100 rgb_color: [0,0,0] white_value: 255 - service: automation.turn_on entity_id: automation.Change_Brightness_oriol - alias: luz Oriol single 1 y 2 ON Tramo 2 # Encendemos la luz ya que esta apagada y ponemos el brillo en funcion de noche o dia initial_state: 'on' trigger: - platform: state entity_id: sensor.puls_conmut_1_oriol_evento to: 'single' - platform: state entity_id: sensor.puls_conmut_2_oriol_evento to: 'single' condition: - condition: state entity_id: light.luz_oriol state: 'off' - condition: time after: "22:30:00" before: "02:00:00" action: - service: automation.turn_off entity_id: automation.Change_Brightness_oriol - service: input_number.set_value entity_id: input_number.slider_lamp_oriol_bright data: value: 5 - service: light.turn_on entity_id: light.luz_oriol data: brightness: 5 rgb_color: [255,255,255] - service: light.turn_on data: entity_id: light.tira_led_cama_oriol brightness_pct: 5 rgb_color: [0,0,0] white_value: 255 - service: light.turn_off entity_id: light.tira_led_mesa_oriol - service: automation.turn_on entity_id: automation.Change_Brightness_oriol - alias: luz Oriol single 1 y 2 ON Tramo 3 # Encendemos la luz ya que esta apagada y ponemos el brillo en funcion de noche o dia initial_state: 'on' trigger: - platform: state entity_id: sensor.puls_conmut_1_oriol_evento to: 'single' - platform: state entity_id: sensor.puls_conmut_2_oriol_evento to: 'single' condition: - condition: state entity_id: light.luz_oriol state: 'off' - condition: time after: "02:00:00" - condition: sun before: sunrise before_offset: "00:30:00" action: - service: light.turn_off entity_id: light.luz_oriol - service: light.turn_on data: entity_id: light.tira_led_cama_oriol brightness_pct: 5 rgb_color: [0,0,0] white_value: 255 - service: light.turn_off entity_id: light.tira_led_mesa_oriol - alias: luz Oriol single 1 y 2 OFF # Encendemos la luz ya que esta apagada y ponemos el brillo en funcion de noche o dia initial_state: 'on' trigger: - platform: state entity_id: sensor.puls_conmut_1_oriol_evento to: 'single' - platform: state entity_id: sensor.puls_conmut_2_oriol_evento to: 'single' condition: - condition: state entity_id: light.luz_oriol state: 'on' action: - service: light.turn_off entity_id: light.luz_oriol - service: light.turn_off entity_id: light.tira_led_cama_oriol - service: light.turn_off entity_id: light.tira_led_mesa_oriol
Lenguaje del código: PHP (php)

Ahora crearemos una automatización para que cuando se mantenga pulsado el pulsador Simon apague todo

- alias: luz Oriol long press 1 y 2 apagar todo initial_state: 'on' trigger: - platform: state entity_id: sensor.puls_conmut_1_oriol_evento to: 'long' - platform: state entity_id: sensor.puls_conmut_2_oriol_evento to: 'long' action: - service: light.turn_off entity_id: light.luz_oriol - service: light.turn_off entity_id: light.tira_led_cama_oriol - service: light.turn_off entity_id: light.tira_led_mesa_oriol
Lenguaje del código: JavaScript (javascript)

Deja un comentario