Home Assistant Grove All-in-one Environmental Sensor Guide

Home Assistant SEN54 via ESPHome
Home Assistant SEN54 via ESPHome

I’ve been building out various sensor arrays for use with Home Assistant in my home using ESP32 modules and ESPHome and it has been working really well. One challenge though is that you have a limited number of connections (even when using expansion boards). This can be dealt with a few different ways but buying a whole bunch of individual sensor boards one at a time and connecting them can get messy to say the least.

Fortunately Seeed Studios has a unit powered by Sensirion that has 7 environmental sensors all in one: the SEN54! This includes measurements for particles of PM1.0/2.5/4/10, temperature and humidity and VOC (volatile organic compounds). All in one unit with a single connection.

In this guide I’ll show what adding a sensor like this to Home Assistant looks like using ESPHome and a ESP32-C3 module. Let’s get started!

Hardware Used

Grove SEN54 Unit
Grove SEN54 Unit

The Seeed Studios SEN54 All-in-one Environmental Sensor includes measurements for particles of PM1.0/2.5/4/10, temperature and humidity and VOC (volatile organic compounds).

Links: AliExpress*, SeeedStudios.com

Seeed Studios XAIO-ESP32-C3
Seeed Studios XAIO-ESP32-C3

The Seeed Studios XAIO-ESP32-C3 is a microcontroller board that uses the RISC-V architecture. It has Bluetooth and WiFi capabilities and includes an external antenna.

Links: Amazon.com*, AliExpress*, *Amazon.ca*, Amazon.co.uk*, Amazon.com.au*, Amazon.de*, Amazon.es*, Amazon.fr*, Amazon.it*, Amazon.nl*, Amazon.pl*, Amazon.se*, Amazon.sg*

Seeed Studios Grove Expansion Shield
Seeed Studios Grove Expansion Shield

The Seeed Studios XAIO series Grove expansion board gives you a lot of ports to connect Grove sensors and other devices to your XAIO device

Links: Amazon.com*, AliExpress*, Amazon.ca*, Amazon.co.uk*, Amazon.com.au*, Amazon.de*, Amazon.es*, Amazon.fr*, Amazon.it*, Amazon.nl*, Amazon.pl*

Seeed Studios XAIO Expansion Board
Seeed Studios XAIO Expansion Board

The Seeed Studios XAIO Expansion board has a screen and several expandable connectors. It also features a battery connector. Works with Adafruit QT Py boards as well.

Links: Amazon.com*, AliExpress*

Overview

This solution has a few different components to them. Let’s go over them now briefly. First we have the SEN54 unit itself:

Grove SEN54 Unit
Grove SEN54 Unit

I included the micro SD card to give a better sense of scale. All of the sensors are housed inside this unit. You can see a inlet and outlet for airflow as there is an active fan in the unit to help circulate the air for the most accurate readings.

Next I’m using the XAIO ESP32-C3 module. This is a tiny module that has built in WiFi/Bluetooth and will communicate the sensor data to our home assistant instance. That looks like this:

Seeed Studios XAIO Series w/ Expansion Boards
Seeed Studios XAIO Series w/ Expansion Boards

The XAIO module can be purchased pre-soldered but it’s pretty easy to solder to the pins. It’s the board on the far right of the above picture.

I also have covered a solderless version of this same setup using a Adafruit QT Py here.

The two boards on the left hand side are two different expansion board options. Both of them will work perfectly for a project like this. It’s particularly easy to attach a battery to the lower expansion board

My complete hardware setup for this guide looks like this:

Grove SEN54 Complete Setup
Grove SEN54 Complete Setup

Here you can see my backup battery attached. My WiFi and most of my network continues to function for a few hours during a power outage due to having battery backups (and using PoE for the access points). The sensor unit will continue to function during a power outage with this battery attached.

The XAIO expansion board has the battery charging circuit that handles this all for us. All we have to do is connected it all together and it’s good to go!

The unit is actually portable with the battery as well. If you wanted to take measurements in a specific area that would absolutely work. It would wirelessly transmit the measurements to Home Assistant and display them as you move around with the device.

Adding ESPHome to Home Assistant

We are going to assume you have Home Assistant installed as installing Home Assistant is outside the scope of this guide. You can absolutely follow along though and see if it looks like something you’d like to explore. I have it installed as a supervised installation on an Orange Pi 5.

