Compteur belge. Récupérer les données avec Home Assistant et ESPHome

Cet article a pour but de vous expliquer comment remonter les données de votre compteur intelligent belge vers un superviseur domotique. Dans cette exemple, les données seront intégrées à Home Assistant mais il est tout à fait possible d’envoyer les données vers un autre superviseur.

Prérequis

Il vous faut bien sur un compteur intelligent belge compatible (mono ou tri) et les ports P1/S1 activés dessus, l’activation des ces ports est gratuit lors de l’installation et coûte 25€ en plus s’il est fait après (prix Ores).

Plus d’infos sur le compteur intelligent: https://www.ores.be/particuliers-et-professionnels/avantages-intelligent

Matériel nécessaire

Pour pouvoir communiquer avec notre compteur, il faut:
– Wemos D1 Mini
– Cable de 11cm avec 2 connecteurs RJ12
– PCB de support au Wemos
– Une boîte pour que ce soit propre (optionnel)
– Cable Mini usb pour pouvoir flasher le wemos

Si nous voulez un kit, vous pouvez en acheter un ici sur le site

HA, installation de ESPHome

La première chose a faire sur votre superviseur, c’est d’installer ESPHome, pour la procédure, je vous mets le lien du site officiel: https://esphome.io/guides/getting_started_hassio.html
ou un site en francais: https://hacf.fr/blog/esphome-introduction/

une fois sur la fenêtre ESPHome, cliquez sur New Device:

Pour la première configuration, l’esp doit être connecté physiquement sur le pc.

puis ESP8266:

vous avez reussi a créer le module:

on click ensuite sur skip. le module est ajouté sur le dashbord d’ESPHome:

on click ensuite sur le bouton Secret en haut a droite de la page

il faut configurer le wifi de votre domicile:

Sauvez puis quittez, on va maintenant mettre la config sur le wemos.

on click sur le bouton EDIT pour mettre la configuration. Voici un exemple type de configuration:

esphome:
  name: smartmeter
  friendly_name: smartmeter
  comment: "DIY P1 module to read your smart meter"
esp8266:
  board: d1_mini

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: !secret api_encryption_key

ota:
  password: ""

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Compteur Fallback Hotspot"
    password: "nG9yYfwOkvIM"
  # Optional manual IP
  # manual_ip: 
    # static_ip: $ADRESSE_IP_STATIQUE (ex: 192.168.0.10)
    # gateway: $PASSERELLE (ex: 192.168.0.1)
    # subnet: $LE_MASQUE_DE_SOUS_RESEAU (ex: 255.255.255.0)
captive_portal:
  
web_server:
  port: 80
# Example configuration entry

uart:
  baud_rate: 115200
  rx_pin: GPIO3

dsmr:
  id: dsmr_instance

