A tool for reading Growatt inverter data on Raspberry Pi Pico
Project description
Growatt pico reader
Micropython library for reading data from Growatt inverter using RS485 port. Library is build for Raspberry pi pico / pico w and RS485 to TTL module.
Installation
1. Using PyPi package (recommended)
In Thonny IDE go to Tools -> Manage Packages and search for growatt_pico_reader
2. Copy python file
Copy growatt_pico_reader/growatt_pico_reader_py file to your root directory on pi pico.
Usage
Import package
from growatt_pico_reader import *
Initial setup (not required)
set_tx_pin(pin_number) # change TX port (default is 0)
set_rx_pin(pin_number) # change RX port (default is 1)
set_ctrl_pin(pin_number) # change RS485 transceiver control pin (default is 1)
set_slave_address(address) # change growatt address (default is 1) (address can be set on inverter LCD display)
Read data
Read All Data:
all_data = await get_all()
print(all_data)
Read specific data:
grid_frequency = await get_Fac()
print(grid_frequency)
All available data to read:
| Register Address | Variable Short | Description | Unit | Function Call | Note |
|---|---|---|---|---|---|
| 0 | Inverter Status | Inverter run state | - | get_inverter_status() | 0:waiting, 1:normal, 3:fault |
| 1-2 | Ppv | Input power | W | get_Ppv() | |
| 3 | Vpv1 | PV1 voltage | V | get_Vpv1() | |
| 4 | PV1Curr | PV1 input current | A | get_PV1Curr() | |
| 5-6 | Ppv1 | PV1 input power | W | get_Ppv1() | |
| 35-36 | Pac | Output power | W | get_Pac() | |
| 37 | Fac | Grid frequency | Hz | get_Fac() | |
| 38 | Vac1 | Three/single phase grid voltage | V | get_Vac1() | |
| 39 | Iac1 | Three/single phase grid output current | A | get_Iac1() | |
| 40-41 | Pac1 | Three/single phase grid output watt VA | VA | get_Pac1() | |
| 42 | Vac2 | Three phase grid voltage | V | get_Vac2() | |
| 43 | Iac2 | Three phase grid output current | A | get_Iac2() | |
| 44-45 | Pac2 | Three phase grid output power | VA | get_Pac2() | |
| 46 | Vac3 | Three phase grid voltage | V | get_Vac3() | |
| 47 | Iac3 | Three phase grid output current | A | get_Iac3() | |
| 48-49 | Pac3 | Three phase grid output power | VA | get_Pac3() | |
| 50 | Vac_RS | Three phase grid voltage | V | get_Vac_RS() | |
| 51 | Vac_ST | Three phase grid voltage | V | get_Vac_ST() | |
| 52 | Vac_TR | Three phase grid voltage | V | get_Vac_TR() | |
| 53-54 | Eac_today | Today generate energy | kWh | get_Eac_today() | |
| 55-56 | Eac_total | Total generate energy | kWh | get_Eac_total() | |
| 57-58 | Time_total | Work time total | s | get_Time_total() | |
| 59-60 | Epv1_today | PV1Energy today | kWh | get_Epv1_today() | |
| 61-62 | Epv1_total | PV1Energy total | kWh | get_Epv1_total() | |
| 91-92 | Epv_total | PV Energy total | kWh | get_Epv_total() | |
| 93 | Temp1 | Inverter temperature | °C | get_Temp1() | |
| 101 | RealOPPercent | Real Output power Percent | % | get_RealOPPercent() | |
| 105 | FaultMaincode | Inverter fault maincode | - | get_FaultMaincode() | |
| 1009-1010 | Pdischarge1 | Discharge power | W | get_Pdischarge1() | |
| 1011-1012 | Pcharge1 | Charge power | W | get_Pcharge1() | |
| 1013 | Vbat | Battery voltage | V | get_Vbat() | |
| 1014 | SOC | State of charge Capacity | % | get_SOC() | |
| 1015-1016 | Pac_to_user | AC power to user | W | get_Pac_to_user_Total() | |
| 1021-1022 | Pac_to_user_Total | AC power to user total | W | get_Pac_to_user_Total() | |
| 1023-1024 | Pac_to_grid | AC power to grid | W | get_Pac_to_grid() | |
| 1029-1030 | Pac_to_grid_total | AC power to grid total | W | get_Pac_to_grid_total() | |
| 1031-1032 | PLocalLoad | INV power to local load | W | get_PLocalLoad() | |
| 1037-1038 | PLocalLoad_total | INV power to local load total | W | get_PLocalLoad_total() | |
| 1040 | Battery Temperature | Battery Temperature | °C | get_BatteryTemperature() | |
| 1044-1045 | Etouser_today | Energy to user today | kWh | get_Etouser_today() | |
| 1046-1047 | Etouser_total | Energy to user total | kWh | get_Etouser_total() | |
| 1048-1049 | Etogrid_today | Energy to grid today | kWh | get_Etogrid_today() | |
| 1050-1051 | Etogrid_total | Energy to grid total | kWh | get_Etogrid_total() | |
| 1052-1053 | Edischarge1_today | Discharge energy1 today | kWh | get_Edischarge1_today() | |
| 1054-1055 | Edischarge1_total | Total discharge energy1 | kWh | get_Edischarge1_total() | |
| 1056-1057 | Echarge1_today | Charge1 energy today | kWh | get_Echarge1_today() | |
| 1058-1059 | Echarge1_total | Charge1 energy total | kWh | get_Echarge1_total() | |
| 1060-1061 | ELocalLoad_Today | Local load energy today | kWh | get_ELocalLoad_Today() | |
| 1062-1063 | ELocalLoad_Total | Local load energy total | kWh | get_ELocalLoad_Total() | |
| 1124-1125 | ACCharge_Today | AC Charge Energy today | kWh | get_ACCharge_today() | |
| 1128-1129 | ACChargePower | AC Charge Power | W | get_ACChargePower() | |
| 1137-1138 | Esystem_today | System electric energy today | kWh | get_Esystem_today() | |
| 1139-1140 | Esystem_total | System electric energy total | kWh | get_Esystem_total() | |
| 1141-1142 | Eself_today | self electric energy today | kWh | get_Eself_today() | |
| 1143-1144 | Eself_total | self electric energy total | kWh | get_Eself_total() | |
| 1145-1146 | PSystem | System power | W | get_PSystem() | |
| 1147-1148 | PSelf | self power | W | get_PSelf() |
Example Hardware Setup
On growatt inverter on LCD display set RS485 mode to VPP. Pins 5 (modbus A) and 4 (modbus B) are used on RJ45 connector.
Used resources:
- For parsing data was used this document: Growatt-Inverter-Modbus-RTU-Protocol-II-V1-24-English-new.pdf
- Base functionality was inspired from TheTrueRandom/growatt-modbus
License and contributing
Project is licensed under MIT license. Feel free to open a PR for new features (e.g. more parsed data)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file growatt_pico_reader-0.1.3.tar.gz.
File metadata
- Download URL: growatt_pico_reader-0.1.3.tar.gz
- Upload date:
- Size: 5.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f4709a6ffc30194766f1f4778a82beec818d99379e76d2e8d025d2b005fa77ab
|
|
| MD5 |
9e95cda5a465fe52974d6dc1d6fc35e5
|
|
| BLAKE2b-256 |
a134f2152df50a23915521056cf97b2a01166d452b89dd20efa2d61476c9fcc3
|
File details
Details for the file growatt_pico_reader-0.1.3-py3-none-any.whl.
File metadata
- Download URL: growatt_pico_reader-0.1.3-py3-none-any.whl
- Upload date:
- Size: 8.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dfb5260532b3950736293d690c49739064cd4942f344e6fd20cc3e9e0ba3c00f
|
|
| MD5 |
fd00000d08d5dad1d2e7ca7e2f4302fa
|
|
| BLAKE2b-256 |
311de08f845ca8acc88834eaa3ad3c62384748da5660d1e9d54612f45387cbe7
|