I am using a ESP32 Camera board with the following sensors in ESPHome (Light Sensor BH1750FVI and Pressure+Temperture+Gas Sensor BME680). I have everything working with the exception of the Light Sensor BH1750FVI. I have the BME680 and the BH1750FVI wired to the same bus on the ESP32 Camera board. The wires are labeled correct for SCL and SDA. I do not have the address line from the BH1750FVI hooked up to anything. I have tried several configurations on wiring and in ESPHome to recongize the sensor and to date all it says is “unknown”. I have also tried different frequencies on the BH1750FVI with no success.
Please help me resolve this issue and to get the sensor working on the same I2C bus as the BME680. The camera bus is not accessible on the pin configuration for this board. See below.
Thanks in advance!!!
esphome:
name: esp32-cam1
friendly_name: ESP32 Cam1
esp32:
variant: esp32s3
framework:
type: esp-idf
# Enable logging
logger:
level: debug
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Optional manual IP
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Esp32-Cam1 Fallback Hotspot"
password:
captive_portal:
# Enable Home Assistant API
api:
ota:
- platform: esphome
password:
time:
- platform: homeassistant
i2c:
- id: camera_i2c
sda: GPIO04
scl: GPIO05
scan: true # This will list detected addresses in logs
#can only do 2 buses per esphome (daisy chain temp and light)
- id: bus_b
sda: GPIO42
scl: GPIO41
scan: true # This will list detected addresses in logs
frequency: 100000
# mmwanve
uart:
id: ld2410_uart
tx_pin: GPIO43
rx_pin: GPIO44
baud_rate: 256000
parity: NONE
stop_bits: 1
psram: # required for JPEG compression/conversion
mode: octal
speed: 80MHz
# Example configuration entry
esp32_camera:
name: Camera1
external_clock:
pin: GPIO15
frequency: 20MHz
i2c_id: camera_i2c
data_pins: [GPIO11, GPIO09, GPIO08, GPIO10, GPIO12, GPIO18, GPIO17, GPIO16]
vsync_pin: GPIO06
href_pin: GPIO07
pixel_clock_pin: GPIO13
# reset_pin: GPIOXX
resolution: 1280X1024
jpeg_quality: 12
# temperature
bme68x_bsec2_i2c:
i2c_id: bus_b
address: 0x77
model: bme680
operating_age: 28d
sample_rate: LP
supply_voltage: 3.3V
# mmwanve
ld2410:
uart_id: ld2410_uart
sensor:
#temperature
- platform: bme68x_bsec2
temperature:
name: "BME680 Temp"
pressure:
name: "BME680 Press"
humidity:
name: "BME680 Humidity"
iaq:
name: "BME680 IAQ"
id: iaq
co2_equivalent:
name: "BME680 CO2 Equivalent"
breath_voc_equivalent:
name: "BME680 Breath VOC Equivalent"
#light
- platform: bh1750
name: "BH1750 Illuminance"
i2c_id: bus_b
# # 0x23 for low and 0x5C for high
address: 0x23
update_interval: 60s
# mmwave
- platform: ld2410
light:
name: "ld2410 Light"
moving_distance:
name: "ld2410 Moving Distance"
still_distance:
name: "ld2410 Still Distance"
moving_energy:
name: "ld2410 Move Energy"
still_energy:
name: "ld2410 Still Energy"
detection_distance:
name: "ld2410 Detection Distance"
g0:
move_energy:
name: "G0 move energy"
still_energy:
name: "G0 still energy"
g1:
move_energy:
name: "G1 move energy"
still_energy:
name: "G1 still energy"
g2:
move_energy:
name: "G2 move energy"
still_energy:
name: "G2 still energy"
g3:
move_energy:
name: "G3 move energy"
still_energy:
name: "G3 still energy"
g4:
move_energy:
name: "G4 move energy"
still_energy:
name: "G4 still energy"
g5:
move_energy:
name: "G5 move energy"
still_energy:
name: "G5 still energy"
g6:
move_energy:
name: "G6 move energy"
still_energy:
name: "G6 still energy"
g7:
move_energy:
name: "G7 move energy"
still_energy:
name: "G7 still energy"
g8:
move_energy:
name: "G8 move energy"
still_energy:
name: "G8 still energy"
#temperature
text_sensor:
- platform: bme68x_bsec2
iaq_accuracy:
name: "BME680 IAQ Accuracy"
- platform: template
name: "BME680 IAQ Classification"
lambda: |-
if (int(id(iaq).get_state()) <= 50) {
return {"Excellent"};
} else if (int(id(iaq).get_state()) >= 51 && int(id(iaq).get_state()) <= 100) {
return {"Good"};
} else if (int(id(iaq).get_state()) >= 101 && int(id(iaq).get_state()) <= 150) {
return {"Lightly polluted"};
} else if (int(id(iaq).get_state()) >= 151 && int(id(iaq).get_state()) <= 200) {
return {"Moderately polluted"};
} else if (int(id(iaq).get_state()) >= 201 && int(id(iaq).get_state()) <= 250) {
return {"Heavily polluted"};
} else if (int(id(iaq).get_state()) >= 251 && int(id(iaq).get_state()) <= 350) {
return {"Severely polluted"};
} else if (int(id(iaq).get_state()) >= 351 && int(id(iaq).get_state()) <= 500) {
return {"Extremely polluted"};
} else {
return {"Error"};
}
# mmwave
- platform: ld2410
version:
name: "ld2410 Firmware version"
mac_address:
name: "ld2410 MAC address"
# mmwave
binary_sensor:
- platform: ld2410
has_target:
name: "ld2410 Presence"
has_moving_target:
name: "ld2410 Moving Target"
has_still_target:
name: "ld2410 Still Target"
out_pin_presence_status:
name: "ld2410 Out pin presence status"
# mmwave
switch:
- platform: ld2410
engineering_mode:
name: "ld2410 Engineering mode"
bluetooth:
name: "ld2410 Control bluetooth"
# mmwave
number:
- platform: ld2410
timeout:
name: "ld2410 Timeout"
light_threshold:
name: "ld2410 Light threshold"
max_move_distance_gate:
name: "ld2410 Max move distance gate"
max_still_distance_gate:
name: "ld2410 Max still distance gate"
g0:
move_threshold:
name: "G0 move threshold"
still_threshold:
name: "G0 still threshold"
g1:
move_threshold:
name: "G1 move threshold"
still_threshold:
name: "G1 still threshold"
g2:
move_threshold:
name: "G2 move threshold"
still_threshold:
name: "G2 still threshold"
g3:
move_threshold:
name: "G3 move threshold"
still_threshold:
name: "G3 still threshold"
g4:
move_threshold:
name: "G4 move threshold"
still_threshold:
name: "G4 still threshold"
g5:
move_threshold:
name: "G5 move threshold"
still_threshold:
name: "G5 still threshold"
g6:
move_threshold:
name: "G6 move threshold"
still_threshold:
name: "G6 still threshold"
g7:
move_threshold:
name: "G7 move threshold"
still_threshold:
name: "G7 still threshold"
g8:
move_threshold:
name: "G8 move threshold"
still_threshold:
name: "G8 still threshold"
# mmwave
button:
- platform: ld2410
factory_reset:
name: "ld2410 Factory reset"
restart:
name: "ld2410 Restart"
query_params:
name: "ld2410 Query params"
# mmwave
select:
- platform: ld2410
distance_resolution:
name: "ld2410 Distance resolution"
baud_rate:
name: "ld2410 Baud rate"
light_function:
name: "ld2410 Light function"
out_pin_level:
name: "ld2410 Out pin level"
To help visualize how I am hooking the sensors up, here is the layout.
Also here is the BH1750DVI that I am attempting to hookup.
It says it runs on 3.3v from hitlego.
Attached is the ESPHOME debug log:
[16:07:52.850][C][logger:219]: Logger:
[16:07:52.850][C][logger:219]: Max Level: DEBUG
[16:07:52.850][C][logger:219]: Initial Level: DEBUG
[16:07:52.850][C][logger:226]: Log Baud Rate: 115200
[16:07:52.850][C][logger:226]: Hardware UART: USB_SERIAL_JTAG
[16:07:52.872][C][logger:235]: Task Log Buffer Size: 768 bytes
[16:07:52.873][C][i2c.idf:092]: I2C Bus:
[16:07:52.873][C][i2c.idf:093]: SDA Pin: GPIO4
[16:07:52.873][C][i2c.idf:093]: SCL Pin: GPIO5
[16:07:52.873][C][i2c.idf:093]: Frequency: 50000 Hz
[16:07:52.873][C][i2c.idf:103]: Recovery: bus successfully recovered
[16:07:52.873][C][i2c.idf:113]: Results from bus scan:
[16:07:52.873][C][i2c.idf:119]: Found device at address 0x3C
[16:07:52.873][C][i2c.idf:092]: I2C Bus:
[16:07:52.873][C][i2c.idf:093]: SDA Pin: GPIO42
[16:07:52.873][C][i2c.idf:093]: SCL Pin: GPIO41
[16:07:52.873][C][i2c.idf:093]: Frequency: 50000 Hz
[16:07:52.873][C][i2c.idf:103]: Recovery: bus successfully recovered
[16:07:52.874][C][i2c.idf:113]: Results from bus scan:
[16:07:52.874][C][i2c.idf:119]: Found device at address 0x77
[16:07:52.874][C][uart.idf:254]: UART Bus 0:
[16:07:52.874][C][uart.idf:152]: TX Pin: GPIO43
[16:07:52.874][C][uart.idf:152]: RX Pin: GPIO44
[16:07:52.885][C][uart.idf:259]: RX Buffer Size: 256
[16:07:52.885][C][uart.idf:259]: RX Full Threshold: 120
[16:07:52.885][C][uart.idf:259]: RX Timeout: 2
[16:07:52.885][C][uart.idf:268]: Baud Rate: 256000 baud
[16:07:52.885][C][uart.idf:268]: Data Bits: 8
[16:07:52.885][C][uart.idf:268]: Parity: NONE
[16:07:52.885][C][uart.idf:268]: Stop bits: 1
[16:07:52.885][C][uart.idf:268]: Wake on data RX: ENABLED
[16:07:53.055][C][template.text_sensor:016]: Template Sensor 'BME680 IAQ Classification'
[16:07:53.099][C][homeassistant.time:010]: Home Assistant Time
[16:07:53.100][C][time:049]: Timezone: UTC-6:00 (DST UTC-5:00)
[16:07:53.100][C][time:055]: Current time: 2026-05-04 16:07:52
[16:07:53.113][C][psram:016]: PSRAM:
[16:07:53.113][C][psram:019]: Available: YES
[16:07:53.113][C][psram:021]: Size: 8192 KB
[16:07:53.113][C][esp32_camera:125]: ESP32 Camera:
[16:07:53.113][C][esp32_camera:125]: Name: Camera1
[16:07:53.113][C][esp32_camera:125]: Internal: NO
[16:07:53.113][C][esp32_camera:125]: Data Pins: D0:11 D1:9 D2:8 D3:10 D4:12 D5:18 D6:17 D7:16
[16:07:53.113][C][esp32_camera:125]: VSYNC Pin: 6
[16:07:53.113][C][esp32_camera:125]: HREF Pin: 7
[16:07:53.113][C][esp32_camera:125]: Pixel Clock Pin: 13
[16:07:53.113][C][esp32_camera:125]: External Clock: Pin:15 Frequency:20000000
[16:07:53.113][C][esp32_camera:125]: I2C Pins: SDA:-1 SCL:-1
[16:07:53.113][C][esp32_camera:125]: Reset Pin: -1
[16:07:53.114][C][esp32_camera:140]: Resolution: 1280x1024 (SXGA)
[16:07:53.114][C][esp32_camera:141]: Pixel Format: JPEG
[16:07:53.114][C][esp32_camera:154]: JPEG Quality: 12
[16:07:53.114][C][esp32_camera:154]: Framebuffer Count: 1
[16:07:53.114][C][esp32_camera:154]: Framebuffer Location: PSRAM
[16:07:53.114][C][esp32_camera:154]: Contrast: 0
[16:07:53.114][C][esp32_camera:154]: Brightness: 0
[16:07:53.114][C][esp32_camera:154]: Saturation: 0
[16:07:53.114][C][esp32_camera:154]: Vertical Flip: ON
[16:07:53.114][C][esp32_camera:154]: Horizontal Mirror: ON
[16:07:53.114][C][esp32_camera:154]: Special Effect: 0
[16:07:53.114][C][esp32_camera:154]: White Balance Mode: 0
[16:07:53.114][C][esp32_camera:170]: Auto Exposure Control: 1
[16:07:53.114][C][esp32_camera:170]: Auto Exposure Control 2: 0
[16:07:53.114][C][esp32_camera:170]: Auto Exposure Level: 0
[16:07:53.114][C][esp32_camera:170]: Auto Exposure Value: 300
[16:07:53.114][C][esp32_camera:170]: AGC: 1
[16:07:53.114][C][esp32_camera:170]: AGC Gain: 0
[16:07:53.114][C][esp32_camera:170]: Gain Ceiling: 0
[16:07:53.120][C][esp32_camera:184]: Test Pattern: NO
[16:07:53.128][C][bme68x_bsec2_i2c.sensor:030]: Address: 0x77
[16:07:53.128][C][bme68x_bsec2.sensor:066]: BME68X via BSEC2:
[16:07:53.128][C][bme68x_bsec2.sensor:066]: BSEC2 version: 2.6.1.0
[16:07:53.128][C][bme68x_bsec2.sensor:066]: BSEC2 configuration blob:
[16:07:53.128][C][bme68x_bsec2.sensor:066]: Configured: YES
[16:07:53.129][C][bme68x_bsec2.sensor:074]: Size: 1943
[16:07:53.129][C][bme68x_bsec2.sensor:088]: Operating age: 28 days
[16:07:53.129][C][bme68x_bsec2.sensor:088]: Sample rate: LP
[16:07:53.129][C][bme68x_bsec2.sensor:088]: Voltage: 3.3V
[16:07:53.129][C][bme68x_bsec2.sensor:088]: State save interval: 21600000ms
[16:07:53.129][C][bme68x_bsec2.sensor:088]: Temperature offset: 0.00
[16:07:53.129][C][bme68x_bsec2.sensor:017]: Temperature 'BME680 Temp'
[16:07:53.129][C][bme68x_bsec2.sensor:017]: State Class: 'measurement'
[16:07:53.129][C][bme68x_bsec2.sensor:017]: Unit of Measurement: '°C'
[16:07:53.129][C][bme68x_bsec2.sensor:017]: Accuracy Decimals: 1
[16:07:53.129][C][bme68x_bsec2.sensor:232]: Device Class: 'temperature'
[16:07:53.129][C][bme68x_bsec2.sensor:223]: Icon: 'mdi:thermometer'
[16:07:53.134][C][bme68x_bsec2.sensor:099]: Sample rate: Default
[16:07:53.134][C][bme68x_bsec2.sensor:017]: Pressure 'BME680 Press'
[16:07:53.134][C][bme68x_bsec2.sensor:017]: State Class: 'measurement'
[16:07:53.134][C][bme68x_bsec2.sensor:017]: Unit of Measurement: 'hPa'
[16:07:53.134][C][bme68x_bsec2.sensor:017]: Accuracy Decimals: 1
[16:07:53.134][C][bme68x_bsec2.sensor:232]: Device Class: 'atmospheric_pressure'
[16:07:53.134][C][bme68x_bsec2.sensor:101]: Sample rate: Default
[16:07:53.144][C][bme68x_bsec2.sensor:017]: Humidity 'BME680 Humidity'
[16:07:53.144][C][bme68x_bsec2.sensor:017]: State Class: 'measurement'
[16:07:53.144][C][bme68x_bsec2.sensor:017]: Unit of Measurement: '%'
[16:07:53.144][C][bme68x_bsec2.sensor:017]: Accuracy Decimals: 1
[16:07:53.144][C][bme68x_bsec2.sensor:232]: Device Class: 'humidity'
[16:07:53.144][C][bme68x_bsec2.sensor:223]: Icon: 'mdi:water-percent'
[16:07:53.144][C][bme68x_bsec2.sensor:103]: Sample rate: Default
[16:07:53.144][C][bme68x_bsec2.sensor:017]: CO2 equivalent 'BME680 CO2 Equivalent'
[16:07:53.144][C][bme68x_bsec2.sensor:017]: State Class: 'measurement'
[16:07:53.144][C][bme68x_bsec2.sensor:017]: Unit of Measurement: 'ppm'
[16:07:53.144][C][bme68x_bsec2.sensor:017]: Accuracy Decimals: 1
[16:07:53.144][C][bme68x_bsec2.sensor:232]: Device Class: 'carbon_dioxide'
[16:07:53.144][C][bme68x_bsec2.sensor:017]: Breath VOC equivalent 'BME680 Breath VOC Equivalent'
[16:07:53.144][C][bme68x_bsec2.sensor:017]: State Class: 'measurement'
[16:07:53.144][C][bme68x_bsec2.sensor:017]: Unit of Measurement: 'ppm'
[16:07:53.144][C][bme68x_bsec2.sensor:017]: Accuracy Decimals: 1
[16:07:53.145][C][bme68x_bsec2.sensor:232]: Device Class: 'volatile_organic_compounds_parts'
[16:07:53.152][C][bme68x_bsec2.sensor:017]: IAQ 'BME680 IAQ'
[16:07:53.152][C][bme68x_bsec2.sensor:017]: State Class: 'measurement'
[16:07:53.152][C][bme68x_bsec2.sensor:017]: Unit of Measurement: 'IAQ'
[16:07:53.152][C][bme68x_bsec2.sensor:017]: Accuracy Decimals: 0
[16:07:53.152][C][bme68x_bsec2.sensor:223]: Icon: 'mdi:gauge'
[16:07:53.152][C][bme68x_bsec2.sensor:016]: IAQ accuracy 'BME680 IAQ Accuracy'
[16:07:53.152][C][bme68x_bsec2.sensor:223]: Icon: 'mdi:checkbox-marked-circle-outline'
[16:07:53.152][C][ld2410:185]: LD2410:
[16:07:53.152][C][ld2410:185]: Firmware version: 2.44.24073110
[16:07:53.152][C][ld2410:185]: MAC address:
[16:07:53.152][C][ld2410:191]: Binary Sensors:
[16:07:53.152][C][ld2410:016]: Target 'ld2410 Presence'
[16:07:53.152][C][ld2410:232]: Device Class: 'occupancy'
[16:07:53.157][C][ld2410:016]: MovingTarget 'ld2410 Moving Target'
[16:07:53.157][C][ld2410:232]: Device Class: 'motion'
[16:07:53.157][C][ld2410:016]: StillTarget 'ld2410 Still Target'
[16:07:53.157][C][ld2410:232]: Device Class: 'occupancy'
[16:07:53.157][C][ld2410:016]: OutPinPresenceStatus 'ld2410 Out pin presence status'
[16:07:53.157][C][ld2410:232]: Device Class: 'presence'
[16:07:53.157][C][ld2410:198]: Sensors:
[16:07:53.157][C][ld2410:017]: Light 'ld2410 Light'
[16:07:53.157][C][ld2410:017]: State Class: ''
[16:07:53.157][C][ld2410:017]: Unit of Measurement: ''
[16:07:53.157][C][ld2410:017]: Accuracy Decimals: 0
[16:07:53.188][C][ld2410:232]: Device Class: 'illuminance'
[16:07:53.198][C][ld2410:223]: Icon: 'mdi:lightbulb'
[16:07:53.198][C][ld2410:017]: DetectionDistance 'ld2410 Detection Distance'
[16:07:53.198][C][ld2410:017]: State Class: ''
[16:07:53.198][C][ld2410:017]: Unit of Measurement: 'cm'
[16:07:53.198][C][ld2410:017]: Accuracy Decimals: 0
[16:07:53.199][C][ld2410:232]: Device Class: 'distance'
[16:07:53.199][C][ld2410:223]: Icon: 'mdi:signal-distance-variant'
[16:07:53.199][C][ld2410:017]: MovingTargetDistance 'ld2410 Moving Distance'
[16:07:53.199][C][ld2410:017]: State Class: ''
[16:07:53.199][C][ld2410:017]: Unit of Measurement: 'cm'
[16:07:53.199][C][ld2410:017]: Accuracy Decimals: 0
[16:07:53.199][C][ld2410:232]: Device Class: 'distance'
[16:07:53.199][C][ld2410:223]: Icon: 'mdi:signal-distance-variant'
[16:07:53.199][C][ld2410:017]: MovingTargetEnergy 'ld2410 Move Energy'
[16:07:53.199][C][ld2410:017]: State Class: ''
[16:07:53.199][C][ld2410:017]: Unit of Measurement: '%'
[16:07:53.199][C][ld2410:017]: Accuracy Decimals: 0
[16:07:53.199][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.199][C][ld2410:017]: StillTargetDistance 'ld2410 Still Distance'
[16:07:53.199][C][ld2410:017]: State Class: ''
[16:07:53.199][C][ld2410:017]: Unit of Measurement: 'cm'
[16:07:53.199][C][ld2410:017]: Accuracy Decimals: 0
[16:07:53.199][C][ld2410:232]: Device Class: 'distance'
[16:07:53.199][C][ld2410:223]: Icon: 'mdi:signal-distance-variant'
[16:07:53.199][C][ld2410:017]: StillTargetEnergy 'ld2410 Still Energy'
[16:07:53.199][C][ld2410:017]: State Class: ''
[16:07:53.199][C][ld2410:017]: Unit of Measurement: '%'
[16:07:53.199][C][ld2410:017]: Accuracy Decimals: 0
[16:07:53.200][C][ld2410:223]: Icon: 'mdi:flash'
[16:07:53.200][C][ld2410:017]: GateMove 'G0 move energy'
[16:07:53.200][C][ld2410:017]: State Class: ''
[16:07:53.200][C][ld2410:017]: Unit of Measurement: '%'
[16:07:53.200][C][ld2410:017]: Accuracy Decimals: 0
[16:07:53.200][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.200][C][ld2410:017]: GateMove 'G1 move energy'
[16:07:53.200][C][ld2410:017]: State Class: ''
[16:07:53.200][C][ld2410:017]: Unit of Measurement: '%'
[16:07:53.200][C][ld2410:017]: Accuracy Decimals: 0
[16:07:53.200][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.200][C][ld2410:017]: GateMove 'G2 move energy'
[16:07:53.200][C][ld2410:017]: State Class: ''
[16:07:53.200][C][ld2410:017]: Unit of Measurement: '%'
[16:07:53.200][C][ld2410:017]: Accuracy Decimals: 0
[16:07:53.200][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.200][C][ld2410:017]: GateMove 'G3 move energy'
[16:07:53.200][C][ld2410:017]: State Class: ''
[16:07:53.200][C][ld2410:017]: Unit of Measurement: '%'
[16:07:53.200][C][ld2410:017]: Accuracy Decimals: 0
[16:07:53.200][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.200][C][ld2410:017]: GateMove 'G4 move energy'
[16:07:53.200][C][ld2410:017]: State Class: ''
[16:07:53.200][C][ld2410:017]: Unit of Measurement: '%'
[16:07:53.200][C][ld2410:017]: Accuracy Decimals: 0
[16:07:53.209][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.209][C][ld2410:017]: GateMove 'G5 move energy'
[16:07:53.209][C][ld2410:017]: State Class: ''
[16:07:53.209][C][ld2410:017]: Unit of Measurement: '%'
[16:07:53.209][C][ld2410:017]: Accuracy Decimals: 0
[16:07:53.209][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.209][C][ld2410:017]: GateMove 'G6 move energy'
[16:07:53.209][C][ld2410:017]: State Class: ''
[16:07:53.209][C][ld2410:017]: Unit of Measurement: '%'
[16:07:53.209][C][ld2410:017]: Accuracy Decimals: 0
[16:07:53.209][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.209][C][ld2410:017]: GateMove 'G7 move energy'
[16:07:53.209][C][ld2410:017]: State Class: ''
[16:07:53.209][C][ld2410:017]: Unit of Measurement: '%'
[16:07:53.209][C][ld2410:017]: Accuracy Decimals: 0
[16:07:53.209][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.209][C][ld2410:017]: GateMove 'G8 move energy'
[16:07:53.209][C][ld2410:017]: State Class: ''
[16:07:53.209][C][ld2410:017]: Unit of Measurement: '%'
[16:07:53.209][C][ld2410:017]: Accuracy Decimals: 0
[16:07:53.220][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.220][C][ld2410:017]: GateStill 'G0 still energy'
[16:07:53.220][C][ld2410:017]: State Class: ''
[16:07:53.220][C][ld2410:017]: Unit of Measurement: '%'
[16:07:53.220][C][ld2410:017]: Accuracy Decimals: 0
[16:07:53.220][C][ld2410:223]: Icon: 'mdi:flash'
[16:07:53.220][C][ld2410:017]: GateStill 'G1 still energy'
[16:07:53.220][C][ld2410:017]: State Class: ''
[16:07:53.220][C][ld2410:017]: Unit of Measurement: '%'
[16:07:53.220][C][ld2410:017]: Accuracy Decimals: 0
[16:07:53.220][C][ld2410:223]: Icon: 'mdi:flash'
[16:07:53.220][C][ld2410:017]: GateStill 'G2 still energy'
[16:07:53.220][C][ld2410:017]: State Class: ''
[16:07:53.220][C][ld2410:017]: Unit of Measurement: '%'
[16:07:53.220][C][ld2410:017]: Accuracy Decimals: 0
[16:07:53.220][C][ld2410:223]: Icon: 'mdi:flash'
[16:07:53.220][C][ld2410:017]: GateStill 'G3 still energy'
[16:07:53.220][C][ld2410:017]: State Class: ''
[16:07:53.220][C][ld2410:017]: Unit of Measurement: '%'
[16:07:53.220][C][ld2410:017]: Accuracy Decimals: 0
[16:07:53.220][C][ld2410:223]: Icon: 'mdi:flash'
[16:07:53.220][C][ld2410:017]: GateStill 'G4 still energy'
[16:07:53.220][C][ld2410:017]: State Class: ''
[16:07:53.220][C][ld2410:017]: Unit of Measurement: '%'
[16:07:53.220][C][ld2410:017]: Accuracy Decimals: 0
[16:07:53.220][C][ld2410:223]: Icon: 'mdi:flash'
[16:07:53.220][C][ld2410:017]: GateStill 'G5 still energy'
[16:07:53.220][C][ld2410:017]: State Class: ''
[16:07:53.220][C][ld2410:017]: Unit of Measurement: '%'
[16:07:53.220][C][ld2410:017]: Accuracy Decimals: 0
[16:07:53.220][C][ld2410:223]: Icon: 'mdi:flash'
[16:07:53.221][C][ld2410:017]: GateStill 'G6 still energy'
[16:07:53.221][C][ld2410:017]: State Class: ''
[16:07:53.221][C][ld2410:017]: Unit of Measurement: '%'
[16:07:53.221][C][ld2410:017]: Accuracy Decimals: 0
[16:07:53.221][C][ld2410:223]: Icon: 'mdi:flash'
[16:07:53.221][C][ld2410:017]: GateStill 'G7 still energy'
[16:07:53.221][C][ld2410:017]: State Class: ''
[16:07:53.221][C][ld2410:017]: Unit of Measurement: '%'
[16:07:53.221][C][ld2410:017]: Accuracy Decimals: 0
[16:07:53.221][C][ld2410:223]: Icon: 'mdi:flash'
[16:07:53.221][C][ld2410:017]: GateStill 'G8 still energy'
[16:07:53.221][C][ld2410:017]: State Class: ''
[16:07:53.221][C][ld2410:017]: Unit of Measurement: '%'
[16:07:53.221][C][ld2410:017]: Accuracy Decimals: 0
[16:07:53.221][C][ld2410:223]: Icon: 'mdi:flash'
[16:07:53.221][C][ld2410:213]: Text Sensors:
[16:07:53.221][C][ld2410:016]: Mac 'ld2410 MAC address'
[16:07:53.221][C][ld2410:223]: Icon: 'mdi:bluetooth'
[16:07:53.221][C][ld2410:016]: Version 'ld2410 Firmware version'
[16:07:53.221][C][ld2410:223]: Icon: 'mdi:chip'
[16:07:53.221][C][ld2410:218]: Numbers:
[16:07:53.221][C][ld2410:016]: LightThreshold 'ld2410 Light threshold'
[16:07:53.221][C][ld2410:223]: Icon: 'mdi:lightbulb'
[16:07:53.221][C][ld2410:232]: Device Class: 'illuminance'
[16:07:53.221][C][ld2410:016]: MaxMoveDistanceGate 'ld2410 Max move distance gate'
[16:07:53.221][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.221][C][ld2410:232]: Device Class: 'distance'
[16:07:53.221][C][ld2410:016]: MaxStillDistanceGate 'ld2410 Max still distance gate'
[16:07:53.221][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.221][C][ld2410:232]: Device Class: 'distance'
[16:07:53.221][C][ld2410:016]: Timeout 'ld2410 Timeout'
[16:07:53.221][C][ld2410:223]: Icon: 'mdi:timelapse'
[16:07:53.228][C][ld2410:238]: Unit of Measurement: 's'
[16:07:53.228][C][ld2410:016]: MoveThreshold 'G0 move threshold'
[16:07:53.229][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.229][C][ld2410:238]: Unit of Measurement: '%'
[16:07:53.229][C][ld2410:232]: Device Class: 'signal_strength'
[16:07:53.229][C][ld2410:016]: MoveThreshold 'G1 move threshold'
[16:07:53.229][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.229][C][ld2410:238]: Unit of Measurement: '%'
[16:07:53.232][C][ld2410:232]: Device Class: 'signal_strength'
[16:07:53.232][C][ld2410:016]: MoveThreshold 'G2 move threshold'
[16:07:53.232][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.232][C][ld2410:238]: Unit of Measurement: '%'
[16:07:53.236][C][ld2410:232]: Device Class: 'signal_strength'
[16:07:53.237][C][ld2410:016]: MoveThreshold 'G3 move threshold'
[16:07:53.237][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.237][C][ld2410:238]: Unit of Measurement: '%'
[16:07:53.241][C][ld2410:232]: Device Class: 'signal_strength'
[16:07:53.241][C][ld2410:016]: MoveThreshold 'G4 move threshold'
[16:07:53.241][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.241][C][ld2410:238]: Unit of Measurement: '%'
[16:07:53.245][C][ld2410:232]: Device Class: 'signal_strength'
[16:07:53.245][C][ld2410:016]: MoveThreshold 'G5 move threshold'
[16:07:53.245][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.245][C][ld2410:238]: Unit of Measurement: '%'
[16:07:53.253][C][ld2410:232]: Device Class: 'signal_strength'
[16:07:53.253][C][ld2410:016]: MoveThreshold 'G6 move threshold'
[16:07:53.253][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.253][C][ld2410:238]: Unit of Measurement: '%'
[16:07:53.253][C][ld2410:232]: Device Class: 'signal_strength'
[16:07:53.253][C][ld2410:016]: MoveThreshold 'G7 move threshold'
[16:07:53.253][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.253][C][ld2410:238]: Unit of Measurement: '%'
[16:07:53.253][C][ld2410:232]: Device Class: 'signal_strength'
[16:07:53.253][C][ld2410:016]: MoveThreshold 'G8 move threshold'
[16:07:53.253][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.253][C][ld2410:238]: Unit of Measurement: '%'
[16:07:53.260][C][ld2410:232]: Device Class: 'signal_strength'
[16:07:53.260][C][ld2410:016]: StillThreshold 'G0 still threshold'
[16:07:53.260][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.260][C][ld2410:238]: Unit of Measurement: '%'
[16:07:53.262][C][ld2410:232]: Device Class: 'signal_strength'
[16:07:53.262][C][ld2410:016]: StillThreshold 'G1 still threshold'
[16:07:53.262][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.262][C][ld2410:238]: Unit of Measurement: '%'
[16:07:53.295][C][ld2410:232]: Device Class: 'signal_strength'
[16:07:53.295][C][ld2410:016]: StillThreshold 'G2 still threshold'
[16:07:53.295][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.295][C][ld2410:238]: Unit of Measurement: '%'
[16:07:53.295][C][ld2410:232]: Device Class: 'signal_strength'
[16:07:53.295][C][ld2410:016]: StillThreshold 'G3 still threshold'
[16:07:53.295][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.296][C][ld2410:238]: Unit of Measurement: '%'
[16:07:53.296][C][ld2410:232]: Device Class: 'signal_strength'
[16:07:53.296][C][ld2410:016]: StillThreshold 'G4 still threshold'
[16:07:53.296][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.296][C][ld2410:238]: Unit of Measurement: '%'
[16:07:53.296][C][ld2410:232]: Device Class: 'signal_strength'
[16:07:53.296][C][ld2410:016]: StillThreshold 'G5 still threshold'
[16:07:53.296][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.296][C][ld2410:238]: Unit of Measurement: '%'
[16:07:53.296][C][ld2410:232]: Device Class: 'signal_strength'
[16:07:53.296][C][ld2410:016]: StillThreshold 'G6 still threshold'
[16:07:53.296][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.296][C][ld2410:238]: Unit of Measurement: '%'
[16:07:53.296][C][ld2410:232]: Device Class: 'signal_strength'
[16:07:53.296][C][ld2410:016]: StillThreshold 'G7 still threshold'
[16:07:53.296][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.296][C][ld2410:238]: Unit of Measurement: '%'
[16:07:53.296][C][ld2410:232]: Device Class: 'signal_strength'
[16:07:53.296][C][ld2410:016]: StillThreshold 'G8 still threshold'
[16:07:53.296][C][ld2410:223]: Icon: 'mdi:motion-sensor'
[16:07:53.296][C][ld2410:238]: Unit of Measurement: '%'
[16:07:53.296][C][ld2410:232]: Device Class: 'signal_strength'
[16:07:53.296][C][ld2410:231]: Selects:
[16:07:53.296][C][ld2410:232]: BaudRate 'ld2410 Baud rate'
[16:07:53.296][C][ld2410:223]: Icon: 'mdi:thermometer'
[16:07:53.296][C][ld2410:233]: DistanceResolution 'ld2410 Distance resolution'
[16:07:53.296][C][ld2410:223]: Icon: 'mdi:ruler'
[16:07:53.296][C][ld2410:234]: LightFunction 'ld2410 Light function'
[16:07:53.296][C][ld2410:223]: Icon: 'mdi:lightbulb'
[16:07:53.296][C][ld2410:235]: OutPinLevel 'ld2410 Out pin level'
[16:07:53.296][C][ld2410:223]: Icon: 'mdi:scale'
[16:07:53.297][C][ld2410:238]: Switches:
[16:07:53.297][C][ld2410:088]: Bluetooth 'ld2410 Control bluetooth'
[16:07:53.297][C][ld2410:088]: Restore Mode: always OFF
[16:07:53.297][C][ld2410:223]: Icon: 'mdi:bluetooth'
[16:07:53.297][C][ld2410:232]: Device Class: 'switch'
[16:07:53.297][C][ld2410:088]: EngineeringMode 'ld2410 Engineering mode'
[16:07:53.297][C][ld2410:088]: Restore Mode: always OFF
[16:07:53.297][C][ld2410:223]: Icon: 'mdi:pulse'
[16:07:53.297][C][ld2410:232]: Device Class: 'switch'
[16:07:53.297][C][ld2410:243]: Buttons:
[16:07:53.297][C][ld2410:014]: FactoryReset 'ld2410 Factory reset'
[16:07:53.297][C][ld2410:223]: Icon: 'mdi:restart-alert'
[16:07:53.303][C][ld2410:014]: Query 'ld2410 Query params'
[16:07:53.303][C][ld2410:223]: Icon: 'mdi:database'
[16:07:53.303][C][ld2410:014]: Restart 'ld2410 Restart'
[16:07:53.303][C][ld2410:223]: Icon: 'mdi:restart'
[16:07:53.306][C][bh1750.sensor:017]: BH1750 'BH1750 Illuminance'
[16:07:53.306][C][bh1750.sensor:017]: State Class: 'measurement'
[16:07:53.306][C][bh1750.sensor:017]: Unit of Measurement: 'lx'
[16:07:53.306][C][bh1750.sensor:017]: Accuracy Decimals: 1
[16:07:53.311][C][bh1750.sensor:232]: Device Class: 'illuminance'
[16:07:53.311][C][bh1750.sensor:076]: Address: 0x23
[16:07:53.311][E][bh1750.sensor:078]: Communication failed for 'BH1750 Illuminance'
[16:07:53.314][C][bh1750.sensor:451]: Update Interval: 60.0s
[16:07:53.316][E][component:224]: bh1750.sensor is marked FAILED: unspecified
[16:07:53.322][C][captive_portal:134]: Captive Portal:
[16:07:53.337][C][wifi:1505]: WiFi:
[16:07:53.337][C][wifi:1505]: Local MAC:
[16:07:53.337][C][wifi:1505]: Connected: YES
[16:07:53.342][C][wifi:1216]: IP Address:
[16:07:53.342][C][wifi:1227]: SSID: [redacted]
[16:07:53.342][C][wifi:1227]: BSSID: [redacted]
[16:07:53.342][C][wifi:1227]: Hostname: 'esp32-cam1'
[16:07:53.342][C][wifi:1227]: Signal strength: -57 dB ▂▄▆█
[16:07:53.342][C][wifi:1227]: Channel: 11
[16:07:53.342][C][wifi:1227]: Subnet: 255.255.255.0
[16:07:53.342][C][wifi:1227]: Gateway:
[16:07:53.342][C][wifi:1227]: DNS1: 0.0.0.0
[16:07:53.342][C][wifi:1227]: DNS2: 0.0.0.0
[16:07:53.344][C][esphome.ota:071]: Over-The-Air updates:
[16:07:53.344][C][esphome.ota:071]: Address:
[16:07:53.344][C][esphome.ota:071]: Version: 2
[16:07:53.344][C][esphome.ota:078]: Password configured
[16:07:53.360][C][safe_mode:026]: Safe Mode:
[16:07:53.360][C][safe_mode:026]: Successful after: 60s
[16:07:53.360][C][safe_mode:026]: Invoke after: 10 attempts
[16:07:53.360][C][safe_mode:026]: Duration: 300s
[16:07:53.364][C][safe_mode:043]: Bootloader rollback: supported
[16:07:53.364][C][web_server.ota:256]: Web Server OTA
[16:07:53.382][C][api:235]: Server:
[16:07:53.382][C][api:235]: Address:
[16:07:53.382][C][api:235]: Listen backlog: 4
[16:07:53.382][C][api:235]: Max connections: 8
[16:07:53.391][C][api:247]: Noise encryption: NO
[16:07:53.391][C][mdns:194]: mDNS:
[16:07:53.391][C][mdns:194]: Hostname: esp32-cam1
For start you have address 0x23 stated for light sensor in your program, while log finds device on address 0x3C, not on 0x23 (and 0x77 which is your other sensor). Try changing 0x23 to 0x3C and see.
So you connect both the BME680 and the BH1750FVI to the same pins, like is shown in your scheme as well. But then why are you defining different pins for them?
I think that GPIO04 and GPIO05 are reserved for the camera on this type of ESP32S3 board. According to the shown board layout these GPIO’s are not accessible via the 16 pins at the side of the board.
The device found on the I2C bus on GPIO04 / GPIO05 with address 0x3C probably is related to the also connected camera.
Try to configure it like this, so with both devices using GPIO41 and GPIO42
i2c:
sda: GPIO42
scl: GPIO41
scan: true # This will list detected addresses in logs
frequency: 100000 # might need to be changed
# temperature
bme68x_bsec2_i2c:
address: 0x77
model: bme680
operating_age: 28d
sample_rate: LP
supply_voltage: 3.3V
sensor:
#temperature
- platform: bme68x_bsec2
temperature:
name: "BME680 Temp"
pressure:
name: "BME680 Press"
humidity:
name: "BME680 Humidity"
iaq:
name: "BME680 IAQ"
id: iaq
co2_equivalent:
name: "BME680 CO2 Equivalent"
breath_voc_equivalent:
name: "BME680 Breath VOC Equivalent"
#light
- platform: bh1750
name: "BH1750 Illuminance"
# # 0x23 for low and 0x5C for high
address: 0x23
update_interval: 60s
Like this you don´t need to define separate I2C bus id’s
neel-m
(Neel Malik)
May 5, 2026, 1:46pm
7
That device at 0x3C is on the other bus, so probably the camera.
Have you tried something simple with just the BH1750DVI hooked up?
Right now there are too many unknowns. It could be the sensor is defective. It could be hooked up incorrectly. It could be conflicting with the other sensor.
Have you tried a different esp board without all the other stuff?
neel-m
(Neel Malik)
May 5, 2026, 1:51pm
8
From the letscontrolit site
Your BH1750 does not show up at I²C-scan
Usually this failure results of cabling faults. If your device does not show up, SCL and SCA might be swapped or the module does not get power or ground. If you are testing on a breadboard, the breadboard contacts might be worn out or you got some faulty cables. A digital multimeter will help with this situations.
Great solutions. To answer some questions: The GPIO pins 4 and 5 are not hooked up to either the BH1750FVI or the BME680 sensors, so yes that is the camera on the ESP32Cam board. The BH1750FVI and the BME680 are hooked up to pins GPIO 41 & 42. Address 0x77 that is recognized in the i2c scan is the BME680 board per the yaml. Readings on it have been perfect. So yes the biggest problem I have is non-recognition of the BH1750FVI showing up at all. I did buy two of these sensors and will play around with the cables / sensor to see if I can get ESPHome to recognize the sensor during the sensor scan.
Let me know if anyone has other thoughts for sure.
I am wrong here: you are using GPIO04 / GPIO05 for the camera I2C only, via bus id: camera_i2c and GPIO42 / GPIO41 for both the BME680 and BH1750VFI via bus id: bus_b
So this must be correct then.
There is no wrong here for sure. I appreciate the help. Going to troubleshoot today.
Ok did some quick double checking. Put a new BH1750FVI sensor on the wiring and it popped up immediately !!! Problem solved!!!
So appreciate all the help to overlook to make sure I wasn’t missing anything. Sometimes it takes a collective to get these sensors / configurations to work. Have a great day everyone!!!
2 Likes