No need to cut cables or connect to adaptors, Just plug the USB cable and play with your inverter
This is an Solar inverter monitoring and controlling system for hybrid inverters, Following are the main components in the system.
Currently we have tested this on
install
stepstools/check-inverter.py
script to connection between inverter and the compute device Troubleshoot
sectionMost of the Hybrid(Chinees) inverters comes with the following Serial interface
Bus 001 Device 002: ID 0665:5161 Cypress Semiconductor USB to Serial
For this VendorID
and ProductID
there are several UPS and inverter devices using this serial com device. But this device had no drivers for Raspberry pi, So when the inverter is connected to a Raspberry pi(or similar) compute device , it detects as a USB block storage device
/dev/usb/hiddev0
not as a USB serial communication device.
i:e
/dev/ttyS0 or /dev/USB0
To establish communication between the inverter and the compute device we had to use pyUSB
approach described in here. For the basic working principles of Inverter - Compute device (Raspberry pi) communication check the above article.
Another important piece of the puzzle was to find out the communication protocol. This document from a random generous Czech inverter site.
Without this, Decoding the values sent from inverter was a challenge
and the meanings of
and
were like greek!
Once the communication is established it's was just a matter of routing the data to client application (React app) to present the data.
We use Flask
to implement REST API and ReactJS, MUI , React Query in the UIs.
Most of the Raspberry pi & Orange Pi variations doesn't come with pip
pre-installed, Hence we have to run this
Use the installation methods specify in the official doc
or use
sudo apt-get install python3-pip
Install the Python USB communication library
python3 -m pip install pyusb
This is required for the following crc16
library
sudo apt-get install python3-dev
CRC16 is used to generate the 2 byte CRC, CRC is a way of detecting accidental changes in data storage or transmission
| Note: This only works upto python 3.9 versions, If you have a latest version of Python 3.10+, This will not work
python3 -m pip install crc16
Add a Udev
rule as shown below, This is required to allow communicating with the USB device for none-sudoers users. Example file is given in
references/99-knnect.rules
in this repo
sudo vim /etc/udev/rules.d/99-\<any-name>.rules
example
sudo cp references/99-knnect.rules /etc/udev/rules.d/
Restart the Udev admin to apply the changes
sudo udevadm control --reload-rules && sudo udevadm trigger
Need following 2 packages
python -m pip install flask gunicorn
Currently this only support monitoring through the local network, If you want to monitor or control the device through internet, Then you need to expose the APIs through Choreo (It's free) like API proxy service or Buy a Blynk subscription and publish data to blynk.
sudo lsusb
to check whether the Serial Communication device has been detected by the operating system if so it show show as
Bus 001 Device 002: ID 0665:5161 Cypress Semiconductor USB to Serial
in the output of lsusb
command
TODO: