AirGradient Forum

How to Disable Blinking LEDs on DIY v4 (S8 & Wemos)?

Hi everyone,

First off, I just want to say a massive thank you to the entire AirGradient team and community. The open-source DIY project is absolutely fantastic, incredibly valuable, and very well documented. I really appreciate the effort that goes into making this available!

I’ve recently finished building my DIY v4 monitor. The soldering seems to have gone okay, and the unit is up and running, sending data, which is great!

I was looking into the configuration options, specifically to minimize light output, as the monitor is in a bedroom. I found the config setting to turn off the OLED display – perfect!

However, I notice there are two other LEDs on the components themselves that blink periodically (seems like roughly every 4 seconds or so):

  1. A yellow/orange LED on the S8 CO2 sensor.
  2. The blue onboard LED on the Wemos itself.

While they aren’t super intrusive, I’d love to disable them completely if possible for minimal light pollution at night.

I’ve looked through the main AirGradient Arduino source code, but I couldn’t spot an obvious configuration flag or section specifically designed to disable the blinking of these particular LEDs.

My question is:

  • Is there an existing known method I might have missed to disable them?
  • If not configurable out-of-the-box, could anyone point me towards which part of the code, or perhaps which underlying library (e.g., the library for the S8 sensor, or WiFiConnector), is likely responsible for triggering these blinks? Understanding the source would help me investigate how I might be able to modify the code locally to disable them.

Any guidance would be greatly appreciated!

Thanks again for this amazing project!

I’m pretty sure the LED is hard wired to one of the pins so not expecting there to be code that will stop it.

You could put some black electrical tape over the LED to keep it always off.

Thanks! Wemos LED is the easiest to cover with tape. But I hoped it’s also likely meant to be programmable, based on the existence of the blinker test firmware.

With the S8, the issue is that its LED is located behind the gas membrane. Covering it might interfere with the sensor’s readings—though that’s just my assumption.

It is programmable but not completely independently. The LED is connected to pin D4 (aka PIN2), so any time that pin is used, the LED will come on. The blink application just uses this pin.
The AirGradient is configured to use this pin as part of the UART serial port to talk to the S8, so any time it is communicating with the S8, the LED will come on.

I haven’t looked at the LED on the S8, but it hasn’t been too noticeable to me. I have a sensor on my nightstand and I only notice it when I’m actively looking at the device, but it hasn’t been bright enough for me to notice while laying in bed. But everyone has different levels of sensitivity/annoyance at that kind of thing.

Instead of covering the LED on the S8, maybe you could cover the inside of the case where the LED would shine through, so you aren’t modifying the sensor itself?

Thanks for clarifying, MallocArray! Yeah, it’s definitely true that sensitivity to such things varies between people. In my case, those two LEDs feel like airline beacon lights at night :sweat_smile: . I guess I’ll start by physically covering the inside of the case where the LEDs shine through, as you suggested. If that doesn’t turn out effective enough, I might have to resort to carefully unsoldering them, though I’m really hoping to avoid risking any sensor damage.

Really appreciate your input and ideas!