How to use MiBoxer RGB+CCT Remote Zigbee 3.0 (FUT089Z) with HASS? Getting no zha_event

I have found a nice zigbee remote I would like to use within HASS to switch different actions withing hass.
I am using a rooted Silvercrest Zigbee Gateway from Lidl and already using it with ZHA and several Zigbee lights from Hue and others.
As next step, I want to integrate the FUT089Z as a remote for triggering automations. But the problem is, that I don’t get any zha_event from it when I press a button. I can pair it flawlessly (Pressing on/off for couple of seconds and it will pair), and it even updates its entities (battery, signal, etc.) when I remove the batteries and put them in again.
Is there anything I can do about it?

Is there an alternative living room remote I could use with that many buttons with Zigbee? Maybe BT would also fit.

Edit: Too bad this thread has been hijacked for Z2M and off topic. You won’t find a solution here for that problem

There is the Miboxer hub, i have it, but i can not connect it to Home Assistant. And now after a few monds I can not use the app, password not correct… and it gives no link to change password.

Getting fut089z into Zigbee on HA yes but no buttons to config.

Hi @bonestaak, I haven’t used my MiLight/MiBoxer hubs in years, since I changed to esp8266_milight_hub, but I remember when logging into them with a web browser the default password was something like 1234 or so .

Possibly something for you to try, if the app - of which there seem to be several different versions around, is giving you problems.

Read the Z2M docs to understand how it works (even though you are on ZHA). It sends direct commands to a hard coded group. Not super useful, except it works even if the coordinator is offline.
https://www.zigbee2mqtt.io/devices/FUT089Z.html

This doesn’t help, as I don’t get any click messages on zha

I’m not sure you understood the implications.
As they say in the Z2M docs “There is no support for sending events instead of commands. Which means that there is no other automation you can build out of the group assignement described above.”. The only thing it exposes is battery and link quality. No click event.
You pair it to a network, and it directly sends commands on the network to the devices in the zigbee group 101-108. It does not send them to home assistant.
When I manually set the group id of some of my devices to 101-108, then I could control the devices directly with the remote. But it won’t send anything to HA.

The gateway should see the events, which I then should be able to use.

A solution would be to include a virtual ZigBee device where Hass can receive events on various groups.

I actually love this remote. my five year old can control her zigbee lights.
I am totally good with not seeing it in home assistant everytime she changes things. It is lightlink, so they are bound and will work without HA, etc.

With the latest z2m update (1.35.1-1), the extension is no longer required. However, what I had done on the basis of what is suggested here no longer works (although it’s still in the doc).

So I biased it by doing direct mqtt:

For button detection (duplicate x 8):

- platform: mqtt
    topic: zigbee2mqtt/Mi Boxer
    payload: ('on', 101)
    value_template: "{{ value_json.action , value_json.action_group }}"
    id: 1on
  - platform: mqtt
    topic: zigbee2mqtt/Mi Boxer
    payload: ('off', 101)
    value_template: "{{ value_json.action , value_json.action_group }}"
    id: 1off

And for brightness (I would like to extract only the action_level load):

- platform: mqtt
    topic: zigbee2mqtt/Mi Boxer
    id: bright

Then we modify (x 8) in the chose: action side:

- conditions:
    - condition: template
      value_template: >-
        {{ is_state('input_select.mi_boxer_select', '1') and trigger.id in ['bright'] }}
  sequence:
    - service: light.turn_on
      data_template:
        entity_id: light.shellydimmer_f3d426
        brightness_pct: "{{ trigger.payload_json.action_level }}"

In french : My Canaletto | Home Assistant & Mi Boxer

To date I haven’t found a solution for ZHA, but by capturing the events we should be able to achieve a similar use…

1 Like

Hello

can you please help me with this.
i have the same remote and some problems to implement it.

i have this Error:

