Afgelopen weken heb ik ESPHome weer wat meer opgepakt. Ik heb al een paar jaar een aantal IKEA VINDRIKTNING met Wemos D1 Mini (ESP8266) draaien, maar ik wilde ook eens gaan spelen met o.a. BLE en mmWave presence detection. En daarmee dus ook die sensoren updaten.
Eerder dit jaar heb ik voor BLE presence detection wat goedkope OEM Lolin32 Lite bordjes op de kop getikt. Eerst met ESPresense, later met Bermuda. Dat werkte wel, maar enorm veel valse positieve die ik toch niet helemaal weg kreeg. Ook was er enorm veel verschil in gain tussen de verschillende bordjes. Dus dat heb ik als op zichzelf staand project laten varen.
Daarom heb ik een paar weken geleden een aantal LD2410's mmWave sensoren en een partijtje ESP32-C3 Super Mini bordjes gekocht bij Ali. Maar helaas heb ik een variant gekocht met
een brak antenne design waardoor deze enorm onbetrouwbaar zijn. Met name als je de hardware TX/RX pinnen van de C3's gebruikt. Die ik nodig heb voor de LD2410.
Vandaar heb ik besloten om verder te gaan met ESP32-C6. Om precies te zijn de bordjes van
DFRobot. Maar ook dit lijk ik niet stabiel te krijgen onder ESPHome

.
Mijn sketch met een SCD40, BMP280 en CCS811 over I2C, PM1006 en LD2410 over UART en BLE past echt net op het flashgeheugen van 4MB. Maar dan zonder web server of captive portal. Ik gebruik de Home Assistant API, maar soms valt de verbinding ineens weg en komt ook niet meer terug. Via MQTT kan ik niet eens een stabiele verbinding tot stand brengen.
Mijn (relevante) code:
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
| esphome:
name: ${name}
friendly_name: ${friendly_name}
name_add_mac_suffix: false
min_version: 2025.4.1
platformio_options:
build_flags: "-DI2C_NUM_1=I2C_NUM_0" # [esp32-c6]
esp32:
board: esp32-c6-devkitm-1
flash_size: 4MB
variant: ESP32C6
framework:
type: esp-idf
# Zelfde problemen op 5.3.1 met platform 6.9.0.
version: 5.4.1
platform_version: 54.03.20
sdkconfig_options:
# Ensure 4MB flash (probably not needed?)
CONFIG_ESPTOOLPY_FLASHSIZE_4MB: y
# Setup Wi-Fi
CONFIG_OPENTHREAD_ENABLED: n
CONFIG_ENABLE_WIFI_STATION: y
CONFIG_USE_MINIMAL_MDNS: y
# Setup Bluetooth
CONFIG_BT_CTRL_MODEM_SLEEP: y
CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY: y
CONFIG_BT_BLE_42_FEATURES_SUPPORTED: n # [bt]
CONFIG_BT_BLE_50_FEATURES_SUPPORTED: y # [bt]
# Increase the watchdog timeout to 10s to give low powered
# devices a little bit more breathing room.
CONFIG_ESP_TASK_WDT: y
CONFIG_ESP_TASK_WDT_TIMEOUT_S: "10"
# Enable Compiler optimization for size
CONFIG_COMPILER_OPTIMIZATION_SIZE: y
CONFIG_COMPILER_OPTIMIZATION: "size"
api:
encryption:
key: ${api_encryption_key}
# Ook PR #8483 geprobeerd, maar deze nieuwe I2C driver herkent
# mijn CCS811 en (fake) BMP280 niet
i2c:
sda: GPIO19
scl: GPIO20
scan: false
frequency: 100kHz
# LD2410 sensoren allemaal weggelaten, ik heb alles vanuit de officiële documentatie,
# maar is zo'n 300 regels configuratie en opmerkingen
# 🌍 https://esphome.io/components/sensor/ld2410.html
ld2410:
id: ld2410_sensor
uart_id: uart_ld2410
throttle: 2s
light:
- platform: status_led
id: status_led_1
internal: true
restore_mode: ALWAYS_OFF
pin:
number: GPIO15
ota:
platform: esphome
password: "${esphome_ota_password}"
safe_mode:
boot_is_good_after: 1min
reboot_timeout: 5min
# Sensor details weggelaten, maar alles heeft configuratie incl.
# filters om het aantal updates te verminderen.
sensor:
- platform: bmp280_i2c
- platform: ccs811
- platform: pm1006
- platform: scd4x
uart:
# Hardware UART for LD2410
- id: uart_ld2410
tx_pin: GPIO16
rx_pin: GPIO17
baud_rate: 256000 # [ld2410]
parity: NONE
stop_bits: 1
# Dedicated UART for PM1006
- id: uart_pm1006
rx_pin: GPIO4
baud_rate: 9600
# Hier ook power_save_mode geprobeerd en tevens btm/rrm
# maar maakt geen enkel verschil in stabiliteit.
wifi:
ssid: ${wifi_ssid}
password: ${wifi_password}
domain: ${wifi_domain}
ap:
ssid: ${name}
password: "" |
Wat ik vooral gek vind is dat de Heap Free (~120-150kB) en 15-20ms loop time mij niet echt slecht of bizar lijken. En soms werkt het ook meerdere uren totdat het ineens niet meer werkt. Ook zonder het BLE component trouwens. Zelfs OTA is dan ook nog mogelijk en werkt gewoon. Ik weet dus ook totaal niet meer wat ik nog zou kunnen proberen. Ik zie door de bomen het bos niet meer

.