Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: Better support for Zendure Solarflow (with local MQTT) #1668

Open
wants to merge 12 commits into
base: development
Choose a base branch
from

Conversation

vaterlangen
Copy link

This MR adds a new battery provider (index 7) to support Zendure Solarflow batteries using local MQTT broker.

Preconditions

In order to use this integration, the Solarflow system has to be "disconnected from cloud" (aka. configured to use the local MQTT broker instead of the pre configured vendor cloud). Please refer https://github.com/reinhard-brandstaedter/solarflow-bt-manager for details. If one can adjust answers on DNS queries (e.g. using OpenWRT as router), Solarflow can also be "disconnected from cloud" by returning the local broker IP for requests to mqtteu.zen-iot.com. The broker should be configured without authentication - or one has to gather the username passoword used by Solarflow.

Features

  • Query battery status from Solarflow
  • Display stats on LiveView
  • Publish stats via MQTT
  • HASS auto-discovery
  • Auto detection of AB1000 and AB2000 packs (currently only tested with my AB2000)
  • Time-sync for Solarflow
  • Sending settings to Solarflow
  • Set Zendure output limit fixed or via schedule (relative to sunrise/fall)
  • Configurable full charge intervals for battery (or better: BMS) conditioning

Main Page with battery data read from Solarflow

grafik

Configuration of new battery provider

grafik

Testing

Tested with my local setup consisting of

  • 1x HUB1200 / HUB2000
  • 2x AB2000
  • 1x HMT-2250
  • Mosquitto as local MQTT broker

@0lini
Copy link

0lini commented Feb 22, 2025

Hi @vaterlangen,
I just managed to install the modified firmware. Quite new to github and all this stuff. First of all: IT WORKS.
Some things I noticed:
The dashboard reports my battery as unknown.
The request intervall seems to be ignored, it requests every second, even tho I set it to 15 seconds (default).

Unbenannt

@vaterlangen
Copy link
Author

First of all: IT WORKS.

Great, Thanks for testing !

Some things I noticed: The dashboard reports my battery as unknown.

Thanks, did not notice this bug - it's the same with my setup. Will fix that soon

The request intervall seems to be ignored, it requests every second, even tho I set it to 15 seconds (default).

The Intervall just defines when status updates are explicitly requested by OpenDTU-oB.
Additional to answering requests, HUBs spontaneously transmit updated values. When received by OpenDTU-oB, the receive timestamp is updated, resulting in updated data age displayed in UI.

@0lini
Copy link

0lini commented Feb 23, 2025

It's me again. I saw that you just committed some changes. If these fix the issues I list below, feel free to ignore them.

  • "Verbleibende Ladezeit" is always displayed as N/A for me. I'm not sure if this is simply not reported by my SolarFlow or if it's a bug.

  • Removed this one, was my fault.

  • Home Assistant does not seem to auto-discover the battery at all. I'm not sure if this is an issue with ur implementation or if this is related to this Home Assistent auto-discovery broken for multiple batteries #1587.

Let me know if you need any more details!

@vaterlangen vaterlangen force-pushed the feature/zendure_solarflow branch from be8e36a to 2a1085e Compare February 24, 2025 19:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants