Hace unos días mirando por internet vi un mando a distancia zigbee bastante chulo y decidí comprarlo e integrarlo, el mando en cuestión es este
https://www.eglo.com/es/control-remoto-connect-z-99099.html

El mando viene con un soporte para la pared.

Y es alimentado por dos pilas AAA

Las especificaciones para integrarlo estan en https://www.zigbee2mqtt.io/devices/99099.html
El manual de instrucciones del equipo es este.
Según el manual para emparejarlo bastaba con pulsar el botón ON y el botón azul y se debía emparejar

Pero así no hay forma de emparejarlo , después de buscar un rato vi que hay una forma de previamente hacerle un reset de fabrica , pero antes baje la aplicación para Android y le actualice el firmware a la ultima versión.

Después de actualizar tampoco emparejaba , buscando en la web del fabricante encontre como hacer un reset de fabrica pulsando estos dos botones tres segundos .

Ahora al pulsar el botón ON y el botón azul y se emparejo correctamente con zigbee2mqtt

Al momento ya empezó a aparecer la información en MqttExplorer

Este el json que envia al pulsar el botón ON
{
"action": "on",
"action_group": 32780,
"device": {
"applicationVersion": 2,
"friendlyName": "0xa4c13836ff794744",
"hardwareVersion": 60,
"ieeeAddr": "0xa4c13836ff794744",
"manufacturerID": 4417,
"manufacturerName": "AwoX",
"model": "99099",
"networkAddress": 32859,
"powerSource": "Battery",
"softwareBuildID": "2.7.3_1387",
"stackVersion": 1,
"type": "EndDevice",
"zclVersion": 3
},
"last_seen": "2024-02-27T16:21:36+01:00",
"linkquality": 25
}Cambiaremos en el configuration.yaml de zigbee2mqtt el nombre del mando
'0xa4c13836ff794744':
friendly_name: '0xa4c13836ff794744'y le añadiremos que simule el control de brillo
'0xa4c13836ff794744':
friendly_name: mando_zigbee
simulated_brightness:
delta: 20 # delta per interval, default = 20
interval: 200 # interval in milliseconds, default = 200Añadiremos los sensores del manto en el fichero configuration.yaml de nuestro home assistant
### MANDO ZIGBEE
- state_topic: "zigbee2mqtt/mando_zigbee"
availability_topic: "zigbee2mqtt/bridge/state"
icon: "mdi:gesture-double-tap"
value_template: "{{ value_json.action }}"
name: "mando_zigbee_evento"
- state_topic: "zigbee2mqtt/mando_zigbee"
availability_topic: "zigbee2mqtt/bridge/state"
unit_of_measurement: "%"
device_class: "battery"
value_template: "{{ value_json.battery }}"
expire_after: 86400
force_update: true
name: "mando_zigbee_bateria"
- state_topic: "zigbee2mqtt/mando_zigbee"
availability_topic: "zigbee2mqtt/bridge/state"
icon: "mdi:signal"
unit_of_measurement: "lqi"
value_template: "{{ value_json.linkquality }}"
name: "mando_zigbee_estado"
- state_topic: "zigbee2mqtt/mando_zigbee"
availability_topic: "zigbee2mqtt/bridge/state"
icon: "mdi:calendar-clock"
value_template: "{{ value_json.last_seen }}"
name: "mando_zigbee_ultima_conexion" Crearemos el sensor de disponibilidad
- state_topic: "zigbee2mqtt/mando_zigbee/availability"
availability_topic: "zigbee2mqtt/mando_zigbee/availability"
name: mando_zigbee_disponibilidad
device_class: "connectivity"
payload_on: "online"
payload_off: "offline" Pondremos las etiquetas en el customize.yaml
binary_sensor.mando_zigbee_evento: friendly_name: Mando zigbee sensor.mando_zigbee_bateria: friendly_name: Mando zigbee sensor.mando_zigbeeestado: friendly_name: Mando zigbee sensor.mando_zigbee_evento: friendly_name: Mando zigbee binary_sensor.mando_zigbee_disponibilidad: friendly_name: Mando zigbee
Lo añadiremos al sensor general de fallo de cualquier dispositivo zigbee
- platform: template
sensors:
sensor_fallo_dispositivos_zigbee:
#ON cuando cualquiera falla en la comunicacion
friendly_name: 'Sensor fallo algun dispositivo zigbee'
value_template: >
{% if
is_state('binary_sensor.temperatura_balcon_disponibilidad', 'off') or
is_state('binary_sensor.sensor_agua_lavabo_disponibilidad', 'off') or
is_state('binary_sensor.sensor_puerta_entrada_disponibilidad', 'off') or
is_state('binary_sensor.sensor_movimiento_recibidor_disponibilidad', 'off') or
is_state('binary_sensor.sensor_proximidad_timbre_disponibilidad', 'off') or
is_state('binary_sensor.temperatura_comedor_disponibilidad', 'off') or
is_state('binary_sensor.sensor_movimiento_comedor_disponibilidad', 'off') or
is_state('binary_sensor.sensor_balcon_comedor_derecho_disponibilidad', 'off') or
is_state('binary_sensor.sensor_balcon_comedor_izquierdo_disponibilidad', 'off') or
is_state('binary_sensor.movimiento_3_disponibilidad', 'off') or
is_state('binary_sensor.pulsador_luz_sofa_disponibilidad', 'off') or
is_state('binary_sensor.sensor_balcon_matrimonio_izquierdo_disponibilidad', 'off') or
is_state('binary_sensor.sensor_balcon_matrimonio_derecho_disponibilidad', 'off') or
is_state('binary_sensor.puls_conmut_entrada_matrimonio_disponibilidad', 'off') or
is_state('binary_sensor.puls_conmut_tere_matrimonio_disponibilidad', 'off') or
is_state('binary_sensor.puls_conmut_antonio_matrimonio_disponibilidad', 'off') or
is_state('binary_sensor.temperatura_matrimonio_disponibilidad', 'off') or
is_state('binary_sensor.temperatura_congelador_disponibilidad', 'off') or
is_state('binary_sensor.temperatura_nevera_disponibilidad', 'off') or
is_state('binary_sensor.mando_zigbee_disponibilidad', 'off') or
is_state('binary_sensor.ikea_mando_1_disponibilidad', 'off') or
is_state('binary_sensor.sensor_trastero_disponibilidad', 'off') or
is_state('binary_sensor.temperatura_trastero_disponibilidad', 'off') or
is_state('binary_sensor.temperatura_oriol_disponibilidad', 'off') or
is_state('binary_sensor.puls_leds_oriol_disponibilidad', 'off') or
is_state('binary_sensor.sensor_oriol_izquierdo_disponibilidad', 'off') or
is_state('binary_sensor.sensor_oriol_derecho_disponibilidad', 'off') or
is_state('binary_sensor.sensor_puerta_armario_oriol_disponibilidad', 'off') or
is_state('binary_sensor.ikea_mando_2_disponibilidad', 'off') or
is_state('binary_sensor.puls_conmut_1_oriol_disponibilidad', 'off') or
is_state('binary_sensor.puls_conmut_2_oriol_disponibilidad', 'off') or
is_state('binary_sensor.enchufe_zb_1_disponibilidad', 'off') or
is_state('binary_sensor.enchufe_zb_2_tv_matrimonio_disponibilidad', 'off') or
is_state('binary_sensor.enchufe_zb_3_balcon_disponibilidad', 'off') or
is_state('binary_sensor.ikea_mando_4_disponibilidad', 'off') or
is_state('binary_sensor.sensor_movimiento_cocina_disponibilidad', 'off') or
is_state('binary_sensor.sensor_agua_cocina_disponibilidad', 'off') or
is_state('binary_sensor.sensor_agua_lavadero_disponibilidad', 'off')
%}
on
{% else %}
off
{% endif %}
icon_template: >
{% if
is_state('binary_sensor.temperatura_balcon_disponibilidad', 'off') or
is_state('binary_sensor.sensor_agua_lavabo_disponibilidad', 'off') or
is_state('binary_sensor.sensor_puerta_entrada_disponibilidad', 'off') or
is_state('binary_sensor.sensor_movimiento_recibidor_disponibilidad', 'off') or
is_state('binary_sensor.sensor_proximidad_timbre_disponibilidad', 'off') or
is_state('binary_sensor.temperatura_comedor_disponibilidad', 'off') or
is_state('binary_sensor.sensor_movimiento_comedor_disponibilidad', 'off') or
is_state('binary_sensor.sensor_balcon_comedor_derecho_disponibilidad', 'off') or
is_state('binary_sensor.sensor_balcon_comedor_izquierdo_disponibilidad', 'off') or
is_state('binary_sensor.movimiento_3_disponibilidad', 'off') or
is_state('binary_sensor.pulsador_luz_sofa_disponibilidad', 'off') or
is_state('binary_sensor.sensor_balcon_matrimonio_izquierdo_disponibilidad', 'off') or
is_state('binary_sensor.sensor_balcon_matrimonio_derecho_disponibilidad', 'off') or
is_state('binary_sensor.puls_conmut_entrada_matrimonio_disponibilidad', 'off') or
is_state('binary_sensor.puls_conmut_tere_matrimonio_disponibilidad', 'off') or
is_state('binary_sensor.puls_conmut_antonio_matrimonio_disponibilidad', 'off') or
is_state('binary_sensor.temperatura_matrimonio_disponibilidad', 'off') or
is_state('binary_sensor.temperatura_congelador_disponibilidad', 'off') or
is_state('binary_sensor.temperatura_nevera_disponibilidad', 'off') or
is_state('binary_sensor.mando_zigbee_disponibilidad', 'off') or
is_state('binary_sensor.ikea_mando_1_disponibilidad', 'off') or
is_state('binary_sensor.sensor_trastero_disponibilidad', 'off') or
is_state('binary_sensor.temperatura_trastero_disponibilidad', 'off') or
is_state('binary_sensor.temperatura_oriol_disponibilidad', 'off') or
is_state('binary_sensor.puls_leds_oriol_disponibilidad', 'off') or
is_state('binary_sensor.sensor_oriol_izquierdo_disponibilidad', 'off') or
is_state('binary_sensor.sensor_oriol_derecho_disponibilidad', 'off') or
is_state('binary_sensor.sensor_puerta_armario_oriol_disponibilidad', 'off') or
is_state('binary_sensor.ikea_mando_2_disponibilidad', 'off') or
is_state('binary_sensor.puls_conmut_1_oriol_disponibilidad', 'off') or
is_state('binary_sensor.puls_conmut_2_oriol_disponibilidad', 'off') or
is_state('binary_sensor.enchufe_zb_1_disponibilidad', 'off') or
is_state('binary_sensor.enchufe_zb_2_tv_matrimonio_disponibilidad', 'off') or
is_state('binary_sensor.enchufe_zb_3_balcon_disponibilidad', 'off') or
is_state('binary_sensor.ikea_mando_4_disponibilidad', 'off') or
is_state('binary_sensor.sensor_movimiento_cocina_disponibilidad', 'off') or
is_state('binary_sensor.sensor_agua_cocina_disponibilidad', 'off') or
is_state('binary_sensor.sensor_agua_lavadero_disponibilidad', 'off') %}
mdi:signal-off
{% else %}
mdi:signal
{% endif %} Los valores en action que nos devolverá son : on , off , red , refresh , refresh_colored , blue, yellow , green , brightness_step_up , brightness_step_down , brightness_move_up , brightness_move_down , brightness_stop , recall_1 , color_temperature_step_up , color_temperature_step_down
Los botones 1, 2 ,3 y recall_2 no funcionan ya que son para emparejar directamente a dispositivos , mas información aquí : https://github.com/Koenkk/zigbee2mqtt/issues/14786#issuecomment-1304827843
Empezaremos a crear automatizaciones según nuestras necesidades
####################################################################################################################
# MANDO ZIGBEE
####################################################################################################################
####################################################################################################################
# on, off, red, refresh, refresh_colored, blue, yellow, green, brightness_step_up, brightness_step_down,
# brightness_move_up, brightness_move_down, brightness_stop, recall_1, color_temperature_step_up,
# color_temperature_step_down
####################################################################################################################
- id: mando zigbee comando off
alias: mando zigbee comando off
trigger:
- platform: state
entity_id: sensor.mando_zigbee_evento
to: "off"
condition:
action:
- service: light.turn_off
data:
entity_id: light.luz_matrimonio
- service: light.turn_off
data:
entity_id: light.luz_matrimonio_ambilight
mode: single
- id: mando zigbee comando refresh
alias: mando zigbee comando refresh
trigger:
- platform: state
entity_id: sensor.mando_zigbee_evento
to: "refresh"
condition:
action:
- service: light.toggle
data:
entity_id: light.luz_matrimonio
- service: light.toggle
data:
entity_id: light.luz_matrimonio_ambilight
mode: single
- id: mando zigbee comando brightness_step_up
alias: mando zigbee comando brightness_step_up
trigger:
- platform: state
entity_id: sensor.mando_zigbee_evento
to: "brightness_step_up"
condition:
action:
- data_template:
entity_id: light.luz_matrimonio
brightness: 255
service: light.turn_on
mode: single
- id: mando zigbee comando brightness_step_down
alias: mando zigbee comando brightness_step_down
trigger:
- platform: state
entity_id: sensor.mando_zigbee_evento
to: "brightness_step_down"
condition:
action:
- data_template:
entity_id: light.luz_matrimonio
brightness: 1
service: light.turn_on
mode: single
- id: mando zigbee comando color_temperature_step_up
alias: mando zigbee comando color_temperature_step_up
trigger:
- platform: state
entity_id: sensor.mando_zigbee_evento
to: "color_temperature_step_up"
condition:
action:
- data_template:
entity_id: light.luz_matrimonio_ambilight
brightness: 255
service: light.turn_on
mode: single
- id: mando zigbee comando color_temperature_step_down
alias: mando zigbee comando color_temperature_step_down
trigger:
- platform: state
entity_id: sensor.mando_zigbee_evento
to: "color_temperature_step_down"
condition:
action:
- data_template:
entity_id: light.luz_matrimonio_ambilight
brightness: 1
service: light.turn_on
mode: single
- id: mando zigbee comando recall_1
alias: mando zigbee comando recall_1
trigger:
- platform: state
entity_id: sensor.mando_zigbee_evento
to: "recall_1"
condition:
action:
- service: light.toggle
data:
entity_id: light.luz_matrimonio
mode: single
- id: mando zigbee comando recall_2
alias: mando zigbee comando recall_2
trigger:
- platform: state
entity_id: sensor.mando_zigbee_evento
to: "recall_2"
condition:
action:
- service: light.toggle
data:
entity_id: light.luz_matrimonio_ambilight
mode: single
- id: mando zigbee comando refresh_colored
alias: mando zigbee comando refresh_colored
trigger:
- platform: state
entity_id: sensor.mando_zigbee_evento
to: "refresh_colored"
condition:
action:
- service: light.toggle
data:
entity_id: light.luz_matrimonio_ambilight
- service: light.turn_off
data:
entity_id: light.luz_matrimonio
mode: single
- id: mando zigbee comando refresh_colored
alias: mando zigbee comando refresh_colored
trigger:
- platform: state
entity_id: sensor.mando_zigbee_evento
to: "refresh_colored"
condition:
action:
- service: light.toggle
data:
entity_id: light.luz_matrimonio_ambilight
- service: light.turn_off
data:
entity_id: light.luz_matrimonio
mode: single
- id: mando zigbee comando red
alias: mando zigbee comando red
trigger:
- platform: state
entity_id: sensor.mando_zigbee_evento
to: "red"
condition:
action:
- service: light.turn_on
entity_id: light.luz_matrimonio_ambilight
data:
brightness: 255
rgb_color: [255,0,0]
- service: light.turn_off
data:
entity_id: light.luz_matrimonio
mode: single
- id: mando zigbee comando blue
alias: mando zigbee comando blue
trigger:
- platform: state
entity_id: sensor.mando_zigbee_evento
to: "blue"
condition:
action:
- service: light.turn_on
entity_id: light.luz_matrimonio_ambilight
data:
brightness: 255
rgb_color: [0,0,255]
- service: light.turn_off
data:
entity_id: light.luz_matrimonio
mode: single
- id: mando zigbee comando green
alias: mando zigbee comando green
trigger:
- platform: state
entity_id: sensor.mando_zigbee_evento
to: "green"
condition:
action:
- service: light.turn_on
entity_id: light.luz_matrimonio_ambilight
data:
brightness: 255
rgb_color: [63,255,0]
- service: light.turn_off
data:
entity_id: light.luz_matrimonio
mode: single Y con esto y un bizcocho ……