Modbus : créer plusieurs entité en une seule fois

Bonjour !

J’ai fais l’acquisition d’un petit boitier Modbus TCP 12 entrées 16 sorties relais. Pile poil ce dont j’avais besoin pour ma gestion du fil pilote ! Mais bon, ça, c’est si cela fonctionne :grin:

J’ai commencé par la partie « entrées ». Voici mon modbus.yaml appelé par « modbus: !include modbus.yaml » dans mon configuration.yaml :

# Paramétrage de l'interface fil pilote
- name: Fil pilote
  type: tcp
  host: 192.168.74.22
  port: 500
  delay: 2                          # Délai (s) avant premier message après connexion
  message_wait_milliseconds: 30     # Délai (ms) minimal entre 2 requête
  timeout: 5                        # Délai (s) attente réponse

  binary_sensors:
     === 12 entrées digitales (discrete inputs) ===
     - name: input_01
       address: 0
       input_type: discrete_input

     - name: input_02
       address: 1
       input_type: discrete_input

     - name: input_03
       address: 2
       input_type: discrete_input

     - name: input_04
       address: 3
       input_type: discrete_input

     - name: input_05
       address: 4
       input_type: discrete_input

     - name: input_06
       address: 5
       input_type: discrete_input

     - name: input_07
       address: 6
       input_type: discrete_input

     - name: input_08
       address: 7
       input_type: discrete_input

     - name: input_09
       address: 8
       input_type: discrete_input

     - name: input_10
       address: 9
       input_type: discrete_input

     - name: input_11
       address: 10
       input_type: discrete_input

     - name: input_12
       address: 11
       input_type: discrete_input

Et ça fonctionne ! Sauf que l’intervalle de scrutation est de 15 secondes … trop long. Donc je me suis dit « pas de soucis, on va ajouter un scan_interval: 1 et ça devrait le faire ».

Mais je me suis aussi demandé s’il n’était pas possible de faire l’opération en une seule ligne. et du coup, j’ai saisi ceci (un peu aidé par ChatGPT, j’avoue):

  binary_sensors:
    - name: fil_pilote_entree 
      address: 0 
      input_type: discrete_input 
      scan_interval: 1 
      slave_count: 11

Mais voici le résultat :


J’ai bien mes 12 entrées, mais la première n’a pas d’indice numérique, et on va jusqu’à 11. Soit j’aimerais un indice numérique de 0 à 11, soit de 1 à 12, mais là, c’est un peu « bancal ».

Y a t’il une solution à ce « problème » (qui n’est qu’esthétique j’en conviens) ?

Bon, je me réponds moi-même, même si je trouve que c’est de la triche :joy:

J’ai ajouté la génération d’un entity_id :

  binary_sensors:
    - name: fil_pilote_entree 
      address: 0 
      input_type: discrete_input 
      scan_interval: 5              # Problèmes de stabilité si inférieur
      virtual_count: 11
      unique_id: fil_pilote_entree

Ce qui me permets directement de modifier le nom de cette entrée dans le GUI de HA

TADAAA !

Bon, c’est de 0 à 11, c’est pas grave. Au pire, je peux renommer toutes les entrées.
Notez le passage de scan interval à 5 secondes, j’ai eu un avertissement de risque de perte de stabilité de HA si on mettait moins de 5 secondes…

Si d’autres personnes souhaitent intervenir, n’hésitez pas :blush:

1 « J'aime »