sensor:
  - platform: dsmr
    # --- Electricity ---
    energy_delivered_tariff1:
      name: "Energy Consumed Tariff 1"
      state_class: total_increasing
    energy_delivered_tariff2:
      name: "Energy Consumed Tariff 2"
      state_class: total_increasing
    energy_returned_tariff1:
      name: "Energy Produced Tariff 1"
      state_class: total_increasing
    energy_returned_tariff2:
      name: "Energy Produced Tariff 2"
      state_class: total_increasing
    power_delivered:
      name: "Power Consumed"
      accuracy_decimals: 3
    power_returned:
      name: "Power Produced"
      accuracy_decimals: 3
    # electricity_failures:
    #   name: "Electricity Failures"
    #   icon: mdi:alert
    # electricity_long_failures:
    #   name: "Long Electricity Failures"
    #   icon: mdi:alert
    # electricity_sags_l1:
    #   name: "Voltage Sags Phase 1"
    #   icon: mdi:alert
    # electricity_sags_l2:
    #   name: "Voltage Sags Phase 2"
    #   icon: mdi:alert
    # electricity_sags_l3:
    #   name: "Voltage Sags Phase 3"
    #   icon: mdi:alert
    # electricity_swells_l1:
    #   name: "Voltage Swells Phase 1"
    #   icon: mdi:alert
    # electricity_swells_l2:
    #   name: "Voltage Swells Phase 2"
    #   icon: mdi:alert
    # electricity_swells_l3:
    #   name: "Voltage Swells Phase 3"
    #   icon: mdi:alert
    voltage_l1:
      name: "Voltage Phase 1"
    voltage_l2:
      name: "Voltage Phase 2"
    voltage_l3:
      name: "Voltage Phase 3"
    current_l1:
      name: "Current Phase 1"
    current_l2:
      name: "Current Phase 2"
    current_l3:
      name: "Current Phase 3"
    power_delivered_l1:
      name: "Power Consumed Phase 1"
      accuracy_decimals: 3
    power_delivered_l2:
      name: "Power Consumed Phase 2"
      accuracy_decimals: 3
    power_delivered_l3:
      name: "Power Consumed Phase 3"
      accuracy_decimals: 3
    power_returned_l1:
      name: "Power Produced Phase 1"
      accuracy_decimals: 3
    power_returned_l2:
      name: "Power Produced Phase 2"
      accuracy_decimals: 3
    power_returned_l3:
      name: "Power Produced Phase 3"
      accuracy_decimals: 3
    # --- Peak Tariff ---
    active_energy_import_current_average_demand:
      name: "Peak Current Average Quarterly Demand"
      icon: mdi:chart-sankey
    active_energy_import_maximum_demand_running_month:
      name: "Peak Month Maximum Quarterly Demand"
      icon: mdi:chart-sankey
    active_energy_import_maximum_demand_last_13_months:
      name: "Peak 13 Month Maximum Quarterly Demand"
      icon: mdi:chart-sankey
    # --- Gas ---
    # gas_delivered:
    #   name: "Gas Consumed"
    #   state_class: total_increasing
    # gas_delivered_be:
    #   name: "Gas Consumed Belgium"
    #   state_class: total_increasing
  - platform: uptime
    name: "smartmeter Uptime"
  - platform: wifi_signal
    name: "smartmeter Wi-Fi Signal"
    update_interval: 60s
 
text_sensor:
  - platform: dsmr
    identification:
      name: "DSMR Identification"
    # p1_version:
    #   name: "DSMR Version"
    p1_version_be:
      name: "DSMR Version Belgium"
    # timestamp:
    #   name: "DSMR Timestamp"
    electricity_tariff:
      name: "DSMR Tariff"
    # electricity_failure_log:
    #   name: "DSMR Electricity Failure Log"
    #   icon: mdi:message-alert-outline
    # message_short:
    #   name: "DSMR Message Short"
    #   icon: mdi:message-text-outline
    message_long:
      name: "DSMR Message Long"
      icon: mdi:message-text-outline
    # gas_equipment_id:
    #   name: "DSMR Gas Equipment ID"
    # water_equipment_id:
    #   name: "DSMR Water Equipment ID"
    # sub_equipment_id:
    #   name: "DSMR Sub Equipment ID"
    # gas_delivered_text:
    #   name: "DSMR Gas Delivered Text"
  - platform: wifi_info
    ip_address:
      name: "smartmeter IP Address"
    ssid:
      name: "smartmeter Wi-Fi SSID"
    bssid:
      name: "smartmeter Wi-Fi BSSID"
  - platform: version
    name: "ESPHome Version"
    hide_timestamp: true

Collez ce text dans le fichier yaml et faites INSTALL. sélectionnez “Plug into this computer”

attendre que le fichier soit généré avant de le télécharger. cliquez sur “open ESPHome Web”. cliquez sur “connect”

cliquez sur install puis sélectionnez le fichier .bin généré plus tôt:

et cliquez sur install. Le wemos doit devenir joignable en wifi. dans les logs d’installation, vous devriez trouver l’ip du module vous pouvez vous y connecter en http (ex: http://192.168.1.12)

et il devrait s’ajouter dans la liste des appareils:

Et vous devriez le retrouver sur le tableau de bord. pour le reste, a vous de voir ce que vous voulez en faire 🙂