This repository is a Home Assistant custom integration for communicating with Solarman Stick Loggers to monitor and control solar inverters. It uses Modbus TCP/RTU to read/write inverter registers, exposing the data as Home Assistant entities (sensors, switches, etc.). The integration includes a device discovery mechanism via UDP broadcast, a configuration flow for setup, and a coordinator for periodic data updates. It also provides services for arbitrary Modbus register operations. The inverter definitions are stored in YAML files that specify the register mappings and sensor configurations for various inverter models.
This repository provides embedded firmware for the ESP8266 that bridges Chinese solar inverters (Voltronic/Axpert, PIP, EASUN, Deye, Anenji, Must PV/PH18) to MQTT and a local web interface. It communicates with inverters via RS232 serial (using proprietary ASCII protocols like PI30, PI18) or RS485 Modbus RTU, parses real-time status (grid, battery, PV, loads, faults), and publishes structured JSON to configurable MQTT topics including Home Assistant auto-discovery. The firmware also hosts a full web-based configuration portal with captive portal for WiFi setup, OTA updates, a live JSON endpoint, and LED status indication. Architecturally, it is a monolithic embedded application written in C++ for the PlatformIO build system. Key entry points are `src/main.cpp` (setup/loop), the web server endpoints, MQTT callbacks, and the serial/Modbus polling loop. The code is organized into a serial protocol handler (`PI_Serial`), an abstract Modbus device layer (`modbus_device`) with concrete implementations, a settings manager using EEPROM with versioning and fallback, and a chunked HTML serving mechanism to avoid heap fragmentation on memory-constrained ESP8266 devices. Notable strengths include the modular Modbus device interface that allows adding new inverter models by subclassing and providing register tables, and the auto-detection logic that probes protocols in sequence. The web UI is built with Bootstrap and jQuery loaded from CDN, and the project actively supports Home Assistant integration and multiple hardware configurations (Wemos D1 Mini, ESP-01, WiFi dongle). While the code is well-structured for an embedded project, it relies on dynamic `String` objects and large JSON documents on a limited memory platform, which could cause heap fragmentation over long periods. The license (CC BY-NC-ND 4.0) restricts commercial use and derivative works, limiting community contributions.
This repository is a design portfolio and technical showcase for a solar photovoltaic GIS prospecting and forecasting platform. It does not contain a runnable application; instead, it provides architectural documentation (docs/ARCHITECTURE.md, docs/MODULES.md, docs/AI_FORECASTING.md) and three well-crafted code snippets that demonstrate the engineering patterns behind map-based lead identification, AI roof detection service, and PV generation forecasting. The snippets illustrate professional-level software design: input validation, security boundaries, model routing, fallback strategies, and business logic normalization. The repository serves as a reference for architects and engineers evaluating similar systems, but it is explicitly non-reusable for commercial purposes due to the license restrictions.