
| Component |
Description |
renogy.py |
Renogy charge controller / inverter monitoring software |
cadence.py |
Simple HTTP metrics service |
timeseries.py |
Time series data storage and retrieval |
solar_monitor.py |
Solar metrics logger |
The 6 pins on the RJ12 connector are TX | RX | GND | GND | PWR | PWR from left to right. You should also be able to identify the orientation by measuring ~+5.65V from TX to GND and ~+15V from PWR to GND. Only TX, RX, and GND will need to be connected to the serial port for monitoring the charge controller.
| DB9 Pin |
RJ12 Pin |
| 1 (DC) |
- |
| 2 (RX) |
1 (TX) |
| 3 (TX) |
2 (RX) |
| 4 (DT) |
- |
| 5 (GND) |
3 (GND) |
| 6 (DSR) |
- |
| 7 (RTS) |
- |
| 8 (CTS) |
- |
| 9 (RI) |
- |
| Attribute |
Address |
Scale |
Units |
Notes |
| SYS_MAX_VOLTS |
0x00A |
1 |
V |
High order byte |
| SYS_MAX_AMPS |
0x00A |
1 |
A |
Low order byte |
| SYS_MAX_DISCHARGE |
0x00B |
1 |
A |
High order byte |
| SYS_TYPE |
0x00B |
1 |
|
- |
| BATT_SOC |
0x100 |
1 |
% |
- |
| BATT_VOLTS |
0x101 |
0.1 |
V |
- |
| CHARGING_AMPS |
0x102 |
0.01 |
A |
- |
| CONTROLLER_TEMP |
0x103 |
1 |
C |
- |
| LOAD_WATTS |
0x106 |
1 |
W |
- |
| PANEL_VOLTS |
0x107 |
0.1 |
V |
- |
| PANEL_AMPS |
0x108 |
0.01 |
A |
- |
| PANEL_WATTS |
0x109 |
1 |
W |
- |
| BATT_MIN_VOLTS |
0x10B |
0.1 |
V |
- |
| BATT_MAX_VOLTS |
0x10C |
0.1 |
V |
- |
| DAY_CHARGE |
0x10F |
1 |
W |
- |
| DAY_DISCHARGE |
0x110 |
1 |
W |
- |
| DAY_GEN_POWER |
0x113 |
1 |
W |
- |
| DAY_CON_POWER |
0x114 |
1 |
W |
- |
| UPTIME_DAYS |
0x115 |
1 |
|
- |
| BATT_FULL_COUNT |
0x117 |
1 |
|
- |
| CHARGING_STATE |
0x120 |
1 |
|
- |
| BATT_CAPACITY |
0xE002 |
1 |
W |
- |
| SYS_BATT_VOLTS |
0xE003 |
1 |
V |
- |
| RECON_BATT_VOLTS |
0xE003 |
1 |
V |
- |
| BATT_TYPE |
0xE004 |
1 |
|
- |
| OVER_VOLTS |
0xE005 |
0.1 |
V |
- |
| CHARGE_VOLTS |
0xE006 |
0.1 |
V |
- |
| EQUALIZE_VOLTS |
0xE007 |
0.1 |
V |
- |
| BOOST_VOLTS |
0xE008 |
0.1 |
V |
- |
| FLOAT_VOLTS |
0xE009 |
0.1 |
V |
- |
| BOOST_RECOV_VOLTS |
0xE00A |
0.1 |
V |
- |
| DISCH_RECOV_VOLTS |
0xE00B |
0.1 |
V |
- |
| UNDER_WARN_VOLT |
0xE00C |
0.1 |
V |
- |
| OVER_DISCH_VOLTS |
0xE00D |
0.1 |
V |
- |
| DISCH_WARN_VOLTS |
0xE00E |
0.1 |
V |
- |
| BOOST_TIME |
0xE012 |
1 |
|
- |
import requests
import pandas as pd
import plotly.graph_objects as go
def plot(df, x, y):
fig = go.Figure([go.Scatter(x=df[x], y=df[y], marker_color='black', opacity=0.6)])
fig.update_layout(title=y)
fig.show()
response = requests.get('http://192.168.1.195:5000/metric/solarshed')
df = pd.DataFrame(response.json())
df['time'] = pd.to_datetime(df['time'], unit='s')
plot(df, 'time', 'panel_volts')

plot(df, 'time', 'charging_state')