Sign into your Home Assistant instance and go to “Settings” and then “Add-ons”. Next click the “Add-on Store”.

ESPHome has it’s own section like this:

Home Assistant Add-on Store - ESPHome
Home Assistant Add-on Store – ESPHome

Select ESPHome and then click “Install”. Once the installation is finished you can click “Start” to start the service.

To make things easier choose to add the ESPHome option to your sidebar. That way you’ll see a menu choice specifically for ESPHome going forward.

Configuring ESPHome

First head to the ESPHome menu option:

ESPHome Configuration Menu
ESPHome Configuration Menu

If you don’t see the ESPHome menu option then go back to the “Add-on Store” from the previous step. Select ESPHome and enable “Show in sidebar”.

For setup we need to connect your XAIO-ESP32-C3 to your device running Home Assistant with USB. This is only required for setup. It will communicate wirelessly after you’ve completed setup (if you configure it that way).

You also have the option of connecting it to a different computer but *only* if your Home Assistant instance is configured to run in HTTPS. For this guide I didn’t have HTTPS enabled and chose to connect it directly to the Tinker Board running Home Assistant for this step.

Click to add a new device. The first step will ask you for a configuration name and your wireless network SSID and password. Enter that and it will take you to the step to select your device type:

ESPHome Configuration - Select Device Type
ESPHome Configuration – Select Device Type

Select ESP32-C3 if you are using the same device as me. It’s fine if you are using another type and are using this guide to follow along.

It will ask you how you want to connect the device to the computer for the first time and give you an encryption key. I recommend using the “Connect to the server running Home Assistant with USB” option. It will then have you select your device. Mine showed up as a USB serial debug device on /dev/ttyACM0.

Once you select next it will give you the option to start the configuration or to skip. Choose skip. We are going to edit the configuration manually first.

Editing YAML Configuration

Click “Edit” on the new sensor/device you created. We are going to change the esphome and esp32 sections to this:

esphome:
  name: sensors-office
  platformio_options:
    board_build.flash_mode: dio

esp32:
  board: seeed_xiao_esp32c3
  variant: esp32c3
  framework:
    type: arduino
    version: 2.0.5
    platform_version: 5.3.0

logger:
   baud_rate: 0

This is as per the Seeed Studios wiki page for Home Assistant integration.

Note that YAML is very sensitive to spacing. The editor will underline errors in red for you which definitely helps to spot them as long as you’re watching for them.

While we are in here you should save your encryption key to your clipboard or keep it handy for reference. We are going to need it in the step to add the device to Home Assistant later.

Install Configuration to Device

Finally you can begin programming the device. Click to “Install”. Select the device type and your USB device again and with any luck:

ESPHome - Successful Configuration Flash
ESPHome – Successful Configuration Flash

Above you can see it connected to my WiFi point and that everything ran successfully. That is without ever programming the ESP32. ESPHome did all of the programming for us!

Adding Device to Home Assistant

Now head back to your “Settings” menu for Home Assistant and click “Devices”. You should see your new sensor with the name you specified in the configuration.

Check to see if the sensor is online. With any luck it is like my example above. Now click “Configure”:

Home Assistant - Devices Menu - Configure ESPHome
Home Assistant – Devices Menu – Configure ESPHome

It should ask you if you want to add the node to Home Assistant. Select “Submit” and then it will ask you for your encryption key it gave us earlier. If you don’t have this just go back to the ESPHome menu and select “Edit”. You will see the key in plain text under “encryption” and then “key”.

If everything goes well the device should come online and be successfully paired with Home Assistant. From this point forward we will be able to update and push the configuration wirelessly to the device.

You won’t be able to see any sensors yet though. We are going to add those next.

Adding Sensors to YAML Configuration

To my surprise when I googled what the YAML configuration for this device would be I found an official Home Assistant resource here that has all of the YAML for us.

If we integrate that into the changes we made earlier the final configuration looks like this:

esphome:
  name: sensors-office
  platformio_options:
    board_build.flash_mode: dio
  friendly_name: sensors-office

esp32:
  board: seeed_xiao_esp32c3
  variant: esp32c3
  framework:
    type: arduino
    version: 2.0.5
    platform_version: 5.3.0
    
# Enable logging
logger:
   baud_rate: 0

