KNX récupérer la valeur : energie totale+tarif de mon compteur energie

Bonjour à toutes et tous,

depuis quelques temps je migre mon installation knx et autre de Lifedomus vers HA. Dans l’ensemble cela se passe bien. Je cale sur un point : j’ai un compteur d’énergie KNX qui me récupère des données via des pinces ampères métriques mais aussi via la téléinfo. Et c’est là que j’ai un soucis je récupère l’énergie apparente en KVAh mais avec le tarif correspondant (plein ou réduit) c’est en 6 bytes et dans ha on peut avoir que en 4 bytes c’est à dire sans différentiation de tarif.

Comment je fais pour mettre les bonnes conso dans les bons tarifs. Là je sèche.

Merci

System Information

version core-2023.5.4
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.10.11
os_name Linux
os_version 6.1.25
arch aarch64
timezone Europe/Paris
config_dir /config
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 10.1
update_channel stable
supervisor_version supervisor-2023.04.1
agent_version 1.5.1
docker_version 23.0.3
disk_total 114.1 GB
disk_used 7.7 GB
healthy true
supported true
board odroid-n2
supervisor_api ok
version_api ok
installed_addons ESPHome (2023.5.4), MariaDB (2.6.1), Samba share (10.0.2), File editor (5.6.0), Mosquitto broker (6.2.1), AirSonos (3.5.4), Z-Wave JS (0.1.81), VLC (0.2.0), Tor (4.2.0), Node-RED (14.2.1), Advanced SSH & Web Terminal (15.0.1), Log Viewer (0.15.1), motionEye (0.19.1)
Dashboards
dashboards 2
resources 0
views 3
mode storage

Bonjour,

j’ai le même type d’installation pour le contrat tempo: un TE331 qui utilise le DPT 235.001 qui combine le DPT 13.010 et 5.006.
voici la méthode que j’ai trouvé:

  • créer un input_number par tarif:
Teleinfo HC Blanc   input_number.teleinfo_hc_blanc  Nombre
Teleinfo HC Bleu    input_number.teleinfo_hc_bleu   Nombre
Teleinfo HC Rouge   input_number.teleinfo_hc_rouge  Nombre
Teleinfo HP Blanc   input_number.teleinfo_hp_blanc  Nombre
Teleinfo HP Bleu    input_number.teleinfo_hp_bleu   Nombre
Teleinfo HP Rouge   input_number.teleinfo_hp_rouge  Nombre
  • utiliser une automatisation déclenchée sur knx_event avec une condition sur l’adresse de groupe du compteur KNX pour renseigner les input_number en fonction du tarif contenu dans les 6 octets
