Do you have Zendure batteries? And are you charging your car at the same time? Not good… 😉

Zendure EV Guard

Protect your Zendure batteries while charging your electric car

Compatible with Zendure SolarFlow 2400 AC • Shelly Pro 3EM • Smappee • Windows, Linux, macOS

How does it work?

1. Detection

Your Shelly Pro 3EM (or Smappee) measures the consumption. When the power exceeds the threshold (e.g., 5000W), the program knows that your car is charging.

🔋

2. Protection

The Zendure batteries instantly switch to OFF mode. They no longer discharge, preserving your cycles.

3. Resumption

Charging finished? The program automatically reactivates your batteries with your original settings. No manual intervention.

🔒 100% safe for your batteries

Zendure EV Guard uses exclusively the local HTTP API of your Zendure hub. It only modifies one parameter: the minSoc (minimum charge level). To pause, it sets the minSoc to 100% — preventing any discharge. To resume, it restores your usual value (for example, 10%).

No firmware modified, no cloud access, no risk. It's exactly the same as if you changed the setting manually in the Zendure app, but automatically and at the right time.

Requirements

EquipmentDetails
Zendure SolarFlow 2400 ACHub with local HTTP API enabled (port 80)
Shelly Pro 3EM or Smappee1 requiredCurrent clamp (Shelly, real-time) or Smappee energy monitor (cloud API, 5-minute blocks) to measure consumption
Wallbox / Charging stationAny station — detection is based on consumption, not on the station itself
PC, Server or NASWindows, Linux or macOS — the program runs in the background 24/7
 

Installation

1. Unzip the archive

Extract the contents of the ZIP file to the directory of your choice, for example:

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

2. Execution rights (Linux / macOS only)

On Linux and macOS, you need to make the file executable before running it:

chmod +x ZendureEvGuard
./ZendureEvGuard

3. Configure appsettings.json

Open the appsettings.json file located next to the executable and fill in your settings (see the section below).

4. Launch the program

# Windows
ZendureEvGuard.exe

# Linux / macOS
./ZendureEvGuard

The program displays the connection information at startup. Use P to manually pause, R to resume, and Ctrl+C twice to stop cleanly.

Linux Tip: To keep the program running even after disconnection, install it as a systemd service. Here's how to do it:

a) Create a dedicated user (optional but recommended):

sudo useradd -r -s /usr/sbin/nologin zendure
sudo chown -R zendure:zendure /home/ZendureEvGuard

b) Create the service file:

sudo nano /etc/systemd/system/zendure-evguard.service

Paste the following content:

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

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

[Install]
WantedBy=multi-user.target

c) Enable and start the service:

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

d) Useful commands:

# View status
sudo systemctl status zendure-evguard

# View logs in real time
sudo journalctl -u zendure-evguard -f

# Restart after an update
sudo systemctl restart zendure-evguard

# Stop the service
sudo systemctl stop zendure-evguard

Configuration — appsettings.json

Here are all the parameters you can configure. The Shelly and ZendureDevice sections are mandatory.

⚡ Shelly required

Configuration of your Shelly Pro 3EM. This is the sensor that measures the electrical consumption of your home.

ParameterDescriptionExample
EnabledEnable Shelly as a measurement sourcetrue
HostIP address of your Shelly Pro 3EM on your local network"192.168.1.50"
UseDigestAuthEnable if you have protected your Shelly with a passwordfalse
UsernameUsername (if auth enabled)"admin"
PasswordPassword (if auth enabled)"mypassword"

🔌 Smappee Charging Station optional

The energy station Smappee can be used in two ways:

  • As an EV detection source (alternative to Shelly) — if Shelly is disabled, Smappee becomes the power measurement source to detect EV charging. Detection is done via the Smappee cloud API (5-minute blocks, less responsive than Shelly in real-time).
  • In parallel with Shelly — if Shelly is active as a detection source, Smappee can still be active to continuously display consumption information (solar, home, grid) and your Smappee EV Wall (charging power, status, etc.) in the logs.
ParameterDescriptionExample
EnabledEnable Smappee (detection source if Shelly is disabled, or display consumption/EV station info in parallel)false
ClientIdClient ID of your Smappee application (API v3)"your-client-id"
ClientSecretClient Secret of your Smappee application"your-client-secret"
UsernameUsername of your Smappee account"user@email.com"
PasswordPassword of your Smappee account"password"
ServiceLocationIdID of your Smappee location (visible in the Smappee dashboard, this is not the serial number)"190802"
PollingIntervalSecondsFrequency of polling the Smappee API30
EvThresholdWattsPower threshold to consider that the EV station is charging (info display only)1400

🔋 Zendure Battery required

Configuration of your Zendure SolarFlow 2400 AC hub or others. The IP address can be found in the Zendure app.

