Zigbee2MQTTZigbee2MQTT
  • Getting started
  • Supported Adapters
  • Supported Devices
  • Installation
  • Configuration
  • Usage
  • FAQ
Devices
  • Zigbee

    • Zigbee network
    • Improve network range and stability
    • Secure your Zigbee network
    • Sniff Zigbee traffic
    • Create a CC2530 router
  • Support new devices

    • Support new devices
    • Support new Tuya devices
    • Find Tuya Data Points
  • Remote Adapter

    • Connect to a remote adapter
    • Connect to a remote Sonoff ZBBridge
  • More

    • 3D cases
    • External converters
    • External extensions
    • Switch to the dev branch
    • Get Tuya and Xiaomi OTA url
  • Forum
  • Discord
  • Issues
  • Donate
GitHub
GitHub (docs)
  • Getting started
  • Supported Adapters
  • Supported Devices
  • Installation
  • Configuration
  • Usage
  • FAQ
Devices
  • Zigbee

    • Zigbee network
    • Improve network range and stability
    • Secure your Zigbee network
    • Sniff Zigbee traffic
    • Create a CC2530 router
  • Support new devices

    • Support new devices
    • Support new Tuya devices
    • Find Tuya Data Points
  • Remote Adapter

    • Connect to a remote adapter
    • Connect to a remote Sonoff ZBBridge
  • More

    • 3D cases
    • External converters
    • External extensions
    • Switch to the dev branch
    • Get Tuya and Xiaomi OTA url
  • Forum
  • Discord
  • Issues
  • Donate
GitHub
GitHub (docs)

MiBoxer FUT089Z

ModelFUT089Z
VendorMiBoxer
DescriptionRGB+CCT Remote
Exposesbattery, voltage, action
PictureMiBoxer FUT089Z

Notes

Pairing

To pair the device:

  • Permit joining in Zigbee2MQTT
  • Press and hold the Master ON and OFF buttons simultaneously until the central red LED begins flashing rapidly

Device Behavior

The remote reports three sensor values by default:

  • Battery (%)
  • Voltage (mV)
  • Linkquality (lqi)

The remote features seven numbered pairs of on/off buttons, with each pair controlling a distinct zone. Additionally, there is an eighth button group at the top, comprising dedicated ON and OFF buttons for zone 8. Each zone corresponds to a specific Zigbee group. By default, Zone 1 maps to Zigbee group 101, Zone 2 to 102, and so on. Note that when using multiple MiBoxer FUT089Z remotes, they will all control the same Zigbee groups (101-108) by default.

On each button press or slider touch, the device sends one or two consecutive actions and a corresponding group ID. The group ID is published along with the device state as action_group:

Button / SliderActionGroup ID
Button 1-7 Ion101 - 107
Button 1-7 Ooff101 - 107
R, G, Bmove_to_hue_and_saturation, followed by brightness_move_to_levelGroup ID of the last on/off button that was pressed
Wcolor_temperature_move, followed by brightness_move_to_levelGroup ID of the last on/off button that was pressed
ONon108
OFFoff108
Color Wheelmove_to_hue_and_saturation, followed by brightness_move_to_level
Brightness Sliderbrightness_move_to_levelGroup ID of the last on/off button that was pressed
Color Temperature / Saturation SliderEither move_to_hue_and_saturation or color_temperature_move (depending on an internal state of the device), followed by brightness_move_to_level. The move_to_hue_and_saturation state can be forced by touching the color wheel or by pressing one of the R, G, B buttons first. color_temperature_move can be forced by pressing the W button first.Group ID of the last on/off button that was pressed
10S / 30S Delay OFFoff after a delay of 10 / 30 secondsGroup ID of the last on/off button that was pressed

Device Configuration

Exposing Control Values

By default, the hue/saturation/level values from the remote's controls are not exposed. To make these controls visible, enable the device-specific expose_values option.

This option exposes four additional values representing the most recently requested settings:

  • level: brightness level
  • color_temperature: color temperature
  • hue: color hue
  • saturation: color saturation