* Invalid config for 'template' at configuration.yaml, line 43: 'platform' is an invalid option for 'template', check: platform Invalid config for 'template' at configuration.yaml, line 44: 'topic' is an invalid option for 'template', check: topic Invalid config for 'template' at configuration.yaml, line 45: 'payload' is an invalid option for 'template', check: payload Invalid config for 'template' at configuration.yaml, line 46: 'value_template' is an invalid option for 'template', check: value_template Invalid config for 'template' at configuration.yaml, line 47: 'id' is an invalid option for 'template', check: id
* Invalid config for 'template' at configuration.yaml, line 48: 'platform' is an invalid option for 'template', check: platform Invalid config for 'template' at configuration.yaml, line 49: 'topic' is an invalid option for 'template', check: topic Invalid config for 'template' at configuration.yaml, line 50: 'payload' is an invalid option for 'template', check: payload Invalid config for 'template' at configuration.yaml, line 51: 'value_template' is an invalid option for 'template', check: value_template Invalid config for 'template' at configuration.yaml, line 52: 'id' is an invalid option for 'template', check: id
template:
  platform: mqtt

is not valid any more.

OK .
Thanks for the tip.

but i don’t know what kind of of component the remote is:

This

mqtt:
  sensor:
    - name: "MIBOX1on"
      state_topic: "zigbee2mqtt/Mi Boxer"
      payload_available: ('on', 101)
      value_template: "{{ value_json.action , value_json.action_group }}"
      object_id: 1on

don’t works. I cant get 1on but i don’t know why

I am new to HA and I have a couple of these mibox remotes. Is there a way to make them work with ZHA? I have the skyconnect and don’t really know how to setup 2mtt. And help is greatly appreciated! :slight_smile:

hello,

could you please explain at a non-programmer level exactly what needs to be done with the code sections for the remote control to work?

I am currently quite at a loss.
Should this be in an automation? Or in the configuration.yaml? or in the customize.yaml?
Or should I create a new *.yaml for it?
Or is it still a mqtt extension, but a different one than before?

Or should you even replace parts of the example here: MiBoxer FUT089Z control via MQTT | Zigbee2MQTT with your new code? Which parts?

I assume that “duplicate x 8” means that I increment 101 (101, 102,… ,107) for each duplicate?

Where in the code is the exact remote control specified? Or where is the distinguishing feature if I want to use two FUT089Z?

1 Like

Just bought this remote and using this automation, Im able to bind every button:

- alias: Remotes - Handle study remote
  variables:
    group: '{{ trigger.to_state.attributes["action_group"] if "action_group" in trigger.to_state.attributes else "" }}' 
    state: '{{ trigger.to_state.state }}' 
  trigger:
  - platform: state
    entity_id: sensor.study_remote_action
  condition: 
    - condition: template
      value_template: "{{ group != '' }}"
  action:
  - choose:
    - conditions:
      # main button on
      - '{{ state == "on" and group == 108 }}'
      sequence:
      - service: climate.set_temperature
        target:
          entity_id: climate.daikinstudy
        data:
          temperature: "{{ states('input_number.study_target_temperature') }}"
          hvac_mode: cool
      - service: climate.set_fan_mode
        target:
          entity_id: climate.daikinstudy
        data:
          fan_mode: Silence
      # main button off
    - conditions:
      - '{{ state == "off" and group == 108 }}'
      sequence:
      - service: climate.turn_off
        target:
          entity_id: climate.daikinstudy
      # 1 button on
    - conditions:
      - '{{ state == "on" and group == 101 }}'
      sequence:
      - service: cover.close_cover
        entity_id: 
          - cover.study_blind_left
      # 1 button off
    - conditions:
      - '{{ state == "off" and group == 101 }}'
      sequence:
      - service: cover.open_cover
        entity_id: 
          - cover.study_blind_left
      # 2 button off
    - conditions:
      - '{{ state == "on" and group == 102 }}'
      sequence:
      - service: cover.close_cover
        entity_id: 
          - cover.study_blind_right
      # 2 button off
    - conditions:
      - '{{ state == "off" and group == 102 }}'
      sequence:
      - service: cover.open_cover
        entity_id: 
          - cover.study_blind_right
    # Press either WRGB
    - conditions:
      - '{{ state == "brightness_move_to_level" }}'
      sequence:
      - service: cover.stop_cover
        entity_id: 
          - cover.study_blind_right
          - cover.study_blind_left
