IKEA VINDSTYRKA Zigbee Air quality sensor

I’m hoping for the same!

I’m just using the ZHA integration, and all I can get from it is the Temp and Humidity.

Am I reading the comments right that the only way to get the VOC and PM2.5 readings in HA at the moment is via Deconz or Zigbee2mqtt?

Does this work with the old Trådfri hub?
(As I have no other zigbee devices at the moment (yet))

2 Likes

I got this to kind of work for my purposes with the help given in this thread.

There most certainly is a better way to do this. Perhaps someone more experienced could help to improve this method. I’m a beginner with YAML and HA :slight_smile:

  1. Install ZHA toolkit from HACS
  2. Create a template sensor
    #template for the IKEA TVOC kitchen
  - platform: template
    sensors:
      keittio_ilmanlaatu_tvoc:
        friendly_name: "Keittiö ilmanlaatu TVOC"
        unit_of_measurement: "TVOC index"
        icon_template: mdi:weather-dust
        value_template: ""
  1. Create a automation that calls ZHA Toolkit: attr_read service once a minute and set it to write the value to state_id previously created
alias: Read keittiö TVOC
description: Use ZHA_toolkit
trigger:
  - platform: time_pattern
    seconds: "0"
    minutes: "/1"
condition: []
action:
  - service: zha_toolkit.attr_read
    data:
      ieee: <censored>
      endpoint: 1
      cluster: 64638
      attribute: 0
      manf: 4476
      state_id: sensor.keittio_ilmanlaatu_tvoc
mode: single

With this method I’m able to get some values to HA. I’m really not sure how the template sensor should be created for this use case where ZHA toolkit writes the value :man_shrugging: Without the state_id


I’ve edited this post to correct some of my original mistakes

6 Likes

works like a charm…

1 Like

I started reversing the way IKEA implements the SEN54 sensor in VINDSTYRKA, as they seem to be doing some funky processing on raw and undocumented values…

The way ESPHome implements this sensor yields different (inaccurate!) results for temperature/humidity when compared to the values reported by VINDSTYRKA (as reported here: IKEA Vindstyrka & ESPHome Integration - #4 by Laess3r).

I hope to come up with some sort of compensation value/slope that can be used to correct the sensor output.

Docs:

4 Likes

I am a bit confused. Where have i to put this code?
I am a bloody newby, so perhaps i ask something ridiculous
Greatings
Christoph

It’s an automation.

if you have zha toolkit installed GitHub - mdeweerd/zha-toolkit: 🧰 Zigbee Home Assistant Toolkit - service for "rare" Zigbee operations using ZHA on Home Assistant then you can go to automations and create it.
Or you can add it to the appropriate yaml file.

1 Like

Has anyone had any luck contacting IKEA about technical specs of this device beyond those in the ‘assembly’ document? Specifically, I am trying to figure out what type of PM2.5 sensor is being used–I am most familiar with Plantower laser sensors but this one appears to be different.

As mentioned before, IKEA VINDSTYRKA contains a Sensirion SEN54 sensor module. There is plenty of documentation available on the website of the manufacturer: Smart sensor solutions.

Great post, thank you.

I’m new to IKEA smart home products, and wondering if I can add a Vindstyrka to my HA ecosystem by itself, or must I also add their Dirigera hub?

Thanks again.

You can add it as a Zigbee device either with ZHA or Zigbee2MQTT. You will obtain Temp, Humidity and PM2.5 data from the unit into HA. However, as this thread defines, there is an issue with obtaining the VOC index in ZHA which is an issue that I have. Apparently it works with Z2MQTT but I have not gone there. I am a ZHA user.

I am hoping for a resolution in the VOC index as my intention is to use my IKEA unit in a 3D Print Enclosure to control carbon filtration blowers installed in the enclosure.

2 Likes

This is my automation to poll for updates every 15 seconds from multiple sensors, and does not require modifying quirks or patching HASS. Hope this is useful!

Edited to add allow_create: true and removed duplicate attr_read.
Edit: Turns out manf is critical when quirks aren’t set.

alias: "Climate: Fetch AQI data"
mode: single
description: poll for AQI data
trigger:
  - platform: time_pattern
    seconds: "/15"
condition: []
action:
  - parallel:
      - repeat:
          for_each: # list your sensors here
            - lounge_aqi
            - office_aqi
            - balcony_aqi
            - bathroom_aqi
          sequence:
            - service: zha_toolkit.attr_read
              data:
                ieee: sensor.{{ repeat.item }}_particulate_matter
                endpoint: 1
                manf: 4476
                cluster: 1066
                attribute: 0
                state_id: sensor.{{ repeat.item }}_particulate_matter
                allow_create: true
            - service: zha_toolkit.attr_read
              data:
                ieee: sensor.{{ repeat.item }}_particulate_matter # Intentional, because the VOC index parameter may not exist
                endpoint: 1
                manf: 4476
                cluster: 64638
                attribute: 0
                state_id: sensor.{{ repeat.item }}_voc_index
                allow_create: true
7 Likes

I hooked this up through Deconz on Home assistant, and I’m definitely confused about what item is what on the output:

image
The PPB only showed up this morning :stuck_out_tongue:

1 Like

The ppb is definitely interesting. I don’t get a ppb numer via Zigbee2mqtt. The VOC Index is on a different scale, unfortunately not an absolute number in ppb so I wonder what that is all about…

Where is that button? On the device’s diagnostic panel in ZHA I only have an Identify button.

image

after updating to hassio 2023.10, the tvoc sensor created in this way:
sensors:
keittio_ilmanlaatu_tvoc:
friendly_name: “Keittiö ilmanlaatu TVOC”
icon_template: mdi:weather-dust
value_template: “”

and the automation suggested by @chendo give me back an error message

Any idea?

I am using ZHA with conbee 2

There was an update to ZHA-toolkit
ZHA toolkit -service call broken?

If you want (long term) statistics for the sensor, you have to set the device class. It will also show the history not as state changes but as a graph. Also, set unit to empty and the initial value to None so that it doesn’t try to interpret the empty string as a number on start and throw a warning:

    vindstyrka_tvoc_index:
      unique_id: vindstyrka_tvoc_index
      friendly_name: Vindstyrka TVOC Index
      device_class: aqi
      unit_of_measurement: ''
      icon_template: mdi:weather-dust
      value_template: '{{ None }}'
2 Likes

Thanks for this.
This solves my ‘entities not available’ when doing a quick reload.

Can I suggest that @jonixx updates their post with these changes to the template sensor?