Monitoring HVAC Air Quality in Home Assistant using IKEA Vindstyrka Zigbee sensors
We recently installed Heat Recovery Ventilation (WTW Ventilatie in Dutch) combined with 2 filters; a carbon filter against odor and a fine dust (PM) filter. To find out and monitor, I installed 3 IKEA Vindstyrka Zigbee sensors within the ventilation pipes.
The flow
flowchart LR
Outside -->|Vindstyrka: Inlet| HeatRecoveryUnit[Heat Recover Unit]
HeatRecoveryUnit --> Outside
HeatRecoveryUnit --> CarbonFilter
CarbonFilter --> F9-Filter
F9-Filter -->|Vindstyrka: To House| House
House[fa:fa-home House] --> |Vindstyrka: Outlet| HeatRecoveryUnit
Installation into the HVAC pipes
The biggest challenge is to connect the USB-C cable through the pipes while keeping a good airtight seal. I installed T-junctions, with a cover to later access the Vindstyrka sensor. Don’t forget to pair your devices (and maybe monitor them for a while) before installing!
Vindstyrka and pairing the sensors with Zigbee2Mqtt
The Ikea Vindstyrka’s are very easy to pair with Zigbee2Mqtt, just quickly press the top button 4x. OTA updates are supported (but haven’t seen any differences between versions).
Unfortunately, the precision of all outputs is limited to whole numbers, which for PM2.5, VOC and Humidity is OK, but inconvenient for temperature. It’s not a problem with the sensors, so maybe at a certain moment IKEA will come with a nice firmware update?
The sensor is quite good, it’s a Sensiron SEN54, with a precision of ±10% for mass concentration.
Creating a nice dashboard in Home Assistant
Using ApexCharts Card it’s quite easy to create a good looking dashboard.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
type: custom:apexcharts-card
graph_span: 24h
show:
last_updated: true
yaxis:
- id: pm25
apex_config:
forceNiceScale: true
tickAmount: 7
color_list:
- '#ff9800'
- '#3498db'
- '#e74c3c'
- '#1a4c6e'
header:
show: false
series:
- entity: sensor.system_wtw_air_quality_inlet_pm25
name: Inlet PM2.5
type: line
group_by:
func: max
duration: 5m
stroke_width: 2
show:
header_color_threshold: true
yaxis_id: pm25
- entity: sensor.system_wtw_air_quality_to_house_pm25
name: To House PM2.5
type: line
group_by:
func: max
duration: 5m
stroke_width: 2
show:
header_color_threshold: true
yaxis_id: pm25
- entity: sensor.system_wtw_air_quality_outlet_pm25
name: Outlet PM2.5
type: line
group_by:
func: max
duration: 5m
stroke_width: 2
show:
header_color_threshold: true
yaxis_id: pm25
Conclusion
As you can see, I see the filters are working very well, reducing unhealthy background fine dust and especially handling peaks of wood burning neighbors.

