# No-Code IKEA Vindriktning Air Quality Sensor Hack with Adafruit IO

## Overview

![](https://cdn-learn.adafruit.com/assets/assets/000/126/466/medium800/sensors_IMG_9800.jpg?1701291821)

The IKEA Vindriktning is an inexpensive air-quality monitor that's readily available online ([from Ikea's website](https://www.ikea.com/us/en/p/vindriktning-air-quality-sensor-60515911/)) or at a retail IKEA store.&nbsp;

Inside the Vindriktning is a [Cubic PM1006 air quality sensor](https://cdn-learn.adafruit.com/assets/assets/000/122/217/original/PM1006_LED_PARTICLE_SENSOR_MODULE_SPECIFICATIONS-1.pdf?1688148991) and fan assembly, making it capable of capturing PM2.5 particulate concentration measurements (PM2.5 refers to particles that are 2.5 microns or smaller in diameter). On the front of the Vindriktning is an LED light bar that changes color based on the air quality around it.

While looking at the air quality on the Vindriktning can inform you about the current air quality in your room, _wouldn't it be even better to log this data to the Internet and analyze the air quality over time?_

 **In this guide, you will modify the IKEA Vindriktning air quality sensor by adding a microcontroller** (an Adafruit QT Py ESP32-S3) inside it. **You'll also add a BME280 sensor inside the Vindriktning, giving it the capability to also read temperature, relative humidity, and air pressure in addition to air quality**.

![](https://cdn-learn.adafruit.com/assets/assets/000/126/467/medium800/sensors_IMG_6792.jpg?1701291899)

Then, you will **load Adafruit's No-Code "WipperSnapper" firmware on the QT Py ESP32-S3 and configure the QT Py to send data from its sensors to the Internet**.&nbsp;

![](https://cdn-learn.adafruit.com/assets/assets/000/126/314/medium800/sensors_create_component_ikea.png?1701208708)

Finally, using Adafruit IO, you will **create a stunning web dashboard to display environmental data from the "hacked" IKEA Vindriktning**.

![](https://cdn-learn.adafruit.com/assets/assets/000/126/318/medium800/sensors_completed-dash.png?1701208823)

This guide is a remix of Liz Clark's excellent [Ikea Vindriktning Hack with QT Py ESP32-S3 and Adafruit IO guide](https://learn.adafruit.com/ikea-vindriktning-hack-with-qt-py-esp32-s3-and-adafruit-io). Instead of programming in CircuitPython, this guide uses the no-code WipperSnapper firmware to send data from the QT Py to Adafruit IO. Additionally, this guide includes instructions for incorporating a BME280 environmental sensor into the Vindriktning enclosure and obtaining data from it.

## Parts
### Part: IKEA VINDRIKTNING 
quantity: 1
IKEA VINDRIKTNING Air quality sensor
[IKEA VINDRIKTNING ](https://www.ikea.com/us/en/p/vindriktning-air-quality-sensor-60515911/)

### Adafruit QT Py ESP32-S3 WiFi Dev Board with STEMMA QT

[Adafruit QT Py ESP32-S3 WiFi Dev Board with STEMMA QT](https://www.adafruit.com/product/5426)
The ESP32-S3 has arrived in QT Py format - and what a great way to get started with this powerful new chip from Espressif! With dual 240 MHz cores, WiFi and BLE support, and native USB, this QT Py is great for powering your IoT projects.

The ESP32-S3&nbsp;is a highly-integrated,...

In Stock
[Buy Now](https://www.adafruit.com/product/5426)
[Related Guides to the Product](https://learn.adafruit.com/products/5426/guides)
![Angled shot of small purple microcontroller.](https://cdn-shop.adafruit.com/640x480/5426-00.jpg)

### Adafruit BME280 I2C or SPI Temperature Humidity Pressure Sensor

[Adafruit BME280 I2C or SPI Temperature Humidity Pressure Sensor](https://www.adafruit.com/product/2652)
Bosch has stepped up their game with their new BME280 sensor, an environmental sensor with temperature, barometric pressure&nbsp;and&nbsp;humidity! This sensor is great for all sorts of indoor environmental sensing and can even be used in both I2C and SPI!

This precision sensor from...

Out of Stock
[Buy Now](https://www.adafruit.com/product/2652)
[Related Guides to the Product](https://learn.adafruit.com/products/2652/guides)
![small, rectangle-shaped, BME280 temperature humidity pressure sensor breakout board.](https://cdn-shop.adafruit.com/640x480/2652-04.jpg)

### Part: Stranded-Core Wire
quantity: 1
Silicone Cover Stranded-Core Wire - 30AWG in Various Colors
[Stranded-Core Wire](https://www.adafruit.com/product/2051)

### Part: USB A to USB C Cable
quantity: 1
Pink and Purple Woven USB A to USB C Cable - 2 meters long
[USB A to USB C Cable](https://www.adafruit.com/product/5044)

The following part is optional and not required for the completion of this project. However, if you would like to set up SMS alerts, as described later in the guide, you will need an upgraded Adafruit IO subscription (Adafruit IO Plus).&nbsp;

For information on what is included with an Adafruit IO Plus subscription, visit [io.adafruit.com/plus](https://io.adafruit.com/plus)

### Adafruit IO+ Subscription Pass – One Year

[Adafruit IO+ Subscription Pass – One Year](https://www.adafruit.com/product/3792)
The all-in-one Internet of Things service from Adafruit you know and love is now _even better_ with IO+. The 'plus' stands for MORE STUFF! More feeds, dashboards, storage, speed. Power up your [Adafruit IO](https://io.adafruit.com/) with the $99 pass for 1 year of the...

In Stock
[Buy Now](https://www.adafruit.com/product/3792)
[Related Guides to the Product](https://learn.adafruit.com/products/3792/guides)
![Text image that reads "IO+"](https://cdn-shop.adafruit.com/640x480/3792-01.jpg)

# No-Code IKEA Vindriktning Air Quality Sensor Hack with Adafruit IO

## Get Started with Adafruit IO

Adafruit IO is integrated with your&nbsp;[adafruit.com account](https://accounts.adafruit.com/)&nbsp;so you don't need to create yet another online account! You need an Adafruit account to use Adafruit IO because we want to make sure the data you upload is available to only you (unless you decide to publish your data).

## I have an Adafruit.com Account already

**If you already have an Adafruit account, then you already have access to Adafruit IO**. It doesn't matter how you signed up, your account will make all three available.

To access Adafruit IO, simply visit [https://io.adafruit.com](https://io.adafruit.com) to start streaming, logging, and interacting with your data.

## Create an Adafruit Account (for Adafruit IO)

An Adafruit account makes Adafruit content and services available to you in one place. Your account provides access to the [Adafruit shop](https://www.adafruit.com/), the [Adafruit Learning System](https://learn.adafruit.com/), and [Adafruit IO](https://io.adafruit.com/). This means only one account, one username, and one password are necessary to engage with the content and services that Adafruit offers.

If you do not have an Adafruit account, signing up for a new Adafruit account only takes a couple of steps.

Begin by visiting [https://accounts.adafruit.com](https://accounts.adafruit.com).

**Click the Sign Up button** under the "Need An Adafruit Account?" title, below the Sign In section.

![](https://cdn-learn.adafruit.com/assets/assets/000/125/220/medium800/adafruit_io_Create_account_sign_in_up_page.png?1697479894)

This will take you to the **Sign Up** page.

**Fill in the requested information,** and **click the Create Account button.**

![](https://cdn-learn.adafruit.com/assets/assets/000/125/219/medium800/adafruit_io_Create_Account_info_entered.png?1697479894)

This takes you to your Adafruit Account home page. From here, you can access all the features of your account.

You can also access the Adafruit content and services right from this page. Along the top of the page, you'll see a series of links beginning with "Shop". To access any of these, simply click the link.

![](https://cdn-learn.adafruit.com/assets/assets/000/125/217/medium800/adafruit_io_Create_account_home_page.png?1697479894)

For example, **to begin working with Adafruit IO, click the IO link** to the right of the rest of the links. This is the same for the other links as well.

That's all there is to creating a new Adafruit account, and navigating to Adafruit IO.

![](https://cdn-learn.adafruit.com/assets/assets/000/125/218/medium800/adafruit_io_Create_Account_io_homepage.png?1697479770)

# No-Code IKEA Vindriktning Air Quality Sensor Hack with Adafruit IO

## Install WipperSnapper

Warning: 

## What is WipperSnapper

WipperSnapper is a firmware designed to turn any WiFi-capable board into an Internet-of-Things device without programming a single line of code. WipperSnapper connects to [Adafruit IO](https://io.adafruit.com/), a web&nbsp;platform designed ([by Adafruit!](https://www.adafruit.com/about)) to&nbsp;_display_,&nbsp;_respond_, and&nbsp;_interact_&nbsp;with your project's data.

Simply load the WipperSnapper firmware onto your board, add credentials, and plug it into power. Your board will automatically register itself with your Adafruit IO account.

From there, you can add&nbsp;_components_&nbsp;to your board such as buttons, switches, potentiometers, sensors, and more! Components are&nbsp;_dynamically&nbsp;_added to hardware, so you can&nbsp;immediately start interacting, logging, and streaming the data your projects produce without writing code.

## Sign up for Adafruit.io

You will need an Adafruit IO account to use WipperSnapper on your board. If you do not already have one, head over to [io.adafruit.com](https://io.adafruit.com/) to create a&nbsp;_free_ account.

## Add a New Device to Adafruit IO

Log into your [Adafruit IO](https://io.adafruit.com/) account. Click the _New Device_ button at the top of the page.

![](https://cdn-learn.adafruit.com/assets/assets/000/112/548/medium800/wippersnapper_setup__board_selector__web__new_device_1.png?1655919766)

After clicking New Device, you should be on the _board selector_ page. This page displays every board that is compatible with the WipperSnapper firmware.

![](https://cdn-learn.adafruit.com/assets/assets/000/112/550/medium800/wippersnapper_setup__board_selector__web__selector_maion.png?1655920178)

In the board selector page's search bar, search for the _QT Py_ _ESP32-S3.&nbsp;_Once you've located the board you'd like to install WipperSnapper on,_&nbsp;_click the&nbsp;_Choose Board_&nbsp;button to bring you to the self-guided installation wizard.

![](https://cdn-learn.adafruit.com/assets/assets/000/112/969/medium800/adafruit_products_qtpy_s3_selector.png?1657295897)

Follow the step-by-step instructions on the page to install Wippersnapper on your device and connect it to Adafruit IO.

![](https://cdn-learn.adafruit.com/assets/assets/000/112/970/medium800/adafruit_products_qtpy_s3_wizard_1.png?1657295917)

If the installation was successful, a popover should appear displaying that your board has successfully been detected by Adafruit IO.

Give your board a name and click "Continue to Device Page".

![](https://cdn-learn.adafruit.com/assets/assets/000/112/971/medium800/adafruit_products_qtpy_s3_connected.png?1657295928)

You should be brought to your board's device page.

![](https://cdn-learn.adafruit.com/assets/assets/000/112/972/medium800/adafruit_products_qtpy_s3_device_pg.png?1657295943)

## Feedback

Adafruit.io WipperSnapper is in **beta** and you can help improve it!

If you have&nbsp; suggestions or general feedback about the installation process - visit [https://io.adafruit.com/support](https://io.adafruit.com/support), click _"Contact Adafruit IO Support"_ and select _"I have feedback or suggestions for the WipperSnapper Beta"._

## Troubleshooting

If you encountered an issue during installation, please try the steps below first.

If you're still unable to resolve the issue, or if your issue is not listed below, get in touch with us directly at [https://io.adafruit.com/support](https://io.adafruit.com/support "https://io.adafruit.com/support"). Make sure to click&nbsp; _"Contact Adafruit IO Support"_ and select "_There is an issue with WipperSnapper. Something is broken!"_

### 

First, make sure that you selected the correct board on the board selector.

Next, please make sure that you entered your WiFi credentials properly, there are no spaces/special characters in either your network name (SSID) or password, and that you are connected to a 2.4GHz wireless network.

If you're still unable to connect your board to WiFi, please [make a new post on the WipperSnapper technical support forum with the error you're experiencing, the LED colors which are blinking, and the board you're using.](https://forums.adafruit.com/viewforum.php?f=66)

### 

Try hard-resetting your board by unplugging it from USB power and plugging it back in.

If the error is still occurring, please&nbsp;[make a new post on the WipperSnapper technical support forum with information about what you're experiencing, the LED colors which are blinking (if applicable), and the board you're using.](https://forums.adafruit.com/viewforum.php?f=66)

## "Uninstalling" WipperSnapper&nbsp;

WipperSnapper firmware is an application that is loaded onto your board. There is nothing to "uninstall". However, you may want to "move" your board from running WipperSnapper to running Arduino or CircuitPython. You also may need to restore your board to the state it was shipped to you from the Adafruit factory.&nbsp;

### Moving from WipperSnapper to CircuitPython

Follow the steps on the [Installing CircuitPython page](https://learn.adafruit.com/welcome-to-circuitpython/installing-circuitpython) to install CircuitPython on your board running WipperSnapper.

- If you are unable to double-tap the RST button to enter the UF2 bootloader, follow the _"Factory Resetting a WipperSnapper Board"_ instructions below.

Uploading this sketch will overwrite WipperSnapper. If you want to re-install WipperSnapper, follow the instructions at the top of this page.

### Moving from WipperSnapper to Arduino

If you want to use your board with Arduino, you will use the Arduino IDE to load&nbsp;_any_ sketch onto your board.

First, follow the page below to set up your Arduino IDE environment for use with your board.

[Setup Arduino IDE](https://learn.adafruit.com/adafruit-qt-py-esp32-s3/arduino-ide-setup-99bba7be-288a-490d-b27b-1e63d17882fc)
Then, follow the page below to upload the "Arduino Blink" sketch to your board.

[Upload Arduino Blink Sketch](https://learn.adafruit.com/adafruit-qt-py-esp32-s3/arduino-neopixel-blink)
Uploading this sketch will overwrite WipperSnapper. If you want to re-install WipperSnapper, follow the instructions at the top of this page.

### Factory Resetting a WipperSnapper Board

Sometimes, hardware gets into a state that requires it to be "restored" to the original state it shipped in. If you'd like to get your board back to its original factory state, follow the guide below.

[Factory Reset Adafruit ESP32-S2 TFT Feather](https://learn.adafruit.com/adafruit-qt-py-esp32-s3/factory-reset)
# No-Code IKEA Vindriktning Air Quality Sensor Hack with Adafruit IO

## Disassembly

![](https://cdn-learn.adafruit.com/assets/assets/000/122/151/medium800/hacks_edited_P1400832.png?1687898156)

Using a long and thin screwdriver, remove the four screws from the back of the air quality monitor.

![hacks_edited_P1400835.png](https://cdn-learn.adafruit.com/assets/assets/000/122/152/medium640/hacks_edited_P1400835.png?1687899419)

Slide out the front panel of the air quality monitor. You'll see the PM1006 module and fan plugged into the PCB.

![hacks_edited_P1400836.png](https://cdn-learn.adafruit.com/assets/assets/000/122/153/medium640/hacks_edited_P1400836.png?1687899782)

Unplug the PM1006 and fan connectors from the PCB.

![hacks_edited_P1400840.png](https://cdn-learn.adafruit.com/assets/assets/000/122/154/medium640/hacks_edited_P1400840.png?1687900093)

Remove the three screws mounting the PCB to the front panel.

![hacks_edited_P1400842.png](https://cdn-learn.adafruit.com/assets/assets/000/122/156/medium640/hacks_edited_P1400842.png?1687960880)

Lift the PCB out of the front panel. Now you're ready for soldering.

![hacks_edited_P1400845.png](https://cdn-learn.adafruit.com/assets/assets/000/122/157/medium640/hacks_edited_P1400845.png?1687960908)

# No-Code IKEA Vindriktning Air Quality Sensor Hack with Adafruit IO

## Soldering

![](https://cdn-learn.adafruit.com/assets/assets/000/122/158/medium800/hacks_edited_P1400854.png?1687960936)

You'll be soldering to three test points on the PCB: **5V** , **GND** and **REST**. They are located next to the plug for the PM1006 sensor and below the large capacitor on the PCB.

![hacks_edited_0P1400847.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/159/medium640/hacks_edited_0P1400847.jpg?1687961082)

Solder a piece of wire to each of the following test points: **5V** (red wire), **GND** (black wire) and **REST** (green wire).

![hacks_edited_P1400862.png](https://cdn-learn.adafruit.com/assets/assets/000/122/160/medium640/hacks_edited_P1400862.png?1687961106)

Solder the **5V** connection to the **BAT+** pad on the back of the QT Py (red wire). Then solder the **GND** connection to the **-** ( **GND** ) pad on the back of the QT Py (black wire).

![hacks_edited_P1410070.png](https://cdn-learn.adafruit.com/assets/assets/000/122/161/medium640/hacks_edited_P1410070.png?1687961141)

Solder the **REST** connection to the **RX** pin on the QT Py (green wire).

![hacks_edited_P1410072.png](https://cdn-learn.adafruit.com/assets/assets/000/122/162/medium640/hacks_edited_P1410072.png?1687961165)

# No-Code IKEA Vindriktning Air Quality Sensor Hack with Adafruit IO

## Reassembly and Hot Glue

Place the PCB back onto the front plate of the air quality monitor. Secure it with the three screws.

![hacks_edited_P1400868.png](https://cdn-learn.adafruit.com/assets/assets/000/122/163/medium640/hacks_edited_P1400868.png?1687961195)

Plug the PM1006 and fan connectors back into the PCB.

![hacks_edited_P1400870.png](https://cdn-learn.adafruit.com/assets/assets/000/122/164/medium640/hacks_edited_P1400870.png?1687961248)

Connect a [STEMMA QT / Qwiic JST SH 4-Pin Cable](https://www.adafruit.com/product/4399) to the STEMMA QT connector on the QT Py.

![sensors_IMG_6733.jpg](https://cdn-learn.adafruit.com/assets/assets/000/126/179/medium640/sensors_IMG_6733.jpg?1701107807)

Connect the other end of the STEMMA QT cable to the STEMMA QT connector on the BME280 breakout.

![sensors_Untitled.png](https://cdn-learn.adafruit.com/assets/assets/000/126/178/medium640/sensors_Untitled.png?1701107625)

Place the BME280 in the enclosure and push it flush against the enclosure's perforations.

Ensure that its placement doesn't block the bottom of the PM1006 fan and that the BME280 will receive sufficient airflow from outside the enclosure.

![sensors_IMG_6739.jpg](https://cdn-learn.adafruit.com/assets/assets/000/126/176/medium640/sensors_IMG_6739.jpg?1701107019)

Add a small dot of hot glue to the top of the inside of the case, above the PM1006 sensor. Press the QT Py into the hot glue to secure it with the USB port facing out. This way if you need to adjust the code, you can still access the USB port.

If you ever want to remove the QT Py, you can use some isopropyl alcohol to remove the hot glue.

![hacks_edited_P1410053.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/165/medium640/hacks_edited_P1410053.jpg?1687961359)

Close up the case with the four screws.

![hacks_edited_P1400877.png](https://cdn-learn.adafruit.com/assets/assets/000/122/166/medium640/hacks_edited_P1400877.png?1687961388)

Now you're ready to start logging the readings from the Vindriktning to Adafruit IO!&nbsp;

![hacks_edited_P1400880.png](https://cdn-learn.adafruit.com/assets/assets/000/122/167/medium640/hacks_edited_P1400880.png?1687961413)

# No-Code IKEA Vindriktning Air Quality Sensor Hack with Adafruit IO

## Configure QT Py using Adafruit IO

Warning: 

Now to use Adafruit IO to add the sensors to the QT Py and configure them to periodically send data to the cloud.

## Add PM1006

First, enable and configure the PM1006, the air quality sensor connected to the IKEA Vindriktning.

From the [Adafruit IO device page](https://io.adafruit.com/devices "Adafruit IO device page"), select the Qt PY ESP32-S3.

![](https://cdn-learn.adafruit.com/assets/assets/000/126/185/medium800/sensors_select_qt_py.png?1701117998)

This is the "device page". From here, you can configure and interact with your device. To add the PM1006 air quality sensor to your QT Py, click the "+" button (or the "New Component" button).

![](https://cdn-learn.adafruit.com/assets/assets/000/126/186/medium800/sensors_add_component.png?1701118008)

The component picker is a list of all the parts that can connect to your device!&nbsp;

![sensors_picker_1.png](https://cdn-learn.adafruit.com/assets/assets/000/126/189/medium640/sensors_picker_1.png?1701118162)

Type _IKEA_ into the component picker's search bar and the Vindriktning component appears.

Click the Vindriktning component.&nbsp;&nbsp;

![sensors_picker_ikea.png](https://cdn-learn.adafruit.com/assets/assets/000/126/191/medium640/sensors_picker_ikea.png?1701118203)

The&nbsp; **Send Every** option configures how often data from the Vindriktning's air quality sensor will be sent to Adafruit IO.

Set&nbsp; **Send Every** to an interval of your choosing (we selected Every Minute) and click Create Component.

![sensors_create_component_ikea.png](https://cdn-learn.adafruit.com/assets/assets/000/126/192/medium640/sensors_create_component_ikea.png?1701118288)

The device page should now show the Vindriktning air quality sensor. After a minute elapses, the QT Py automatically reads the air quality sensor's measurement and sends it to Adafruit IO.

![](https://cdn-learn.adafruit.com/assets/assets/000/126/196/medium800/sensors_device_pg_pm1006.png?1701118370)

## Add BME280 Sensor

Next, configure and add the BME280 sensor to the QT Py.

Again, click the _"+"_ sign or _"New Component"_ button to bring up the component picker.

![](https://cdn-learn.adafruit.com/assets/assets/000/126/198/medium800/sensors_new_component_2.png?1701118533)

On the component picker's search bar, search for the _BME280_.

![sensors_picker_2.png](https://cdn-learn.adafruit.com/assets/assets/000/126/200/medium640/sensors_picker_2.png?1701118576)

Click the BME280 component.

![sensors_picker_3.png](https://cdn-learn.adafruit.com/assets/assets/000/126/201/medium640/sensors_picker_3.png?1701118666)

Unlike the PM1006 sensor, the BME280 sensor has _multiple_ options.&nbsp;

Select which readings from the BME280 sensor you'd like to send to Adafruit IO and how often.

Click Create Component.

![sensors_create_bme280.png](https://cdn-learn.adafruit.com/assets/assets/000/126/202/medium640/sensors_create_bme280.png?1701118705)

The device page should refect the addition of the BME280 sensor. As the QT Py reads values and sends them to Adafruit IO, they will appear on this page.&nbsp;

![](https://cdn-learn.adafruit.com/assets/assets/000/126/203/medium800/sensors_full_device_pg.png?1701118799)

The device page shows the most recent value of a sensor. While this is useful for seeing the status of the IKEA Vindriktning at a glance, Adafruit IO's free plan stores data points for up to 30 days (and 60 days if you are on an Adafruit IO Plus plan).

On the next page, you'll create an Adafruit IO Dashboard to display data from the IKEA Vindriktning and share the dashboard with others.

# No-Code IKEA Vindriktning Air Quality Sensor Hack with Adafruit IO

## Build Adafruit IO Dashboard

You can create a quick and simple UI for your electronics project using Dashboards in Adafruit IO.&nbsp;Dashboard blocks such as charts, sliders, and buttons are available to help you quickly create an interactive dashboard for your IoT Project without the need for any custom code.

If you haven't created a dashboard before, don't fret - this page will walk you through the process.&nbsp;

## Create a New Dashboard

When you log in to your&nbsp;[io.adafruit.com](https://io.adafruit.com/)&nbsp;account, you will be directed to your account overview page. Click the&nbsp; **Dashboards** &nbsp;link in the header to navigate to the "dashboards" page.

![](https://cdn-learn.adafruit.com/assets/assets/000/126/264/medium800/sensors_adafruit_io_IO_-_Overview.png?1701189253)

Your list of dashboards will only have the&nbsp;_Welcome Dashboard_&nbsp;when it is first loaded. You can start the dashboard creation process by clicking the&nbsp; **New Dashboard** &nbsp;button.

![](https://cdn-learn.adafruit.com/assets/assets/000/126/265/medium800/sensors_adafruit_io_Cursor_and_IO_-_Dashboards_New_dash.png?1701189334)

Enter the name and description of your new dashboard, then, click the&nbsp; **Create** &nbsp;button once you are finished.

![](https://cdn-learn.adafruit.com/assets/assets/000/126/266/medium800/sensors_ikea_aq.png?1701189479)

Once the new dashboard has been created, click on the name of your new dashboard to visit its page.

![](https://cdn-learn.adafruit.com/assets/assets/000/126/267/medium800/sensors_dash_click.png?1701189517)

You should now see your new, blank, dashboard.

![](https://cdn-learn.adafruit.com/assets/assets/000/126/271/medium800/sensors_ikea_dash.png?1701189804)

### 

Adafruit IO Dashboards start out as a blank webpage. From this page, you can add blocks, to create an interactive webpage to interact with (or view) your electronics project.

## Add Line Graph Block

A dashboard is a webpage that you can edit. Blocks are widgets that you can add to your dashboard.&nbsp;The **line graph block** allows you to visualize numeric data over time, making it perfect for us to chart air quality.&nbsp;

To add a new block to your dashboard,&nbsp; **click the gear on the top right of the dashboard page**. From the dropdown, click&nbsp; **Create New Block**.

![sensors_gear_click.png](https://cdn-learn.adafruit.com/assets/assets/000/126/272/medium640/sensors_gear_click.png?1701189965)

![sensors_create_new_bl.png](https://cdn-learn.adafruit.com/assets/assets/000/126/273/medium640/sensors_create_new_bl.png?1701189982)

You will then be presented with a list of block types to choose from.

Select the line graph block.

![sensors_createnewblockchart.png](https://cdn-learn.adafruit.com/assets/assets/000/126/275/medium640/sensors_createnewblockchart.png?1701190171)

On the next screen, under the heading for QT Py, select the Vindriktning's feed.

![sensors_IO_-_My_IKEA_Vindriktning_Dashboard_🔊.png](https://cdn-learn.adafruit.com/assets/assets/000/126/276/medium640/sensors_IO_-_My_IKEA_Vindriktning_Dashboard_%F0%9F%94%8A.png?1701190335)

Fill out the Block Settings to customize the block and click Create Block when finished.

![sensors_block_settings.png](https://cdn-learn.adafruit.com/assets/assets/000/126/279/medium640/sensors_block_settings.png?1701190679)

The dashboard now contains a line graph block! The block's data will update when the WipperSnapper device sends new data.

![](https://cdn-learn.adafruit.com/assets/assets/000/126/281/medium800/sensors_ikea_dash.png?1701190810)

## Add Gauge Blocks

The gauge block allows you to quickly view the current value of a numeric feed. This is perfect for displaying the temperature and relative humidity from the BME280 sensor.

Add two gauge blocks to the dashboard, one to display the temperature and another to display the relative humidity.

To add a new block to your dashboard,&nbsp; **click the gear on the top right of the dashboard page**. From the dropdown, click&nbsp; **Create New Block**.

![sensors_gear_click.png](https://cdn-learn.adafruit.com/assets/assets/000/126/289/medium640/sensors_gear_click.png?1701193662)

![sensors_create_new_bl.png](https://cdn-learn.adafruit.com/assets/assets/000/126/291/medium640/sensors_create_new_bl.png?1701193768)

From the block selector, pick the gauge block.

From the feeds list, select the _BME280: Temperature Sensor_

![sensors_gauge_bl.png](https://cdn-learn.adafruit.com/assets/assets/000/126/287/medium640/sensors_gauge_bl.png?1701193562)

![sensors_tmp_bme280.png](https://cdn-learn.adafruit.com/assets/assets/000/126/288/medium640/sensors_tmp_bme280.png?1701193616)

In the _Block Settings_, configure the gauge block's display options.

Once completed, click Create Block.

![sensors_block_settings_gauge_1.png](https://cdn-learn.adafruit.com/assets/assets/000/126/292/medium640/sensors_block_settings_gauge_1.png?1701193844)

The dashboard now contains a line graph block for the air quality sensor and a gauge block.

![](https://cdn-learn.adafruit.com/assets/assets/000/126/293/medium800/sensors_dash1chart1block.png?1701193913)

To add a block to display the BME280's relative humidity sensor, repeat the steps above but select the&nbsp;_BME280: Humidity Sensor_ feed during block creation.

The final dashboard should look like the following screenshot.

![](https://cdn-learn.adafruit.com/assets/assets/000/126/294/medium800/sensors_completed-dash.png?1701194114)

To learn more about Adafruit IO Dashboards, and instructions for sharing your dashboard with others, visit the following guide:

### Adafruit IO Basics: Dashboards - Overview

[Adafruit IO Basics: Dashboards](https://learn.adafruit.com/adafruit-io-basics-dashboards)
[Overview](https://learn.adafruit.com/adafruit-io-basics-dashboards/overview)
# No-Code IKEA Vindriktning Air Quality Sensor Hack with Adafruit IO

## (Optional) Enable SMS Notifications

Info: SMS message alerts are only available for IO+/IO Plus (Paid) accounts. To upgrade your Adafruit IO Free account to Adafruit IO Plus, visit [io.adafruit.com/plus](io.adafruit.com/plus)! Email notifications are available for free accounts.

You can set up Actions in Adafruit IO to alert you when certain values are logged. This can be especially handy for this project to let you know if your air quality is becoming unhealthy.

To receive an SMS message Action alert, you'll need to add your phone number to your Adafruit account. Note that SMS message alerts are only available for IO+ accounts. Other alert types are available for free tier accounts, such as email and web hooks.

![hacks_4.png](https://cdn-learn.adafruit.com/assets/assets/000/122/190/medium640/hacks_4.png?1687962446)

In Adafruit IO, go to the **Actions** tab and click on **+ New Action**.

![](https://cdn-learn.adafruit.com/assets/assets/000/138/085/medium640/hacks_uNoB5QTxmx.png?1751378939)

Enter a **Name** and optional description for the new Action, then click **Create.**

You'll be taken to the new Action page, with a Blockly toolbox and workspace.

![](https://cdn-learn.adafruit.com/assets/assets/000/138/106/medium640/hacks_oAlt4RRGqZ.png?1751403014)

All actions start with at least one **Trigger** block, placed into the top&nbsp;`Triggers:` section of the root block in the workspace.

1. Use the&nbsp; **data 'Starts' matching** trigger, so you can avoid being repeatedly notified.  
  
2. Drag it onto the root block, and then select the&nbsp; **feed** that you're monitoring from the list.  
  
3. Select the&nbsp; **greater than or equal** &nbsp;dropdown and enter the&nbsp; **value** &nbsp;that you want to monitor for the threshold

![Dragging a trigger block onto the Triggers section of the root block in the workspace](https://cdn-learn.adafruit.com/assets/assets/000/138/088/medium640thumb/hacks_chrome_qpj4u17faf.jpg?1751380770)

![](https://cdn-learn.adafruit.com/assets/assets/000/138/089/medium640/hacks_vPiDLqpNQe.png?1751380705)

![](https://cdn-learn.adafruit.com/assets/assets/000/138/090/medium640/hacks_Screenshot_2025-07-01_153645.png?1751380743)

Now the trigger is done, you'll want to get the data into a new variable, to make it easier to use later in the template.

1. Create a **new variable** in the toolbox, named `my-data`, then drag the **Set Variable** block onto the main diagram, dropping it into the `Actions:` section of the root block.  
  
2. From the **Feeds** toolbox category, drag a **Get Feed** block over to the Set Variable block, and connect them horizontally, so that the Set Feed block replaces the empty placeholder text block as the value to be set.

![](https://cdn-learn.adafruit.com/assets/assets/000/138/091/medium640thumb/hacks_chrome_evgQ7kFjcU.jpg?1751381915)

Lastly use a Send SMS block from the Notifications toolbox category. Drop it beneath the Set Variable block, and **customize the message** that you'll receive when the action is triggered.

Try this for a message, which uses the `map` [filter](https://shopify.github.io/liquid/filters/map/) in Liquid templates, to access the **updated\_at** timestamp property (in UTC). Mapped from the **first** feed used in the action (via the `feeds` placeholder). It also includes the variable&nbsp; **my-data** under the `vars` placeholder.

`⚠️Ikea AQ Sensor Detected an Unhealthy Value:{{vars.my-data}}ppm at {{ feeds | first | map: "updated_at" }}`

![](https://cdn-learn.adafruit.com/assets/assets/000/138/092/medium640thumb/hacks_chrome_QfRcZeiu9e.jpg?1751382209)

Finally click the **Save** button to save the Action. Choose&nbsp; **Enable and Save** if asked.

![](https://cdn-learn.adafruit.com/assets/assets/000/138/093/medium640/hacks_ZD6vCkWuHo.png?1751382333)

This returns you to the Action page, where you can see the Action you just set up.

There is also an **Enable** toggle switch (On or Off), and an information icon at the end of the row.

![](https://cdn-learn.adafruit.com/assets/assets/000/138/104/medium640/hacks_z9ymBivVUv.png?1751402611)

When the Action is triggered, you'll receive the notification with the message that you entered.

![hacks_edited_Screenshot_2023-06-28_at_10.29.49_AM.jpg](https://cdn-learn.adafruit.com/assets/assets/000/122/194/medium640/hacks_edited_Screenshot_2023-06-28_at_10.29.49_AM.jpg?1688003578)

# No-Code IKEA Vindriktning Air Quality Sensor Hack with Adafruit IO

## Usage

Plug the IKEA Vindriktning into a USB-C cable and an appropriate power supply. The QT Py will receive power from the Vindriktning's PCB and should connect to Adafruit IO.

It will take longer for the QT Py to connect to Adafruit IO than it will take for the Vindriktning to start up. This is because the QT Py needs to establish both a WiFi connection and authenticate itself with Adafruit IO.

![sensors_IMG_6766.jpg](https://cdn-learn.adafruit.com/assets/assets/000/126/468/medium640/sensors_IMG_6766.jpg?1701292003)

After less than a minute, the QT Py appears "online" on the [Adafruit IO devices page](https://io.adafruit.com/devices).

![](https://cdn-learn.adafruit.com/assets/assets/000/126/297/medium800/sensors_select_qt_py.png?1701201030)

While the graph block on the Adafruit IO Dashboard may initially be sparse, it will populate with readings over time as the PM1006 air quality sensor obtains readings.

![](https://cdn-learn.adafruit.com/assets/assets/000/126/298/medium800/sensors_completed-dash.png?1701201112)

If you've set up notifications using Actions, you'll receive SMS alerts if the air quality declines past your defined threshold.

![Image by Liz Clark, https://learn.adafruit.com/ikea-vindriktning-hack-with-qt-py-esp32-s3-and-adafruit-io/use](https://cdn-learn.adafruit.com/assets/assets/000/126/299/medium800/sensors_hacks_edited_Screenshot_2023-06-28_at_10.29.49_AM.jpg?1701201243 Image by Liz Clark, "Ikea Vindriktning Hack with QT Py ESP32-S3 and Adafruit IO")


## Featured Products

### Adafruit QT Py ESP32-S3 WiFi Dev Board with STEMMA QT

[Adafruit QT Py ESP32-S3 WiFi Dev Board with STEMMA QT](https://www.adafruit.com/product/5426)
The ESP32-S3 has arrived in QT Py format - and what a great way to get started with this powerful new chip from Espressif! With dual 240 MHz cores, WiFi and BLE support, and native USB, this QT Py is great for powering your IoT projects.

The ESP32-S3&nbsp;is a highly-integrated,...

In Stock
[Buy Now](https://www.adafruit.com/product/5426)
[Related Guides to the Product](https://learn.adafruit.com/products/5426/guides)
### Adafruit BME280 I2C or SPI Temperature Humidity Pressure Sensor

[Adafruit BME280 I2C or SPI Temperature Humidity Pressure Sensor](https://www.adafruit.com/product/2652)
Bosch has stepped up their game with their new BME280 sensor, an environmental sensor with temperature, barometric pressure&nbsp;and&nbsp;humidity! This sensor is great for all sorts of indoor environmental sensing and can even be used in both I2C and SPI!

This precision sensor from...

Out of Stock
[Buy Now](https://www.adafruit.com/product/2652)
[Related Guides to the Product](https://learn.adafruit.com/products/2652/guides)
### Silicone Cover Stranded-Core Wire - 30AWG in Various Colors

[Silicone Cover Stranded-Core Wire - 30AWG in Various Colors](https://www.adafruit.com/product/2051)
Silicone-sheathing wire is super-flexible and soft, and its also strong! Able to handle up to 200°C and up to 600V, it will do when PVC covered wire wimps out. We like this wire for being extremely supple and flexible, so it is great for wearables or projects where the wire-harness has to...

Out of Stock
[Buy Now](https://www.adafruit.com/product/2051)
[Related Guides to the Product](https://learn.adafruit.com/products/2051/guides)
### Pink and Purple Woven USB A to USB C Cable - 2 meters long

[Pink and Purple Woven USB A to USB C Cable - 2 meters long](https://www.adafruit.com/product/5044)
This cable is not only super-fashionable, with a woven pink and purple Blinka-like pattern, it's also made for USB C for our modernized breakout boards, Feathers and more.&nbsp; [If you want something just like it but for Micro B, we have a B...](https://www.adafruit.com/product/4111)

Out of Stock
[Buy Now](https://www.adafruit.com/product/5044)
[Related Guides to the Product](https://learn.adafruit.com/products/5044/guides)
### Adafruit IO+ Subscription Pass – One Year

[Adafruit IO+ Subscription Pass – One Year](https://www.adafruit.com/product/3792)
The all-in-one Internet of Things service from Adafruit you know and love is now _even better_ with IO+. The 'plus' stands for MORE STUFF! More feeds, dashboards, storage, speed. Power up your [Adafruit IO](https://io.adafruit.com/) with the $99 pass for 1 year of the...

In Stock
[Buy Now](https://www.adafruit.com/product/3792)
[Related Guides to the Product](https://learn.adafruit.com/products/3792/guides)

## Related Guides

- [Adafruit QT Py ESP32-S3](https://learn.adafruit.com/adafruit-qt-py-esp32-s3.md)
- [No-Code Battery Monitoring with WipperSnapper](https://learn.adafruit.com/no-code-battery-monitoring-with-wippersnapper.md)
- [Adafruit IO Basics: Feeds](https://learn.adafruit.com/adafruit-io-basics-feeds.md)
- [itsaSNAP Daily Weather Forecast Board](https://learn.adafruit.com/itsasnap-daily-weather-forecast-board.md)
- [Ikea Vindriktning Hack with QT Py ESP32-S3 and Adafruit IO](https://learn.adafruit.com/ikea-vindriktning-hack-with-qt-py-esp32-s3-and-adafruit-io.md)
- [Using Piezo Buzzers with WipperSnapper](https://learn.adafruit.com/using-piezo-buzzers-with-wippersnapper.md)
- [CircuitPython Libraries on Linux and ODROID C2](https://learn.adafruit.com/circuitpython-libaries-linux-odroid-c2.md)
- [Where's My Friend? A Location-Aware Display with PyPortal and ItsASnap](https://learn.adafruit.com/where-s-my-friend-a-location-display-frame-with-pyportal.md)
- [CircuitPython OctoPrint Controller and Monitor](https://learn.adafruit.com/circuitpython-octoprint-controller-and-monitor.md)
- [No-Code Rain Sensing Smart Desktop Umbrella Stand](https://learn.adafruit.com/no-code-rain-sensing-smart-desktop-umbrella-stand.md)
- [All the Internet of Things - Episode Four: Adafruit IO](https://learn.adafruit.com/all-the-internet-of-things-episode-four-adafruit-io.md)
- [Integrating Home Assistant with Adafruit IO](https://learn.adafruit.com/integrating-adafruit-io-with-home-assistant.md)
- [Welcome to Adafruit IO](https://learn.adafruit.com/welcome-to-adafruit-io.md)
- [How to Add a New Sensor or Component to Adafruit IO WipperSnapper](https://learn.adafruit.com/how-to-add-a-new-component-to-adafruit-io-wippersnapper.md)
- [Working with Multiple Same Address I2C Devices](https://learn.adafruit.com/working-with-multiple-i2c-devices.md)
- [Adafruit IO Basics: Dashboards](https://learn.adafruit.com/adafruit-io-basics-dashboards.md)