ParameterDescriptionExample
HostIP address of your Zendure hub on the local network"192.168.1.127"
PortLocal API HTTP port (80 by default)80
DefaultOutputLimitMaximum output power in watts to restore after EV charging2400
DefaultMinSocMinimum charge level to restore (the value is ×10: 100 = 10%, 950 = 95%). This is the threshold below which your batteries will no longer discharge.100
TimeoutSecondsTimeout for requests to the hub10

💡 Understanding DefaultMinSoc

This parameter defines the minimum charge level of your batteries after recovery. The value is multiplied by 10 in the Zendure API:

  • 100 = batteries can drop to 10%
  • 200 = batteries can drop to 20%
  • 950 = batteries stop at 95% (very conservative mode)

It's up to you to choose! A low minSoc (100-200) maximizes the use of your batteries. A high minSoc (800-950) preserves the lifespan of the cells. Most users choose between 100 (10%) and 200 (20%).

🚗 EvDetection

Settings for detecting the charge of your electric vehicle. The algorithm uses a hysteresis: it requires several consecutive readings above the threshold to confirm a charge, and several readings below to confirm the stop.

ParameterDescriptionDefault
PowerThresholdWattsPower threshold (in watts) above which the program considers that a car is charging. Adjust it to your wallbox.5000
ConfirmationReadingsNumber of consecutive readings above the threshold to confirm the start of charging2
ReleaseReadingsNumber of consecutive readings below the threshold to confirm the end of charging (24 = ~2 minutes at 5s/reading)24
PollingIntervalSecondsMeasurement frequency in seconds5

📬 Notification optional

Receive emails when your batteries pause, resume, or in case of an error. Configure your SMTP server.

ParameterDescriptionDefault
EnabledEnable email notificationsfalse
SmtpHostSMTP server (e.g., smtp.gmail.com)""
SmtpPortSMTP port587
UseSslUse TLS/SSLtrue
Username / PasswordSMTP credentials""
FromAddressSender's email address""
ToAddressRecipient(s), separated by ; for multiple""
RateLimitMinutesMinimum interval between two alerts (anti-spam)15

📴 Pushover optional

Push notifications to your phone via Pushover. Create an application on pushover.net to obtain your API Token.

ParameterDescription
EnabledEnable Pushover (true / false)
ApiTokenYour Pushover application API token
UserKeyYour Pushover user key
RateLimitMinutesMinimum interval between alerts (default: 15)

💬 Telegram optional

Notifications via a Telegram bot. Create a bot with @BotFather and retrieve your Chat ID.

ParameterDescription
EnabledEnable Telegram (true / false)
BotTokenYour Telegram bot token (provided by @BotFather)
ChatIdChat ID to send messages (multiple separated by ;)
RateLimitMinutesMinimum interval between alerts (default: 15)

📈 Monitoring optional

ParameterDescriptionDefault
HealthCheckIntervalSecondsFrequency of checking device connectivity30
LogStatusIntervalSecondsFrequency of logging the status in log files300

🔄 Update optional

ParameterDescriptionDefault
AutoUpdateEnabledEnable automatic update checkingtrue
CheckIntervalHoursCheck interval (in hours)4

🔑 License after the trial

After the 30-day trial period, add your secret key to activate the PRO license. Your key can be found in your account at top right > "My Account". The license renews automatically in the background.

ParameterDescriptionExample
SecretKeyYour unique secret key (GUID) from your account digital3d.com. Leave empty to use trial mode.d79d24cc-eb02-48d7-94f8-xxxxxxxxxxxx

Example of minimal configuration

Here is a ready-to-use example. Simply replace the IP addresses with those of your devices:

{
  "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"
  }
}

With this configuration, the program monitors your Shelly, detects any consumption above 5000W (for example), and restores your batteries with a minimum of 10% (100 ÷ 10) and a maximum output of 2400W. The Subscription section is empty by default: the program runs in trial mode for 30 days. To activate the PRO license, add your secret key from your account top right.

Free Trial & Subscription

🎉 30 days free trial — no commitment!

Download Zendure EV Guard and test it for 30 full days, without any payment and with no feature limits. You will have access to 100% of the functions to ensure that the program perfectly fits your setup.

At the end of the 30 days, a Digital3D subscription is required to continue using the program. One subscription gives you access to all Digital3D applications (CompactForIA, AutoMouseMove, Zendure EV Guard, etc.).

🔑 How to activate your license

  1. Subscribe to a plan on "One for All"
  2. Log in to your account on digital3d.com and copy your secret key (a unique identifier in GUID format, for example: f89f26cc-eb03-48d7-94f8-xxxxxxxxxxxx)
  3. Open the appsettings.json file and add your key in the Subscription section:
    "Subscription": {
      "SecretKey": "your-secret-key-guid"
    }
  4. Restart the program — the PRO license activates automatically and renews without any intervention from you.

Ready to protect your batteries?

Download for free, set up in 5 minutes, and sleep peacefully.

Subscription « One for All » : a single subscription for all Digital3D applications.

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 🗙