1 Like

Dear giejay, I tried to use your automation to see the MiBoxer buttons replacing your actions by simple nothifcations but nothing triggers.

Anything else I need to configure? The MiBoxer is paired and I can see the battery level the LQI and RSSI, but that is all.

I’m using HA Sky Connect on a Raspberry Pi 5 running HAOS and HA Core 2024.7.4.

many thanks for your help.

Best regards, Colin

What do you see in the Zigbee 2 mqtt logs?

Thanks for your rapid reply Giejay and my apologies for a slow response. I will package the logs tomorrow and try to describe what is, or isn’t happening.

Best regards, Colin

Dear Giejay,

Here are the details of my problem and the config and log files.

I started out by installing ZHA and use your automation but nothinh got triggered. HA only showed 3 items, battery, LQI and RSSI. So I decided to install Zigbee2mqtt. I took me a while to figure out the config, not exactly plug and play but once paired 4 items were visible in HA, the 3 from before and now “action” which was promising.

However, not all the buttons work, some have INVALID_STATUS and each time I delete and repair the remote the problem remains but not always on the same buttons, maybe a timing issue on the pairing?

Here is my configuration.yaml for zigbee2mqtt.

homeassistant: true
advanced:
  network_key:
    - 169
    - 59
    - 133
    - 110
    - 45
    - 19
    - 102
    - 15
    - 48
    - 136
    - 86
    - 96
    - 78
    - 117
    - 47
    - 232
  pan_id: 62396
  ext_pan_id:
    - 58
    - 125
    - 75
    - 18
    - 77
    - 40
    - 97
    - 180
  homeassistant_legacy_entity_attributes: false
  legacy_api: false
  legacy_availability_payload: false
mqtt:
  server: mqtt://core-mosquitto:1883
  user: mqtt_user
  password: ********
frontend:
  port: 8099
serial:
  port: >-
    /dev/serial/by-id/usb-Nabu_Casa_SkyConnect_v1.0_c6c4383c9eb3ed11a6784faca7669f5d-if00-port0
  adapter: ember
device_options:
  legacy: false
devices:
  '0x94deb8fffebe1e3f':
    friendly_name: MiBoxer-0x94deb8fffebe1e3f

Here is the Zigbee2mqtt log for the pairing

