PZEM-004T V3 avec wemos esp8266 D1 mini

Bonjour à tous, j’essaie de paramétrer avec esphome et un wemos D1 mini le suivi de ma consommation avec un PZEM-004T V3.

Malheureusement je ne vois pas où est le problème. J’ai bien les entités qui se créent mais aucune information ne remonte. Avez-vous des idées? Merci d’avance les amis

esphome:
  name: esphome-web-132cb9
  friendly_name: Linky

esp8266:
    board: d1_mini

# Enable logging
logger:


ota:


wifi:


uart:
  - id: ubus1
    tx_pin: 4
    rx_pin: 5
    baud_rate: 9600
    stop_bits: 1    
  

time:
  platform: sntp
  id: my_time
  
  on_time:
      - seconds: 00
        minutes: 00
        hours: 00
        then:  
          - sensor.template.publish:
              id: template_enedis_veille
              state: !lambda return id(enedis_puissance_du_jour).state;
  
sensor:
   
      #### PZEM-004T V3 ####
    
  - platform: pzemac
    address: 1
    current:
      name: "enedis_courant"
      accuracy_decimals: 2
    voltage:
      name: "enedis_tension"
      accuracy_decimals: 2
    power:
      name: "enedis_puissance"
      unit_of_measurement: W
      accuracy_decimals: 2
      id: enedis_puissance
    frequency:
      name: "enedis_frequence"
      unit_of_measurement: Hz
      accuracy_decimals: 2
    power_factor:
      name: "enedis_facteur_puissance"
      accuracy_decimals: 2
      id: enedis_facteur_puissance
    energy:
      name: "enedis_energy"
      unit_of_measurement: Wh
      accuracy_decimals: 1
      id: enedis_energy
    update_interval: 5s

    
  - platform: template
    name: "enedis_puissance_cumulee"
    unit_of_measurement: "kWh"
    accuracy_decimals: 1
    update_interval: 5s
    icon: mdi:power
    lambda: return (( (id(enedis_energy).state)/1000.0));
    
  - platform: total_daily_energy
    name: "enedis_du_jour"
    power_id: enedis_puissance 
    unit_of_measurement: "kWh"
    accuracy_decimals: 2
    id: enedis_puissance_du_jour
    filters:
        # Multiplication factor from W to kW is 0.001
        - multiply: 0.001
    icon: mdi:counter
    
  - platform: template
    name: "enedis_veille"
    id: template_enedis_veille
    unit_of_measurement: "kwh"
    accuracy_decimals: 2
    icon: mdi:power
    update_interval: 10s
    
  - platform: template
    name: "enedis_puissance_apparente"
    id: enedis_puissance_apparente
    unit_of_measurement: "VA"
    accuracy_decimals: 2
    update_interval: 10s
    icon: mdi:power
    lambda: return ( (id(enedis_puissance).state/id(enedis_facteur_puissance).state));
  
  - platform: template
    name: "enedis_puissance_reactive"
    id: enedis_puissance_reactive
    unit_of_measurement: "VAr"
    accuracy_decimals: 2
    update_interval: 10s
    icon: mdi:power
    #lambda: return ( ((id(enedis_puissance_reactive).state)*sin(acos((id(enedis_facteur_puissance).state))) ) );
    #lambda: return ( ( sqrt( (id(enedis_puissance_reactive).state)*(id(enedis_puissance_reactive).state)   -  (id(enedis_facteur_puissance).state)*(id(enedis_facteur_puissance).state) ) )  );
    lambda: return (  id(enedis_puissance).state*sin(acos( id(enedis_facteur_puissance).state ))  );
    
  - platform: wifi_signal
    name: "WiFi puissance_enedis"
    update_interval: 10s
    
  - platform: uptime
    name: "up_enedis"
    id: uptime_sec 
 
switch:
  - platform: restart
    name: "tableau_restart"
    
  - platform: uart
    uart_id: ubus1
    name: "enedis reset ernergy"
    data: [0x01, 0x42, 0x80, 0x11]  
    
    
binary_sensor:
  - platform: status
    name: "tableau_status"    
    
    
text_sensor:
  - platform: template
    name: enedis_uptime
    lambda: |-
      int seconds = (id(uptime_sec).state);
      int days = seconds / (24 * 3600);
      seconds = seconds % (24 * 3600); 
      int hours = seconds / 3600;
      seconds = seconds % 3600;
      int minutes = seconds /  60;
      seconds = seconds % 60;
      return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
    icon: mdi:clock-start
    update_interval: 113s        

Bonjour, pour ma part , j’utilise aussi des PZEM-004T V3 avec des wemos mini mais avec tasmota !!
No prise de tête ! full compatible avec home assistant !!
https://easydomoticz.com/forum/viewtopic.php?f=24&t=8420

Je vais explorer cela mais le tuto est fait pour Domoticz … et moi, mqtr,et homeassistant on a du mal a se comprendre lol ( je suis une bille en mqtt lol )

le lien c’est pour le principe de l’instal sur l’esp … ensuite que se soit gérer sur domoticz ou home assistant c’est autre chose … et sur home assistant tu configure lors de l’instal le wifi et l’adresse mqtt et c’est tout … home asistant le reconnait de suite …

je me suis lancer et j’ai cela en page d’acceuil :

j’ai bien la led qui clignotte sur le pzem004t

ca commence mal lol

Salut je ne vois nulle part dans ton code le « keyword » modbus

d’apres la doc d’esphome

c’est indispensable car la communication entre ton ESP et le PZEM se fait via le protocole MODBUS si je ne me trompe pas

tu as E-2-NOMY qui a fait une video

Perso , je me suis aider de ce site :
https://miniprojets.net/index.php/2020/12/19/une-alternative-diy-au-linky-pzem004t-wemos-tasmota-mqtt/

Ca avance un peux, j’ai la led Tx sur mon pzem qui clignote bien mais pas la Rx

Bon ca bloque la… je met bien le Tx de l’un avec le Rx de l’autre ?

Alelouya!

Je partage ma conf sous tasmota tout a l’heure avec les spécificités du câblage !

J’ai suivi le lien du tuto donné plus haut,

Ma config a un wemos d1 mini

Mon shema de cablage:

Noté bien que cest le 3v3 qui est utilisé et non le 5v … je ne sais pas si cela change quelque chose mais ca fonctionne.