Zendure smart meter 3CT via MQTT dans home assistant

J’ai eu un souci précis après redémarrage de Home Assistant :

  • Le SmartMeter 3CT (qui est en MQTT) devenait parfois indisponible.
  • Comme Zendure (SolarFlow 800) utilise cette mesure réseau, la sortie pouvait retomber à 0W.
  • Dans l’activité, on voyait des passages en unknown / valeurs incohérentes.

Mon architecture est la suivante (importante) :

La solution qui stabilise :

  1. Créer un capteur intermédiaire sensor.power_actual basé sur le SmartMeter réel
    (à mettre dans [templates.yaml])
sensor:
  - name: "Power Actual"
    unique_id: power_actual
    unit_of_measurement: "W"
    device_class: power
    state_class: measurement
    state: >
      {{ states('nom de l'entité smartmeter 3ct') | float(0) }}
    availability: >
      {{ has_value(nom de l'entité smartmeter 3ct') }}
  1. Ajouter une automation de sécurité qui réapplique 800W si la limite de sortie tombe à 0
    (à mettre dans [automations.yaml])
- id: 'id de l'automatisation'
  alias: "SolarFlow800 - Réappliquer limite sortie après reboot"
  mode: restart
  triggers:
    - trigger: homeassistant
      event: start
    - trigger: state
      entity_id: number.solarflow_800_output_limit
      to: "0"
      for: "00:00:10"
  actions:
    - delay: "00:00:30"
    - repeat:
        until:
          - condition: template
            value_template: >
              {{ has_value('number.solarflow_800_output_limit') or repeat.index >= 12 }}
        sequence:
          - delay: "00:00:10"
    - repeat:
        count: 4
        sequence:
          - choose:
              - conditions:
                  - condition: template
                    value_template: "{{ states('number.solarflow_800_output_limit') | float(0) == 0 }}"
                sequence:
                  - action: number.set_value
                    target:
                      entity_id: number.solarflow_800_output_limit
                    data:
                      value: 800
          - delay: "00:00:15"

Ensuite :

  • Vérifier la configuration
  • Recharger templates + automatisations
  • Redémarrer HA si besoin

J’ai oublié la correction du bug pour le smartmeter 3ct apres un reset de HA.

Ajoute cette automation pour le tracer clairement :

- id: '1763231000002'
  alias: "Alerte SmartMeter 3CT indisponible"
  mode: single
  triggers:
    - trigger: state
      entity_id: nom du sensor.smart meter 3ct
      to: "unavailable"
      for: "00:00:30"
  actions:
    - action: system_log.write
      data:
        level: warning
        message: "SmartMeter 3CT indisponible depuis 30s (nom du sensor.smart meter 3ct)."
    - action: persistent_notification.create
      data:
        title: "SmartMeter 3CT indisponible"
        message: "Le capteur MQTT nom du sensor.smart meter 3ct est indisponible depuis plus de 30 secondes."

Et pour confirmer l’état en direct :

  • Outils de développement → États → nom du sensor.smart meter 3ct
  • Historique de cette entité pour voir les passages unavailable.

Bonjour, peux tu partager ton script, je fais le même constat que toi, les valeurs sont bien dispo sous MQTT explorer. D’avance merci.

bonjour vous voulez quelle script

Je pensais au script de Fabrice qui permet d’indiquer a HA que les valeur sont dispo, et ainsi eviter de devoir revalider le protocole MQTT sous l’appli zendure a chaque reboot de HA.

Je n’ai pas utilisé le script MQTT .
J’ai contourné le problème côté Home Assistant avec une automation de démarrage :

  1. au reboot HA, je stoppe puis relance l’add-on Mosquitto,
  2. j’attends quelques secondes,
  3. je force le rechargement des intégrations SmartMeter/Zendure (reload_config_entry),
  4. j’attends que les capteurs reviennent (wait_template sur sensor.te31njn8n381735_l3_p puis sensor.power_actual),
  5. puis je refais un reload si nécessaire.

Résultat : les valeurs CT3 redeviennent disponibles automatiquement après redémarrage, sans devoir revalider MQTT dans l’app Zendure.

OK Merci, effectivement je viens de faire l’essai Arret/reboot du broker mosquitto et les valeurs sont de nouveau dispo dans HA sans intervention dans l’appli zendure.

A mettre dans le fichier automations.yaml

il faut corriger les numero ID et la valeur du sensor du smartmeter3ct

- id: '1763229000001'
  alias: Recovery SmartMeter MQTT + Zendure au démarrage
  description: Démarre Mosquitto 30s après l'init HA puis recharge MQTT et Zendure (sans MQTT direct SolarFlow).
  triggers:
    - trigger: homeassistant
      event: start

  actions:
    - action: hassio.addon_stop
      data:
        addon: core_mosquitto

    - delay: "00:00:30"

    - action: hassio.addon_start
      data:
        addon: core_mosquitto

    - delay: "00:00:10"

    - action: homeassistant.reload_config_entry
      data:
        entry_id: 01J269MFF0GGDT5AB0Y2V62X6V

    - wait_template: "{{ has_value('sensor.te31njn8n381735_l3_p') }}"
      timeout: "00:01:00"
      continue_on_timeout: true

    - action: homeassistant.reload_config_entry
      data:
        entry_id: 01K29QR68TS9429B7YJNEJ7GCQ

    - wait_template: "{{ has_value('sensor.power_actual') }}"
      timeout: "00:01:00"
      continue_on_timeout: true

    - action: homeassistant.reload_config_entry
      data:
        entry_id: 01K29QR68TS9429B7YJNEJ7GCQ

  mode: single

Pour les ID tu peux les trouver dans

  1. le repertoire .storage . Ouvre [core.config_entries] et cherche le nom de ton intégration.
    Le champ entry_id est dedans.
    Attention: fichier sensible, ne pas modifier à la main.

    1. Via Outils de développement > Actions
      Lance l’action homeassistant.reload_config_entry et, dans le sélecteur de cible/entrée, HA te propose les entrées disponibles (pratique pour valider que c’est la bonne).
    1. Dans l’UI Home Assistant
      Paramètres → Appareils et services → clique l’intégration → menu ⋮ → Informations système (ou Télécharger diagnostics).
      L’entry_id apparaît dans les infos techniques/diagnostics.

Merci beaucoup pour les infos, bon je te cache pas que ca va un peu vite pour moi, je débute sous HA :slight_smile: , mais je vais essayer de digérer tout ca. Si besoin je reviens vers toi.

tu crées une automation : Le titre que tu veux
le déclencheur est :

et tu ajoute les actions les une derrières les autres, les petits icones représentent l’action « Stop » , « demarré » les icone sont connu , le chrono c’est une action de temps

la moins évidente c’est les accolades , c’est une lecture d’une valeur de ton home assistant , pour moi la phase L3 du smart meter

Oui bien vu, avec l’assistant de creation des automatisations je viens de faire un truc simplifier qui semble fonctionner, dans les options du broker j’ai desactiver le demarrage automatique et je le lance via une automatisation après démarrage de HA. Je viens de faire 2 ou 3 essais ca a fonctionné a chaque fois.

1 « J'aime »

Salut , pour ma part j’utilise un serveur mqtt qui n’est pas integre a Home Assistant , mon script est donc different :

sequence:

action: mqtt.publish
metadata: {}
data:
evaluate_payload: false
qos: 0
retain: false
topic: Zendure/sensor/TE31NJN5N258612/L3_p/availability
payload: online
alias: Reconnectsmartct
description: Relance la connection du smart ct pour la ligne 3

Ensuite j’ai crée une automatisation qui lance ce script au démarrage de Home Assistant ainsi qu’un bouton sur mon dashboard au cas ou

Ce sujet a été automatiquement fermé après 60 jours. Aucune réponse n’est permise dorénavant.