Aller au contenu principal

Vous avez des batteries Zendure ? Et vous chargez votre voiture en même temps ? Pas bieeennn… 😉


Zendure EV Guard

Protegez vos batteries Zendure pendant la charge de votre voiture electrique

Compatible Zendure SolarFlow 2400 AC • Shelly Pro 3EM • Smappee • votre propre capteur (Home Assistant, Jeedom, Tasmota…) • Windows, Linux, macOS

Vous avez des batteries Zendure et une voiture electrique ?

Vous le savez : quand votre voiture se branche sur la wallbox, elle aspire tout. Vos batteries Zendure se vident a toute vitesse, les cycles s'accumulent, et la duree de vie de vos precieuses cellules fond comme neige au soleil.

Si votre voiture est un vehicule de societe et que l'electricite est payee par votre employeur, c'est dommage de vider vos batteries pour la recharger alors qu'il ne vous restera plus rien le soir pour l'autoconsommation de votre maison.

Autre cas de figure : meme s'il ne s'agit pas d'une voiture de societe, vous souhaitez peut-etre simplement empecher vos batteries de se vider pendant la charge, afin de profiter pleinement de l'electricite produite par vos panneaux solaires en plein soleil, sans puiser dans vos batteries Zendure.

Zendure EV Guard resout ce probleme automatiquement. Des que la charge de votre voiture est detectee, le programme met vos batteries en pause. Quand la charge est terminee, il les reactive. Simple, automatique, sans risque.

Comment ca fonctionne ?

⚡

1. Detection

Votre Shelly Pro 3EM (ou Smappee, ou votre propre capteur) mesure la consommation. Quand la puissance depasse le seuil (ex: 5000W), le programme sait que votre voiture charge.

🔋

2. Protection

Les batteries Zendure passent en mode OFF instantanement. Elles ne se dechargent plus, vos cycles sont preserves.

✅

3. Reprise

Charge terminee ? Le programme reactive vos batteries automatiquement avec vos parametres d'origine. Aucune intervention manuelle.

🔒 100% sans danger pour vos batteries

Zendure EV Guard utilise exclusivement l'API locale HTTP de votre hub Zendure. Il ne touche qu'a deux reglages, ceux-la memes que vous voyez dans l'application Zendure : le minSoc (le plancher de decharge) et l'outputLimit (la puissance de sortie). Pour mettre en pause, il place le minSoc exactement au niveau de charge actuel de la batterie et descend la sortie a 0 W. Pour reprendre, il restaure vos valeurs habituelles.

Pourquoi le niveau actuel, et pas 100% ? Parce que j'ai mesuré sur mon hub. Avec un plancher à 100%, le hub se met à recharger la batterie depuis le réseau, à 2 400 W, pendant que la voiture tire déjà ses 14 kW : votre pic de puissance prend 2,3 kW de plus, exactement ce qu'on veut éviter. Avec un plancher 1% sous le niveau, la batterie fuit vers la maison. Au niveau exact : ni recharge, ni décharge, même quand le mode HEMS rouvre la sortie. Le plancher est donc recalculé toutes les 5 secondes, et votre réglage habituel revient à la reprise.

Pourquoi les deux ? Parce qu'un seul ne suffit pas toujours. Si votre hub tourne en mode HEMS, il lui arrive de rouvrir sa sortie tout seul pendant la pause. Le programme s'en apercoit en quelques secondes et referme. Mesure faite chez moi le 22 aout 2026, batterie a 30%, voiture a 18 kW : deux ouvertures, refermees en 10 puis 5 secondes, 2 Wh au total.

Aucun firmware modifie, aucun acces cloud, aucun risque. C'est exactement la meme chose que si vous changiez le reglage manuellement dans l'app Zendure, mais automatiquement et au bon moment.

