Skip to content

Zendure/zenSDK

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 

Repository files navigation

Zendure Local Control System


Zendure Logo

📖 Documentation Navigator

This project offers documentation in multiple languages. Choose the one you need:


🌟 Overview

During the development of our previous Device Data Report Project we identified a strong need for improved local control.As a response, the team created the IoT framework ZenSDK and is now opening the Local API to help developers achieve:

  • Real-time device status & property retrieval
  • Event stream subscription
  • Remote function control
  • Integration of third-party MQTT clients (including Home Assistant)
  • Custom feature development through open APIs to enhance user experience

Have an innovative idea for Zendure products? Feel free to reach out!


📌 Supported Products

Model Firmware Version Status
SolarFlow800 Latest
SolarFlow800 Pro Latest
SolarFlow2400 AC Latest
SmartMeter3CT Latest
(More coming soon)

🚀 Core Architecture

Local control is achieved via a combination of mDNS service discovery and HTTP server communication:

1. Device Discovery (mDNS)

After connecting to the network, the device broadcasts its service information through mDNS:

  • Service name: Zendure-<Model>-<Last12MAC>(e.g. Zendure-SolarFlow800-WOB1NHMAMXXXXX3)
  • IP address
  • HTTP service port

Clients on the same LAN can listen for these broadcasts to automatically discover devices.

2. Device Communication (HTTP RESTful API)

Each device hosts an internal HTTP server.

Basic Operations

Method Purpose Example
GET Query device status/properties GET /properties/report (all properties)
POST Send control/config commands POST /properties/write (set properties)

Data Format

  • GET: No body, response in JSON.
  • POST: JSON body must include device serial number sn (required).

Example 1: Get device properties

GET /properties/report

Example 2: Send control/config command

POST /properties/write
Content-Type: application/json

{
  "sn": "WOB1NHMAMXXXXX3",      // Required
  "properties": {
    "acMode": 2                 // Writable property
  }
}

Example 3: Check MQTT status

GET /rpc?method=HA.Mqtt.GetStatus

Example 4: Get MQTT configuration

GET /rpc?method=HA.Mqtt.GetConfig

Example 5: Set MQTT configuration

POST /rpc
Content-Type: application/json

{
  "sn": "WOB1NHMAMXXXXX3",
  "method": "HA.Mqtt.SetConfig",
  "params": {
    "config": {
      "enable": true,
      "server": "192.168.50.48",
      "port":1883,
      "protocol":"mqtt",
      "username": "zendure",
      "password": "zendure"
    }
  }
}

🛠️ Development Tools

System-level mDNS discovery commands

OS Command example Description
Windows Get-Service | Where-Object { $_.Name -like "*Bonjour*" } Check Bonjour service
macOS dns-sd -B _zendure._tcp Browse Zendure devices
Linux avahi-browse -r _zendure._tcp Discover _zendure._tcp services

Multi-language Samples

Command-line quick test

# Get all properties
curl -X GET "http://<device-ip>/properties/report"

# Query MQTT status
curl -X GET "http://<device-ip>/rpc?method=HA.Mqtt.GetStatus"

# Set acMode property
curl -X POST "http://<device-ip>/properties/write" \
  -H "Content-Type: application/json" \
  -d '{"sn": "your_device_sn", "properties": { "acMode": 2 }}'

📚 Property Reference

Detailed property definitions for each product: SolarFlow Series Property Doc


About

Zendure product local control methods and examples

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published