[2024-08-04 18:41:29] info: 	zh:ember: [NCP COUNTERS] 0,469,7,2,0,0,2,2,0,2,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0
[2024-08-04 18:41:29] info: 	zh:ember: [ASH COUNTERS] 57,12,3,9,0,0,0,0,252,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
[2024-08-04 18:47:43] info: 	z2m: Removing device 'MiBoxer-0x94deb8fffebe1e3f' (block: false, force: true)
[2024-08-04 18:47:43] info: 	z2m:mqtt: MQTT publish: topic 'homeassistant/sensor/0x94deb8fffebe1e3f/battery/config', payload 'null'
[2024-08-04 18:47:43] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/MiBoxer-0x94deb8fffebe1e3f', payload ''
[2024-08-04 18:47:43] info: 	z2m: Successfully removed device 'MiBoxer-0x94deb8fffebe1e3f' (block: false, force: true)
[2024-08-04 18:47:43] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/bridge/response/device/remove', payload '{"data":{"block":false,"force":true,"id":"MiBoxer-0x94deb8fffebe1e3f"},"status":"ok","transaction":"7eyfu-1"}'
[2024-08-04 18:47:43] info: 	z2m:mqtt: MQTT publish: topic 'homeassistant/sensor/0x94deb8fffebe1e3f/voltage/config', payload 'null'
[2024-08-04 18:47:43] info: 	z2m:mqtt: MQTT publish: topic 'homeassistant/sensor/0x94deb8fffebe1e3f/action/config', payload 'null'
[2024-08-04 18:47:43] info: 	z2m:mqtt: MQTT publish: topic 'homeassistant/sensor/0x94deb8fffebe1e3f/linkquality/config', payload 'null'
[2024-08-04 18:48:28] info: 	z2m: Zigbee: allowing new devices to join.
[2024-08-04 18:48:28] info: 	zh:ember: [STACK STATUS] Network opened.
[2024-08-04 18:48:29] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/bridge/response/permit_join', payload '{"data":{"time":254,"value":true},"status":"ok","transaction":"7eyfu-2"}'
[2024-08-04 18:48:30] info: 	zh:controller: Interview for '0x94deb8fffebe1e3f' started
[2024-08-04 18:48:30] info: 	z2m: Device '0x94deb8fffebe1e3f' joined
[2024-08-04 18:48:30] info: 	z2m: Starting interview of '0x94deb8fffebe1e3f'
[2024-08-04 18:48:30] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/bridge/event', payload '{"data":{"friendly_name":"0x94deb8fffebe1e3f","ieee_address":"0x94deb8fffebe1e3f"},"type":"device_joined"}'
[2024-08-04 18:48:30] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/bridge/event', payload '{"data":{"friendly_name":"0x94deb8fffebe1e3f","ieee_address":"0x94deb8fffebe1e3f","status":"started"},"type":"device_interview"}'
[2024-08-04 18:48:30] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/bridge/event', payload '{"data":{"friendly_name":"0x94deb8fffebe1e3f","ieee_address":"0x94deb8fffebe1e3f"},"type":"device_announce"}'
[2024-08-04 18:48:33] info: 	zh:controller: Succesfully interviewed '0x94deb8fffebe1e3f'
[2024-08-04 18:48:33] info: 	z2m: Successfully interviewed '0x94deb8fffebe1e3f', device has successfully been paired
[2024-08-04 18:48:33] info: 	z2m: Device '0x94deb8fffebe1e3f' is supported, identified as: MiBoxer RGB+CCT Remote (FUT089Z)
[2024-08-04 18:48:33] info: 	z2m: Configuring '0x94deb8fffebe1e3f'
[2024-08-04 18:48:33] info: 	z2m:mqtt: MQTT publish: topic 'homeassistant/sensor/0x94deb8fffebe1e3f/battery/config', payload '{"availability":[{"topic":"zigbee2mqtt/bridge/state","value_template":"{{ value_json.state }}"}],"device":{"identifiers":["zigbee2mqtt_0x94deb8fffebe1e3f"],"manufacturer":"MiBoxer","model":"RGB+CCT Remote (FUT089Z)","name":"0x94deb8fffebe1e3f","via_device":"zigbee2mqtt_bridge_0xbc026efffed1a938"},"device_class":"battery","enabled_by_default":true,"entity_category":"diagnostic","object_id":"0x94deb8fffebe1e3f_battery","origin":{"name":"Zigbee2MQTT","sw":"1.39.1","url":"https://www.zigbee2mqtt.io"},"state_class":"measurement","state_topic":"zigbee2mqtt/0x94deb8fffebe1e3f","unique_id":"0x94deb8fffebe1e3f_battery_zigbee2mqtt","unit_of_measurement":"%","value_template":"{{ value_json.battery }}"}'
[2024-08-04 18:48:33] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/bridge/event', payload '{"data":{"definition":{"description":"RGB+CCT Remote","exposes":[{"access":1,"category":"diagnostic","description":"Remaining battery in %, can take up to 24 hours before reported","label":"Battery","name":"battery","property":"battery","type":"numeric","unit":"%","value_max":100,"value_min":0},{"access":1,"category":"diagnostic","description":"Voltage of the battery in millivolts","label":"Voltage","name":"voltage","property":"voltage","type":"numeric","unit":"mV"},{"access":1,"category":"diagnostic","description":"Triggered action (e.g. a button click)","label":"Action","name":"action","property":"action","type":"enum","values":["on","off","brightness_move_to_level","color_temperature_move","move_to_hue_and_saturation"]},{"access":1,"category":"diagnostic","description":"Link quality (signal strength)","label":"Linkquality","name":"linkquality","property":"linkquality","type":"numeric","unit":"lqi","value_max":255,"value_min":0}],"model":"FUT089Z","options":[{"access":2,"description":"Simulate a brightness value. If this device provides a brightness_move_up or brightness_move_down action it is possible to specify the update interval and delta. The action_brightness_delta indicates the delta for each interval. ","features":[{"access":2,"description":"Delta per interval, 20 by default","label":"Delta","name":"delta","property":"delta","type":"numeric","value_min":0},{"access":2,"description":"Interval duration","label":"Interval","name":"interval","property":"interval","type":"numeric","unit":"ms","value_min":0}],"label":"Simulated brightness","name":"simulated_brightness","property":"simulated_brightness","type":"composite"}],"supports_ota":false,"vendor":"MiBoxer"},"friendly_name":"0x94deb8fffebe1e3f","ieee_address":"0x94deb8fffebe1e3f","status":"successful","supported":true},"type":"device_interview"}'
[2024-08-04 18:48:33] info: 	z2m:mqtt: MQTT publish: topic 'homeassistant/sensor/0x94deb8fffebe1e3f/voltage/config', payload '{"availability":[{"topic":"zigbee2mqtt/bridge/state","value_template":"{{ value_json.state }}"}],"device":{"identifiers":["zigbee2mqtt_0x94deb8fffebe1e3f"],"manufacturer":"MiBoxer","model":"RGB+CCT Remote (FUT089Z)","name":"0x94deb8fffebe1e3f","via_device":"zigbee2mqtt_bridge_0xbc026efffed1a938"},"device_class":"voltage","enabled_by_default":false,"entity_category":"diagnostic","object_id":"0x94deb8fffebe1e3f_voltage","origin":{"name":"Zigbee2MQTT","sw":"1.39.1","url":"https://www.zigbee2mqtt.io"},"state_class":"measurement","state_topic":"zigbee2mqtt/0x94deb8fffebe1e3f","unique_id":"0x94deb8fffebe1e3f_voltage_zigbee2mqtt","unit_of_measurement":"mV","value_template":"{{ value_json.voltage }}"}'
[2024-08-04 18:48:33] info: 	z2m:mqtt: MQTT publish: topic 'homeassistant/sensor/0x94deb8fffebe1e3f/action/config', payload '{"availability":[{"topic":"zigbee2mqtt/bridge/state","value_template":"{{ value_json.state }}"}],"device":{"identifiers":["zigbee2mqtt_0x94deb8fffebe1e3f"],"manufacturer":"MiBoxer","model":"RGB+CCT Remote (FUT089Z)","name":"0x94deb8fffebe1e3f","via_device":"zigbee2mqtt_bridge_0xbc026efffed1a938"},"enabled_by_default":true,"icon":"mdi:gesture-double-tap","name":"Action","object_id":"0x94deb8fffebe1e3f_action","origin":{"name":"Zigbee2MQTT","sw":"1.39.1","url":"https://www.zigbee2mqtt.io"},"state_topic":"zigbee2mqtt/0x94deb8fffebe1e3f","unique_id":"0x94deb8fffebe1e3f_action_zigbee2mqtt","value_template":"{{ value_json.action }}"}'
[2024-08-04 18:48:33] info: 	z2m:mqtt: MQTT publish: topic 'homeassistant/sensor/0x94deb8fffebe1e3f/linkquality/config', payload '{"availability":[{"topic":"zigbee2mqtt/bridge/state","value_template":"{{ value_json.state }}"}],"device":{"identifiers":["zigbee2mqtt_0x94deb8fffebe1e3f"],"manufacturer":"MiBoxer","model":"RGB+CCT Remote (FUT089Z)","name":"0x94deb8fffebe1e3f","via_device":"zigbee2mqtt_bridge_0xbc026efffed1a938"},"enabled_by_default":false,"entity_category":"diagnostic","icon":"mdi:signal","name":"Linkquality","object_id":"0x94deb8fffebe1e3f_linkquality","origin":{"name":"Zigbee2MQTT","sw":"1.39.1","url":"https://www.zigbee2mqtt.io"},"state_class":"measurement","state_topic":"zigbee2mqtt/0x94deb8fffebe1e3f","unique_id":"0x94deb8fffebe1e3f_linkquality_zigbee2mqtt","unit_of_measurement":"lqi","value_template":"{{ value_json.linkquality }}"}'
[2024-08-04 18:48:34] info: 	z2m: Successfully configured '0x94deb8fffebe1e3f'
[2024-08-04 18:48:35] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f', payload '{"action":null,"battery":100,"linkquality":255,"voltage":3000}'
[2024-08-04 18:50:12] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f', payload '{"action":"on","action_group":108,"battery":100,"linkquality":255,"voltage":3000}'
[2024-08-04 18:50:12] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f', payload '{"action":"","battery":100,"linkquality":255,"voltage":3000}'
[2024-08-04 18:50:12] info: 	z2m:mqtt: MQTT publish: topic 'homeassistant/device_automation/0x94deb8fffebe1e3f/action_on/config', payload '{"automation_type":"trigger","device":{"identifiers":["zigbee2mqtt_0x94deb8fffebe1e3f"],"manufacturer":"MiBoxer","model":"RGB+CCT Remote (FUT089Z)","name":"0x94deb8fffebe1e3f","via_device":"zigbee2mqtt_bridge_0xbc026efffed1a938"},"origin":{"name":"Zigbee2MQTT","sw":"1.39.1","url":"https://www.zigbee2mqtt.io"},"payload":"on","subtype":"on","topic":"zigbee2mqtt/0x94deb8fffebe1e3f/action","type":"action"}'
[2024-08-04 18:50:12] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f/action', payload 'on'
[2024-08-04 18:50:14] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f', payload '{"action":"off","action_group":108,"battery":100,"linkquality":255,"voltage":3000}'
[2024-08-04 18:50:14] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f', payload '{"action":"","battery":100,"linkquality":255,"voltage":3000}'
[2024-08-04 18:50:14] info: 	z2m:mqtt: MQTT publish: topic 'homeassistant/device_automation/0x94deb8fffebe1e3f/action_off/config', payload '{"automation_type":"trigger","device":{"identifiers":["zigbee2mqtt_0x94deb8fffebe1e3f"],"manufacturer":"MiBoxer","model":"RGB+CCT Remote (FUT089Z)","name":"0x94deb8fffebe1e3f","via_device":"zigbee2mqtt_bridge_0xbc026efffed1a938"},"origin":{"name":"Zigbee2MQTT","sw":"1.39.1","url":"https://www.zigbee2mqtt.io"},"payload":"off","subtype":"off","topic":"zigbee2mqtt/0x94deb8fffebe1e3f/action","type":"action"}'
[2024-08-04 18:50:14] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f/action', payload 'off'
[2024-08-04 18:50:17] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f', payload '{"action":"on","action_group":101,"battery":100,"linkquality":255,"voltage":3000}'
[2024-08-04 18:50:17] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f', payload '{"action":"","battery":100,"linkquality":255,"voltage":3000}'
[2024-08-04 18:50:17] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f/action', payload 'on'
[2024-08-04 18:50:19] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f', payload '{"action":"on","action_group":102,"battery":100,"linkquality":255,"voltage":3000}'
[2024-08-04 18:50:19] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f', payload '{"action":"","battery":100,"linkquality":255,"voltage":3000}'
[2024-08-04 18:50:19] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f/action', payload 'on'
[2024-08-04 18:50:21] error: 	zh:ember: Error: Failed to register group '103' in multicast table with status=INVALID_STATE.
[2024-08-04 18:50:23] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f', payload '{"action":"on","action_group":104,"battery":100,"linkquality":255,"voltage":3000}'
[2024-08-04 18:50:23] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f', payload '{"action":"","battery":100,"linkquality":255,"voltage":3000}'
[2024-08-04 18:50:23] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f/action', payload 'on'
[2024-08-04 18:50:26] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f', payload '{"action":"on","action_group":105,"battery":100,"linkquality":255,"voltage":3000}'
[2024-08-04 18:50:26] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f', payload '{"action":"","battery":100,"linkquality":255,"voltage":3000}'
[2024-08-04 18:50:26] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f/action', payload 'on'
[2024-08-04 18:50:28] error: 	zh:ember: Error: Failed to register group '106' in multicast table with status=INVALID_STATE.
[2024-08-04 18:52:43] info: 	zh:ember: [STACK STATUS] Network closed.
[2024-08-04 18:56:57] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f', payload '{"action":"on","action_group":108,"battery":100,"linkquality":224,"voltage":3000}'
[2024-08-04 18:56:57] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f', payload '{"action":"","battery":100,"linkquality":224,"voltage":3000}'
[2024-08-04 18:56:57] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f/action', payload 'on'
[2024-08-04 18:56:59] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f', payload '{"action":"off","action_group":108,"battery":100,"linkquality":216,"voltage":3000}'
[2024-08-04 18:56:59] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f', payload '{"action":"","battery":100,"linkquality":216,"voltage":3000}'
[2024-08-04 18:56:59] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f/action', payload 'off'
[2024-08-04 18:57:01] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f', payload '{"action":"on","action_group":101,"battery":100,"linkquality":224,"voltage":3000}'
[2024-08-04 18:57:01] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f', payload '{"action":"","battery":100,"linkquality":224,"voltage":3000}'
[2024-08-04 18:57:01] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f/action', payload 'on'
[2024-08-04 18:57:03] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f', payload '{"action":"on","action_group":102,"battery":100,"linkquality":220,"voltage":3000}'
[2024-08-04 18:57:03] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f', payload '{"action":"","battery":100,"linkquality":220,"voltage":3000}'
[2024-08-04 18:57:03] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f/action', payload 'on'
[2024-08-04 18:57:05] error: 	zh:ember: Error: Failed to register group '103' in multicast table with status=INVALID_STATE.
[2024-08-04 18:57:06] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f', payload '{"action":"on","action_group":104,"battery":100,"linkquality":224,"voltage":3000}'
[2024-08-04 18:57:06] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f', payload '{"action":"","battery":100,"linkquality":224,"voltage":3000}'
[2024-08-04 18:57:06] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f/action', payload 'on'
[2024-08-04 18:57:07] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f', payload '{"action":"on","action_group":105,"battery":100,"linkquality":228,"voltage":3000}'
[2024-08-04 18:57:07] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f', payload '{"action":"","battery":100,"linkquality":228,"voltage":3000}'
[2024-08-04 18:57:07] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f/action', payload 'on'
[2024-08-04 18:57:09] error: 	zh:ember: Error: Failed to register group '106' in multicast table with status=INVALID_STATE.

