The BH1750 is a tiny digital light sensor that reports brightness in lux over I²C, for a couple of dollars. It is the easy, cheap way to know whether a light is on and roughly how strong it is. The one thing to keep straight is that it measures light the way a human eye sees it (lux), which is not the same as the light a plant uses (PAR).
What it is.
The BH1750 is a digital ambient-light sensor from Rohm. It does the measuring and the math on-chip and hands your microcontroller a finished lux value over I²C, with a wide range from dim rooms to bright daylight. It is cheap, tiny, and easy, which is why it shows up in so many projects. For a grower it answers “is the light on, and roughly how bright” and tracks shade and daylight over time.
Lux, not PAR.
This is the catch worth repeating. The BH1750 reports lux, which is weighted to the human eye’s sensitivity to green light, the color plants use least. It does not measure PAR, the photosynthetic light a plant actually uses. So it is great for a trend or for switching lights on and off, but it is the wrong tool for setting a crop’s light level or computing a daily light integral. When the number has to drive the lighting plan, you want a quantum (PAR) sensor instead, as the light sensors overview explains.
Key facts.
How to wire it.
Four wires over I²C: VCC, GND, SDA, and SCL to your board, sharing the bus with other I²C sensors. In ESPHome it has a dedicated BH1750 component, and Arduino libraries are a one-line install. The address is usually 0x23, or 0x5C if the address pin is set. There is almost nothing to trip over.
Where it fits, and where it doesn’t.
Where it fits
- Knowing if a grow light is on and roughly how bright.
- Tracking shade and daylight over the day.
- Switching lights or shades on a brightness threshold.
- Cheap, easy I²C readings on any board.
Where it doesn’t
- Accurate plant light; it reads lux, not PAR.
- Setting a crop’s light level or DLI; use a quantum sensor.
- Direct sun without care; very bright light can saturate it.
- Spectrum; for color bands, a spectral sensor like the AS7341.
Resources & where to buy.
ESPHome: BH1750 BH1750 datasheet (PDF) Where to buy Light sensors overview
Frequently asked questions.
What does a BH1750 measure?
Ambient brightness in lux, reported digitally over I2C. It is a cheap, easy way to know whether a light is on and roughly how strong it is, and to track shade and daylight, but it measures lux, not the PAR light plants use.
Can I use a BH1750 to measure grow-light intensity for plants?
Only roughly. It reads lux, weighted to the human eye, not PAR (the photosynthetic light plants use), and the two do not convert reliably across different light sources. For setting a crop light level or a daily light integral, use a quantum (PAR) sensor instead.
What is the BH1750 I2C address?
Usually 0x23, or 0x5C if the address pin is pulled high, which lets you run two on one bus. Set the right address in your library if the default does not respond.
Does the BH1750 work with ESPHome?
Yes. ESPHome has a dedicated BH1750 component, so you wire it to an ESP32 over I2C, add a few lines of config, and the lux reading appears in Home Assistant. Arduino libraries are also a one-line install.