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
, quadruple
, hold
, 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"
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 %}'
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
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
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