[TUTO] bcp de 2410 à régler ? 1 template 3 entités et switchez de l'un à l'autre

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 :smiley:

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.

Peek 21-03-2026 12-50

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 :slight_smile: 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

1 « J'aime »