Welcome to rctclient's documentation!
This documentation covers the rctclient python library, used to interact with solar inverters by RCT Power GmbH by implementing their proprietary "RCT Power Serial Communication Protocol". It also serves as documentation of the protocol itself. As such, the main focus is on supporting the vendors devices, but the library can be used for own implementations just as well.
Disclaimer: Neither the python library nor this documentation is in any way affiliated with or supported by RCT Power GmbH in any way. Do not ask them for support regarding anything concerning the content of the material provided by this project.
2nd Disclaimer: Use the material provided by this project (code, documentation etc.) at your own risk. None of the contributors can be held liable for any damage that may occur by using the information provided. See also the LICENSE file for further information.
- Tools and scripts
- Mapping the official app to OIDs
The original implementation was done by GitHub user pob90, including a simulator that can be used for development and a command line tool to manually query single objects from the device. The simulator proved to be invaluable when developing software that interfaces with RCT devices and when porting the code to Python 3. According to a forum post and comments in the code base, the implementation is based on the official documentation by the vendor, version 1.8.
The original implementation can be found here: https://github.com/pob90/openWB/tree/master/modules/rct_power
The implementation was done for use with the OpenWB project. The projects goal is to provide an open source wall box for charging electric cars, and it needs to interface with various devices in order to optimize its usage of energy, such as only charging when the solar inverter signals an abundance of energy.
The integration can be found in their repository:
bezug_rct (python implementation and call example using shell).
speicher_rct (shell calls only)
wr_rct (shell calls only)
The project was, however, implemented as pure Python 2 code. As Python 2 is officially dead and (as of writing this) the first distributions completed its removal, the first step was to convert everything to Python 3. Once the code worked (again), the structure was changed to span multiple files instead of one single file, some classes were split, many were renamed and variable constants were converted to enums and PEP-484 type hinting was added.