Ikea tiene una serie de elementos zigbee bastante originales y practicos , uno de los que mas me gusta de la serie TRÅDFRI es su remote control ( https://www.ikea.com/us/en/p/tradfri-remote-control-00443130/ ) que nos permite tener cinco teclas diferentes en un solo dispositivo con su base magnética

Viene con la batería , una base magnética y un adhesivo de doble cara 3M

Para alimentarlo retiramos la tapa trasera e introducimos la batería en su alojamiento

Emparejamiento : Teniendo zigbee2mqtt en modo “permitir emparejamiento” pulsaremos el botón al lado de la batería cuatro veces , si es correcto el led frontal se encenderá varias veces y ya estaría emparejado apareciendo en la pagina de zigbee2mqtt

Cuando se dispara una acción se puede ver el estado de la propiedad action , los valores posibles son : arrow_left_click, arrow_left_hold, arrow_left_release, arrow_right_click, arrow_right_hold, arrow_right_release, brightness_down_click, brightness_down_hold, brightness_down_release, brightness_up_click, brightness_up_hold, brightness_up_release y toggle
El botón central al ser pulsado envía este mensaje {“click”: “toggle”}, y al ser soltado siempre envia {“click”: “toggle_hold”}
Existe un problema de emparejamiento en función del firmware que lleva , de las versiones 2.3.014 a 2.3.74 solo permite el bind a grupos , por lo que o se actualiza el firmware vía OTA o se debe hacer bind a un grupo que creemos y vincular el dispositivo a ese grupo

Una vez emparejado ya podemos empezar a crear los sensores y las automatizaciones oportunas :
Sensor mqtt de disponiblidad
# MANDO IKEA 4
- platform: "mqtt"
state_topic: "zigbee2mqtt/ikea_mando_4"
availability_topic: "zigbee2mqtt/bridge/state"
payload_on: true
payload_off: false
value_template: "{{ value_json.update_available}}"
name: ikea_mando_4_disponibilidadSensores mqtt de acción , batería y calidad de la señal
### IKEA MANDO 4
- platform: "mqtt"
state_topic: "zigbee2mqtt/ikea_mando_4"
availability_topic: "zigbee2mqtt/bridge/state"
icon: "mdi:gesture-double-tap"
value_template: "{{ value_json.action }}"
name: "ikea_mando_4_evento"
- platform: "mqtt"
state_topic: "zigbee2mqtt/ikea_mando_4"
availability_topic: "zigbee2mqtt/bridge/state"
unit_of_measurement: "%"
device_class: "battery"
value_template: "{{ value_json.battery }}"
expire_after: 86400
force_update: true
name: "ikea_mando_4_bateria"
- platform: "mqtt"
state_topic: "zigbee2mqtt/ikea_mando_4"
availability_topic: "zigbee2mqtt/bridge/state"
icon: "mdi:signal"
unit_of_measurement: "lqi"
value_template: "{{ value_json.linkquality }}"
name: "ikea_mando_4_estado" Le daremos nombre a nuestro gusto en customize.yaml
binary_sensor.ikea_mando_4_evento: friendly_name: Mando luz ikea estudio sensor.ikea_mando_4_bateria: friendly_name: Mando luz ikea estudio sensor.ikea_mando_4_estado: friendly_name: Mando luz ikea estudio sensor.ikea_mando_4_evento: friendly_name: Mando luz ikea estudio
Yo uno ello lo utilizo para apagar y encender un plafón xiaomi y dos tiras de led de forma independiente con cada tecla , y con las dos teclas restantes subo o bajo el brillo del plafón , los delay de un segundo están puestos de forma intencionada porque a los plafones xiaomi les sienta muy mal el envió de varios comandos consecutivos y entra en un estado de protección que hace caso omiso de los comandos recibidos durante algo mas de un minuto
- id: ikea_controller_toggle_oriol
alias: Ikea Controller - Toggle _oriol
trigger:
- platform: state
entity_id: sensor.ikea_mando_4_evento
to: "toggle"
condition:
action:
- service: light.toggle
data:
entity_id: light.luz_oriol
- delay: 00:00:01
###########################################
## Dim up/down and warm up/down with clicks
###########################################
- id: ikea_controller_dim_up_oriol
alias: Ikea controller dim up _oriol
trigger:
platform: state
entity_id: sensor.ikea_mando_4_evento
to: brightness_up_click
action:
- data_template:
entity_id: light.luz_oriol
brightness: "{{ state_attr('light.luz_oriol', 'brightness') + 15 | int(0) | round(0,default=0) }}"
service: light.turn_on
- delay: 00:00:01
- id: ikea_controller_dim_down_oriol
alias: Ikea controller dim down _oriol
trigger:
platform: state
entity_id: sensor.ikea_mando_4_evento
to: brightness_down_click
action:
- data_template:
entity_id: light.luz_oriol
brightness: "{{ [state_attr('light.luz_oriol', 'brightness') - 15, 1] | max }}"
service: light.turn_on
- delay: 00:00:01
- id: ikea_controller_warm_up_oriol
alias: Ikea controller warm up _oriol
trigger:
platform: state
entity_id: sensor.ikea_mando_4_evento
to: arrow_right_click
action:
- service: light.toggle
data:
entity_id: light.tira_led_mesa_oriol
- id: ikea_controller_warm_down_oriol
alias: Ikea controller warm down _oriol
trigger:
platform: state
entity_id: sensor.ikea_mando_4_evento
to: arrow_left_click
action:
- service: light.toggle
data:
entity_id: light.tira_led_cama_oriol
Crearemos un sensor de batería para que nos de una alerta cuando la batería este baja
mando_ikea_2_battery_level:
friendly_name: Mando Ikea Oriol
value_template: "{{ states.sensor.ikea_mando_2_bateria.state |default(-1)| int(0) if states.sensor.ikea_mando_2_bateria is not none }}"
unit_of_measurement: '%'
icon_template: '{% if states.sensor.ikea_mando_2_bateria.state| int(0) == 100 %}
mdi:battery
{% elif states.sensor.ikea_mando_2_bateria.state| int(0) >= 90 %}
mdi:battery-90
{% elif states.sensor.ikea_mando_2_bateria.state| int(0) >= 80 %}
mdi:battery-80
{% elif states.sensor.ikea_mando_2_bateria.state| int(0) >= 70 %}
mdi:battery-70
{% elif states.sensor.ikea_mando_2_bateria.state| int(0) >= 60 %}
mdi:battery-60
{% elif states.sensor.ikea_mando_2_bateria.state| int(0) >= 50 %}
mdi:battery-50
{% elif states.sensor.ikea_mando_2_bateria.state| int(0) >= 40 %}
mdi:battery-40
{% elif states.sensor.ikea_mando_2_bateria.state| int(0) >= 30 %}
mdi:battery-30
{% elif states.sensor.ikea_mando_2_bateria.state| int(0) >= 20 %}
mdi:battery-20
{% elif states.sensor.ikea_mando_2_bateria.state| int(0) >= 10 %}
mdi:battery-10
{% else %}
mdi:battery-outline
{% endif %}'Y colorin colorado …………