IKEA VINDSTYRKA
The IKEA VINDSTYRKA an relatively inexpensive air quality monitor $49/£35 that was released in April 2023.
Video
Watch on YouTubeFeatures
- PM2.5
- tVOC
- Temperature
- Humidity
- Air quality icons
- Zigbee radio
- USB-C
Pros
- Relatively inexpensive way to add air quality, temperature & humidity data to your smart home
- Can perform automatons based on data, such as turning on/off air purifiers, air conditioning and dehumidifiers or even humidifiers
- Configurable backlight brightness & always on or auto off
- Works with Home Assistant via Zigbee
- USB-C powered
Cons
- No time or date on display (LCD limitation)
- Fan does make small amount of noise
- Temperature lacks decimal places (precision)
- Getting the tVOC value via ZHA requires a bit more setup
- Only available in white
- No battery
Home Assistant ZHA integration
Currently if you're using the default ZHA integration for your Zigbee coordinator, the tVOC sensor wont be available in Home Assistant. However, tVOC is available via the Zigbee2MQTT plug-in (so if you're using Zigbee2MQTT there's no need to apply the patch below).
See also: differences between ZHA and Zigbee2MQTT.
There are currently 2 GitHub pull requests to enable it, however at the time of publishing they weren't merged:
- Add support for IKEA VINDSTYRKA Air quality Sensor #2315
- Add support for "VOC Index" sensor entity in ZHA #90616
Applying the patch manually
config/configuration.yaml
zha:
custom_quirks_path: /share/zhaquirks/
share/ikea-vindstyrka/patch-zha-sensor.sh
#!/usr/bin/env bash
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
CONFIG_DIR=$(realpath $SCRIPT_DIR/../../config)
ZHA_DIR=$CONFIG_DIR/custom_components/zha
ZHAQUIRKS_DIR=$(realpath $SCRIPT_DIR/../zhaquirks)
mkdir -p $CONFIG_DIR/custom_components
rm -fR $ZHA_DIR
docker cp homeassistant:/usr/src/homeassistant/homeassistant/components/zha $ZHA_DIR
docker cp homeassistant:/usr/local/lib/python3.10/site-packages/zhaquirks $ZHAQUIRKS_DIR
apk add patch
patch -u -b $ZHA_DIR/sensor.py -i $SCRIPT_DIR/sensor.patch
patch -u -b $ZHA_DIR/manifest.json -i $SCRIPT_DIR/version.patch
wget https://raw.githubusercontent.com/zigpy/zha-device-handlers/8e568464caedab3bd7c7fedb2544da99987d05d0/zhaquirks/ikea/vindstyrka.py -P $ZHAQUIRKS_DIR/ikea
docker restart homeassistant
chmod +x share/ikea-vindstyrka/patch-zha-sensor.sh
Patches are based off the "VOC Index" pull request
share/ikea-vindstyrka/sensor.patch
--- sensor.py.orig 2023-05-04 09:39:47.277383955 +0100
+++ sensor.py 2023-05-04 09:48:06.726541317 +0100
@@ -700,6 +700,18 @@
_attr_native_unit_of_measurement = CONCENTRATION_PARTS_PER_BILLION
+@MULTI_MATCH(cluster_handler_names="voc_index", stop_on_match_group="voc_index")
+class VOCIndex(Sensor):
+ """VOC Index sensor."""
+
+ SENSOR_ATTR = "measured_value"
+ _attr_device_class: SensorDeviceClass = SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS
+ _attr_state_class: SensorStateClass = SensorStateClass.MEASUREMENT
+ _attr_name: str = "VOC index"
+ _decimals = 0
+ _multiplier = 1
+
+
@MULTI_MATCH(cluster_handler_names="pm25")
class PM25(Sensor):
"""Particulate Matter 2.5 microns or less sensor."""
share/ikea-vindstyrka/version.patch
--- manifest.json 2023-04-09 04:43:34.000000000 +0100
+++ "manifest copy.json" 2023-04-09 08:55:44.655664588 +0100
@@ -1,6 +1,7 @@
{
"domain": "zha",
"name": "Zigbee Home Automation",
+ "version": "0.0.1-ikea-vindstyrka",
"after_dependencies": ["onboarding", "usb"],
"codeowners": ["@dmulcahey", "@adminiuga", "@puddly"],
"config_flow": true,
Once the files have been copied over to your Home Assistant, run the patch script via:
~/share/ikea-vindstyrka/patch-zha-sensor.sh
Note: each time Home Assistant updates you will need to rerun the script.
Uninstalling the patch
Delete the zha.custom_quirks_path
in your configuration and remove following directories:
config/custom_components/zha
share/ikea-vindstyrka
share/zhaquirks