Sign inSign up

jcpd/dknr-zendure

By jcpd

•Updated about 3 hours ago

Zendure web UI and MQTT connector for DKNR app

Image
Internet of things
0

1.8K

jcpd/dknr-zendure repository overview

⁠README

Release Pull Issue License

⁠A propos

dknr-zendure est un projet consacré à la récupération et à l'exploitation des données des onduleurs et batteries Zendure (Hyper 2000) via l'API développeur MQTT de Zendure.

⁠Fonctionnalités

  • Suivi des onduleurs et des batteries : niveau de charge, puissances, températures, état de fonctionnement.
  • Support du compteur Zendure 3CT via un broker MQTT.
  • Intégration possible dans une installation domotique ou un outil de supervision.
  • Support Home-Assistant Discovery pour les messages MQTT.
  • Energie de charge et de décharge des batteries calculée à partir des puissances et publiée en MQTT (batteryChargeEnergy, batteryDischargeEnergy, en kWh), utilisable dans le tableau de bord Energie de Home Assistant.
  • Historique de charge et décharge des batteries enregistré dans InfluxDB : énergie par heure, par jour, par mois et par an.

⁠Matériel requis

  • un onduleur Zendure (testé avec un Hyper 2000) et ses batteries, associés à un compte Zendure.
  • une machine exécutant le logiciel docker et connectée à internet.

⁠Installation

Des images Docker prêtes à l'emploi sont disponibles. Utilisez le fichier docker-compose.yaml à la racine du dépôt en fournissant les variables d'environnement suivantes :

  • DKNR_USERNAME : login de l'interface node-red.
  • DKNR_PASSWORD : mot de passe de l'interface node-red.
  • DKNR_SECRET : un mot secret pour encrypter les credits.

Ajoutez ensuite votre onduleur depuis la page Ajouter avec l'adresse mail de votre compte Zendure et le numéro de série de l'onduleur.

⁠Historique (charge et décharge des batteries, InfluxDB)

Le fichier docker-compose démarre aussi un conteneur InfluxDB 2 (dknr_zendure_influxdb) qui conserve les valeurs relevées sans limite de durée. La page Historique du tableau de bord affiche l'énergie chargée (au-dessus de l'axe) et déchargée (en dessous de l'axe) par les batteries par heure (24 dernières heures), par jour (7 derniers jours), par mois (12 derniers mois) et par an.

Aucune variable supplémentaire n'est obligatoire : par défaut, dknr-zendure utilise le conteneur InfluxDB du docker-compose. Les variables suivantes sont optionnelles :

VariableValeur par défautRôle
DKNR_INFLUX_TOKENdknr-zendure-influxdb-tokenjeton d'API InfluxDB
DKNR_INFLUX_URLhttp://dknr_zendure_influxdb:8086adresse de la base InfluxDB
DKNR_INFLUX_ORGdknrorganisation InfluxDB
DKNR_INFLUX_BUCKETzendurebucket InfluxDB

Au premier démarrage, InfluxDB est initialisé avec l'utilisateur DKNR_USERNAME et le mot de passe DKNR_PASSWORD, qui doit faire 8 caractères minimum.

Quelques remarques :

  • Le jeton par défaut convient tant qu'InfluxDB reste sur le réseau interne de docker. Si vous exposez le port 8086 (lignes commentées dans le docker-compose), définissez votre propre DKNR_INFLUX_TOKEN, par exemple généré avec openssl rand -hex 32.
  • Le jeton, l'organisation et le bucket ne sont appliqués par InfluxDB qu'à sa première initialisation. Pour les changer ensuite, il faut supprimer le volume dknr_zendure_influxdb (et donc l'historique) ou les modifier dans l'interface d'InfluxDB.
  • Pour utiliser une base InfluxDB 2 existante, renseignez ces quatre variables pour le conteneur dknr_zendure ; le conteneur InfluxDB du docker-compose (et le depends_on qui y fait référence) peut alors être retiré.
  • Zendure ne fournit que des puissances instantanées : la puissance de charge (outputPackPower) et de décharge (packInputPower) est intégrée toutes les 10 secondes dans deux compteurs en Wh, conservés au redémarrage de Node-RED. L'énergie n'est pas comptée pendant un arrêt de Node-RED ni quand l'onduleur n'envoie plus de données pendant 15 minutes.
⁠Energie de charge et de décharge (MQTT)

Zendure ne publie pas l'énergie chargée et déchargée par les batteries. dknr-zendure la calcule en intégrant toutes les 10 secondes la puissance de charge (outputPackPower) et de décharge (packInputPower), et publie deux compteurs cumulés en kWh pour chaque onduleur :

Entité MQTTNomHome Assistant
batteryChargeEnergyEnergie chargéedevice_class: energy, state_class: total_increasing
batteryDischargeEnergyEnergie déchargéedevice_class: energy, state_class: total_increasing

Les compteurs sont conservés au redémarrage de Node-RED. L'énergie n'est pas comptée pendant un arrêt de Node-RED ni quand l'onduleur n'envoie plus de données pendant 15 minutes. Ces mêmes compteurs alimentent la page Historique.

⁠Contribuer

Ce projet est open-source, vous pouvez participer en créant des tickets⁠ ou en proposant de requêtes⁠ sur le dépôt github du projet.

⁠Voir aussi

Tag summary

Content type

Image

Digest

sha256:a2e38fb3f…

Size

229.8 MB

Last updated

6 days ago

docker pull jcpd/dknr-zendure