Ce qu'il fait d'autre pour vous

  • Il se configure tout seul, ou presque. --setup trouve le Shelly et le hub sur votre réseau (ou teste votre propre capteur), vérifie chaque appareil, mesure votre consommation pour proposer le seuil de détection, règle Telegram, l'e-mail et Pushover avec un message de test, puis écrit appsettings.json en gardant une copie de l'ancien.
  • Il se vérifie. --doctor relit la configuration, les appareils, les canaux de notification et votre licence, sans rien modifier. Avec --notify, il envoie un message de test.
  • Il vous fait un rapport à la fin de chaque charge : les kWh passés au compteur, la part de la voiture, la durée, la pointe, la moyenne, et le coût indicatif si vous donnez le prix de votre kWh. Plus un résumé de la semaine chaque lundi à 9 h.
  • Il se pilote depuis Telegram, si vous le voulez : /status, /pause, /resume et /license, sur un bot que vous réservez à cet usage.
  • Il voit la fuite de pause et la referme. Un hub en mode HEMS peut rouvrir sa sortie pendant la pause : le programme le voit en 5 secondes, le chiffre, referme, et vous alerte si ça dure.
  • Il ne vous laisse jamais aveugle. Si le compteur devient muet, la batterie est mise à l'abri par précaution, et relâchée à la première mesure valide.
  • Il ne se fait pas piéger par sa propre batterie. Ce que la batterie fournit à la maison est ajouté à la lecture du compteur ("EvDetection": { "CompensateBatteryOutput": true }) : une batterie qui couvre une partie de la charge ne la cache pas.
  • Il remet vos batteries en service avant de s'arrêter, même quand c'est le système qui l'arrête.
  • Il parle français ou anglais (Messages:Language) et vous prévient jusqu'à 7 jours avant la fin de votre licence ou de votre essai.

Prerequis

EquipementDetails
Zendure SolarFlow 2400 ACHub avec API locale HTTP activee (port 80)
Shelly Pro 3EM, Smappee ou votre propre capteur1 requisPince amperemetrique (Shelly, temps reel), moniteur energetique Smappee (cloud API, blocs de 5 min) ou n'importe quel compteur qui donne la puissance réseau en JSON sur votre réseau local (Home Assistant, Jeedom, Tasmota, ESPHome…)
Wallbox / Borne de chargeN'importe quelle borne : la detection se base sur la consommation, pas sur la borne elle-meme
PC, Serveur ou NASWindows, Linux ou macOS, le programme tourne en arriere-plan 24h/24
 

Installation

1. Dezippez l'archive

Extrayez le contenu du fichier ZIP dans le repertoire de votre choix, par exemple :

  • Windows : C:\ZendureEvGuard\
  • Linux : /home/ZendureEvGuard/
  • macOS : /Applications/ZendureEvGuard/

2. Droits d'execution (Linux / macOS uniquement)

Sur Linux et macOS, vous devez rendre le fichier executable avant de le lancer :

chmod +x ZendureEvGuard
./ZendureEvGuard

3. Configurez appsettings.json

Ouvrez le fichier appsettings.json situe a cote de l'executable et remplissez vos parametres (voir la section ci-dessous).

Ou, beaucoup plus simple, laissez l'assistant le faire. Il pose les questions une par une, montre la valeur actuelle entre crochets (Entrée garde la valeur), teste chaque appareil au fur et à mesure et ne touche qu'aux réglages que vous changez :

# Windows
ZendureEvGuard.exe --setup

# Linux / macOS
./ZendureEvGuard --setup

Le matériel est annoncé d'entrée : un compteur et des batteries Zendure sont requis, une borne Smappee est facultative. Pour le compteur, l'assistant demande simplement lequel : 1 pour le Shelly Pro 3EM (le choix par défaut, Entrée suffit), 2 pour votre propre capteur. Le calibrage du seuil se fait idéalement pendant une vraie charge de la voiture : il mesure la maison avec et sans véhicule et propose la valeur. Pas de voiture sous la main ? On saute l'étape et on garde le seuil actuel. À la fin, il propose de redémarrer le service pour qu'il prenne les nouveaux réglages, ou donne la commande exacte à taper si le service n'est pas encore installé.

Un doute plus tard ? Le diagnostic relit tout sans rien modifier :

./ZendureEvGuard --doctor
./ZendureEvGuard --doctor --notify   # envoie aussi un message de test

4. Lancez le programme

# Windows
ZendureEvGuard.exe

# Linux / macOS
./ZendureEvGuard

Le programme affiche les informations de connexion au demarrage. Utilisez P pour mettre en pause manuellement, R pour reprendre, et Ctrl+C deux fois pour arreter proprement.

