Skip to main content

IKEA VINDSTYRKA

The IKEA VINDSTYRKA an relatively inexpensive air quality monitor $49/£35 that was released in April 2023.

Video

Watch on YouTube

Features

  • 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:

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