- id: '1679480262914'
  alias: Comptage KNX Teleinfo
  description: ''
  trigger:
  - platform: event
    event_type: knx_event
  condition:
  - condition: template
    value_template: '{{ trigger.event.data.destination == ''10/5/0'' }}'
  action:
  - choose:
    - conditions:
      - condition: template
        value_template: '{{trigger.event.data.data[4] == 8 }}'
      sequence:
      - service: input_number.set_value
        target:
          entity_id: input_number.teleinfo_hp_bleu
        data:
          value: "{{ (trigger.event.data.data[0] * 2**24) +\n   (trigger.event.data.data[1]
            * 2**16) +\n   (trigger.event.data.data[2] * 2**8) +\n   (trigger.event.data.data[3]
            * 2**0) }}    "
    - conditions:
      - condition: template
        value_template: '{{trigger.event.data.data[4] == 9 }}'
      sequence:
      - service: input_number.set_value
        target:
          entity_id: input_number.teleinfo_hp_blanc
        data:
          value: "{{ (trigger.event.data.data[0] * 2**24) +\n   (trigger.event.data.data[1]
            * 2**16) +\n   (trigger.event.data.data[2] * 2**8) +\n   (trigger.event.data.data[3]
            * 2**0) }}    "
    - conditions:
      - condition: template
        value_template: '{{trigger.event.data.data[4] == 10 }}'
      sequence:
      - service: input_number.set_value
        target:
          entity_id: input_number.teleinfo_hp_rouge
        data:
          value: "{{ (trigger.event.data.data[0] * 2**24) +\n   (trigger.event.data.data[1]
            * 2**16) +\n   (trigger.event.data.data[2] * 2**8) +\n   (trigger.event.data.data[3]
            * 2**0) }}    "
    - conditions:
      - condition: template
        value_template: '{{trigger.event.data.data[4] == 5 }}'
      sequence:
      - service: input_number.set_value
        target:
          entity_id: input_number.teleinfo_hc_bleu
        data:
          value: "{{ (trigger.event.data.data[0] * 2**24) +\n   (trigger.event.data.data[1]
            * 2**16) +\n   (trigger.event.data.data[2] * 2**8) +\n   (trigger.event.data.data[3]
            * 2**0) }}    "
    - conditions:
      - condition: template
        value_template: '{{trigger.event.data.data[4] == 6 }}'
      sequence:
      - service: input_number.set_value
        target:
          entity_id: input_number.teleinfo_hc_blanc
        data:
          value: "{{ (trigger.event.data.data[0] * 2**24) +\n   (trigger.event.data.data[1]
            * 2**16) +\n   (trigger.event.data.data[2] * 2**8) +\n   (trigger.event.data.data[3]
            * 2**0) }}    "
    - conditions:
      - condition: template
        value_template: '{{trigger.event.data.data[4] == 7 }}'
      sequence:
      - service: input_number.set_value
        target:
          entity_id: input_number.teleinfo_hc_rouge
        data:
          value: "{{ (trigger.event.data.data[0] * 2**24) +\n   (trigger.event.data.data[1]
            * 2**16) +\n   (trigger.event.data.data[2] * 2**8) +\n   (trigger.event.data.data[3]
            * 2**0) }}    "
  mode: single
  • Utiliser des templates pour formater les input_number et les rendre compatible avec l’utility_meter:
Template:
  sensor:
# Teleinfo
    - name: Compteur teleinfo hp bleu
      unique_id: 13e1cc21-f0bc-4b98-a442-bd37d577fa75
      state: "{{ states('input_number.teleinfo_hp_bleu') | multiply(0.001) | float }}"
      unit_of_measurement: kWh  
      device_class: energy
      state_class: total_increasing
      
    - name: Compteur teleinfo hp blanc
      unique_id: 33554c53-839b-491b-9938-a4eff8feaeca
      state: "{{ states('input_number.teleinfo_hp_blanc') | multiply(0.001) | float }}"
      unit_of_measurement: kWh  
      device_class: energy
      state_class: total_increasing
      
    - name: Compteur teleinfo hp rouge
      unique_id: 72f4785a-d29a-416f-8edd-b28e4faca662
      state: "{{ states('input_number.teleinfo_hp_rouge') | multiply(0.001) | float }}"
      unit_of_measurement: kWh  
      device_class: energy
      state_class: total_increasing
      
    - name: Compteur teleinfo hc bleu
      unique_id: 7991460b-b72c-4c4e-9e49-410a988df427
      state: "{{ states('input_number.teleinfo_hc_bleu') | multiply(0.001) | float }}"
      unit_of_measurement: kWh  
      device_class: energy
      state_class: total_increasing 

    - name: Compteur teleinfo hc blanc
      unique_id: ddd97174-68bc-412c-a835-db4358f76b17
      state: "{{ states('input_number.teleinfo_hc_blanc') | multiply(0.001) | float }}"
      unit_of_measurement: kWh  
      device_class: energy
      state_class: total_increasing

    - name: Compteur teleinfo hc rouge
      unique_id: d73b3286-021b-4e44-b1e5-9fe0af2a88e2
      state: "{{ states('input_number.teleinfo_hc_rouge') | multiply(0.001) | float }}"
      unit_of_measurement: kWh  
      device_class: energy
      state_class: total_increasing
      

il ne reste plus qu’a ajouter les compteurs au tableau de bord energy.

1 « J'aime »

Salut Nitro24, merci pour ta réponse. Je vais tester ça. Sur Lifedomus c’était fait pareil j’avais dû faire tout un montage pour pouvoir récupérer les infos mais là je séchais complet :grin:
Bonne journée à toi.