5. Installez-le en service (recommande)

Le programme ne protege vos batteries que s'il tourne. L'archive contient un script par systeme : il installe le service, l'active au demarrage et le lance, depuis le dossier ou vous avez dezippe. Rien n'est copie ailleurs.

# Linux
sudo sh install-linux.sh

# macOS
sudo sh install-macos.sh

# Windows (PowerShell en tant qu'administrateur)
powershell -ExecutionPolicy Bypass -File .\install-windows.ps1

Sur Windows, le service tourne sous le compte SYSTEM, qui n'a pas le meme espace de donnees que votre session : renseignez bien Subscription.SecretKey dans appsettings.json avant d'installer.

Le fichier README.txt livre dans l'archive detaille chaque commande, la desinstallation et la mise a jour. Et USER_GUIDE_FR.md reprend tous les reglages, hors ligne.

Vous preferez ecrire le service vous-meme ? Sur Linux, voici l'unite que le script installe. Deux lignes ne sont pas decoratives : TimeoutStopSec=120 laisse au programme le temps de remettre vos batteries en service avant que systemd ne le tue, et network-online.target evite qu'il demarre avant que le reseau ne soit reellement la.

[Unit]
Description=ZendureEvGuard - EV Charging Battery Protection Daemon
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
WorkingDirectory=/home/ZendureEvGuard
ExecStart="/home/ZendureEvGuard/ZendureEvGuard"
Restart=on-failure
RestartSec=10
TimeoutStopSec=120
SyslogIdentifier=zendure-evguard
Environment=DOTNET_ENVIRONMENT=Production

[Install]
WantedBy=multi-user.target

Puis les commandes habituelles :

sudo systemctl daemon-reload
sudo systemctl enable --now zendure-evguard

# Voir le statut
sudo systemctl status zendure-evguard

# Voir les logs en temps reel
sudo journalctl -u zendure-evguard -f

# Redemarrer apres une mise a jour
sudo systemctl restart zendure-evguard

Ne mettez pas de User= dedie sans y avoir reflechi : le programme ecrit ses journaux et son etat de pause a cote de l'executable, et un compte sans droits sur ce dossier le fait echouer au premier redemarrage.

Configuration : appsettings.json

Voici tous les parametres que vous pouvez configurer. Les sections Shelly et ZendureDevice sont obligatoires.

Messages

La langue de tout ce que vous lisez : mails, Pushover, Telegram, rapports de fin de charge. Les journaux techniques restent en anglais, pour qu'un message d'erreur reste cherchable.

ParametreDescriptionDefaut
LanguageLangue des messages : "en" ou "fr". Toute autre valeur retombe sur l'anglais, sans empecher le demarrage"en"

Attention au placement : cette cle va sous la section Messages, jamais a la racine du fichier. Sur Linux, une cle Language posee a la racine est ecrasee par la variable d'environnement LANGUAGE du systeme, et vos messages repassent en anglais sans prevenir.

"Messages": {
  "Language": "fr"
}

⚡ Shelly requis

Configuration de votre Shelly Pro 3EM. C'est le capteur qui mesure la consommation electrique de votre maison. Pas de Shelly ? Voyez « Votre propre capteur » juste en dessous.

ParametreDescriptionExemple
EnabledActiver le Shelly comme source de mesuretrue
HostAdresse IP de votre Shelly Pro 3EM sur votre reseau local"192.168.1.50"
UseDigestAuthActiver si vous avez protege votre Shelly par un mot de passefalse
UsernameNom d'utilisateur (si auth activee)"admin"
PasswordMot de passe (si auth activee)"monmotdepasse"

Votre propre capteur à la place du Shelly

Vous avez déjà un compteur qui mesure votre raccordement, dans Home Assistant, Jeedom, un Tasmota, un ESPHome ou un autre Shelly ? Pas besoin d'acheter un Shelly Pro 3EM : ZendureEvGuard va lire un nombre sur une URL de votre réseau local qui répond en JSON, toutes les 5 secondes. Avec un Shelly Pro 3EM, ignorez simplement cette section : sans elle, tout fonctionne comme avant.

