Solar, Batteries & EV Chargers (Devices, IoT & Hardware): open-source projects that exist because someone reverse engineered a closed product, sorted by GitHub stars.
UPS monitoring with drivers for many vendor UPS protocols, much of it reverse engineered
ESP32 firmware that talks the Hoymiles/TSUN microinverter radio protocol directly (NRF24/CMT2300A)
Home Assistant integration for Anker Solix power stations and balcony storage
ESPHome component to monitor and control JK-BMS via UART or BLE
Tools and docs for communicating with Hoymiles microinverters over their proprietary 2.4 GHz protocol
Home Assistant integration for Huawei SUN2000 inverters via Modbus
EcoFlow cloud integration for Home Assistant using the app's MQTT channel
ESPHome component for local Emporia Vue 2 energy monitor readings
Home Assistant integration for the Emporia Vue energy monitor
Home Assistant component for Solarman dataloggers used with Deye and other inverters
Home Assistant Modbus configuration for Sungrow SH hybrid inverters
Venus OS driver that reads many serial/BLE BMS protocols for Victron GX systems
Growatt inverter monitor that intercepts ShineWiFi datalogger traffic to read inverter data locally
Solarman stick logger integration for Home Assistant
Home Assistant add-on for JK, JBD, Daly, ANT, SOK, Supervolt and other BLE BMS
Home Assistant Modbus integration for SolaX, AlphaESS, Growatt, Sofar, Solis and other inverters
DSMR P1 smart meter telegram reader and visualizer
Security research notes on the Tesla Powerwall 2 gateway
Python package for MPP Solar/Voltronic PIP inverters and similar
Unofficial EcoFlow BLE integration for Home Assistant
Home Assistant component reading SolarEdge inverters locally via Modbus TCP
ESPHome component reading Victron devices through their BLE advertisement endpoint
Emulates smart meters for Marstek B2500/Jupiter/Venus home batteries
Reads SMA solar/battery inverters over Bluetooth and Speedwire
Home Assistant integration for many Bluetooth LE battery management systems
Reads Deye solar inverter metrics and posts them over MQTT
Prometheus exporter for EcoFlow portable power stations
Home Assistant integration for Hoymiles DTUs and HMS-XXXXW-2T microinverters
FoxESS inverters read and controlled directly over Modbus, no cloud
Deye/Sunsynk inverter Python library and Home Assistant add-on over Modbus
Local Modbus/TCP SolarEdge integration for Home Assistant
Home Assistant integration for Victron GX devices over Modbus TCP
Local EcoFlow portable power station integration for Home Assistant
Python library for the Anker Solix cloud API
ESP8266 Wi-Fi/MQTT interface for MPPT inverters that use WatchPower
SolarEdge inverter data capture via the reverse engineered protocol
Reads Voltronic/Axpert/MPP Solar inverters and pushes data to Home Assistant
Local LAN Tibber Pulse integration for Home Assistant
Documentation of the Tesla Powerwall 2 local gateway API
Home Assistant custom component for Easee EV chargers
Bridges many BMS brands to inverters by translating BMS and inverter protocols
ESPHome component to monitor and control JBD/Xiaoxiang BMS
Go implementation of the Sungrow iSolarCloud API
Python library for the unofficial Emporia Vue energy monitor cloud API
Home Assistant integration for Huawei FusionSolar via the kiosk and unofficial APIs
Home Assistant integration for GoodWe inverters over the local network
Python API for Tesla Powerwall and solar data, including local gateway access
ESP8266 control for Heidelberg Wallbox Energy Control over Wi-Fi
Home Assistant integration for myenergi devices
Collects data from Sungrow inverters via Modbus/WiNet and exports to MQTT, PVOutput, InfluxDB
Local query integration for APsystems ECU gateways in Home Assistant
Exports Emporia Vue energy data to InfluxDB
Home Assistant component for local querying of APsystems ECU-R gateways
Controls Tesla Wall Charger power via its reverse engineered RS-485 protocol
Unofficial API client for the Sense energy monitor
Unofficial Zonneplan ONE integration using the Zonneplan app API for solar, battery and charger
Bridges Hame/Marstek B2500 balcony storage batteries to MQTT using their reverse-engineered protocol
MQTT interface for Bluetti power stations over Bluetooth
Custom Home Assistant integration for Enphase Envoy with token-based local access
Python module for the Solarman V5 datalogger protocol
Python library that reads GoodWe inverters over their local UDP/Modbus protocol
Home Assistant integration for AMS/HAN/P1 smart meters over serial or TCP
Bluetti Bluetooth integration for Home Assistant
Solis inverter ESP8266 logger, S3 Wi-Fi stick reverse engineering and ESPHome firmware
ESPHome config to monitor and control ISolar/EASUN SMG II inverters via RS232
Wi-Fi monitoring for Pylontech US2000 batteries
Python library for SolarEdge Modbus data collection
HACS integration for Solis inverters over Modbus
Integrates Growatt NOAH 2000 batteries with Home Assistant via MQTT using the Growatt app API
ioBroker adapter for EcoFlow power stations and PowerStream via MQTT
Monitors Outback MATE, Renogy Rover and EPEver charge controllers
Home Assistant integration for the GoodWe SEMS portal
Arduino library for Dutch DSMR smart meters
Library for Hoymiles DTUs and HMS-W microinverters over their reverse-engineered protobuf protocol
Python library to read Renogy charge controllers and batteries via BT-1/BT-2 modules
Investigation and documentation of the API behind the myenergi app
Reverse engineering of the Tesla 10kW charger and open controller
Victron Bluetooth and serial communication with MQTT and Home Assistant
Unofficial Enphase API wrapper and documentation, including the local IQ Gateway LAN API
Bridge decoding the encrypted MQTT packets of Growatt NEO/SPF/TL-XH inverters and NOAH batteries
Proxies UDP traffic from JuiceBox EV chargers to MQTT after the cloud shutdown
Python parser for Dutch Smart Meter (DSMR) P1 telegrams
Bash CLI for the Huawei FusionSolar cloud API used by SUN2000 inverters
Home Assistant custom component for Zaptec chargers
Data logger for Omnik/Hosola and other Solarman Wi-Fi-kit inverters
Home Assistant custom component for Fronius Wattpilot EV chargers
Arduino library for Daly BMS over UART
Bridges MQTT messages between Marstek storage systems and the cloud
HACS integration for Enphase Envoy firmware 7+ using installer-level local endpoints
ESPHome component to monitor Seplos BMS via UART/RS485
Python wrapper for the local API of SolaX inverters
Reads data from Tibber Pulse and similar AMS/HAN meter readers
Controls Zendure's SolarFlow hub locally with more flexibility
ESP32 bridge from Bluetti Bluetooth to MQTT
Python wrapper for the unofficial Growatt ShineServer cloud API used by the ShinePhone app
ESPHome integration for Deye single- and three-phase inverters
RCT Power inverters over the reverse-engineered RCT serial communication protocol
Converts JK-BMS RS485 data to the Pylontech CAN protocol
Proxy that takes TSUN inverter cloud traffic local
Python module for Daly BMS devices
Extracts credentials and Wi-Fi keys from Deye microinverter loggers via AT commands
Utility to read data from Deye inverters and clones
Prometheus exporter for the SunPower PVS monitoring system
ESPHome component for Hame/Marstek B2500 batteries over their proprietary BLE protocol
Home Assistant component reading Fronius Gen24 inverters, meters and batteries via Modbus
Home Assistant integration for Grott, the Growatt inverter data interceptor
ESPHome bridge from JK-BMS to inverter CAN bus (Pylontech protocol)
ESP8266 logger for GoodWe inverters that uploads to PVOutput and MQTT
Emulates the Soyosource GTN1200 current clamp over RS485 to control grid-tie limiter output
Home Assistant Modbus integration for Fox ESS H1 and AC inverters
Home Assistant SunPower integration using the PVS local installer interface
Home Assistant integration for Hypervolt EV chargers
Connects to the Zendure SolarFlow hub over Bluetooth to read telemetry
PowMr inverter serial protocol reverse engineering
Reads the real-time stream from an Enphase Envoy and publishes it to MQTT
Python library for Pylontech lithium batteries over RS485
ESPHome component for PACE BMS via its proprietary RS485 protocol
Integrates Zendure SolarFlow hubs into Home Assistant
Reverse engineering of the EcoFlow power station CAN bus
Python connector and ESPHome template for BM2 Bluetooth battery monitors
EG4 and Luxpower inverters via the unofficial EG4 cloud API plus local Modbus/dongle access
ESPHome component to monitor and control ANT-BMS
Home Assistant integration for ChargePoint Home chargers
Python API for the Tesla Powerwall local gateway
Collects solar metrics from the Enphase Envoy local gateway API
Reverse engineering of the Bluetooth interface of EcoFlow devices
Alternative ESPHome firmware for the Emporia Vue Utility Connect
Linux utility for JBD BMS over serial, CAN and Bluetooth
LuxPower inverters read and controlled locally through the Wi-Fi data-logger dongle protocol
Controls Huawei R4875G rectifier power supplies over their proprietary CAN bus protocol
DESS Monitor inverter client, relaying Axpert PI30/PI18 protocols through the vendor cloud
Python module for the Wallbox EV charger cloud API
ESP gateway giving a stable local connection to Hoymiles HMS-W DTUs
Web Bluetooth monitoring tool for Marstek Venus E batteries
Home Assistant integration reading Growatt solar inverters over Modbus TCP
Home Assistant integration for local access to GivEnergy inverters and batteries
Must solar inverters read via reverse-engineered Modbus register maps
BM6 car battery monitors read over their reverse-engineered BLE protocol
Local Home Assistant integration for hybrid inverters with EyeBond dataloggers
Homebridge plugin for Enphase Envoy solar gateways and their peripherals
Async library for the SMA Solar WebConnect web interface
Reverse engineering of the EcoFlow BLE protocol v2
Information about the undocumented local API of SolarEdge inverters
ESPHome config reading Huawei SUN2000 inverters over Modbus RTU
Ragel-based C parser for DSMR P1 and IEC 62056-21 telegrams
Documentation of the Makita XGT 40V battery/charger/tool serial protocol
Library for reading Huawei SUN2000 inverter metrics via Modbus TCP
Reverse engineering notes for the Emporia Vue 2 energy monitor
Unofficial Home Assistant integration for Ohme EV chargers
Custom Home Assistant integration for Jackery portable power stations
Python library for EPEver solar charge controllers over Modbus
Python library for the Fronius Wattpilot wallbox's reverse-engineered WebSocket API
Research into communicating with EcoFlow power stations offline
Home Assistant integration for the unofficial Growatt server API (upstream of growatt_server)
Connects Heidelberg wallboxes to the home Wi-Fi network
Linux monitoring tool for Voltronic Axpert MEX inverters
ESPHome component to monitor Daly BMS via BLE
Unofficial Python module monitoring and controlling Anker SOLIX devices over Bluetooth
Collects data from Ginlong/Solis inverters with a Wi-Fi stick
ESPHome BLE configs for Hame HM2500 / Marstek B2500 balcony batteries
Python library for communicating with Huawei SUN2000 inverters
Unofficial library for basic Bluetooth communication with Bluetti power stations
EcoFlow power stations and PowerOcean via the app's real-time cloud connection and local Modbus
SENEC home batteries via the undocumented local web API and mein-senec portal
Emulates Pylontech battery CAN bus traffic for inverters
EcoFlow cloud integration for Home Assistant for US users via the private app API
BYD Battery-Box HVS/HVM monitoring over the reverse-engineered BYD local protocol
Uploads GoodWe inverter data from SEMS to PVOutput
Home Assistant integration for Fox ESS H1/H3/KH inverters over Modbus
Python library for the Easee EV charger API
Python library for Renogy solar charge controllers over Modbus
Reads data directly from a Tibber Pulse and publishes it locally
Reads BM6 BLE car battery monitors without the vendor app
Renogy charge controllers and batteries over their BLE protocol
ESPHome component for local control of FOSSiBOT / SYDPOWER / AFERIY power stations over BLE
ESPHome component for Solax X1 mini inverters over their proprietary RS485 protocol
SAJ inverters via the private eSolar portal API
Simulates a BYD Battery-Box Premium HVS over CAN so custom batteries work with inverters
Bridge between LuxPower inverters' datalogger protocol and MQTT/InfluxDB/Postgres
Home Assistant integration for Pod Point chargers
Utilities to interact with Solarman data logging sticks on Solis inverters
Knowledge hub for controlling the EcoFlow PowerStream locally without the cloud
Enphase systems via undocumented Enlighten cloud endpoints used by the app
Python library querying the GoodWe SEMS portal API
Modbus proxy emulating supported meters so SolarEdge inverters work with unsupported kWh meters
Unofficial Home Assistant integration for Anker SOLIX devices over Bluetooth
Python library that reads production data from Enphase Envoy gateways on the local network
Local Modbus TCP Home Assistant integration for EcoFlow PowerOcean, no cloud
Integrating Hughes Power Watchdog surge protectors into Home Assistant via ESPHome BLE
Unofficial documentation of the GoodWe inverter TCP/UDP communication protocol
Async Python library for myenergi zappi, eddi and harvi devices
Reverse-engineering notes and firmware analysis for the Marstek Venus E
ESPHome BLE client for the Powerdale Nexxtender EV charger
Runs Zendure SolarFlow 800 Pro devices locally without the cloud
ESPHome component to control a Huawei R4850 power supply via CAN bus
ESPHome component reading Junctek KG-F battery monitors via UART
Local MQTT gateway for FoxESS M1 and Q1 microinverters
ioBroker adapter for the Huawei FusionSolar cloud
ESPHome component for Votronic solar and battery devices over BLE or the Display Link bus
Python library to access GivEnergy inverters via Modbus TCP on the local network
Reverse-engineered protobuf definitions for the Hoymiles DTU network protocol
Bash script for direct data access to Bosswerk MI600/Deye microinverters
Passive monitoring of the Tesla Gen 3 Wall Connector via its local API
DEFA Power and eRange EV chargers via the unofficial DEFA cloud API
ESP32-S3 device that emulates the Marstek cloud locally so Marstek batteries run offline with MQTT control
Garo wallbox EV chargers via the chargers' undocumented local API
Relays Huawei FusionSolar inverter data from the Northbound API or kiosk to InfluxDB
ESPHome component for communication with ABL eMH1 wallboxes
ESPHome integration for inverters using the 8851 protocol
Reads multiple JK BMS units over their RS485 protocol with ESPHome
Async Python library for the Enphase Envoy / IQ Gateway local API
Venus OS driver emulating a Victron MultiPlus-II to show correct AC load and flow
Python API for the Tesla Wall Connector's local endpoints
Comwatt energy management data via the unofficial Comwatt API
Venus OS driver reading the Enphase Envoy-S local API and showing it as a PV inverter
Fetches live photovoltaic and battery data from the Viessmann Gridbox cloud
JK BMS web client using Web Bluetooth
ESPHome component for Tianpower BMS via BLE
Homebridge plugin for the Tesla Powerwall local API
ESP8266 SDM230 meter emulator talking RS-485 to Growatt inverters for export limiting
Client for the Shinemonitor REST API fetching inverter data
ESPHome component for DALY H/K/M/S-series and 100Balance BMS
Prometheus exporters for GoodWe smart meters and inverters over their local UDP protocol
Growatt server replacement implemented in Python
Home Assistant integration for the Victron VE.Bus MK3 interface
Reads Deye battery messages via the PCS and InterCAN bus
Home Assistant integration for local Bluetooth monitoring and control of DJI Power stations
Home Assistant integration for the LG ESS inverter via its local API
Home Assistant integration for Hughes Power Watchdog surge protectors over Bluetooth
Home Assistant integration for the Zeekr EVSE wallbox
ESPHome component that emulates the Pylontech RS485 protocol for inverters
Home Assistant integration for Marstek Venus E batteries via Bluetooth LE
Unofficial SunEnergyXT (Sunlit Solar) balcony battery integration
Monitors Pylontech US2000/3000/5000 batteries via ESPHome over the console port
Parser library for the SolarEdge SetApp protocol buffers
Python library for EcoFlow power stations over BLE
ESPHome component for JN-MPPT and JN-W/S solar controllers via RS485
Emulates an SMA/Victron-compatible BMS over CAN bus from ESPHome
ESPHome code for KaiDeng WVC-600/700/800 micro inverters
ESPHome component for Basen BMS via BLE
ESPHome component that controls a Gen 2 Tesla Wall Connector over its RS485 load-sharing protocol
ESPHome component to monitor and control an EVSE wallbox
Python library to query GoodWe inverters
CAN/RS485 BMS emulator letting DIY batteries talk to various inverter brands
Local Modbus TCP Home Assistant integration for the Anker SOLIX X1, no cloud
Domoticz plugin for GoodWe inverters via the SEMS API
ESPHome config for Makita XGT batteries with logging and protection
Go library pulling data from Enphase IQ Envoy and IQ Combiner gateways
SAJ eSolar portal integration using a reverse-engineered private API
Modbus/MQTT bridge supporting the Sungrow WiNet-S proprietary transport
Home Assistant component controlling Tesla Powerwall via the local gateway API
Domoticz plugin for GoodWe inverters via the SEMS portal API
Unofficial OpenAPI specification and clients for Enphase APIs
Reads and writes Epever XTRA N series MPPT solar chargers with ESPHome
ESPHome component for reading the Garnet SeeLeveL RV tank sensor
Simulates an SDM630 meter for Growatt MIC inverter export limitation
ESP32 BLE bridge simulating the EcoFlow app to control PowerStream locally via MQTT
ESP32 emulates the Neurio meter for dynamic load management of a Tesla Wall Connector Gen 3
Unofficial API wrapper for Tesla services including the local Tesla Gateway (Powerwall) API
ESPHome component for Lumentree inverters via BLE or RS232
Unofficial Python client for the Growatt API
Unofficial Python client for ZCS Azzurro solar inverters
Reverse engineering the RS485 Modbus registers of a GoodWe solar inverter
Data logger for the Samil SolarRiver 1100TL inverter using its serial protocol