A simple python script to retrieve usage data from solar inverters (currently the BlackLineSolar3000 and Soladin600). It stores the retrieved data in a local (sqlite) database and plots it using RRDtool.
The Soladin code is in part based on the linux shell script Solget, but this is not the only source of information (see below).
The code is the documentation ;-) (the documentation is still a work in progress, but there are a multitude of comments sprinkled in the source)
The doc directory contains a schema for soldering the RJ11 to DB9 connection required for connecting to the Soladin600. This is an unchanged reproduction from the Solget website.
$ git clone https://github.com/bramfoo/solarstats.git
$ cd solarstats/solarstats/
$ chmod u+x BLS_MV_Solar_monolithic.py
$ ./BLS_MV_Solar_monolithic.py
The current working version (BLS_MV_Solar_monolithic.py
) is a monolithic, hacked-together version. It works, assuming you have the right setup: a sqlite database, two RRD files, two USB interfaces (at /dev/ttyUSB0 and /dev/ttyUSB1) connected to the right inverters, the same hardcoded defaults, etc. In other words, not very useful for anyone else...
A more modular version is currently in progress, which aims to be more configurable and better structured.
The roadmap is as follows:
- Create python project structure
- Create configuration file (removing hardcoded defaults)
- Import converter classes
- Use python RRD library
- More robust HTML generation
- Add unit tests
The following sources of information were used/helpful
- Soladin
- Solget, a linux shell script to read data from Soladin inverters
- Sol-Link diagram (PDF), the RJ11 to DB9 connection diagram
- Soladin serial protocol, outlining the packets sent by the Soladin
- BlackLineSolar
- Minimalmodbus, detailing the ModBus protocol
- PV Bean Counter, a PV reader project, containing information on similar ModBus inverters
- RRDtool
- RRDtool, the main website