# Enable Home Assistant API
api:
  encryption:
    key: "XXX"

ota:
  password: "XXX"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  power_save_mode: none

i2c:
  sda: 6
  scl: 7
    
sensor:
  - platform: sen5x
    id: sen54
    pm_1_0:
      name: " PM <1µm Weight concentration"
      id: pm_1_0
      accuracy_decimals: 1
    pm_2_5:
      name: " PM <2.5µm Weight concentration"
      id: pm_2_5
      accuracy_decimals: 1
    pm_4_0:
      name: " PM <4µm Weight concentration"
      id: pm_4_0
      accuracy_decimals: 1
    pm_10_0:
      name: " PM <10µm Weight concentration"
      id: pm_10_0
      accuracy_decimals: 1
    temperature:
      name: "Temperature"
      accuracy_decimals: 1
    humidity:
      name: "Humidity"
      accuracy_decimals: 0
    voc:
      name: "VOC"
      algorithm_tuning:
        index_offset: 100
        learning_time_offset_hours: 12
        learning_time_gain_hours: 12
        gating_max_duration_minutes: 180
        std_initial: 50
        gain_factor: 230
    temperature_compensation:
      offset: 0
      normalized_offset_slope: 0
      time_constant: 0
    acceleration_mode: low
    store_baseline: true
    address: 0x69
    update_interval: 10s

You can see we actually have some configurable options here such as the update_interval. You can configure these if you wish but these are the suggested defaults from Home Assistant.

Final Result

Home Assistant SEN54 via ESPHome
Home Assistant SEN54 via ESPHome

You can see it really starting to come together here. On the right hand side we have the new SEN54 sensors! On the left hand side you can see my basement sensors I installed in this guide here.

You can also see the lights starting to populate for my rooms as I get them installed and configured. Those are the Kauf smart lights I’ve covered here.

Conclusion

I’m really happy with the SEN54 unit and I ordered a couple more to use throughout the house. They just make things a lot easier. A single connection got all of that data in one self-contained unit. The cost is $49 so it’s pretty inexpensive relatively speaking vs. buying all of those sensors yourself. Just the dust sensor is pretty expensive alone.

I should also mention there is a SEN55 unit that also measures NOx (nitrous oxide). I have not seen this version in stock for the past month or so I’ve been investigating these. I just wanted to mention it’s out there. I’d like to get one for the garage eventually that has that extra sensor when it’s in stock.

I’m definitely not finished with my build and will be adding more sensors and writing more guides as that happens! I still have door and window sensors to do as well as remotely controlling opening/closing the garage door. I’ll also cover some of my other integrations I haven’t talked about such as my solar panels (Enphase) and Sense energy monitoring systems. Stay tuned!

Other Resources

I have made a solderless version of this same sensor here using the Adafruit QT Py

You can see my guide on the Kauf smart lights I’m using with Home Assistant here

Don’t miss my other sensors guide using the ESP32-C3 here

I’ve also covered the K1100 sensor prototyping kit here

All of my Home Assistant related articles are here

Subscribe
Notify of
guest

7 Comments
Inline Feedbacks
View all comments
Razor Burn
Razor Burn
1 year ago

Wow what a truly professional setup there James as you’ve managed to integrate so many cool features and the inclusion of the SEN54 unit makes perfect sense as it saves on the need for singular sensors and the accuracy looks to be better so sensible move.

The price seems fair as once you factor in the cost of a few individual sensors plus board/cables you’re creeping near the same price for one beefy unit and seeing it running off the XIAO ESP32-C3 is insane as I have seen similar setups using more powerful devices struggle to process all that data from such a big sensor!

I really appreciate the written guides as you cover all the important steps making it super easy to follow which is perfect for beginners like me and you’ve inspired me to start my own project based off something similar using ESP32-CAM boards, a bunch of Grove sensors and simple solar monitoring yet knowing I can expand things at a later date is really exciting. I’m hoping to add some LoRa as well to give it that extra dimension yet still in its infancy as I await delivery of some missing components from suppliers.

I can appreciate that this project of yours is still a work in progress but I’m really impressed and look forward to the next instalment as I’m intrigued to see what you do with the solar/energy monitoring and the remote garage idea is fun as I’ve seen others try with mixed success yet Jeff Geerling proved its possible using a Pico W so best of luck and congrats on the awesome job so far! Thanks from Australia.

