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.

Vindstyrka in 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

Air Quality inside 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.

Further reads