update
This commit is contained in:
3
debug.py
Normal file → Executable file
3
debug.py
Normal file → Executable file
@@ -1,3 +1,4 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
from solaxx3.rs485 import SolaxX3
|
from solaxx3.rs485 import SolaxX3
|
||||||
solax_items=[
|
solax_items=[
|
||||||
"power_dc1",
|
"power_dc1",
|
||||||
@@ -65,7 +66,7 @@ openhab_items=[
|
|||||||
]
|
]
|
||||||
|
|
||||||
# adjust the serial port and baud rate as necessary
|
# adjust the serial port and baud rate as necessary
|
||||||
s = SolaxX3(port="/dev/ttySOLAX", baudrate=19200)
|
s = SolaxX3(port="/dev/ttyUSB0", baudrate=19200)
|
||||||
data =[]
|
data =[]
|
||||||
if s.connect():
|
if s.connect():
|
||||||
s.read_all_registers()
|
s.read_all_registers()
|
||||||
|
|||||||
9
solax.py
9
solax.py
@@ -27,7 +27,7 @@ solax_items=[
|
|||||||
"feed_in_power",
|
"feed_in_power",
|
||||||
"energy_to_grid_total",
|
"energy_to_grid_total",
|
||||||
"feed_in_energy_today",
|
"feed_in_energy_today",
|
||||||
"consumption_energy_today",
|
#"consumption_energy_today",
|
||||||
"solar_energy_today",
|
"solar_energy_today",
|
||||||
"battery_power_charge1",
|
"battery_power_charge1",
|
||||||
"temperature_battery",
|
"temperature_battery",
|
||||||
@@ -60,7 +60,7 @@ openhab_items=[
|
|||||||
"Solax_FeedInPower",
|
"Solax_FeedInPower",
|
||||||
"Solax_FeedInTotal",
|
"Solax_FeedInTotal",
|
||||||
"Solax_FeedinEnergyToday",
|
"Solax_FeedinEnergyToday",
|
||||||
"Solax_HouseConsumption",
|
#"Solax_HouseConsumption",
|
||||||
"Solax_DailyYield",
|
"Solax_DailyYield",
|
||||||
"Solax_BatteryPowerCharge",
|
"Solax_BatteryPowerCharge",
|
||||||
"Solax_BatteryTemp",
|
"Solax_BatteryTemp",
|
||||||
@@ -77,7 +77,7 @@ openhab_items=[
|
|||||||
]
|
]
|
||||||
|
|
||||||
# adjust the serial port and baud rate as necessary
|
# adjust the serial port and baud rate as necessary
|
||||||
s = SolaxX3(port="/dev/ttySOLAX", baudrate=19200)
|
s = SolaxX3(port="/dev/ttyUSB0", baudrate=19200)
|
||||||
data =[]
|
data =[]
|
||||||
if s.connect():
|
if s.connect():
|
||||||
s.read_all_registers()
|
s.read_all_registers()
|
||||||
@@ -107,6 +107,7 @@ if s.connect():
|
|||||||
power_dc1 = s.read("power_dc1")[0]
|
power_dc1 = s.read("power_dc1")[0]
|
||||||
power_dc2 = s.read("power_dc2")[0]
|
power_dc2 = s.read("power_dc2")[0]
|
||||||
total_power = power_dc1 + power_dc2
|
total_power = power_dc1 + power_dc2
|
||||||
|
eigenverbrauch=inverter_ac_power-feed_in_power
|
||||||
#battery_temperature = s.read("temperature_battery")
|
#battery_temperature = s.read("temperature_battery")
|
||||||
#print(f"\n\nBattery temperature: {s.read('temperature_battery')}")
|
#print(f"\n\nBattery temperature: {s.read('temperature_battery')}")
|
||||||
# for i, item in enumerate(solax_items):
|
# for i, item in enumerate(solax_items):
|
||||||
@@ -130,6 +131,8 @@ if s.connect():
|
|||||||
act_item.state=float(time_count_down)
|
act_item.state=float(time_count_down)
|
||||||
act_item=items.get("Solax_DCPower")
|
act_item=items.get("Solax_DCPower")
|
||||||
act_item.state=float(total_power)
|
act_item.state=float(total_power)
|
||||||
|
act_item=items.get("Solax_HouseConsumption")
|
||||||
|
act_item.state=float(eigenverbrauch)
|
||||||
data += ["Solax_DCPower"+" value="+str(total_power)]
|
data += ["Solax_DCPower"+" value="+str(total_power)]
|
||||||
# print("Solax_SUM_DC" + str(total_power))
|
# print("Solax_SUM_DC" + str(total_power))
|
||||||
data += ["Solax_eToGridToday"+" value="+str(etoday_togrid)]
|
data += ["Solax_eToGridToday"+" value="+str(etoday_togrid)]
|
||||||
|
|||||||
BIN
source/.DS_Store
vendored
Normal file
BIN
source/.DS_Store
vendored
Normal file
Binary file not shown.
11
source/UNKNOWN.egg-info/PKG-INFO
Normal file
11
source/UNKNOWN.egg-info/PKG-INFO
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
Metadata-Version: 2.1
|
||||||
|
Name: UNKNOWN
|
||||||
|
Version: 0.0.0
|
||||||
|
Summary: UNKNOWN
|
||||||
|
Home-page: UNKNOWN
|
||||||
|
License: UNKNOWN
|
||||||
|
Platform: UNKNOWN
|
||||||
|
License-File: LICENSE
|
||||||
|
|
||||||
|
UNKNOWN
|
||||||
|
|
||||||
8
source/UNKNOWN.egg-info/SOURCES.txt
Normal file
8
source/UNKNOWN.egg-info/SOURCES.txt
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
LICENSE
|
||||||
|
README.md
|
||||||
|
pyproject.toml
|
||||||
|
setup.py
|
||||||
|
UNKNOWN.egg-info/PKG-INFO
|
||||||
|
UNKNOWN.egg-info/SOURCES.txt
|
||||||
|
UNKNOWN.egg-info/dependency_links.txt
|
||||||
|
UNKNOWN.egg-info/top_level.txt
|
||||||
1
source/UNKNOWN.egg-info/dependency_links.txt
Normal file
1
source/UNKNOWN.egg-info/dependency_links.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
1
source/UNKNOWN.egg-info/top_level.txt
Normal file
1
source/UNKNOWN.egg-info/top_level.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
@@ -6,9 +6,12 @@ s = SolaxX3(port="/dev/ttyUSB0", baudrate=115200)
|
|||||||
if s.connect():
|
if s.connect():
|
||||||
s.read_all_registers()
|
s.read_all_registers()
|
||||||
|
|
||||||
|
print(s._input_registers_values_list)
|
||||||
|
exit()
|
||||||
|
|
||||||
available_stats = s.list_register_names()
|
available_stats = s.list_register_names()
|
||||||
for stat in available_stats:
|
for stat in available_stats:
|
||||||
print(stat)
|
print(stat, f" {s.read(stat)}")
|
||||||
|
|
||||||
battery_temperature = s.read("temperature_battery")
|
battery_temperature = s.read("temperature_battery")
|
||||||
print(f"\n\nBattery temperature: {s.read('temperature_battery')}")
|
print(f"\n\nBattery temperature: {s.read('temperature_battery')}")
|
||||||
@@ -16,4 +19,4 @@ if s.connect():
|
|||||||
|
|
||||||
else:
|
else:
|
||||||
print("Cannot connect to the Modbus Server/Slave")
|
print("Cannot connect to the Modbus Server/Slave")
|
||||||
exit()
|
exit()
|
||||||
BIN
source/src/.DS_Store
vendored
Normal file
BIN
source/src/.DS_Store
vendored
Normal file
Binary file not shown.
1619
source/src/solaxx3/registers.py
Normal file
1619
source/src/solaxx3/registers.py
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,5 @@
|
|||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
# from pymodbus.client.sync import ModbusSerialClient
|
|
||||||
from pymodbus.client import ModbusSerialClient
|
from pymodbus.client import ModbusSerialClient
|
||||||
from datetime import date, datetime, timedelta
|
from datetime import date, datetime, timedelta
|
||||||
from struct import *
|
from struct import *
|
||||||
@@ -166,4 +165,4 @@ class SolaxX3:
|
|||||||
values_list = self.client.read_holding_registers(
|
values_list = self.client.read_holding_registers(
|
||||||
address=address, count=read_block_length, slave=1
|
address=address, count=read_block_length, slave=1
|
||||||
).registers
|
).registers
|
||||||
self._holding_registers_values_list.extend(values_list)
|
self._holding_registers_values_list.extend(values_list)
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
budsjagvon
|
|
||||||
|
|
||||||
dsafasfd<
|
|
||||||
@@ -1,589 +0,0 @@
|
|||||||
class SolaxRegistersInfo:
|
|
||||||
__registers = {
|
|
||||||
# input registers
|
|
||||||
"grid_voltage": {
|
|
||||||
"address": 0x0000,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 10,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "V",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Grid voltage",
|
|
||||||
},
|
|
||||||
"grid_current": {
|
|
||||||
"address": 0x0001,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "int16",
|
|
||||||
"si_adj": 10,
|
|
||||||
"signed": True,
|
|
||||||
"data_unit": "A",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Grid current",
|
|
||||||
},
|
|
||||||
"grid_power": {
|
|
||||||
"address": 0x0002,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "int16",
|
|
||||||
"si_adj": 1,
|
|
||||||
"signed": True,
|
|
||||||
"data_unit": "W",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Grid power",
|
|
||||||
},
|
|
||||||
"pv_voltage_1": {
|
|
||||||
"address": 0x0003,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 10,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "V",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "PV Voltage 1",
|
|
||||||
},
|
|
||||||
"pv_voltage_2": {
|
|
||||||
"address": 0x0004,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 10,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "V",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "PV Voltage 2",
|
|
||||||
},
|
|
||||||
"pv_current_1": {
|
|
||||||
"address": 0x0005,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 10,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "A",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "PV Current 1",
|
|
||||||
},
|
|
||||||
"pv_current_2": {
|
|
||||||
"address": 0x0006,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 10,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "A",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "PV Current 2",
|
|
||||||
},
|
|
||||||
"grid_frequency": {
|
|
||||||
"address": 0x0007,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 100,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "Hz",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Grid frequency",
|
|
||||||
},
|
|
||||||
"radiator_temperature": {
|
|
||||||
"address": 0x0008,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "int16",
|
|
||||||
"si_adj": 1,
|
|
||||||
"signed": True,
|
|
||||||
"data_unit": "C",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Radiator temperature",
|
|
||||||
},
|
|
||||||
"run_mode": {
|
|
||||||
"address": 0x0009,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 1,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Inverter status",
|
|
||||||
},
|
|
||||||
"power_dc1": {
|
|
||||||
"address": 0x000A,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 1,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "W",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "DC Power String 1",
|
|
||||||
},
|
|
||||||
"power_dc2": {
|
|
||||||
"address": 0x000B,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 1,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "W",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "DC Power String 2",
|
|
||||||
},
|
|
||||||
"temperature_fault_value": {
|
|
||||||
"address": 0x000C,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "int16",
|
|
||||||
"si_adj": 1,
|
|
||||||
"signed": True,
|
|
||||||
"data_unit": "C",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Temperature fault value",
|
|
||||||
},
|
|
||||||
"pv1_volt_fault_value": {
|
|
||||||
"address": 0x000D,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 10,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "V",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "PV1 volt fault value",
|
|
||||||
},
|
|
||||||
"pv2_volt_fault_value": {
|
|
||||||
"address": 0x000E,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 1,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "V",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "PV2 volt fault value",
|
|
||||||
},
|
|
||||||
"gfci_fault_value": {
|
|
||||||
"address": 0x000F,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 1000,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "A",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "GFCI fault value",
|
|
||||||
},
|
|
||||||
"grid_fault_value": {
|
|
||||||
"address": 0x0010,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 10,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "V",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Grid fault value",
|
|
||||||
},
|
|
||||||
"grid_freq__fault__value_t": {
|
|
||||||
"address": 0x0011,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 100,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "Hz",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Grid frequency fault value t",
|
|
||||||
},
|
|
||||||
"dci_fault_value": {
|
|
||||||
"address": 0x0012,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 100,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "A",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "DCI fault value",
|
|
||||||
},
|
|
||||||
"time_count_down": {
|
|
||||||
"address": 0x0013,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 1000,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "seconds",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Time remaining until the current operation finishes (e.g. checking)",
|
|
||||||
},
|
|
||||||
"battery_voltage_charge_1": {
|
|
||||||
"address": 0x0014,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "int16",
|
|
||||||
"si_adj": 10,
|
|
||||||
"signed": True,
|
|
||||||
"data_unit": "V",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Battery voltage charge 1",
|
|
||||||
},
|
|
||||||
"battery_current_charge_1": {
|
|
||||||
"address": 0x0015,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "int16",
|
|
||||||
"si_adj": 10,
|
|
||||||
"signed": True,
|
|
||||||
"data_unit": "V",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Battery current charge 1",
|
|
||||||
},
|
|
||||||
"battery_power_charge1": {
|
|
||||||
"address": 0x0016,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "int16",
|
|
||||||
"si_adj": 1,
|
|
||||||
"signed": True,
|
|
||||||
"data_unit": "W",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Battery power charge 1",
|
|
||||||
},
|
|
||||||
"bms_connect_state": {
|
|
||||||
"address": 0x0017,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 1,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "BMS connect state",
|
|
||||||
},
|
|
||||||
"temperature_battery": {
|
|
||||||
"address": 0x0018,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "int16",
|
|
||||||
"si_adj": 1,
|
|
||||||
"signed": True,
|
|
||||||
"data_unit": "C",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Temperature of the battery",
|
|
||||||
},
|
|
||||||
"battery_capacity": {
|
|
||||||
"address": 0x001C,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 1,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "%",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Battery charge percentage",
|
|
||||||
},
|
|
||||||
"output_energy_charge": {
|
|
||||||
"address": 0x001D,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint32",
|
|
||||||
"si_adj": 10,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "KWh",
|
|
||||||
"data_length": 2,
|
|
||||||
"description": "Output energy charge",
|
|
||||||
},
|
|
||||||
"output_energy_charge_today": {
|
|
||||||
"address": 0x0020,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 10,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "KWh",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Output energy charge today",
|
|
||||||
},
|
|
||||||
"input_energy_charge": {
|
|
||||||
"address": 0x0021,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint32",
|
|
||||||
"si_adj": 10,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "KWh",
|
|
||||||
"data_length": 2,
|
|
||||||
"description": "Input energy charge",
|
|
||||||
},
|
|
||||||
"input_energy_charge_today": {
|
|
||||||
"address": 0x0023,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 10,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "KWh",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Input energy charge today",
|
|
||||||
},
|
|
||||||
"bms_charge_max_current": {
|
|
||||||
"address": 0x0024,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 10,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "A",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "BMS charge max current",
|
|
||||||
},
|
|
||||||
"bms_discharge_max_current": {
|
|
||||||
"address": 0x0025,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 10,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "A",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "BMS discharge max current",
|
|
||||||
},
|
|
||||||
"power_to_ev": {
|
|
||||||
"address": 0x0026,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "int32",
|
|
||||||
"si_adj": 1,
|
|
||||||
"signed": True,
|
|
||||||
"data_unit": "W",
|
|
||||||
"data_length": 2,
|
|
||||||
"description": "Power to EV",
|
|
||||||
},
|
|
||||||
"ref_power_to_ev": {
|
|
||||||
"address": 0x0028,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "int16",
|
|
||||||
"si_adj": 1,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "W",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "ref_power_to_ev",
|
|
||||||
},
|
|
||||||
"feed_in_power": {
|
|
||||||
"address": 0x0046,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "int32",
|
|
||||||
"si_adj": 1,
|
|
||||||
"signed": True,
|
|
||||||
"data_unit": "W ",
|
|
||||||
"data_length": 2,
|
|
||||||
"description": "Feed-in power obtained from Meter or CT",
|
|
||||||
},
|
|
||||||
"energy_to_grid_meter": {
|
|
||||||
"address": 0x0048,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint32",
|
|
||||||
"si_adj": 1,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "KWh",
|
|
||||||
"si_adj": 100,
|
|
||||||
"data_length": 2,
|
|
||||||
"description": "Energy to grid meter value",
|
|
||||||
},
|
|
||||||
"energy_from_grid_meter": {
|
|
||||||
"address": 0x004A,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint32",
|
|
||||||
"si_adj": 100,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "KWh",
|
|
||||||
"data_length": 2,
|
|
||||||
"description": "Energy from grid meter value",
|
|
||||||
},
|
|
||||||
"energy_to_grid_today": {
|
|
||||||
"address": 0x0050,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 10,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "KWh",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "The quantity of energy sent to grid today",
|
|
||||||
},
|
|
||||||
"energy_to_grid_total": {
|
|
||||||
"address": 0x0052,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint32",
|
|
||||||
"si_adj": 10,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "KWh",
|
|
||||||
"data_length": 2,
|
|
||||||
"description": "Total energy sent to grid",
|
|
||||||
},
|
|
||||||
"grid_voltage_r": {
|
|
||||||
"address": 0x006A,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 10,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "V",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Grid voltage for R phase",
|
|
||||||
},
|
|
||||||
"grid_voltage_s": {
|
|
||||||
"address": 0x006E,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 10,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "V",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Grid voltage for S phase",
|
|
||||||
},
|
|
||||||
"grid_voltage_t": {
|
|
||||||
"address": 0x0072,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 10,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "V",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Grid voltage for T phase",
|
|
||||||
},
|
|
||||||
"echarge_today": {
|
|
||||||
"address": 0x0091,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 10,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "KWh",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Echarge energy today",
|
|
||||||
},
|
|
||||||
"solar_energy_total": {
|
|
||||||
"address": 0x0094,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint32",
|
|
||||||
"si_adj": 10,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "KWh",
|
|
||||||
"data_length": 2,
|
|
||||||
"description": "Total solar energy",
|
|
||||||
},
|
|
||||||
"solar_energy_today": {
|
|
||||||
"address": 0x0096,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 10,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "KWh",
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Solar energy today",
|
|
||||||
},
|
|
||||||
"feed_in_energy_today": {
|
|
||||||
"address": 0x0098,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint32",
|
|
||||||
"si_adj": 100,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "KWh",
|
|
||||||
"data_length": 2,
|
|
||||||
"description": "Energy to grid meter for today",
|
|
||||||
},
|
|
||||||
"consumption_energy_today": {
|
|
||||||
"address": 0x009A,
|
|
||||||
"register_type": "input",
|
|
||||||
"data_format": "uint32",
|
|
||||||
"si_adj": 100,
|
|
||||||
"signed": False,
|
|
||||||
"data_unit": "KWh",
|
|
||||||
"data_length": 2,
|
|
||||||
"description": "Energy from grid meter for today",
|
|
||||||
},
|
|
||||||
# holding registers
|
|
||||||
"serial_number": {
|
|
||||||
"address": 0x0000,
|
|
||||||
"register_type": "holding",
|
|
||||||
"data_format": "varchar",
|
|
||||||
"signed": False,
|
|
||||||
"data_length": 7,
|
|
||||||
"description": "Inverter' serial number",
|
|
||||||
},
|
|
||||||
"firmware_version_dsp": {
|
|
||||||
"address": 0x007D,
|
|
||||||
"register_type": "holding",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 1,
|
|
||||||
"signed": False,
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Firmware version DSP",
|
|
||||||
},
|
|
||||||
"hardware_version_dsp": {
|
|
||||||
"address": 0x007E,
|
|
||||||
"register_type": "holding",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 1,
|
|
||||||
"signed": False,
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Hardware version DSP",
|
|
||||||
},
|
|
||||||
"firmware_version_modbus_rtu": {
|
|
||||||
"address": 0x0082,
|
|
||||||
"register_type": "holding",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 1,
|
|
||||||
"signed": False,
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Firmware version MODBUS RTU",
|
|
||||||
},
|
|
||||||
"firmware_version_arm": {
|
|
||||||
"address": 0x0083,
|
|
||||||
"register_type": "holding",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 1,
|
|
||||||
"signed": False,
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Firmware version ARM",
|
|
||||||
},
|
|
||||||
"firmware_version_arm_bootloader": {
|
|
||||||
"address": 0x0084,
|
|
||||||
"register_type": "holding",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 1,
|
|
||||||
"signed": False,
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Firmware version ARM Bootloader",
|
|
||||||
},
|
|
||||||
"rtc_datetime": {
|
|
||||||
"address": 0x0085,
|
|
||||||
"register_type": "holding",
|
|
||||||
"data_format": "datetime",
|
|
||||||
"si_adj": 1,
|
|
||||||
"signed": False,
|
|
||||||
"data_length": 6,
|
|
||||||
"description": "RTC datetime",
|
|
||||||
},
|
|
||||||
"registration_code": {
|
|
||||||
"address": 0x00AA,
|
|
||||||
"register_type": "holding",
|
|
||||||
"data_format": "varchar",
|
|
||||||
"si_adj": 1,
|
|
||||||
"signed": False,
|
|
||||||
"data_length": 6,
|
|
||||||
"description": "Registration code for external module",
|
|
||||||
},
|
|
||||||
"inverter_power_type": {
|
|
||||||
"address": 0x00BA,
|
|
||||||
"register_type": "holding",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 1,
|
|
||||||
"signed": False,
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Inverter power type",
|
|
||||||
},
|
|
||||||
"user_password": {
|
|
||||||
"address": 0x00E0,
|
|
||||||
"register_type": "holding",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 1,
|
|
||||||
"signed": False,
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "User password",
|
|
||||||
},
|
|
||||||
"advanced_password": {
|
|
||||||
"address": 0x00E1,
|
|
||||||
"register_type": "holding",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 1,
|
|
||||||
"signed": False,
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Advanced password",
|
|
||||||
},
|
|
||||||
"machine_type": {
|
|
||||||
"address": 0x0105,
|
|
||||||
"register_type": "holding",
|
|
||||||
"data_format": "uint16",
|
|
||||||
"si_adj": 1,
|
|
||||||
"signed": False,
|
|
||||||
"data_length": 1,
|
|
||||||
"description": "Machine type: 1:X1, 3:X3",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
def get_register_info(self, name: str):
|
|
||||||
return self.__registers[name]
|
|
||||||
|
|
||||||
def list_register_names(self):
|
|
||||||
return list(self.__registers.keys())
|
|
||||||
Reference in New Issue
Block a user