Razor Burn
Razor Burn
1 year ago

That’s a nice collection of goodies you have there and inline with my own modest collection and I agree the appeal of using the Seeed/Adafruit devices is the little requirement for complex soldering as there’s a expansion board for most needs and not having to rely on one sole vendor is great as you can mix and match or find an affordable solution for most things as they share designs and components making for some fun Frankenstein projects but you’re right to note that sometimes you need to use a different cable as not all the makers stick to a uniform standard but for the most part they’re cheap and readily available.
comment image

As you can see from the image, I have a mixed collection of various devices yet stayed away from automation (servos/switches) for now as its above my comfort zone but I do have an Arduino Starter kit that I hope to do some learning with and take those skills into the Home Assistant environment but that’s a long way off and I’m already down the rabbit hole and looking to get out before its too deep!

You convinced me to try some more Adafruit gear so I’m waiting on a few more QT Py boards as much prefer their size over the Pico and also ordered an ESP32-C9 Dev board as its supposed to be all the rage with Wifi 6 and RISC-V yet no real support and only a couple of places have it for sale so thought I’d get ahead as we’re certain to see more devices in the near future using the ESP32-C6 module.

It’s hard to argue with your comments regarding exclusivity and relying solely on one ecosystem is a mistake as the past few years have shown us that popular devices such as the RPi can become super expensive and largely unavailable to the general market so having alternatives is important which is why I am happy to support the Adafruits, DFRobots, Sparkfuns, Core Electronics out there as the quality is top notch and most of the companies are made up of passionate people who want to share their love for electronics and DIY projects which suits me perfectly.

I know from my own limited testing how bad the air quality can get in the average home as we tend to keep everything closed up for warmth or keeping out the excess heat with regular ventilation but hopefully this kit can allow me to set up a more permanent monitoring solution and having the ability to use a few of the portable options is fantastic as I can move them around and keep the air inside fresh and clean and eliminate the harmful CO2 and VOC from my garage and kitchen areas as those bad smells really do contribute to feeling unwell and can have long term health effects on the body. Its great to see your setup coming a long so nicely and what’s so impressive is having all that important data easily accessible so if I can get my setup half as good as yours I’ll be delighted! Keep up the great work and stay safe good sir…

Razor Burn
Razor Burn
1 year ago

Hi James,

Thanks again for the kind words as they mean a lot and your written guides continue to inspire me as they’re full of important detail and easy to follow so you’re doing awesome work educating your audience.

Some how every time I open the blog Brave browser doesn’t show the latest article so I need to search view the tabs and only caught the Adafruit IoT Button Review before going to bed and I’m certainly going to order a few once they’re restocked as sold out everywhere as far as I can tell?! You really have to hand it to Adafruit as they’re pumping out so much cool stuff and I believe they’re looking at selling gear pre-soldered so might be worth reaching out to them and asking as they seem like a cool bunch of people?

I’m glad to see your Pinecil is making easy work of the soldering as I can only imagine the nightmare you had using your old iron and things don’t need to look factory perfect, as long as there’s a connection and no bridging you’re sweet and most people shouldn’t be afraid to give it a go as its not as intimidating as one would think.

I started out with the ESP32-CAM as its dirt cheap and there are hundreds of tutorials showing its usage as a Security Camera and so far its been easy to setup and you can power it by USB powerbank but its still low quality 2MP image so nothing compared to a proper CCTV application but I’m hoping to set them up around the place and and have them integrated into ESPHome/Home Assistant.

I’m truly buzzing to see what you do with the garage remote as using the IoT Button looks like such a clever idea as other tutorials I have seen looked overtly complicated in comparison and as you say once you factor in the price of the button, female headers and a controller its super cheap and I love how simple the commands are for the button as its basically plug and play with very little programming. Here I was scared of giving ‘automation’ a try as the code has always looked complicated yet you’ve demonstrated how easy it is to have it command your robo mop so I’m sold and hope Adafruit manage to get them restocked soon as its really soe cool kit! Take care and can’t wait to see what you do next…

Razor Burn
Razor Burn
1 year ago

Valuable points and I’m more than happy to help as you’re writing style makes for a fun and enlightening read and this blog has quickly become my go-to site for tech reviews! Till next time stay well good sir…