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
xxxxxxxxxx
'0xa4c13836ff794744'
friendly_name'0xa4c13836ff794744'
y le añadiremos que simule el control de brillo
xxxxxxxxxx
'0xa4c13836ff794744'
friendly_name mando_zigbee
simulated_brightness
delta 20 # delta per interval, default = 20
interval 200 # interval in milliseconds, default = 200
Añadiremos los sensores del manto en el fichero configuration.yaml de nuestro home assistant
xxxxxxxxxx
### 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_after86400
force_updatetrue
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
xxxxxxxxxx
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
xxxxxxxxxx
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
xxxxxxxxxx
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
xxxxxxxxxx
####################################################################################################################
# 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
brightness255
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
brightness1
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
brightness255
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
brightness1
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
brightness255
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
brightness255
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
brightness255
rgb_color 63 255 0
service light.turn_off
data
entity_id light.luz_matrimonio
mode single
Y con esto y un bizcocho ……