and here is the mqtt trace for some button presses

zigbee2mqtt/bridge/logging << {"level":"info","message":"z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f', payload '{\"action\":\"on\",\"action_group\":108,\"battery\":100,\"linkquality\":224,\"voltage\":3000}'"}
zigbee2mqtt/0x94deb8fffebe1e3f/action << on
zigbee2mqtt/0x94deb8fffebe1e3f/action << off
zigbee2mqtt/bridge/logging << {"level":"info","message":"z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f', payload '{\"action\":\"on\",\"action_group\":101,\"battery\":100,\"linkquality\":224,\"voltage\":3000}'"}
zigbee2mqtt/0x94deb8fffebe1e3f/action << on
zigbee2mqtt/bridge/logging << {"level":"info","message":"z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0x94deb8fffebe1e3f', payload '{\"action\":\"on\",\"action_group\":102,\"battery\":100,\"linkquality\":220,\"voltage\":3000}'"}
zigbee2mqtt/0x94deb8fffebe1e3f/action << on
zigbee2mqtt/bridge/logging << {"level":"error","message":"zh:ember: Error: Failed to register group '103' in multicast table with status=INVALID_STATE."}
zigbee2mqtt/0x94deb8fffebe1e3f/action << on
zigbee2mqtt/0x94deb8fffebe1e3f/action << on
zigbee2mqtt/bridge/logging << {"level":"error","message":"zh:ember: Error: Failed to register group '106' in multicast table with status=INVALID_STATE."}

Many thanks for your help, any ideas gratefully received.

Best regards, Colin