"CustomMeter": {
  "Enabled": true,
  "Url": "http://192.168.1.50:8123/api/states/sensor.puissance_reseau",
  "ValuePath": "state",
  "Unit": "W",
  "InvertSign": false,
  "Authentication": "Bearer",
  "BearerToken": "votre-jeton-longue-duree"
}

Le seul réglage un peu technique, c'est ValuePath : le chemin du nombre dans la réponse. Quelques exemples qui marchent :

  • Home Assistant (/api/states/sensor.xxx, jeton longue durée en Bearer) : state
  • Shelly Gen1 EM : emeters[0].power
  • Shelly Gen2 (/rpc/EM.GetStatus?id=0) : total_act_power
  • Tasmota (/cm?cmnd=Status%208) : StatusSNS.ENERGY.Power
  • ESPHome (/sensor/xxx) : value
  • Jeedom (jeeApi.php, qui rend le nombre seul) : laissez vide

Unit vaut W ou kW, InvertSign sert si votre capteur compte l'export solaire en positif, et Authentication accepte None, Basic (avec Username et Password) ou Bearer. --setup pose toutes ces questions et fait une lecture de test qui affiche la valeur brute et les watts, par exemple lecture 1500 W (valeur lue : 1.5). Au-delà de 60 kW, il vous prévient : c'est presque toujours une confusion entre W et kW.

Attention au choix du capteur : il faut la puissance réseau, au compteur de la maison, positive quand vous soutirez et négative quand vous exportez. Pas un capteur « consommation de la maison », qui compte déjà ce que fournit la batterie et ferait croire à une charge. Et la sécurité reste la même que pour le Shelly : un capteur qui ne répond pas, met plus de 4 secondes ou rend unavailable déclenche la pause de précaution. L'URL, le mot de passe et le jeton n'apparaissent jamais dans les journaux.

🔌 Borne Smappee optionnel

La borne energetique Smappee peut etre utilise de deux facons :

  • Comme source de detection EV (alternative au Shelly) : si le Shelly est desactive, Smappee devient la source de mesure de puissance pour detecter la charge EV. La detection se fait via l'API cloud Smappee (blocs de 5 minutes, moins reactif que le Shelly en temps reel).
  • En parallele du Shelly : si le Shelly est actif comme source de detection, Smappee peut quand meme etre active pour afficher en continu les informations de consommation (solaire, maison, reseau) et de votre borne Smappee EV Wall (puissance de charge, etat, etc.) dans les logs.
