Extraire une donnée de la payload

Bonjour à tous,

J’ai raccordé un clavier au protocole Wiegand à un ESP32 (donc avec les fils D0 et D1 du clavier)
Sur MQTT je reçois bien tout ce qui est tapé. Cependant j’aimerai créer un sensor qui me remonte le code saisi. Je ne sais pas comment isoler ce code dans la payload reçue.

Dans mon configuration.yaml j’ai rentré ces infos :

mqtt:
  sensor:
    - name: "Code saisi au clavier"
      state_topic: "clavierbnb/debug"

Quand j’écoute le topic je vois bien tout passer, le dialogue se fait.
Si j’appuie juste sur le chiffre 1 par exemple :

e[0;36m[D][main:175]: input progress: '1', started by '~'e[0m
e[0;36m[D][main:185]: input timeout: '1', started by '~'e[0m
e[0;36m[D][main:175]: input progress: '', started by '~'e[0m

Si maintenant je tape le code 1234 ET QUE JE VALIDE PAR #

e[0;32m[I][RAW:047]: received raw 4 bits, value 1e[0m
e[0;32m[I][KEY:043]: received key 1e[0m
e[0;36m[D][main:175]: input progress: '1', started by '~'e[0m
e[0;32m[I][RAW:047]: received raw 4 bits, value 2e[0m
e[0;32m[I][KEY:043]: received key 2e[0m
e[0;36m[D][main:175]: input progress: '12', started by '~'e[0m
e[0;32m[I][RAW:047]: received raw 4 bits, value 3e[0m
e[0;32m[I][KEY:043]: received key 3e[0m
e[0;36m[D][main:175]: input progress: '123', started by '~'e[0m
e[0;32m[I][RAW:047]: received raw 4 bits, value 4e[0m
e[0;32m[I][KEY:043]: received key 4e[0m
e[0;36m[D][main:175]: input progress: '1234', started by '~'e[0m
e[0;32m[I][RAW:047]: received raw 4 bits, value be[0m
e[0;32m[I][KEY:043]: received key 11e[0m
e[0;36m[D][main:180]: input result: '1234', started by '~', ended by '#'e[0m
e[0;36m[D][main:175]: input progress: '', started by '~'e[0m

Il est donc clair qu’ici c’est le « input result » qu’il me faut extraire.

Quelqu’un a une idée de comment faire cela ?

EDIT:
un screenshot lorsque je me connecte sur mon ESP sur le serveur web:

Bon, hé bien j’ai changé plusieurs choses, au niveau de l’intégration ESPHome.
J’ai reconfiguré mon appareil. Je n’ai pas utilisé ce que donnait la documentation officielle esphome.io pour mon clavier Wiegand, en particulier pour le « key collector ».

Voici un morceau de mon code qui déclare mon clavier :

wiegand:
  - id: clavierbnb
    d0: GPIO4
    d1: GPIO5
    on_key:
      - lambda: ESP_LOGI("KEY", "received key %d", x);
    on_tag:
      - lambda: ESP_LOGI("TAG", "received tag %s", x.c_str());
    on_raw:
      - lambda: ESP_LOGI("RAW", "received raw %d bits, value %llx", bits, value);

# Déclaration d'un text sensor
text_sensor:
  - platform: template
    name: "Code clavier saisi"
    id: code_clavier

# Définition du key collector
key_collector:
  - id: pincode_reader
    source_id: clavierbnb
    min_length: 4
    max_length: 4
    end_keys: "#"
    end_key_required: true
    back_keys: "*"
    clear_keys: "C"
    allowed_keys: "0123456789"
    timeout: 5s
    on_result:
      # Met à jour le text_sensor avec le code saisi
      - text_sensor.template.publish:
          id: code_clavier
          state: !lambda "return x.c_str();"
      # Enregistre également dans le log
      - logger.log:
          format: "input result: '%s'"
          args: [ 'x.c_str()' ]

    on_timeout:
      - logger.log:
          format: "input timeout: '%s', started by '%c'"
          args: [ 'x.c_str()', "(start == 0 ? '~' : start)" ]

Et c’est beaucoup plus propre et exploitable ensuite dans HA. ou dans MQTT
J’ai enfin mon « input result » qui arrive propre avec mes 4 chiffres et je n’ai plus qu’a faire mon automatisation, qui compare avec mon script, qui a généré un code à 4 chiffres.

Mon script en détail :

alias: Générer un code à 4 chiffres
sequence:
  - data:
      entity_id: input_text.code_securite
      value: "{{ '%04d' | format(range(10000) | random) }}"
    action: input_text.set_value
  - action: notify.persistent_notification
    metadata: {}
    data:
      message: Le code généré est {{ states('input_text.code_securite') }}
description: ""

Et donc pour finir mon automatisation :

alias: Nouvelle automatisation
description: ""
triggers:
  - trigger: state
    entity_id:
      - sensor.clavier_rfid_code_clavier_saisi
conditions:
  - condition: template
    value_template: >-
      {{ is_state('sensor.clavier_rfid_code_clavier_saisi',
      states('input_text.code_securite')) }}
actions:
  - type: turn_on
    device_id: ce07864bb5e95faa24920365b3ab44c5
    entity_id: 517ffeac51d7e3a8c8ed202e2ef5c263
    domain: switch
mode: single

Et sur mon lovelace: