Compteurs électrique Belge (Port P1) sur Home Assistant

Pour les machines HA distantes, une excellente solution consiste à employer le module de @TheD6Bel. Basé sur un esp8266, l’intégration avec espHome a permis de récupérer avec succès les valeurs de mon compteur :slight_smile:

1 « J'aime »

Hello, je me suis amusé à ajouter tout les sensors qui étaient possible d’ajouter
je me suis basé sur :

et retirer ceux qui ne sont pas compatibles avec nos compteurs:

voici mon YAML:

substitutions:
  name: p1-reader
  friendly_name: DSMR Reader

esphome:
  name: p1-reader
  platform: ESP8266
  board: d1_mini

# Enable Home Assistant API
api:
  encryption:
    key: "XXX"

ota:
  password: "XXX"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Dsmr Fallback Hotspot"
    password: "XXX"

captive_portal:

logger:
  # Serial logging is disabled by setting the logger baud rate to 0.
  # Otherwise the logger will occupy the hardware UART, making it unavailable
  # for receiving smart meter data on pin D7 (GPIO13).
  baud_rate: 0
  level: VERBOSE
  
uart:
  rx_pin: D7
  baud_rate: 115200
  rx_buffer_size: 1500


dsmr:
  request_pin: D5
  request_interval: 15s

sensor:
  - platform: dsmr
    energy_delivered_tariff1:
      name: ${friendly_name} Energy Delivered Tariff 1
      id: Delivered_Tariff1
      state_class: total_increasing
    energy_delivered_tariff2:
      name: ${friendly_name} Energy Delivered Tariff 2
      id: Delivered_Tariff2
      state_class: total_increasing
    energy_returned_tariff1:
      name: ${friendly_name} Energy Returned Tariff 1
      id: Returned_Tariff1
    energy_returned_tariff2:
      name: ${friendly_name} Energy Returned Tariff 2
      id: Returned_Tariff2
    power_delivered:
      name: ${friendly_name} Power Consumed
    power_returned:
      name: ${friendly_name} Power Returned
    electricity_failures:
      name: ${friendly_name} Electricity Failures
    electricity_long_failures:
      name: ${friendly_name} Electricity Long Failures
    voltage_l1:
      name: ${friendly_name} Voltage L1
    voltage_l2:
      name: ${friendly_name} Voltage L2
    voltage_l3:
      name: ${friendly_name} Voltage L3
    current_l1:
      name: ${friendly_name} Current L1
    current_l2:
      name: ${friendly_name} Current L2
    current_l3:
      name: ${friendly_name} Current L3
    power_delivered_l1:
      name: ${friendly_name} Power Delivered L1
    power_delivered_l2:
      name: ${friendly_name} Power Delivered L2
    power_delivered_l3:
      name: ${friendly_name} Power Delivered L3
    power_returned_l1:
      name: ${friendly_name} Power Returned L1
    power_returned_l2:
      name: ${friendly_name} Power Returned L2
    power_returned_l3:
      name: ${friendly_name} Power Returned L3
    gas_delivered_be:
      name: ${friendly_name} Gas Delivered BE
    active_energy_import_current_average_demand:
      name: ${friendly_name} Current Average
    active_energy_import_maximum_demand_running_month:
      name: ${friendly_name} Max Demande Running Month
    active_energy_import_maximum_demand_last_13_months:
      name: ${friendly_name} Max Demande Last 13 months
    water_delivered:
      name: ${friendly_name} Water Delivered

  - platform: wifi_signal
    name: "WiFi Signal Strenght"
    id: wifi_signal_db
    update_interval: 60s

  - platform: copy
    source_id: wifi_signal_db
    name: "WiFi Signal (percent)"
    id: wifi_signal_pct
    unit_of_measurement: "%"
    accuracy_decimals: 0
    filters:
      - lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
    entity_category: "diagnostic"

  - platform: template
    name: Energy Delivered Total
    unit_of_measurement: kWh
    lambda: |-
      return (id(Delivered_Tariff1).state + id(Delivered_Tariff2).state);
  - platform: template
    name: Energy Returned Total
    unit_of_measurement: kWh
    lambda: |-
      return (id(Returned_Tariff1).state + id(Returned_Tariff2).state);
    
text_sensor:
  - platform: dsmr
    identification:
      name: ${friendly_name} Identification
    p1_version_be:
      name: ${friendly_name} Version BE
    message_long:
      name: ${friendly_name} Message Long
  - platform: wifi_info
    ip_address:
      name: "IP Address"
    ssid:
      name: "WiFi SSID"
    bssid:
      name: "WiFi BSSID"

il y a beaucoup de sensors en plus (et tous ne seront pas fonctionnel chez vous), des infos sur le wifi du module et deux template qui calcul la somme total de la conso (tarif 1 + tarif 2) et de ce qui est envoyé dans le réseau, à vous de voir ce qui est utile pour vous :wink:

voici en image chez moi ce que ça donne ( j’ai un monophasé donc pas de L2 et L3 chez moi)

2 « J'aime »

Merci pour la mise à jour

J’utilisais déjà le calcul des consommations totales suite à nos échanges.

Merci pour le wifi, c’est commode de voir la qualité de la connexion du module dsmr.

oui c’est pratique, j’ai ajouté cette partie de code sur tous les modules esphome

Bonjour,
Quelqu’un a t’il une idée de la rallongedu cable maximum possible avec du cat5e ou 6 ?
Je dois avoir ± 15m entre le compteur et mon HA (rpi4b).
Sinon je partirai sur la solution de TheD6bel avec un D1 Mini en wifi :slight_smile:
Merci
Eddy
Saint-Denis, Belgique

