IKEA recently introduced a new Zigbee-enabled air quality sensor that measures PM2.5 (Particulate Matter), tVOC (change in Volatile Organic Compounds over time), relative humidity, and room temperature.
Product page: VINDSTYRKA Air quality sensor, smart - IKEA
I picked up three of them to put around the house and connected them to HA using ZHA.
First impressions: the display is easy to read, the backlight gets plenty bright and has an auto shutoff feature, the PM2.5 measurement is very responsive (more on this later), and USB-C makes them convenient to power.
Remarks
- There is a small fan inside of the device (to draw air over the sensor) that makes a slight but audible buzzing noise.
- VOC is not reported through Zigbee; the display also does not show any VOC value other than an arrow that indicates levels are increasing/decreasing/flat over time.
- Temperature is displayed and reported in whole numbers only (no decimal places), this makes them less than ideal for controlling a thermostat.
- Pairing works different compared to other IKEA Home Smart devices, instead of holding down the button to pair you have to press the link button 4 times to reset the device after which it will immediately be discoverable.
- While the update rate of the display on the unit itself is very fast, the reporting rate through Zigbee is very slow and random (ranging from several minutes between sensor updates to several hours without updates, even though the values on the display definitely changed). Not sure if this is a quirk with the device, ZHA, or my Conbee II coordinator.
These can also be paired to IKEA air purifiers for automatic control, though I haven’t been able to test that.
The device is held together by four recessed Torx T6 screws
Pictures
Main PCB:
Sensor block:
Display:
Bottom:
Rear air intake:
ZHA: Workaround for slow entity updates
I noticed that when I spam the “read attribute” button in the Zigbee device diagnostics panel I can get HA to acquire new PM2.5 readings in near-real-time, so as a workaround I am now polling the attributes every minute over the WebSocket API to keep the entities up-to-date.
Unfortunately there is no zha.get_zigbee_cluster_attribute
service (only set_zigbee_cluster_attribute
), that would have made it possible to do the polling internally through an automation instead of externally using a script on a timer.
I can share the script if there is interest for this.