Did you know that IKEA sells an air quality monitor called VINDRIKTNING? Neither did I. This USB-C-powered US$11.99 particle monitor packs a decent sensor for the price. Although, perhaps understandably, there is no cable and power supply included in the packaging. Despite still being earmarked as new on the IKEA website, this originally offline-only sensor has already been disassembled, analysed, and “hacked”. As we’ve come to expect with these projects, it all nicely integrates with Home Assistant.
Despite IKEA having a stellar line of smart home products, the VINDRIKTNING air quality monitor is a dumb device. There is no Zigbee connectivity to the TRÅDFRI Gateway and neither does it support Wi-Fi. Luckily though, developer Sören Beye, who incidentally is also responsible for the Valetudo alternative robot vacuum firmware, had the chance to tinker with one of these monitors. The fruits of their labour is the possibility to collect the sensor’s data using a cheap and readily available ESP8266 board and having it communicate with Home Assistant using MQTT.
What’s inside the IKEA VINDRIKTNING
As can be seen in the two images below, the IKEA VINDRIKTNING appears to be using a Wuhan Cubic PM1006 sensor, which is capable of measuring the air quality based on the amount of PM2.5 particles. This sensor does use infrared and not a laser to detect the variation trend of particle concentration in the air, so it will not deliver the most precise measurement possible. Then again, the VINDRIKTNING air quality monitor does cost less than a cup of premium coffee at your favourite café.
As mentioned, the VINDRIKTNING does not send the data anywhere and instead gives the owner visual feedback on the current air quality using colour LEDs. Those LEDs still function even with the hack in place, but by giving the monitor the power of Wi-Fi it can be used for automations and the data can be tracked over time.
How the IKEA VINDRIKTNING hack works
Besides the Wuhan Cubic PM1006 sensor, there is a small PCB inside the IKEA VINDRIKTNING which gathers data, controls the LEDs, the sensor’s fan, and has a USB-C socket for power. Conveniently placed on this PCB are a couple of solder pads to which the ESP8266 board can be connected. There are only three cables needed: two for power and one for data. Judging by the images in the repository, the inside of the chassis is slightly cramped, and I would therefore recommend nothing larger than a D1 mini ESP8266 board (buy on AliExpress).
But before soldering any wires, I recommend flashing the board, as it will be considerably easier to access the Micro-USB port at this point. Unfortunately, it is not easily possible to use ESPHome at this point, as the sensor is unsupported. Someone more skilled than me might be able to figure out how to use the UART component to poll the sensor. You will need to download and install the Arduino IDE. To the Arduino IDE, you will need to add support for ESP8266 microcontrollers and install several libraries. Once the board has been flashed with the firmware provided in the GitHub repository, it will create an access point to which you can connect and configure Wi-Fi as well as MQTT.
Once the board is ready, the power wires need to be connected to 5V and GND on either end, and the data wire to pin D2 on a D1 mini ESP8266 board. As ESP8266 boards, such as the D1 mini and its many clones, can be powered by 5V, there is no need for any further components.
IKEA VINDRIKTNING low-noise mod
In addition to adding Wi-Fi to their IKEA VINDRIKTNING, the same developer decided to implement a low-noise mod to the sensor’s fan. The issue is that in its stock configuration, the fan will spin up about every minute and then spin down again. Generally speaking, a constant, but quieter noise, is less distracting to the human ear.
To change this behaviour, the developer attached the fan to the D1 mini’s 3.3V regulator and thus could have it spin constantly but at a lower speed. According to the images shown on GitHub, the fan pulls only very little current and shouldn’t overload the board.