Je ne sais pas te donner la longueur max, ma première installation avec un adaptateur USB/rj12 j’avais placé un câble cat 5e qui devait faire 6 ou 7 mètres connecté à un serveur HP gen8

Maintenant la longueur dépend de la puissance de l’USB et la puissance USB du RPI n’est pas folle, tu devrais le connecter avec un HUB USB alimenté pour pouvoir le faire et atteindre tes 15 mètres MAIS sans certitude :thinking:

Merci pour les infos et surtout pour tout le tuto.
Niveau alimentation USB, le Rpi ne va rien alimenter d’autre que la puce dans le connecteur USB du cable et comme ce connecteur USB sera du coté du Rpi, l’extension du cable va juste véhiculer les signaux qui doivent transiter jusqu’au compteur. Cable d’extension cat5 pas forcément adapté… (vu que le cat5/6 est torsadé et donc adapté à des signaux électriques en mode différentiel. Et les signaux ici sont seriels donc par rapport à la masse, si je ne me trompe pas)
Le risque c’est d’acheter le câble USB + extension en cat5 et que ça ne marche pas vu la rallonge… :frowning:
Je vais donc plutôt aller vers ta solution avec un D1 Mini et ESPHome/DSMR
En achetant le matériel ici: https://www.domohab.be/categorie-produit/passerelle/
Domohab a réalisé un tuto avec ESPeasy mais la solution ESPHome/DSMR me semble bien plus facile :slight_smile:

Encore merci
Eddy

Hello.
Finalement, je n’aurai mon compteur communicant que fin mars 2024 (mais gratuit car demande faite avant fin 2023, ouf).
J’ai vu une possibilité de prolonger en cable cat5/6 avec 2 convertisseurs-drivers de paires torsadées (liens ci-dessous) mais vu le prix… à moins de tenter de le faire soi-même vu qu’ils donnent les schémas.
Ces 2 modules convertissent des signaux logiques genre TTL en signaux différentiels pour paires torsadées, ce qui permet de transmettre sur 1 + grande longueur mais à tester :face_with_raised_eyebrow:
Récepteur:

Transmetteurs (driver):

Ce à quoi il faut toujours ajouter le cable serial-USB pour connection P1/DSMR si connection vers un pi3/4/5…
Si je trouve les IC en versions classiques (non-SMD) à un prix raisonnable, je testerai. Sinon, je resterai sur la solution du D1 mini :smile:
Eddy

:astonished: ha oui chaud :sweat_smile:

je ne suis pas aller voir les prix des IC mais pour une solution sans wifi je pensais plus pour un ESP32 avec carte réseau qui est géré par esphome

je vais regarder pour en commander un pour le tester et voir les possibilités/compatibilités avec le PCB que j’ai déjà

EDIT : j’ai pas trouver un esp32 qui pourrait utiliser le PCB tel quel, faudra soit le mapper avec des fils soit refaire le cablage avec une platine de test mais ça se joue

1 « J'aime »

Bonjour, je suis le créateur du petit module du site domohab. A l’origine, il a été développé pour Jeedom, juste pour moi , j’ai eu ensuite des demandes d’autres personnes sur jeedom, j’aa créé mon petit site pour facilité la vente. Ensuite, certaines parsonne de HA étaitent aussi interessées par celui ci. n’étant pas un pro de HA, j’ai fait le tuto avec un peu d’aide. Maintenant, s’il existe une solution plus simple, je suis interessé de la connaitre pour eventuellement l’ajouter. je n’ai pu le tester aussi que en Belgique, je ne peux pas garantir qu’il fonctionnera aussi dans les autres pays.

1 « J'aime »

regarde si tu sais adapter le code de esphome à ton montage:

en théorie il ne devrait pas y avoir trop de stress

projet initial sur git :

:wink:

Merci,

Je vais regarder cela. C’est sûrement faisable

après un peu de recherches et de découvertes, j’ai bien reussi a intégré les données dans HA a partir de ESP Home. rien n’a été modifié physiquement sur le module, la solution ESP Home marche aussi bien que ESP easy.


et ds les logs, j’ai les bonnes valeurs, reste plus qu’a vérifier que toutes les valeurs sont bien prises en compte…
ce qui est ok:
j’ai 33 valeurs qui remontent:

J’ai fait un petit tuto pour cette solution avec mon module, merci pour le coup de main

Merci « poluket » ! J’irai très certainement vers cette solution avec ESPHome.
Les IC pour « driver » une ligne en cat5/6 ne sont pas dispo en boitier DIL mais uniquement en SMD…
La soluce avec un ESP32-ETH a été testée par un developpeur (je ne retrouve pas le lien) et il rencontrait des problèmes d’incompatibilité avec le code DSMR pour ESPHome et le module ethernet et n’avait pas trouvé de solution dans l’immédiat…
Merci à tous et bonne fête :slight_smile:
[29-12-2023] Pour ceux qui ne veulent pas de wifi, je viens de voir ceci: https://www.zuidwijk.com/product/p1-reader-ethernet/

Je viens d’installer ce petit module suite à l’installation du compteur communicant.
Tout fonctionne à merveille dès le branchement, j’ai bien toutes les valeurs annoncées qui remontent dans ESP-Home.
C’est parfait, une solution simple et efficace.

2 « J'aime »

Bonjour TheD6BEL, je débute sur Home assistant, je ne possède pas supervisor, y a t il un autre moyen de rechercher l’USB? Merci pour le retour.

Hello, tu souhaites recherché le path de ton matériel, du genre /dev/ttyACM0?

Dans paramètres tu n’as pas système → matériel ?

Quel os utilises-tu?