ParametreDescriptionExemple
EnabledActiver Smappee (source de detection si Shelly desactive, ou affichage des infos consommation/borne EV en parallele)false
ClientIdClient ID de votre application Smappee (API v3)"votre-client-id"
ClientSecretClient Secret de votre application Smappee"votre-client-secret"
UsernameNom d'utilisateur de votre compte Smappee"user@email.com"
PasswordMot de passe de votre compte Smappee"motdepasse"
ServiceLocationIdID de votre emplacement Smappee (visible dans le dashboard Smappee, ce n'est pas le numero de serie)"190802"
PollingIntervalSecondsFrequence d'interrogation de l'API Smappee30

🔋 Batterie Zendure requis

Configuration de votre hub Zendure SolarFlow 2400 AC ou autres. L'adresse IP se trouve dans l'app Zendure.

ParametreDescriptionExemple
HostAdresse IP de votre hub Zendure sur le reseau local"192.168.1.127"
PortPort HTTP de l'API locale (80 par defaut)80
DefaultOutputLimitPuissance max de sortie en watts a restaurer apres la charge EV2400
DefaultMinSocPlancher de decharge a restaurer apres la charge : le niveau sous lequel vos batteries ne se dechargeront plus (la valeur est ×10 : 100 = 10%, 200 = 20%). Ce n'est pas le niveau de charge maximum.100
TimeoutSecondsDelai d'attente pour les requetes vers le hub10

💡 Comprendre le DefaultMinSoc

Ce parametre definit le plancher de decharge de vos batteries : le niveau sous lequel le hub ne les laissera plus se vider. La valeur est multipliee par 10 dans l'API Zendure :

  • 100 = les batteries peuvent descendre jusqu'a 10%
  • 200 = les batteries peuvent descendre jusqu'a 20%
  • 500 = les batteries s'arretent a 50%, et la moitie de votre capacite ne sert plus a rien

A ne pas confondre avec le plafond de charge. Le niveau auquel vos batteries arretent de se charger, c'est socSet, un autre reglage, celui que vous voyez dans l'application Zendure. Mettre 950 ici ne veut donc pas dire "charge jusqu'a 95%" mais "ne descends jamais sous 95%" : vos batteries deviennent inutilisables. Le programme refuse de demarrer avec une valeur hors de 1 a 999, et vous previent au-dela de 500.

A vous de choisir ! Plus la valeur est basse, plus vous utilisez vos batteries ; plus elle est haute, plus vous menagez les cellules, au prix de la capacite disponible. La plupart des utilisateurs choisissent entre 100 (10%) et 200 (20%).

🚗 EvDetection

Reglages de la detection de charge de votre vehicule electrique. L'algorithme utilise une hysterese : il faut plusieurs lectures consecutives au-dessus du seuil pour confirmer une charge, et plusieurs lectures en-dessous pour confirmer l'arret.

ParametreDescriptionDefaut
PowerThresholdWattsSeuil de puissance (en watts) au-dela duquel le programme considere qu'une voiture charge. Adaptez-le a votre wallbox.5000
ConfirmationReadingsNombre de lectures consecutives au-dessus du seuil pour confirmer le debut de la charge2
ReleaseReadingsNombre de lectures consecutives sous le seuil pour confirmer la fin de la charge (24 = ~2 minutes a 5s/lecture)24
PollingIntervalSecondsFrequence de mesure en secondes5
PauseOnSourceUnreachableMinutesDuree pendant laquelle le compteur peut rester injoignable avant que les batteries soient mises en pause par precaution : aveugle, le programme ne peut plus voir votre voiture se brancher. La pause est levee des la premiere mesure valide. Mettez 0 pour desactiver ce garde-fou.3
NotifyPrecautionaryPauseAfterMinutesUne pause de precaution s'applique tout de suite, mais elle ne vous est annoncee qu'au-dela de cette duree : un compteur qui cligne trois secondes ne vaut pas un mail30
SourceUnreachableReleaseMinutesDuree au-dela de laquelle une pause de precaution est relachee alors que le compteur est toujours muet10
ReleaseHysteresisWattsMarge sous le seuil a repasser pour confirmer la fin de charge. Evite le va-et-vient quand la consommation oscille juste autour du seuil500
PostResumeCooldownSecondsDelai apres une reprise pendant lequel une nouvelle detection est ignoree60

Energy

A la fin de chaque charge, le programme vous dit combien de kWh sont passes. Donnez-lui le prix de votre kWh et il ajoute le montant. C'est indicatif, pas une facture : personne ne mesure la borne elle-meme, et le prix est fixe alors que le votre ne l'est peut-etre pas.

L'usage auquel je pense : plusieurs voitures se branchent chez vous, et chacune doit savoir ce qu'elle a consomme.

ParametreDescriptionDefaut
PricePerKwhCentsPrix du kWh en centimes entiers (28 = 0,28 EUR). Mettez 0 pour ne rien afficher. Un nombre a virgule est refuse et lu comme 0, sans empecher le demarrage28

Le rapport chiffre deux energies. Celle mesuree au compteur, qui est un fait. Et la part estimee du vehicule, qui retire la consommation habituelle de la maison : une estimation, et un maximum quand vos panneaux exportaient au moment de brancher.

Charge terminee : 1h03 | 11,30 kWh au compteur (3,16 EUR) |
~11,30 kWh pour le vehicule (3,16 EUR) | pointe 14627 W | moyenne 11169 W

📬 Notification optionnel

Recevez des emails quand vos batteries se mettent en pause, reprennent, ou en cas d'erreur. Configurez votre serveur SMTP.

ParametreDescriptionDefaut
EnabledActiver les notifications emailfalse
SmtpHostServeur SMTP (ex: smtp.gmail.com)""
SmtpPortPort SMTP587
UseSslUtiliser TLS/SSLtrue
Username / PasswordIdentifiants SMTP""
FromAddressAdresse email de l'expediteur""
ToAddressDestinataire(s), separes par ; pour plusieurs""
RateLimitMinutesIntervalle minimum entre deux alertes (anti-spam)15

📴 Pushover optionnel

Notifications push sur votre telephone via Pushover. Creez une application sur pushover.net pour obtenir votre API Token. Le plus simple : --setup vous demande la clé et le jeton, puis envoie un message de test avant d'activer le canal.

ParametreDescription
EnabledActiver Pushover (true / false)
ApiTokenToken API de votre application Pushover
UserKeyVotre cle utilisateur Pushover
RateLimitMinutesIntervalle minimum entre alertes (defaut: 15)

💬 Telegram optionnel

Notifications via un bot Telegram. Creez un bot avec @BotFather et recuperez votre Chat ID.

ParametreDescription
EnabledActiver Telegram (true / false)
BotsListe de bots. Chacun porte son Name, son BotToken et sa liste ChatIds. C'est ce qui permet de prévenir des personnes différentes dans des groupes différents
RateLimitMinutesIntervalle minimum entre alertes (défaut : 15)

Vous pouvez prévenir plusieurs groupes à la fois : deux personnes via un premier bot, trois autres via un second. Chaque envoi est isolé, un destinataire injoignable n'empêche plus les autres de recevoir le message.

"Telegram": {
  "Enabled": true,
  "RateLimitMinutes": 15,
  "Bots": [
    {
      "Name": "Famille",
      "BotToken": "123456:AAExxxxxxxxxxxxxxxxxxxx",
      "ChatIds": [ "11111111", "22222222" ]
    },
    {
      "Name": "Voisins",
      "BotToken": "789012:BBEyyyyyyyyyyyyyyyyyyyy",
      "ChatIds": [ "33333333", "44444444", "55555555" ]
    }
  ]
}

Et des commandes. Un bot peut aussi recevoir vos ordres. /status donne l'état de la batterie et du compteur, /pause et /resume font exactement ce que font les touches P et R, et /license <votre clé> active une licence (le bot efface aussitôt le message qui contient la clé). C'est désactivé par défaut et ça s'active bot par bot :

{
  "Name": "Commandes",
  "BotToken": "345678:CCFzzzzzzzzzzzzzzzzzzzz",
  "ChatIds": [ "11111111" ],
  "CommandsEnabled": true
}

Seules les conversations listées dans ChatIds sont obéies, une commande de plus de 5 minutes est ignorée, et /resume est refusé pendant une charge (la batterie serait remise en pause au cycle suivant). Perso, je réserve un bot à ces commandes et je ne le mets dans aucun groupe : quiconque peut écrire dans la conversation peut mettre votre batterie en pause.

Pour un seul bot, la forme courte marche aussi : un BotToken et des ChatId séparés par des points-virgules.

📈 Monitoring optionnel

ParametreDescriptionDefaut
HealthCheckIntervalSecondsFrequence de verification de la connectivite des appareils30
LogStatusIntervalSecondsFrequence de log du statut complet dans les fichiers de log300
PostResumeGuardSecondsDuree pendant laquelle le programme verifie que le hub a bien garde vos reglages apres une reprise300
DeviceUnreachableAlertMinutesDuree d'injoignabilite d'un appareil au-dela de laquelle vous etes alerte60

🔄 Update optionnel

Le programme ne se met pas à jour tout seul. Il vérifie une fois par heure si une version plus récente existe, et il se contente de vous prévenir : un rappel dans les logs à chaque heure tant que vous n'avez pas installé la nouvelle version, et un seul message sur les canaux que vous avez configurés, avec le lien de téléchargement direct.

Remplacer le binaire d'un service qui protège vos batteries pendant qu'il tourne, c'est le geste le plus risqué du produit. Autant que ce soit vous qui décidiez du moment.

ParametreDescriptionDefaut
CheckEnabledVérifier chaque heure si une version plus récente existetrue
NotifyOnNewVersionEnvoyer un message sur vos canaux de notification à la première détection d'une version. Une seule fois par version, jamais de relancetrue

🔑 License apres l'essai

Apres la periode d'essai de 30 jours, ajoutez votre clef secrete pour activer la licence PRO. Votre clef se trouve dans votre compte sur en haut à droite > "Mon Compte". La licence se renouvelle automatiquement en arriere-plan.

Vous pouvez aussi l'envoyer à votre bot Telegram, sans toucher au fichier : /license <votre clé>. Le bot efface le message, active la licence et répond le résultat (activée jusqu'au, refusée, compte suspendu). Il faut que les commandes soient activées sur ce bot.

