Hello,
Il peut rapidement devenir galère de switcher toutes les entités radar / esp ( LD2410 testé sous esp home ) si on doit en régler plusieurs… on parle de pas loin de 100 entités à chaque fois. On va simplifier tout ça. Je suis parti sur 3 entités parce que mes premiers esp sont basés sur ce modèle ( et que j’ai très accessoirement la flemme de revenir sur tout mon code ), donc il faudra vous en contenter ou adapter.
Commençons par rendre à César … je me suis basé sur l’excellente base ici Dashboard for ESPHome + LD2410 configuration - Dashboards & Frontend - Home Assistant Community
Les prérequis, outre que l’esp et le radar doivent déjà être configurés, au hasard … Multi-capteurs DIY : radar de présence, température, lumière et bien plus ![]()
Je ne travaille qu’avec des includes dans les esp, c’est le plus sûr moyen d’avoir exactement la même structure pour tous les esp ( tout au moins ceux avec des radars pour le coup ).
Il vous faut 1 dashboard ( en mode panneau ) à vous d’adapter. streamline card ( pas testé decluttering ) et plotly graph.

le template de la « mort », forcément vu qu’il contient toutes les cartes, il fait 500 lignes ou presque
Streamline template
streamline_templates:
radar_ld2410_global:
card:
type: horizontal-stack
cards:
- type: vertical-stack
cards:
- type: heading
heading: LD2410 - [[v_name]]
heading_style: title
icon: mdi:account
badges:
- type: entity
entity: binary_sensor.[[v_sensor]]_radar_target
- type: entity
entity: binary_sensor.[[v_sensor]]_radar_moving_target
- type: entity
entity: binary_sensor.[[v_sensor]]_radar_still_target
- type: history-graph
entities:
- entity: binary_sensor.[[v_sensor]]_radar_target
- entity: binary_sensor.[[v_sensor]]_radar_moving_target
- entity: binary_sensor.[[v_sensor]]_radar_still_target
hours_to_show: 0.05
- type: heading
icon: mdi:cog
heading: Configuration
- type: tile
entity: number.[[v_config]]_radar_timeout
features:
- type: numeric-input
style: buttons
- type: tile
entity: number.[[v_config]]_radar_max_move_distance
features:
- type: numeric-input
style: slider
- type: tile
entity: number.[[v_config]]_radar_max_still_distance
features:
- type: numeric-input
style: slider
- type: horizontal-stack
cards:
- type: tile
entity: switch.[[v_config]]_engineering_mode
name: Engineering
- type: tile
entity: button.[[v_config]]_query_params
name: Query
hide_state: true
- type: vertical-stack
cards:
- type: heading
icon: mdi:signal-distance-variant
heading: Distance
badges:
- type: entity
entity: select.[[v_config]]_distance_resolution
- type: entity
entity: sensor.[[v_sensor]]_radar_detection_distance
- type: entity
entity: sensor.[[v_sensor]]_radar_moving_distance
- type: entity
entity: sensor.[[v_sensor]]_radar_still_distance
- type: history-graph
entities:
- entity: sensor.[[v_sensor]]_radar_detection_distance
- entity: sensor.[[v_sensor]]_radar_moving_distance
- entity: sensor.[[v_sensor]]_radar_still_distance
hours_to_show: 0.05
- type: heading
icon: mdi:help
heading: Diagnostics
- type: tile
entity: sensor.[[v_config]]_uptime_jours_heures_et_minutes
- type: horizontal-stack
cards:
- type: tile
entity: sensor.[[v_config]]_intern_temp
- type: tile
entity: sensor.[[v_config]]_wifi_signal_strength
- type: vertical-stack
visibility:
- condition: state
entity: switch.[[v_config]]_engineering_mode
state: 'on'
cards:
- type: heading
heading: Moving Gates
icon: mdi:run-fast
- type: custom:plotly-graph
refresh_interval: 1
layout:
height: 250
margin:
l: 30
r: 10
t: 10
b: 30
xaxis:
type: linear
dtick: 1
range:
- 0
- 8
yaxis:
dtick: 20
range:
- 0
- 100
entities:
- entity: ''
name: Threshold
line:
color: '#FB239F'
width: 2
shape: spline
x:
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
'y': |
$ex [
hass.states['number.[[v_config]]_g0_move_threshold'].state,
hass.states['number.[[v_config]]_g1_move_threshold'].state,
hass.states['number.[[v_config]]_g2_move_threshold'].state,
hass.states['number.[[v_config]]_g3_move_threshold'].state,
hass.states['number.[[v_config]]_g4_move_threshold'].state,
hass.states['number.[[v_config]]_g5_move_threshold'].state,
hass.states['number.[[v_config]]_g6_move_threshold'].state,
hass.states['number.[[v_config]]_g7_move_threshold'].state,
hass.states['number.[[v_config]]_g8_move_threshold'].state
]
- entity: ''
name: Energy
line:
color: blue
width: 2
shape: spline
x:
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
'y': |
$ex [
hass.states['sensor.[[v_sensor]]_g0_move_energy'].state,
hass.states['sensor.[[v_sensor]]_g1_move_energy'].state,
hass.states['sensor.[[v_sensor]]_g2_move_energy'].state,
hass.states['sensor.[[v_sensor]]_g3_move_energy'].state,
hass.states['sensor.[[v_sensor]]_g4_move_energy'].state,
hass.states['sensor.[[v_sensor]]_g5_move_energy'].state,
hass.states['sensor.[[v_sensor]]_g6_move_energy'].state,
hass.states['sensor.[[v_sensor]]_g7_move_energy'].state,
hass.states['sensor.[[v_sensor]]_g8_move_energy'].state
]
- type: grid
columns: 1
square: false
cards:
- type: tile
entity: number.[[v_config]]_g0_move_threshold
name: Gate 0
icon: mdi:run-fast
vertical: false
features_position: inline
features:
- type: numeric-input
style: slider
- type: tile
entity: number.[[v_config]]_g1_move_threshold
name: Gate 1
icon: mdi:run-fast
vertical: false
features_position: inline
features:
- type: numeric-input
style: slider
- type: tile
entity: number.[[v_config]]_g2_move_threshold
name: Gate 2
icon: mdi:run-fast
vertical: false
features_position: inline
features:
- type: numeric-input
style: slider
- type: tile
entity: number.[[v_config]]_g3_move_threshold
name: Gate 3
icon: mdi:run-fast
vertical: false
features_position: inline
features:
- type: numeric-input
style: slider
- type: tile
entity: number.[[v_config]]_g4_move_threshold
name: Gate 4
icon: mdi:run-fast
vertical: false
features_position: inline
features:
- type: numeric-input
style: slider
- type: tile
entity: number.[[v_config]]_g5_move_threshold
name: Gate 5
icon: mdi:run-fast
vertical: false
features_position: inline
features:
- type: numeric-input
style: slider
- type: tile
entity: number.[[v_config]]_g6_move_threshold
name: Gate 6
icon: mdi:run-fast
vertical: false
features_position: inline
features:
- type: numeric-input
style: slider
- type: tile
entity: number.[[v_config]]_g7_move_threshold
name: Gate 7
icon: mdi:run-fast
vertical: false
features_position: inline
features:
- type: numeric-input
style: slider
- type: tile
entity: number.[[v_config]]_g8_move_threshold
name: Gate 8
icon: mdi:run-fast
vertical: false
features_position: inline
features:
- type: numeric-input
style: slider
- type: heading
heading: Historique Énergie
icon: mdi:chart-timeline-variant
- type: history-graph
entities:
- entity: sensor.[[v_sensor]]_g0_move_energy
name: G0 move energy
- entity: sensor.[[v_sensor]]_g1_move_energy
name: G1 move energy
- entity: sensor.[[v_sensor]]_g2_move_energy
name: G2 move energy
- entity: sensor.[[v_sensor]]_g3_move_energy
name: G3 move energy
- entity: sensor.[[v_sensor]]_g4_move_energy
name: G4 move energy
- entity: sensor.[[v_sensor]]_g5_move_energy
name: G5 move energy
- entity: sensor.[[v_sensor]]_g6_move_energy
name: G6 move energy
- entity: sensor.[[v_sensor]]_g7_move_energy
name: G7 move energy
- entity: sensor.[[v_sensor]]_g8_move_energy
name: G8 move energy
hours_to_show: 1
- type: vertical-stack
visibility:
- condition: state
entity: switch.[[v_config]]_engineering_mode
state: 'on'
cards:
- type: heading
heading: Still
icon: mdi:human-male
badges:
- type: entity
entity: binary_sensor.[[v_sensor]]_radar_still_target
- type: entity
entity: sensor.[[v_sensor]]_radar_still_distance
- type: custom:plotly-graph
refresh_interval: 1
layout:
height: 250
margin:
l: 30
r: 10
t: 10
b: 30
xaxis:
type: linear
dtick: 1
range:
- 0
- 8
yaxis:
dtick: 20
range:
- 0
- 100
entities:
- entity: ''
name: Threshold
line:
color: '#FB239F'
width: 2
shape: spline
x:
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
'y': |
$ex [
hass.states['number.[[v_config]]_g0_still_threshold'].state,
hass.states['number.[[v_config]]_g1_still_threshold'].state,
hass.states['number.[[v_config]]_g2_still_threshold'].state,
hass.states['number.[[v_config]]_g3_still_threshold'].state,
hass.states['number.[[v_config]]_g4_still_threshold'].state,
hass.states['number.[[v_config]]_g5_still_threshold'].state,
hass.states['number.[[v_config]]_g6_still_threshold'].state,
hass.states['number.[[v_config]]_g7_still_threshold'].state,
hass.states['number.[[v_config]]_g8_still_threshold'].state
]
- entity: ''
name: Energy
line:
color: green
width: 2
shape: spline
x:
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
'y': |
$ex [
hass.states['sensor.[[v_sensor]]_g0_still_energy'].state,
hass.states['sensor.[[v_sensor]]_g1_still_energy'].state,
hass.states['sensor.[[v_sensor]]_g2_still_energy'].state,
hass.states['sensor.[[v_sensor]]_g3_still_energy'].state,
hass.states['sensor.[[v_sensor]]_g4_still_energy'].state,
hass.states['sensor.[[v_sensor]]_g5_still_energy'].state,
hass.states['sensor.[[v_sensor]]_g6_still_energy'].state,
hass.states['sensor.[[v_sensor]]_g7_still_energy'].state,
hass.states['sensor.[[v_sensor]]_g8_still_energy'].state
]
- type: grid
columns: 1
square: false
cards:
- type: tile
entity: number.[[v_config]]_g0_still_threshold
name: Gate 0
icon: mdi:run-fast
vertical: false
features_position: inline
features:
- type: numeric-input
style: slider
- type: tile
entity: number.[[v_config]]_g1_still_threshold
name: Gate 1
icon: mdi:run-fast
vertical: false
features_position: inline
features:
- type: numeric-input
style: slider
- type: tile
entity: number.[[v_config]]_g2_still_threshold
name: Gate 2
icon: mdi:run-fast
vertical: false
features_position: inline
features:
- type: numeric-input
style: slider
- type: tile
entity: number.[[v_config]]_g3_still_threshold
name: Gate 3
icon: mdi:run-fast
vertical: false
features_position: inline
features:
- type: numeric-input
style: slider
- type: tile
entity: number.[[v_config]]_g4_still_threshold
name: Gate 4
icon: mdi:run-fast
vertical: false
features_position: inline
features:
- type: numeric-input
style: slider
- type: tile
entity: number.[[v_config]]_g5_still_threshold
name: Gate 5
icon: mdi:run-fast
vertical: false
features_position: inline
features:
- type: numeric-input
style: slider
- type: tile
entity: number.[[v_config]]_g6_still_threshold
name: Gate 6
icon: mdi:run-fast
vertical: false
features_position: inline
features:
- type: numeric-input
style: slider
- type: tile
entity: number.[[v_config]]_g7_still_threshold
name: Gate 7
icon: mdi:run-fast
vertical: false
features_position: inline
features:
- type: numeric-input
style: slider
- type: tile
entity: number.[[v_config]]_g8_still_threshold
name: Gate 8
icon: mdi:run-fast
vertical: false
features_position: inline
features:
- type: numeric-input
style: slider
- type: heading
heading: Historique Énergie Still
icon: mdi:chart-timeline-variant
- type: history-graph
entities:
- entity: sensor.[[v_sensor]]_g0_still_energy
name: G0 still energy
- entity: sensor.[[v_sensor]]_g1_still_energy
name: G1 still energy
- entity: sensor.[[v_sensor]]_g2_still_energy
name: G2 still energy
- entity: sensor.[[v_sensor]]_g3_still_energy
name: G3 still energy
- entity: sensor.[[v_sensor]]_g4_still_energy
name: G4 still energy
- entity: sensor.[[v_sensor]]_g5_still_energy
name: G5 still energy
- entity: sensor.[[v_sensor]]_g6_still_energy
name: G6 still energy
- entity: sensor.[[v_sensor]]_g7_still_energy
name: G7 still energy
- entity: sensor.[[v_sensor]]_g8_still_energy
name: G8 still energy
hours_to_show: 1
là c’est à vous de vérifier que vos entités sur l’esp sont raccord avec les entités du template, et ça sera plus simple de modifier le template.
Passé cette étape cruciale, vous allez dans votre dashboard mode panneau ( 1 carte ) et vous collez la plus grosse carte du monde…
type: custom:streamline-card
template: radar_ld2410_global
variables:
v_name: Labo
v_sensor: esp1_labo
v_config: esp_labo
c’est fini
vous réglez ce radar, vous changez les 3 entités, vous passez au suivant.
Attention, n’oubliez pa de switcher off le mode engineering avant de basculer sur un autre esp
Le clic d’activation du mode engineering déclenche l’affichage des cartes de réglages des gates.
N’hésitez pas à remonter d’éventuels problèmes que je n’aurai pas anticipé.
cdt
