Hallo alle zusammen,
ich möchte für mein Home Assistant einen Präsenzmelder und hatte mein Glück mit den AQARA FP2 versucht, doch das hat so ganz und gar nicht funktioniert.
Der hat nur ‘Geister’ erkannt und es waren zu jeder Zeit 1-2 Personen (zusätzlich) im Raum, auch wenn er leer war. Ai Erkennung usw. hat alles nichts gebracht. Auch nicht dieses Zurücksetzen/kalibrieren, also Raum leer lassen und dann soll das Gerät lernen, dass niemand im Raum ist. Kaum geht jemand in den Raum, kommen wieder die zusätzlichen Geister.
Also muss eine andere Lösung her und möchte es mit den LD2410C Sensoren und ESPHome (mit einem ESP32) versuchen - einen LD2450 habe ich auch noch bestellt, der braucht aber noch eine Weile, bis der hier ankommt.
Erstmal vorweg, das hier sind meine ersten Berührungspunkte mit ESPHome, ich kenne mich damit also noch so gar nicht aus - darum versuche ich meine Schritte möglichst genau zu beschreiben.
Ich hatte mir damals für WLED ein paar ESP32 NodeMCU (ESP32-D0WD-V3 (revision 3) mit CP2102) gekauft und da ich noch paar übrig habe, wollte ich einen für dieses Projekt abstellen.
Zuerst wollte ich in der ESPHome Integration in Home Assistant ein neues Gerät (+ New Device) erstellen doch irgendwas scheint mit den Serielle Schnittstellen in Vivaldi (mein Browser, basiert auf Chrome) verbuggt zu sein, das Problem haben momentan wohl mehrere.
Also hab ich dafür mal Microsofts Edge gestartet und auch da wollte das in Home Assistant nicht so recht, aber auf der Seite https://web.esphome.io hat es dann geklappt. Als ich damit fertig war, konnte ich den ESP32 in Home Assistant übernehmen (oder wie auch immer sich das nannte).
Dann ging es ans Verdrahten.
LD2410C Datenblatt
ESP32 Pinout
Ich habe VCC des LD2410C mit dem 5V Pin (siehe Pinout unten links) am ESP32 verbunden, GND des Sensors und des ESP verbunden, TX des Sensors mit RXD am ESP32 und RX des Sensors mit TXD am ESP32 verbunden (RXD/TXD sind im Pinout oben rechts dargestellt).
Das sollte es mit dem Verdrahten ja schon gewesen sein.
Da ich selbst kein Programmierprofi bin (ich habe nur rudimentäre Kenntnisse im Bereich Programmieren), habe ich nach bereits existierenden Projekten gesucht und habe den YAML code größtenteils abkopiert.
Ich habe einige existierende Projekte ausprobiert und Grundsätzlich machen die auch irgendwas, doch ich habe immer das Problem, dass sich die Werte nie aktualisieren.
Wenn ich immer wieder die Leitung zwischen LD2410C TX und RXD am ESP32 herausziehe und wieder einstecke, dann aktualisiert sich der Wert, das aber nur einmalig und ich muss dafür mehrmals die Leitung trennen und neu verbinden.
Dann dachte ich erst, dass vielleicht der Sensor einen defekt hat und wollte mich direkt mit dem Sensor via Bluetooth verbinden (es gibt vom Sensorhersteller dafür eine eigene Android App). Da Bluetooth scheinbar deaktiviert wird, wenn der Sensor Daten via dem Datenpins überträgt musste ich den dafür erst resetten (5 mal VCC in 2-3 sec. trennen und wieder verbinden laut Datenblatt). Getrennt von den Datenleitungen und verbunden mit der App überträgt er sehr flott alle Werte und aktualisiert die ca. sekündlich (vielleicht sogar etwas öfter).
Auch in Home Assistant auf meinem Raspberry Pi 4 wird er dann via Bluetooth erkannt und aktualisiert dort die Werte, allerdings ein klein wenig langsamer).
Leider ist die BT Reichweite des Sensors nicht zu gebrauchen und bin deswegen auch auf Lösungen wie ESPHome angewiesen, um die Reichweite zu erhöhen.
Also Gundlegend funktioniert der Senor, doch warum bekomme ich in Verbindung ESPHome keine Aktualisierungen hin?
Hier ist mal einer der YAML Codes den ich getestet hatte.
api encryption key und ota password habe ich für euch mal raus gelöscht.
esphome:
name: ld2410c
friendly_name: LD2410C
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
baud_rate: 0
# Enable Home Assistant API
api:
encryption:
key: "[KEY]"
ota:
- platform: esphome
password: "[pswd]"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Ld2410-Esp32 Fallback Hotspot"
password: ""
captive_portal:
uart:
id: ld2410_uart
tx_pin: GPIO1
rx_pin: GPIO3
baud_rate: 256000
parity: NONE
stop_bits: 1
rx_buffer_size: 256
ld2410:
uart_id: ld2410_uart
throttle: 1500ms
id: ld2410_comp
select:
- platform: ld2410
distance_resolution:
name: distance resolution
baud_rate:
name: baud rate
light_function:
name: light function
out_pin_level:
name: out pin level
button:
- platform: ld2410
factory_reset:
name: "factory reset"
restart:
name: "restart"
query_params:
name: query params
number:
- platform: ld2410
timeout:
name: timeout
max_move_distance_gate:
name: max move distance gate
max_still_distance_gate:
name: 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
light_threshold:
name: light threshold
text_sensor:
- platform: ld2410
version:
name: "presenece sensor version"
mac_address:
name: "presenece sensor mac address"
switch:
- platform: ld2410
engineering_mode:
name: "engineering mode"
bluetooth:
name: control Bluetooth
sensor:
- platform: ld2410
moving_distance:
name: "Moving distance (cm)"
still_distance:
name: "Still Distance (cm)"
moving_energy:
name: "Move Energy (%)"
still_energy:
name: "Still Energy (%)"
detection_distance:
name: "Distance Detection (cm)"
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
light:
name: light
binary_sensor:
- platform: ld2410
has_target:
name: Presence
has_moving_target:
name: Moving Target
has_still_target:
name: Still Target