(Note: If these exposed values don't appear immediately, a restart of Zigbee2MQTT may be necessary for the changes to take effect)

Zone-aware Actions

The device sends identical on / off / move_to_hue_and_saturation / brightness_move_to_level / color_temperature_move actions across all zones by default, with the zone's group ID only accessible in the device state. To enable sending of distinct actions for each zone, activate the device-specific zone_actions option.

When enabled, each action includes its corresponding zone ID:

  • on_zone_1, on_zone_2, ...
  • off_zone_1, off_zone_2, ...
  • move_to_hue_and_saturation_zone_1, move_to_hue_and_saturation_zone_2, ...
  • ...

Changing Group IDs

The remote is configured to use group IDs 101-107 for the seven on/off button pairs and group ID 108 for the master ON/OFF buttons by default. As a result, all FUT089Z devices on your network will control the same lights unless configured otherwise. To customize this behavior or resolve conflicts with existing group IDs, you can override the default assignments by configuring the device-specific zone_[0-8]_group_id option with your preferred ID.

To apply the new group ID settings to the device, press any button after making the changes.

Controlling Lights and Switches

Home Assistant Automations

By default, it is neither possible to use Home Assistant device triggers nor state triggers. This is due to the non-standard way the remote communicates. However, it is possible to use an mqtt trigger to react on any message from the device, parse the payload and decide what to do inside Home Assistant.

Below is an example with full functionality to control kitchen_light with button 4 of MiBoxerRemote1:

triggers:
  - topic: zigbee2mqtt/MiBoxerRemote1
    trigger: mqtt
conditions: []
actions:
  - variables:
      mylight: light.kitchen_light
      group: 104
  - if:
      - condition: template
        value_template: "{{ trigger.payload_json.action_group | int(0) == group | int(0) }}"
    then:
      - if:
          - condition: template
            value_template: "{{ trigger.payload_json.action.startswith('move_to_hue_and_saturation') }}"
        then:
          - action: light.turn_on
            data:
              hs_color:
                - "{{ trigger.payload_json.action_hue*360/254 }}"
                - "{{ (trigger.payload_json.action_saturation-170)/84*100 }}"
            target:
              entity_id: "{{ mylight }}"
      - if:
          - condition: template
            value_template: "{{ trigger.payload_json.action.startswith('brightness_move_to_level') }}"
        then:
          - action: light.turn_on
            data:
              brightness: "{{ trigger.payload_json.action_level }}"
            target:
              entity_id: "{{ mylight }}"
      - if:
          - condition: template
            value_template: "{{ trigger.payload_json.action.startswith('color_temperature_move') }}"
        then:
          - action: light.turn_on
            data:
              color_temp: "{{ trigger.payload_json.action_color_temperature }}"
            target:
              entity_id: "{{ mylight }}"
      - if:
          - condition: template
            value_template: "{{ trigger.payload_json.action.startswith('on') }}"
        then:
          - action: light.turn_on
            target:
              entity_id: "{{ mylight }}"
      - if:
          - condition: template
            value_template: "{{ trigger.payload_json.action.startswith('off') }}"
        then:
          - action: light.turn_off
            target:
              entity_id: "{{ mylight }}"
mode: single

If you enable both the expose_values and zone_actions options, you can also use device and state triggers for your automations (which you can easily create automatically by going to the Device in Home Assistant and adding an Automation from there):

On/off button:

alias: MiBoxerRemote1_Button_Zone_8_On
description: ""
triggers:
  - trigger: device
    domain: mqtt
    device_id: 37c0de12e46bb817b3ed5dcae834feee
    type: action
    subtype: on_zone_8
condition: []
action:
  - service: light.turn_on
    data: {}
    target:
      device_id: 0887f3aa92fa71265fcb5f1d7021c2a7
mode: restart

Brightness slider:

alias: MiBoxerRemote1_BrightnessSlider
description: ""
triggers:
  - trigger: device
    domain: mqtt
    device_id: 37c0de12e46bb817b3ed5dcae834feee
    type: action
    subtype: brightness_move_to_level_zone_3
condition: []
action:
  - service: light.turn_on
    data:
      brightness: |
        {{ states("sensor.miboxerremote1_level") }}
      transition: 0.2
    target:
      device_id: 8984f2bd0c64baa8badb3fe895f7dd95
    enabled: true
mode: restart

Direct Control via Zigbee Groups

Alternatively, or in addition to the approach described above, you can also directly control Zigbee lights etc. with this remote.

To directly control lights or smartplugs without going through MQTT (and Home Assistant or whatever),

  • first create a Zigbee group with the correct ID (10X),
  • name it like you wish,
  • then add the devices you intend to control to that group (pay attention to use the right termination point). Very important: do NOT add the remote itself to the group.

The ON and OFF Master Buttons on top of the remote control an extra zone with Group ID 108. You can for instance use it as a master switch or for just another light/smartplug etc...

The beauty of this approach is that the remote will work even with Zigbee2MQTT down, ... even better without any alive Zigbee controller.
It looks like a perfect emergency backup.

Technical Notes

  • The saturation / color temperature slider control exhibits behavior which is not yet fully understood. The slider alternates between sending saturation and color temperature values based on an internal state of the device. You can force "saturation mode" by pressing any R, G, B button or touching the color wheel, while pressing the W button forces "color temperature mode". When pressing any on/off button, the slider reverts to its default behavior (either saturation or color temperature mode). The mechanism for changing this default behavior remains unknown.
  • As with most battery-powered devices, this remote does not continuously listen for Zigbee commands after its initial configuration. When sending commands to the device (such as Leave, Configure, or group ID changes), you should press any button afterward to ensure the command is received.
  • The remote does not support light output cluster binding or manual group joining (it relies solely on its internal zone/group mapping).

Touchlink

The remote supports Touchlink. It is unclear how the Touchlink configuration interacts with the regular group configuration so if you intend to use Touchlink it would probably best not to pair it to a network.

Options

How to use device type specific configuration

  • zone_1_group_id: Group ID for zone 1 (default: 101). The value must be a number with a minimum value of 1 and with a with a maximum value of 65535

  • zone_2_group_id: Group ID for zone 2 (default: 102). The value must be a number with a minimum value of 1 and with a with a maximum value of 65535

  • zone_3_group_id: Group ID for zone 3 (default: 103). The value must be a number with a minimum value of 1 and with a with a maximum value of 65535

  • zone_4_group_id: Group ID for zone 4 (default: 104). The value must be a number with a minimum value of 1 and with a with a maximum value of 65535

  • zone_5_group_id: Group ID for zone 5 (default: 105). The value must be a number with a minimum value of 1 and with a with a maximum value of 65535

  • zone_6_group_id: Group ID for zone 6 (default: 106). The value must be a number with a minimum value of 1 and with a with a maximum value of 65535

  • zone_7_group_id: Group ID for zone 7 (default: 107). The value must be a number with a minimum value of 1 and with a with a maximum value of 65535

  • zone_8_group_id: Group ID for zone 8 (default: 108). The value must be a number with a minimum value of 1 and with a with a maximum value of 65535

  • expose_values: Expose additional numeric values for action properties (hue, saturation, level, etc.). The value must be true or false

  • zone_actions: Publish zone-specific actions with zone IDs (e.g., on_zone_1, off_zone_2). The value must be true or false

Exposes

Battery (numeric)

Remaining battery in %, can take up to 24 hours before reported. Value can be found in the published state on the battery property. It's not possible to read (/get) or write (/set) this value. The minimal value is 0 and the maximum value is 100. The unit of this value is %.

Voltage (numeric)

Voltage of the battery in millivolts. Value can be found in the published state on the voltage property. It's not possible to read (/get) or write (/set) this value. The unit of this value is mV.

Action (enum)

Triggered action (e.g. a button click). Value can be found in the published state on the action property. It's not possible to read (/get) or write (/set) this value. The possible values are: on, off, brightness_move_to_level, color_temperature_move, move_to_hue_and_saturation.

Help to make the docu better and edit this page on Github ✌
Last Updated: 10/27/25, 8:00 PM