Skip to content

coxifred/pimpMySuperWatt

Repository files navigation

Welcome to PimpMySuperWatt repository

Overview

What is it ?

This little software allows you to retrieve parameters and real-time status of an inverter. Compatible with superWatt VM2 inverter also knows Voltronic Axpert VMII (3K/5K).

It's look like this:

SuperWatt-VM2

This inverter contains 2 ports for communication (USB and Serial). This program works (for the moment) with USB cable.

What do you need ?

  • Raspberry or linux compatible hardware, and an usb cable.
  • Java for gradle dependencies resolutions.
  • Python 3.7.3 (no guarantee that others versions works, viva Python !)

How to install/launch with PYTHON

git clone https://github.com/coxifred/pimpMySuperWatt.git
cd pimpMySuperWatt
chmod 755 ./startPython.sh
./startPython.sh

output:

chmod 755 ./startPython.sh
./startPython.sh
PimpMySuperWatt python direct installation

 Check prequisites...

 - Checking python version need 3.7 : OK
 - Cleaning .venv python : OK
 - Creating .venv python : OK
 - Installing dependencies :
   * crcmod==1.7 : OK
   * pyusb==1.0.2 : OK
   * pyserial==3.4 : OK
   * requests==2.24.0 : OK
   * flask==2.1.0 : OK
   * Flask-Caching==1.9.0 : OK
   * Flask-APScheduler==1.11.0 : OK
   * apscheduler==3.6.3 : OK
   * crc16==0.1.1 : OK
   * influxdb==5.3.0 : OK
   * paho-mqtt==1.5.0 : OK
   * netifaces==0.10.9 : OK
 - Starting PimpMySuperwatt
2022-04-26 19:59:53.161798 [MainThread] INF CORE Instanciate Singleton
2022-04-26 19:59:53.170654 [MainThread] INF CORE Starting PimpMySuperWatts on dockerProd
2022-04-26 19:59:53.170818 [MainThread] INF CORE Analysing arguments
2022-04-26 19:59:53.172140 [MainThread] INF CORE Debug activated

How to install/launch with JAVA/GRADLE

git clone https://github.com/coxifred/pimpMySuperWatt.git
cd pimpMySuperWatt
chmod 755 ./start.sh ./debug.sh
./start.sh or ./debug.sh

output:

> Task :python:checkPython
Using python 3.7.3 from /root/pimpMySuperWatt/python/.gradle/python (.gradle/python/bin/python)
Using pip 20.1.1 from /root/pimpMySuperWatt/python/.gradle/python/lib/python3.7/site-packages/pip (python 3.7)

> Task :python:runPython
[python] .gradle/python/bin/python ./superwatt.py --debug superwatt.json
         2020-07-07 22:57:11.934332 [MainThread] INF CORE Instanciate Singleton
         2020-07-07 22:57:12.101406 [MainThread] INF CORE Starting PimpMySuperWatts on pimpMySuperWatt
         2020-07-07 22:57:12.102219 [MainThread] INF CORE Analysing arguments
         2020-07-07 22:57:12.114759 [MainThread] INF CORE Debug activated
         2020-07-07 22:57:12.141037 [MainThread] INF CORE Config file exist /root/pimpMySuperWatt/python/superwatt.json
  • Note 1: start.sh or debug.sh launch gradlew in background (nohup).
  • Note 2: A log is created under /tmp and named superwatt.log
  • Note 3: stop.sh to stop it.

Configuration

Configuration file is superwatt.json

{
        "instance"              : "SuperWatt Garage",    <-  Free label
        "debug"                 : true,                  <- debug mode 
        "communicationClass"    : "usbConnector",        <- Class connector (usbConnector for the moment)
        "portPath"              : "/dev/ttyUSB0",        <- the port Path
        "webserver"             : true,                  <- If you want a web interface
        "webserverDebug"        : true,                  <- debug web 
        "webClass"              : "site",                <- Class for app web.
        "httpBind"              : "0.0.0.0",             <- Binding ip address for web
        "httpPort"              : 60000,                 <- Port for http interface      
        "mqttServers"           : [                      <- If you want to publish to a mqtt broker (or multiples)
                                   {
                                    "mqttServer"     : "192.168.2.30",
                                    "mqttServerPort" : 1883,
                                    "mqttTopic"      : "pimpMySuperWatt/superWattGarage"
                                   }
                                  ],
        "influxDbUrls"          : [                      <- If you want to push results in an influxDb instance (or multiples)
                                   {
                                    "username"  : "root",
                                    "password"  : "root",
                                    "dbName"    : "pimpMySuperWatt",
                                    "dbHost"    : "192.168.2.51",
                                    "dbPort"    : "8086"
                                   }
                                  ],
        "queryPoolingInterval"  : 30,                     <- Inverter will be queried every 30s (min 2s)
        "queryPluginInterval"  : 30                       <- Plugin solicitation    

}

Web Interface

Simply connect with http://<your_ip>:60000, and wait for informations

API available (See buttons)

SuperWatt-VM2

InfluxDb and Grafana Dashboard Demo

Here is a sample dashboard for grafana. Click here to download it.

See the demo ? login guest password guest Click here for DEMO

Grafana

Plugins

  • solarPosition

    Provides to influxDb sun azimuth and zenith. Just fill python/plugins/solarPosition/solarPosition.json file with your latitude and longitude.

    {
        "latitude"              : 47.0000,
        "longitude"             : 6.0000,
        "dst"                   : 1
    }

    See azimut and zenith in Grafana with your pv production :

    SolarPosition

Docker installation:

Create your own configuration:

- /superwatt.json
- /solarposition.json

Create this docker compose file:

version: "2"
services:
"pimpmysuperwatt":
  privileged: true
  image: "coxifred/pimpmysuperwatt"
  container_name: "pimpmysuperwatt"
  restart: always
  ports:
    - "61000:60000"
  volumes:
    - /superwatt.json:/superwatt.json
    - /solarPosition.json:/plugins/solarPosition/solarPosition.json
  devices:
    - /dev/ttyUSB0:/dev/ttyUSB0

Then simply run:

docker-compose up -d

Should be running under http://<your_host>:61000

Releases

No releases published

Packages

No packages published