best

How to build a noise monitor with Home Assistant

Build a local sound-level monitor for Home Assistant the honest way, using an ESP32 with an I2S microphone and ESPHome's sound_level sensor.

On this page
  1. Why Not Just Use a Sensor You Already Own
  2. The Honest, Local Build: ESP32 + I2S Microphone + ESPHome
  3. What the Reading Means (and Doesn’t)
  4. Integrating and Automating in Home Assistant
  5. HomeKit and Hubitat
  6. Quick Verdict

A noise monitor that reads sound levels in your home is a useful project — for a nursery, a workshop, a rental you want to keep quiet, or just curiosity about how loud a room gets. It’s also a place where bad advice is common, so let’s be precise about one thing up front: measuring sound means measuring sound. Air quality monitors, leak sensors, and smart speakers don’t report a sound level you can graph, and most cheap “sound sensor modules” only output a crude loud/quiet trigger, not a meaningful reading. The reliable, fully local way to do this is a small ESP32 board with a digital I2S microphone running ESPHome.

Why Not Just Use a Sensor You Already Own

It’s worth clearing the deck, because plenty of guides suggest hardware that can’t do the job:

  • Air quality monitors like the AirGradient One and AirGradient Open Air measure PM2.5, CO2, VOCs, NOx, temperature, and humidity. They are excellent for what they do and integrate beautifully with Home Assistant via ESPHome — but none of them measure noise. There’s no decibel reading to pull.
  • Motion and leak sensors report occupancy or water, not sound.
  • Smart speakers such as Apple’s HomePod don’t expose a sound-level sensor to Home Assistant or HomeKit.
  • Hobby modules like the analog sound-detection breakout (a microphone plus a comparator) only give you a “sound is above this threshold” digital pin. And don’t be misled by part numbers floating around: an MQ-4 is a methane gas sensor and an LM386 is an audio amplifier chip — neither is a sound-level meter.

If you want an actual dB-style trend you can chart and automate on, you need a real microphone and software that computes a sound level from it.

The Honest, Local Build: ESP32 + I2S Microphone + ESPHome

ESPHome ships an official sound_level sensor that measures a microphone’s average and peak sound pressure level over a configurable window, paired with the i2s_audio microphone component (ESP32 only). That’s the whole recipe.

Hardware you need:

  • An ESP32 development board (the classic ESP32, or an ESP32-S3 — I2S audio runs on ESP32-family chips).
  • A digital I2S MEMS microphone such as an INMP441 or ICS-43434 breakout. These are inexpensive and far better behaved than analog modules.
  • A handful of jumper wires.

Wire the mic’s I2S pins (bit clock, word select/LR clock, data, plus power and ground) to GPIOs on the ESP32, flash an ESPHome config that defines the i2s_audio microphone and a sound_level sensor reading from it, and the board reports a value to Home Assistant over your LAN. No cloud, no account.

A practical caveat from ESPHome’s own docs: audio components use significant RAM and CPU on the ESP32, so keep that device’s config lean — don’t pile a dozen other sensors and a display onto the same board.

What the Reading Means (and Doesn’t)

ESPHome’s sound_level output is in relative dB, where 0 dB represents the loudest sound the microphone can capture and quieter sounds read as negative values. It is not a calibrated, A-weighted dB(A) figure like a certified sound-level meter, and you shouldn’t treat it as one for anything official. For home use — “is the room getting louder,” “did the dog start barking,” “is the shop above my comfort threshold” — a consistent relative reading is exactly what you want. If you need weighting or calibration-grade behavior, a community ESPHome sound-level-meter component adds A/C-weighting and custom microphone equalization beyond the official sensor.

Integrating and Automating in Home Assistant

Because it’s ESPHome, the device shows up natively in Home Assistant the moment it’s adopted — no MQTT broker required (though MQTT is an option if you prefer it). From there:

  • Add the sound-level entity to a dashboard with a gauge or history graph card to see live and historical levels.
  • Build an automation that fires when the level crosses a threshold you’ve tuned for your room — flash a Philips Hue White A19, send a phone notification, or log the event.
  • Use the long-term statistics Home Assistant records to spot patterns (the noisy hour of the day, the weekend spike).

Tune the threshold empirically: watch the reading during quiet and loud moments in that specific room, then set your trigger between them. Because the value is relative to the mic and its placement, a number that’s right for one room won’t transfer to another.

HomeKit and Hubitat

If you expose the ESP32 device’s sound-level entity through Home Assistant’s HomeKit bridge, you can view it in the Apple Home app, though Home Assistant remains the brain doing the work. Hubitat has no native equivalent to ESPHome’s sound sensor; the realistic path there is to run Home Assistant for the sensor and bridge what you need across, rather than expecting Hubitat to read a microphone directly.

Quick Verdict

Build a noise monitor with an ESP32 plus an I2S MEMS microphone (INMP441 or ICS-43434) running ESPHome’s sound_level sensor. It’s cheap, fully local, and the only approach in this price range that produces a real, chartable sound-level reading. Skip air quality monitors, smart speakers, and analog “sound modules” for this job — they either measure something else entirely or only give you a crude on/off trigger. Treat the output as a relative trend rather than calibrated dB(A), tune your thresholds per room, and you’ve got a useful, automatable noise monitor.

Next steps

Compare this category side by side

If you want fewer opinions and more matrix-style tradeoffs, the comparison pages are the next stop.

See comparisons →

Inspect all products

The full product database keeps the caveats, setup notes, and compatibility details attached to each device.

Browse products →

Back up and read the explainers

If a buying guide feels too specific too fast, the guides section covers the broader local-first logic behind it.

Read guides →

Related articles

Best local-first smart home hubs

The best smart home hubs and controllers for people who care about local control, Home Assistant compatibility, and fewer long-term regrets.

Read article →

Best smart plugs with local control and energy monitoring

The best local smart plugs with energy monitoring for Home Assistant: real local control over Zigbee, Z-Wave, or Wi-Fi plus accurate power data, no cloud.

Read article →

Best local security cameras for Home Assistant

The best Home Assistant-friendly local camera options for buyers who care about RTSP, ONVIF, NVR compatibility, and lower cloud dependence.

Read article →
New guides and product notes, no inbox required. Follow via RSS →