ParametreDescriptionExemple
SecretKeyVotre clef secrete unique (GUID) depuis votre compte digital3d.com. Laissez vide pour utiliser le mode essai.d79d24cc-eb02-48d7-94f8-xxxxxxxxxxxx

Exemple de configuration minimale

Voici un exemple pret a l'emploi. Remplacez simplement les adresses IP par celles de vos appareils :

{
  "Messages": {
    "Language": "fr"
  },
  "Energy": {
    "PricePerKwhCents": 28
  },
  "Shelly": {
    "Enabled": true,
    "Host": "192.168.1.50"
  },
  "ZendureDevice": {
    "Host": "192.168.1.127",
    "Port": 80,
    "DefaultOutputLimit": 2400,
    "DefaultMinSoc": 100
  },
  "EvDetection": {
    "PowerThresholdWatts": 5000
  },
  "Subscription": {
    "SecretKey": "d79d24cc-eb02-48d7-94f8-xxxxxxxxxxxx"
  }
}

Avec cette configuration, le programme surveille votre Shelly, detecte toute consommation superieure a 5000W (pour exemple), et restaure vos batteries avec un minimum de 10% (100 ÷ 10) et une sortie maximale de 2400W. La section Subscription est vide par defaut : le programme fonctionne en mode essai pendant 30 jours. Pour activer la licence PRO, ajoutez votre clef secrete depuis votre compte en haut à droite.

