W100 and Matter: My Experience Across HomeKit, Home Assistant and Homey Pro
The real cornerstone of the Aqara ecosystem is the Hub M3. Whenever someone asks me how to get started with Aqara, I always recommend buying an M3 first. Unless you are fully committed to Home Assistant or Homey Pro, this small hub unlocks a surprising amount of functionality, especially if you use HomeKit.
For my new W100 thermostat, I chose to switch its firmware to Zigbee for the reasons explained in another post. From there, I let the M3 expose the W100 as a Matter device to the rest of my setup. This gives me the flexibility to use it across several platforms.
Below is what the W100 looks like when shared via the M3 Hub.
1 — HomeKit
The W100 appears automatically in the Home app once the M3 is added. No additional pairing is required. You may need to look in the “Default Room” and move the thermostat to the correct room manually.
HomeKit splits the W100 into two elements:
• A climate tile at the top of the Home app window, showing temperature and humidity.
• A set of switches visible in the room, which can be used for automations or scenes.
HomeKit exposes nine switches (or buttons). They can trigger scenes or basic automation rules involving other HomeKit devices.
But you can’t use them to launch an automation with Apple Shortcuts by exemple.
2 — Home Assistant
The behavior is similar: after integrating the M3, the W100 appears automatically in the Matter section.
In my setup, Home Assistant exposes only three buttons instead of nine. I do not know why this difference exists. Home Assistant also displays the temperature, humidity, battery level and even the battery type.
One useful feature that appears to be missing is the trend indicator. Some thermostats provide it in Home Assistant, and it is convenient for quick diagnostics.
W100 exposes the following triggers in Home Assistant:
• 1 temperature trigger
• 1 humidity trigger
• 6 “Identify pressed” triggers
• 1 battery level trigger
• 1 battery voltage trigger
• 3 “switch position” triggers
That gives a total of 12 triggers, with several clear duplicates due to how Matter endpoints are exposed in Home Assistant.
The available actions feel more limited than expected. Identifying which button maps to which function can be difficult, and only four buttons appear operational. This may be related to the current ZHA/Matter implementation and how it interprets the device’s capabilities. I cannot confirm.
3 — Homey Pro
Homey does not recognize the W100 natively at the moment. With the Matter integration provided by the M3 Hub, Homey detects it as a generic “remote”-type device but still reports accurate temperature and humidity.
The good news is that Homey offers more automation options than HomeKit, with a wide set of triggers and actions available in Advanced Flows.
This action let you automate the first 3 buttons.
The one let you use 3 times (press) the same button.
List of all actions in Homey:
Temperature (triggers)
• Temperature has changed
• Temperature becomes higher than X °C
• Temperature becomes lower than X °C
• Temperature stays higher than X °C for a duration
• Temperature stays lower than X °C for a duration
Humidity (triggers)
• Humidity has changed
• Humidity becomes higher than X %
• Humidity becomes lower than X %
• Humidity stays higher than X % for a duration
• Humidity stays lower than X % for a duration
Battery (triggers)
• Battery becomes higher than X %
• Battery becomes lower than X %
• Battery level has changed
• Battery stays higher than X % for a duration
• Battery stays lower than X % for a duration
Buttons (triggers)
(The W100 exposes multiple “virtual buttons” to Homey through Matter via the M3 Hub.)
• Button was pressed
• Button was long-pressed
• Button was held and then released
• Click on Button
• Button was pressed X times
If you’re juggling several platforms, using the M3 Hub as a Matter bridge is currently the most reliable way to make the W100 usable everywhere. It’s not perfect, but it works consistently enough to build automations across your preferred ecosystem.
Hope this helps ![]()