Essai gratuit & Abonnement

🎉 30 jours d'essai gratuit, sans engagement !

Telechargez Zendure EV Guard et testez-le pendant 30 jours complets, sans rien payer et sans limite de fonctionnalites. Vous aurez acces a 100% des fonctions pour vous assurer que le programme correspond parfaitement a votre installation.

A l'issue des 30 jours, un abonnement Digital3D est necessaire pour continuer a utiliser le programme. Un seul abonnement vous donne acces a toutes les applications Digital3D (CompactForIA, AutoMouseMove, Zendure EV Guard, etc.).

🔑 Comment activer votre licence

  1. Souscrivez a un abonnement sur "One for All"
  2. Connectez-vous a votre compte sur digital3d.com et copiez votre clef secrete (un identifiant unique au format GUID, par exemple : f89f26cc-eb03-48d7-94f8-xxxxxxxxxxxx)
  3. Ouvrez le fichier appsettings.json et ajoutez votre clef dans la section Subscription :
    "Subscription": {
      "SecretKey": "votre-clef-secrete-guid"
    }
  4. Redemarrez le programme : la licence PRO s'active automatiquement et se renouvelle sans aucune intervention de votre part.

Plus court, si les commandes Telegram sont activées : envoyez /license <votre clé> à votre bot, sans redémarrer quoi que ce soit.

Pret a proteger vos batteries ?

Telechargez gratuitement, configurez en 5 minutes, et dormez tranquille.

Abonnement « One for All » : un seul abonnement pour toutes les applications Digital3D.

Téléchargement — Version 1.3.15

Historique des versions
1.3.15 26/10/2026Actuelle
- Nouveau : votre propre capteur de puissance. Un compteur Home Assistant, Jeedom, Tasmota, ESPHome ou autre se lit par une URL locale qui rend du JSON (chemin de la valeur, W ou kW, inversion du signe, authentification Basic ou Bearer), configurable dans --setup et contrôlé par --doctor - Une installation avec un Shelly Pro 3EM n'a rien à changer : sans section CustomMeter, tout fonctionne comme avant - --setup configure maintenant Pushover : clé utilisateur, jeton d'application, message de test avant activation - --setup compte 8 étapes au lieu de 7 - Sujets d'e-mail traduits en français : [ZendureEvGuard ALERTE] et [ZendureEvGuard AVERTISSEMENT]. Une règle de tri sur l'ancien préfixe ALERT ou WARNING est à mettre à jour
1.3.14 26/10/2026
- Résumé hebdomadaire actif par défaut, y compris sur une installation existante : un message chaque lundi à 9 h (pour le couper : "WeeklySummary": { "Enabled": false }) - La langue se règle dans "Messages": { "Language": "fr" } : une clé Language à la racine n'est plus lue - La pause ne recharge plus la batterie sur le réseau : le plancher de décharge suit le niveau actuel au lieu de 100 % - Nouvel assistant --setup : trouve le Shelly et le hub, teste chaque appareil, calibre le seuil, configure Telegram et l'e-mail, propose de redémarrer le service - Nouveau diagnostic --doctor (--notify envoie un message de test), licence comprise - Commandes Telegram /status, /pause, /resume et /license, désactivées par défaut, activables bot par bot (CommandsEnabled) - Prévenu jusqu'à 7 jours avant la fin de votre licence ou de votre essai - Détection plus fiable quand la batterie couvre une partie de la charge (EvDetection:CompensateBatteryOutput) - Licence rangée dans ~/.config/Digital3D/ZendureEvGuard sous Linux et macOS, déplacée automatiquement - Docker : le dossier ./state garde la licence et l'état de pause - Correction : une pause se termine toujours par une reprise, même après une lecture erronée du hub - Correction : les alertes dont l'envoi a échoué sont renvoyées 5 minutes plus tard - Correction : appsettings.json n'est plus lisible par les autres comptes (Windows, Linux, macOS) - Correction : une valeur mal saisie dans appsettings.json arrête le service avec un message qui nomme la clé
1.3.12 22/08/2026
- La langue des messages se regle sous la section Messages : "Messages": { "Language": "fr" }. Une cle Language posee a la racine du fichier n'est plus lue - La mise en pause ecrit desormais minSoc ET outputLimit, et les reecrit toutes les 5 secondes - Nouveau : tout ce que vous lisez existe en francais et en anglais (Messages:Language, "en" par defaut). Les journaux techniques restent en anglais - Nouveau : un rapport a la fin de chaque charge (duree, kWh au compteur, part estimee du vehicule, pointe, moyenne) - Nouveau : le cout indicatif de la charge, si vous donnez le prix de votre kWh dans Energy:PricePerKwhCents (28 centimes par defaut, 0 pour ne rien afficher) - Nouveau : la fuite de pause est mesuree et refermee. Un hub en mode HEMS pouvait rouvrir sa sortie pendant la pause, et alimenter la voiture sans que rien ne le dise - Nouveau : une alerte quand le hub cesse d'appliquer la pause pendant une charge - Nouveau : une pause de precaution quand le compteur devient injoignable, levee des la premiere mesure valide - Nouveau : l'archive contient les scripts d'installation Windows, Linux et macOS, plus le guide utilisateur en francais et en anglais - Nouveau : quatre reglages de detection exposes (NotifyPrecautionaryPauseAfterMinutes, SourceUnreachableReleaseMinutes, ReleaseHysteresisWatts, PostResumeCooldownSeconds) et deux de surveillance (PostResumeGuardSeconds, DeviceUnreachableAlertMinutes) - Vos batteries sont remises en service avant l'arret du programme, y compris quand c'est le systeme qui l'arrete - Le programme refuse de demarrer si votre compteur Shelly rejette les identifiants, et vous previent au lieu de tourner en aveugle - Correction : un mot de passe Shelly refuse n'est plus confondu avec un compteur hors ligne - Correction : plus de rafales de messages quand la consommation oscille autour du seuil de detection - Correction : une notification qui echoue est reessayee pendant 5 minutes, au lieu d'etre perdue - Correction : le comptage des kWh ignore les intervalles de mesure trop longs au lieu de les integrer

Rejoignez la conversation

Vous devez avoir un compte pour commenter cet article. La création est gratuite et prend moins d'une minute.

  • Le fichier XMLTV à télécharger gratuitement, chaque jour
  • Commenter les articles et répondre aux autres lecteurs
  • Être averti par e-mail des nouveaux articles que vous suivez

Aucun commentaire pour le moment.

Une erreur s'est produite. Cette application peut ne plus répondre jusqu'à ce qu'elle soit rechargée.Veuillez contacter l'auteur. Reload 🗙