From a2006baf040b15b794d81d064937ba8e84dcde0e Mon Sep 17 00:00:00 2001 From: Norbert Date: Fri, 1 Mar 2024 09:13:14 +0100 Subject: [PATCH] update --- debug.py | 3 +- solax.py | 9 +- source/.DS_Store | Bin 0 -> 6148 bytes source/UNKNOWN.egg-info/PKG-INFO | 11 + source/UNKNOWN.egg-info/SOURCES.txt | 8 + source/UNKNOWN.egg-info/dependency_links.txt | 1 + source/UNKNOWN.egg-info/top_level.txt | 1 + source/example.py | 7 +- source/src/.DS_Store | Bin 0 -> 6148 bytes {src => source/src}/solaxx3/__init__.py | 0 source/src/solaxx3/registers.py | 1619 ++++++++++++++++++ {src => source/src}/solaxx3/rs485.py | 3 +- source/test | 3 - src/solaxx3/registers.py | 589 ------- 14 files changed, 1654 insertions(+), 600 deletions(-) mode change 100644 => 100755 debug.py create mode 100644 source/.DS_Store create mode 100644 source/UNKNOWN.egg-info/PKG-INFO create mode 100644 source/UNKNOWN.egg-info/SOURCES.txt create mode 100644 source/UNKNOWN.egg-info/dependency_links.txt create mode 100644 source/UNKNOWN.egg-info/top_level.txt create mode 100644 source/src/.DS_Store rename {src => source/src}/solaxx3/__init__.py (100%) create mode 100644 source/src/solaxx3/registers.py rename {src => source/src}/solaxx3/rs485.py (98%) delete mode 100644 source/test delete mode 100644 src/solaxx3/registers.py diff --git a/debug.py b/debug.py old mode 100644 new mode 100755 index 1b37965..22708ff --- a/debug.py +++ b/debug.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python3 from solaxx3.rs485 import SolaxX3 solax_items=[ "power_dc1", @@ -65,7 +66,7 @@ openhab_items=[ ] # adjust the serial port and baud rate as necessary -s = SolaxX3(port="/dev/ttySOLAX", baudrate=19200) +s = SolaxX3(port="/dev/ttyUSB0", baudrate=19200) data =[] if s.connect(): s.read_all_registers() diff --git a/solax.py b/solax.py index c8f9f64..05ce96c 100644 --- a/solax.py +++ b/solax.py @@ -27,7 +27,7 @@ solax_items=[ "feed_in_power", "energy_to_grid_total", "feed_in_energy_today", -"consumption_energy_today", +#"consumption_energy_today", "solar_energy_today", "battery_power_charge1", "temperature_battery", @@ -60,7 +60,7 @@ openhab_items=[ "Solax_FeedInPower", "Solax_FeedInTotal", "Solax_FeedinEnergyToday", -"Solax_HouseConsumption", +#"Solax_HouseConsumption", "Solax_DailyYield", "Solax_BatteryPowerCharge", "Solax_BatteryTemp", @@ -77,7 +77,7 @@ openhab_items=[ ] # adjust the serial port and baud rate as necessary -s = SolaxX3(port="/dev/ttySOLAX", baudrate=19200) +s = SolaxX3(port="/dev/ttyUSB0", baudrate=19200) data =[] if s.connect(): s.read_all_registers() @@ -107,6 +107,7 @@ if s.connect(): power_dc1 = s.read("power_dc1")[0] power_dc2 = s.read("power_dc2")[0] total_power = power_dc1 + power_dc2 + eigenverbrauch=inverter_ac_power-feed_in_power #battery_temperature = s.read("temperature_battery") #print(f"\n\nBattery temperature: {s.read('temperature_battery')}") # for i, item in enumerate(solax_items): @@ -130,6 +131,8 @@ if s.connect(): act_item.state=float(time_count_down) act_item=items.get("Solax_DCPower") act_item.state=float(total_power) + act_item=items.get("Solax_HouseConsumption") + act_item.state=float(eigenverbrauch) data += ["Solax_DCPower"+" value="+str(total_power)] # print("Solax_SUM_DC" + str(total_power)) data += ["Solax_eToGridToday"+" value="+str(etoday_togrid)] diff --git a/source/.DS_Store b/source/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..9a874b5768f336915163bb88cd434575b859f936 GIT binary patch literal 6148 zcmeH~Jr2S!425ml0g0s}V-^m;4I%_5-~tF3k&vj^b9A16778<}(6eNJu~Vz<8=6`~ zboab&MFtUB!i}=AFfm2m$tVxGT*u4pe81nUlA49C} z?O@64YO)2RT{MRe%{!}2F))pG(Sih~)xkgosK7*lF7m<7{{#Hn{6A@7N(HFEpDCdI z{a0lP&Hc&4Laf_^J?N87 zJFEY%@IU(hTM}1PfC~I81$2El9(sII*4F0ZtkxFz32r$TxEbb7!QkZ>=;as-E62~C b6nVww*sqCmpwkg|I*>mDrVEV<+*^SkmtYlC literal 0 HcmV?d00001 diff --git a/src/solaxx3/__init__.py b/source/src/solaxx3/__init__.py similarity index 100% rename from src/solaxx3/__init__.py rename to source/src/solaxx3/__init__.py diff --git a/source/src/solaxx3/registers.py b/source/src/solaxx3/registers.py new file mode 100644 index 0000000..98c27fe --- /dev/null +++ b/source/src/solaxx3/registers.py @@ -0,0 +1,1619 @@ +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", + }, + "bdc_status": { + "address": 0x0019, + "register_type": "input", + "data_format": "uint16", + "si_adj": 1, + "signed": False, + "data_unit": "N/A", + "data_length": 1, + "description": "BDC Status", + }, + "grid_status": { + "address": 0x001A, + "register_type": "input", + "data_format": "uint16", + "si_adj": 1, + "signed": False, + "data_unit": "N/A", + "data_length": 1, + "description": "Grid Status: 0-OnGrid, 1-OffGrid", + }, + "mppt_count": { + "address": 0x001B, + "register_type": "input", + "data_format": "uint16", + "si_adj": 1, + "signed": False, + "data_unit": "N/A", + "data_length": 1, + "description": "MPPT Count", + }, + "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", + }, + "pcs_major_fault": { + "address": 0x003E, + "register_type": "input", + "data_format": "uint16", + "si_adj": 1, + "signed": False, + "data_unit": "N/A", + "data_length": 1, + "description": "PCS Major Fault", + }, + "battery_major_fault": { + "address": 0x003F, + "register_type": "input", + "data_format": "uint16", + "si_adj": 1, + "signed": False, + "data_unit": "N/A", + "data_length": 1, + "description": "Battery Major Fault", + }, + "inv_fault_message": { + "address": 0x0040, + "register_type": "input", + "data_format": "uint16", + "si_adj": 1, + "signed": False, + "data_unit": "N/A", + "data_length": 2, + "description": "Inverter Fault Message: X1:Table 2-4, X2:Table 2-3", + }, + "mgr_fault_message": { + "address": 0x0043, + "register_type": "input", + "data_format": "uint16", + "si_adj": 1, + "signed": False, + "data_unit": "N/A", + "data_length": 1, + "description": "Manager Fault Message: Table 2-5", + }, + "bat_bms_fault_message": { + "address": 0x0044, + "register_type": "input", + "data_format": "uint16", + "si_adj": 1, + "signed": False, + "data_unit": "N/A", + "data_length": 2, + "description": "Battery BMS Fault Message - Table 2-6", + }, + "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", + }, + "off_grid_voltage": { + "address": 0x004C, + "register_type": "input", + "data_format": "uint16", + "si_adj": 10, + "signed": False, + "data_unit": "V", + "data_length": 1, + "description": "Off-Grid Voltage X1", + }, + "off_grid_current": { + "address": 0x004D, + "register_type": "input", + "data_format": "uint16", + "si_adj": 10, + "signed": False, + "data_unit": "A", + "data_length": 1, + "description": "Off-Grid Current X1", + }, + "off_grid_power": { + "address": 0x004E, + "register_type": "input", + "data_format": "uint16", + "si_adj": 1, + "signed": False, + "data_unit": "VA", + "data_length": 1, + "description": "Off Grid Power X1", + }, + "off_grid_frequency": { + "address": 0x004F, + "register_type": "input", + "data_format": "uint16", + "si_adj": 100, + "signed": False, + "data_unit": "Hz", + "data_length": 1, + "description": "Off-Grid Frequency", + }, + "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", + }, + "lock_state": { + "address": 0x0054, + "register_type": "input", + "data_format": "uint16", + "si_adj": 1, + "signed": False, + "data_unit": "N/A", + "data_length": 1, + "description": "Lock State", + }, + "bus_volt": { + "address": 0x0066, + "register_type": "input", + "data_format": "uint16", + "si_adj": 10, + "signed": False, + "data_unit": "V", + "data_length": 1, + "description": "Bus Volt", + }, + "w_dcv_fault_val": { + "address": 0x0067, + "register_type": "input", + "data_format": "uint16", + "si_adj": 10, + "signed": False, + "data_unit": "V", + "data_length": 1, + "description": "W DCV Fault Value", + }, + "w_overload_fault_val": { + "address": 0x0068, + "register_type": "input", + "data_format": "uint16", + "si_adj": 1, + "signed": False, + "data_unit": "W", + "data_length": 1, + "description": "W Overload Fault Value", + }, + "w_battery_volt_fault_val": { + "address": 0x0069, + "register_type": "input", + "data_format": "uint16", + "si_adj": 10, + "signed": False, + "data_unit": "V", + "data_length": 1, + "description": "W Battery Volt Fault Value", + }, + "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_current_r": { + "address": 0x006B, + "register_type": "input", + "data_format": "int16", + "si_adj": 10, + "signed": True, + "data_unit": "A", + "data_length": 1, + "description": "Grid Current R Phase", + }, + "grid_power_r": { + "address": 0x006C, + "register_type": "input", + "data_format": "int16", + "si_adj": 1, + "signed": True, + "data_unit": "W", + "data_length": 1, + "description": "Grid Power R Phase", + }, + "grid_frequency_r": { + "address": 0x006D, + "register_type": "input", + "data_format": "uint16", + "si_adj": 100, + "signed": False, + "data_unit": "Hz", + "data_length": 1, + "description": "Grid Frequency 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_current_s": { + "address": 0x006F, + "register_type": "input", + "data_format": "int16", + "si_adj": 10, + "signed": True, + "data_unit": "A", + "data_length": 1, + "description": "Grid Current S Phase", + }, + "grid_power_s": { + "address": 0x0070, + "register_type": "input", + "data_format": "int16", + "si_adj": 1, + "signed": True, + "data_unit": "W", + "data_length": 1, + "description": "Grid Power S Phase", + }, + "grid_frequency_s": { + "address": 0x0071, + "register_type": "input", + "data_format": "uint16", + "si_adj": 100, + "signed": False, + "data_unit": "Hz", + "data_length": 1, + "description": "Grid Frequency S", + }, + "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", + }, + "grid_current_t": { + "address": 0x0073, + "register_type": "input", + "data_format": "int16", + "si_adj": 10, + "signed": True, + "data_unit": "A", + "data_length": 1, + "description": "Grid Current T Phase", + }, + "grid_power_t": { + "address": 0x0074, + "register_type": "input", + "data_format": "int16", + "si_adj": 1, + "signed": True, + "data_unit": "W", + "data_length": 1, + "description": "Grid Power T Phase", + }, + "grid_frequency_t": { + "address": 0x0075, + "register_type": "input", + "data_format": "uint16", + "si_adj": 100, + "signed": False, + "data_unit": "Hz", + "data_length": 1, + "description": "Grid Frequency T Phase", + }, + "off_grid_volt_r": { + "address": 0x0076, + "register_type": "input", + "data_format": "uint16", + "si_adj": 10, + "signed": False, + "data_unit": "V", + "data_length": 1, + "description": "Off-Grid Volt R Phase", + }, + "off_grid_current_r": { + "address": 0x0077, + "register_type": "input", + "data_format": "uint16", + "si_adj": 10, + "signed": False, + "data_unit": "A", + "data_length": 1, + "description": "Off-Grid Current R Phase", + }, + "off_grid_power_active_r": { + "address": 0x0078, + "register_type": "input", + "data_format": "int16", + "si_adj": 1, + "signed": True, + "data_unit": "W", + "data_length": 1, + "description": "Off-Grid Active Power R Phase", + }, + "off_grid_power_s_r": { + "address": 0x0079, + "register_type": "input", + "data_format": "uint16", + "si_adj": 1, + "signed": False, + "data_unit": "VA", + "data_length": 1, + "description": "Off-Grid S Power R Phase", + }, + "off-grid-volt-s": { + "address": 0x007A, + "register_type": "input", + "data_format": "uint16", + "si_adj": 10, + "signed": False, + "data_unit": "V", + "data_length": 1, + "description": "Off-Grid Volt S Phase", + }, + "off_grid_current_s": { + "address": 0x007B, + "register_type": "input", + "data_format": "uint16", + "si_adj": 10, + "signed": False, + "data_unit": "A", + "data_length": 1, + "description": "Off-Grid Current S Phase", + }, + "off_grid_power_active_s": { + "address": 0x007C, + "register_type": "input", + "data_format": "int16", + "si_adj": 1, + "signed": True, + "data_unit": "W", + "data_length": 1, + "description": "Off-Grid Active Power S Phase", + }, + "off_grid_power_s_s": { + "address": 0x007D, + "register_type": "input", + "data_format": "uint16", + "si_adj": 1, + "signed": False, + "data_unit": "VA", + "data_length": 1, + "description": "Off-Grid S Power S Phase", + }, + "off_grid_volt_t": { + "address": 0x007E, + "register_type": "input", + "data_format": "uint16", + "si_adj": 10, + "signed": False, + "data_unit": "V", + "data_length": 1, + "description": "Off-Grid Volt T Phase", + }, + "off_grid_current_t": { + "address": 0x007F, + "register_type": "input", + "data_format": "uint16", + "si_adj": 10, + "signed": True, + "data_unit": "A", + "data_length": 1, + "description": "Off-Grid Current T Phase", + }, + "off_grid_power_active_t": { + "address": 0x0080, + "register_type": "input", + "data_format": "int16", + "si_adj": 1, + "signed": True, + "data_unit": "W", + "data_length": 1, + "description": "Off-Grid Active Power T Phase", + }, + "off_grid_power_s_t": { + "address": 0x0081, + "register_type": "input", + "data_format": "uint16", + "si_adj": 1, + "signed": False, + "data_unit": "VA", + "data_length": 1, + "description": "Off-Grid S Power T Phase", + }, + "feedin_power_r_phase": { + "address": 0x0082, + "register_type": "input", + "data_format": "int32", + "si_adj": 1, + "signed": True, + "data_unit": "W", + "data_length": 2, + "description": "Feedin Power R Phase", + }, + "feedin_power_s_phase": { + "address": 0x0084, + "register_type": "input", + "data_format": "int32", + "si_adj": 1, + "signed": True, + "data_unit": "W", + "data_length": 2, + "description": "Feedin Power S Phase", + }, + "feedin_power_t_phase": { + "address": 0x0086, + "register_type": "input", + "data_format": "int32", + "si_adj": 1, + "signed": True, + "data_unit": "W", + "data_length": 2, + "description": "Feedin Power T Phase", + }, + "ongrid_run_time": { + "address": 0x0088, + "register_type": "input", + "data_format": "int32", + "si_adj": 10, + "signed": True, + "data_unit": "hour", + "data_length": 2, + "description": "On-Grid Run Time", + }, + "offgrid_run_time": { + "address": 0x008A, + "register_type": "input", + "data_format": "int32", + "si_adj": 10, + "signed": True, + "data_unit": "hour", + "data_length": 2, + "description": "Off-Grid Run Time", + }, + "offgrid_yield_total": { + "address": 0x008E, + "register_type": "input", + "data_format": "uint32", + "si_adj": 10, + "signed": False, + "data_unit": "KWh", + "data_length": 2, + "description": "Off-Grid Yield Total", + }, + "offgrid_yield_today": { + "address": 0x0090, + "register_type": "input", + "data_format": "uint16", + "si_adj": 10, + "signed": False, + "data_unit": "KWh", + "data_length": 1, + "description": "Off-Grid Yield Today", + }, + "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", + }, + "echarge_total": { + "address": 0x0092, + "register_type": "input", + "data_format": "uint32", + "si_adj": 10, + "signed": False, + "data_unit": "KWh", + "data_length": 2, + "description": "Echarge Total", + }, + "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", + }, + "inv_volt_r": { + "address": 0x009C, + "register_type": "input", + "data_format": "uint16", + "si_adj": 10, + "signed": False, + "data_unit": "V", + "data_length": 1, + "description": "Inverter Volt R Phase", + }, + "inv_volt_s": { + "address": 0x009D, + "register_type": "input", + "data_format": "uint16", + "si_adj": 10, + "signed": False, + "data_unit": "V", + "data_length": 1, + "description": "Inverter Volt S Phase", + }, + "inv_volt_t": { + "address": 0x009E, + "register_type": "input", + "data_format": "uint16", + "si_adj": 10, + "signed": False, + "data_unit": "V", + "data_length": 1, + "description": "Inverter Volt T Phase", + }, + "feedin_power_meter_2": { + "address": 0x00A8, + "register_type": "input", + "data_format": "int32", + "si_adj": 1, + "signed": True, + "data_unit": "W", + "data_length": 2, + "description": "Power to Grid Meter 2", + }, + "feedin_energy_total_meter_2": { + "address": 0x00AA, + "register_type": "input", + "data_format": "uint32", + "si_adj": 100, + "signed": False, + "data_unit": "KWh", + "data_length": 2, + "description": "Energy to the grid", + }, + "consum_energy_total_meter_2": { + "address": 0x00AC, + "register_type": "input", + "data_format": "uint32", + "si_adj": 100, + "signed": False, + "data_unit": "KWh", + "data_length": 2, + "description": "Energy from grid", + }, + "feedin_energy_today_meter_2": { + "address": 0x00AE, + "register_type": "input", + "data_format": "uint32", + "si_adj": 100, + "signed": False, + "data_unit": "KWh", + "data_length": 2, + "description": "Energy to grid", + }, + "consum_energy_today_meter_2": { + "address": 0x00B0, + "register_type": "input", + "data_format": "uint32", + "si_adj": 100, + "signed": False, + "data_unit": "KWh", + "data_length": 2, + "description": "Energy from grid", + }, + "feedin_power_r_phase_meter_2": { + "address": 0x00B2, + "register_type": "input", + "data_format": "int32", + "si_adj": 1, + "signed": True, + "data_unit": "W", + "data_length": 2, + "description": "Feedin Power R Phase Meter 2", + }, + "feedin_power_s_phase_meter_2": { + "address": 0x00B4, + "register_type": "input", + "data_format": "int32", + "si_adj": 1, + "signed": True, + "data_unit": "W", + "data_length": 2, + "description": "Feedin Power S Phase Meter 2", + }, + "feedin_power_t_phase_meter_2": { + "address": 0x00B6, + "register_type": "input", + "data_format": "int32", + "si_adj": 1, + "signed": True, + "data_unit": "W", + "data_length": 2, + "description": "Feedin Power T Phase Meter 2", + }, + "meter_1_communication_state": { + "address": 0x00B8, + "register_type": "input", + "data_format": "uint16", + "si_adj": 1, + "signed": False, + "data_unit": "N/A", + "data_length": 1, + "description": "Meter 1 Communication State: 0:Com Error, 1:Normal", + }, + "meter_2_communication_state": { + "address": 0x00B9, + "register_type": "input", + "data_format": "uint16", + "si_adj": 1, + "signed": False, + "data_unit": "N/A", + "data_length": 1, + "description": "Meter 2 Communication State: 0:Com Error, 1:Normal", + }, + "battery_tem_high": { + "address": 0x00BA, + "register_type": "input", + "data_format": "int16", + "si_adj": 10, + "signed": True, + "data_unit": "C", + "data_length": 1, + "description": "Battery Temperature High", + }, + "battery_tem_low": { + "address": 0x00BB, + "register_type": "input", + "data_format": "int16", + "si_adj": 10, + "signed": True, + "data_unit": "C", + "data_length": 1, + "description": "Battery Temperature Low", + }, + "cell_voltage_high": { + "address": 0x00BC, + "register_type": "input", + "data_format": "uint16", + "si_adj": 1000, + "signed": False, + "data_unit": "V", + "data_length": 1, + "description": "Cell Voltage High", + }, + "cell_voltage_low": { + "address": 0x00BD, + "register_type": "input", + "data_format": "uint16", + "si_adj": 1000, + "signed": True, + "data_unit": "V", + "data_length": 1, + "description": "Cell Voltage Low", + }, + "bms_user_soc": { + "address": 0x00BE, + "register_type": "input", + "data_format": "uint16", + "si_adj": 1, + "signed": False, + "data_unit": "%", + "data_length": 1, + "description": "BMS User SOC", + }, + "bms_user_soh": { + "address": 0x00BF, + "register_type": "input", + "data_format": "uint16", + "si_adj": 1, + "signed": False, + "data_unit": "%", + "data_length": 1, + "description": "BMS User SOH", + }, + "grid_reactive_power_total_meter": { + "address": 0x00C0, + "register_type": "input", + "data_format": "int16", + "si_adj": 1, + "signed": True, + "data_unit": "Var", + "data_length": 1, + "description": "Grid Reactive Power Total Meter", + }, + "grid_reactive_power_r_meter": { + "address": 0x00C1, + "register_type": "input", + "data_format": "int16", + "si_adj": 1, + "signed": True, + "data_unit": "Var", + "data_length": 1, + "description": "Grid Reactive Power Phase R Meter", + }, + "grid_reactive_power_s_meter": { + "address": 0x00C2, + "register_type": "input", + "data_format": "int16", + "si_adj": 1, + "signed": True, + "data_unit": "Var", + "data_length": 1, + "description": "Grid Reactive Power Phase S Meter", + }, + "grid_reactive_power_t_meter": { + "address": 0x00C3, + "register_type": "input", + "data_format": "int16", + "si_adj": 1, + "signed": True, + "data_unit": "Var", + "data_length": 1, + "description": "Grid Reactive Power Phase T Meter", + }, + "grid_power_factor_total_meter": { + "address": 0x00C4, + "register_type": "input", + "data_format": "int16", + "si_adj": 100, + "signed": True, + "data_unit": "N/A", + "data_length": 1, + "description": "Grid Power Factor Total Meter", + }, + "grid_power_factor_r_meter": { + "address": 0x00C5, + "register_type": "input", + "data_format": "int16", + "si_adj": 100, + "signed": True, + "data_unit": "N/A", + "data_length": 1, + "description": "Grid Power Factor Phase R Meter", + }, + "grid_power_factor_s_meter": { + "address": 0x00C6, + "register_type": "input", + "data_format": "int16", + "si_adj": 100, + "signed": True, + "data_unit": "N/A", + "data_length": 1, + "description": "Grid Power Factor Phase S Meter", + }, + "grid_power_factor_t_meter": { + "address": 0x00C7, + "register_type": "input", + "data_format": "int16", + "si_adj": 100, + "signed": True, + "data_unit": "N/A", + "data_length": 1, + "description": "Grid Power Factor Phase T Meter", + }, + "grid_frequency_meter": { + "address": 0x00C8, + "register_type": "input", + "data_format": "uint16", + "si_adj": 100, + "signed": False, + "data_unit": "Hz", + "data_length": 1, + "description": "Grid Frequency Meter", + }, + "grid_voltage_total_meter": { + "address": 0x00C9, + "register_type": "input", + "data_format": "uint16", + "si_adj": 10, + "signed": False, + "data_unit": "V", + "data_length": 1, + "description": "Grid Voltage Total Meter", + }, + "grid_voltage_r_meter": { + "address": 0x00CA, + "register_type": "input", + "data_format": "uint16", + "si_adj": 10, + "signed": False, + "data_unit": "V", + "data_length": 1, + "description": "Grid Voltage R Meter", + }, + "grid_voltage_s_meter": { + "address": 0x00CB, + "register_type": "input", + "data_format": "uint16", + "si_adj": 10, + "signed": False, + "data_unit": "V", + "data_length": 1, + "description": "Grid Voltage S Meter", + }, + "grid_voltage_t_meter": { + "address": 0x00CC, + "register_type": "input", + "data_format": "uint16", + "si_adj": 10, + "signed": False, + "data_unit": "V", + "data_length": 1, + "description": "Grid Voltage T Meter", + }, + "grid_current_total_meter": { + "address": 0x00CD, + "register_type": "input", + "data_format": "int16", + "si_adj": 10, + "signed": True, + "data_unit": "A", + "data_length": 1, + "description": "Grid Current Total Meter", + }, + "grid_current_r_meter": { + "address": 0x00CE, + "register_type": "input", + "data_format": "int16", + "si_adj": 10, + "signed": True, + "data_unit": "A", + "data_length": 1, + "description": "Grid Current R Meter", + }, + "grid_current_s_meter": { + "address": 0x00CF, + "register_type": "input", + "data_format": "int16", + "si_adj": 10, + "signed": True, + "data_unit": "A", + "data_length": 1, + "description": "Grid Current S Meter", + }, + "grid_current_t_meter": { + "address": 0x00D0, + "register_type": "input", + "data_format": "int16", + "si_adj": 10, + "signed": True, + "data_unit": "A", + "data_length": 1, + "description": "Grid Current T Meter", + }, + "modbus_power_control": { + "address": 0x0100, + "register_type": "input", + "data_format": "uint16", + "si_adj": 1, + "signed": False, + "data_unit": "N/A", + "data_length": 1, + "description": "Modbus Power Control: 0:disable remote contro, 1:enable power control, 2:enable electric quality control, 3:enable SOC target control", + }, + "target_finish_tag": { + "address": 0x0101, + "register_type": "input", + "data_format": "uint16", + "si_adj": 1, + "signed": False, + "data_unit": "N/A", + "data_length": 1, + "description": "Target Finish Tag: 0:unfinished, 1:finished", + }, + "active_power_target": { + "address": 0x0102, + "register_type": "input", + "data_format": "int32", + "si_adj": 1, + "signed": True, + "data_unit": "W", + "data_length": 2, + "description": "Active Power Target", + }, + "w_reactive_power_target": { + "address": 0x0104, + "register_type": "input", + "data_format": "int32", + "si_adj": 1, + "signed": True, + "data_unit": "Var", + "data_length": 2, + "description": "W Reactive Power Target", + }, + "w_active_power_real": { + "address": 0x0106, + "register_type": "input", + "data_format": "int32", + "si_adj": 1, + "signed": True, + "data_unit": "W", + "data_length": 2, + "description": "W Active Power Real", + }, + "w_reactive_power_real": { + "address": 0x0108, + "register_type": "input", + "data_format": "int32", + "si_adj": 1, + "signed": True, + "data_unit": "Var", + "data_length": 2, + "description": "W Reactive Power Real", + }, + "w_active_power_upper": { + "address": 0x010A, + "register_type": "input", + "data_format": "int32", + "si_adj": 1, + "signed": True, + "data_unit": "W", + "data_length": 2, + "description": "W Active Power Upper", + }, + "w_active_power_lower": { + "address": 0x010C, + "register_type": "input", + "data_format": "int32", + "si_adj": 1, + "signed": True, + "data_unit": "W", + "data_length": 2, + "description": "W Active Power Lower", + }, + "w_reactive_power_upper": { + "address": 0x010E, + "register_type": "input", + "data_format": "int32", + "si_adj": 1, + "signed": True, + "data_unit": "Var", + "data_length": 2, + "description": "W Reactive Power Upper", + }, + "w_reactive_power_lower": { + "address": 0x0110, + "register_type": "input", + "data_format": "int32", + "si_adj": 1, + "signed": True, + "data_unit": "Var", + "data_length": 2, + "description": "W Reactive Power Lower", + }, + "target_energy": { + "address": 0x0112, + "register_type": "input", + "data_format": "int32", + "si_adj": 1, + "signed": True, + "data_unit": "Wh", + "data_length": 2, + "description": "Target Energy", + }, + "charge_discharge_power": { + "address": 0x0114, + "register_type": "input", + "data_format": "int32", + "si_adj": 1, + "signed": True, + "data_unit": "W", + "data_length": 2, + "description": "Charge Discharge Power", + }, + "chargeable_electric_capacity": { + "address": 0x0116, + "register_type": "input", + "data_format": "uint32", + "si_adj": 1, + "signed": False, + "data_unit": "Wh", + "data_length": 2, + "description": "Chargeable Electric Capacity", + }, + "dischargeable_electric_capacity": { + "address": 0x0118, + "register_type": "input", + "data_format": "uint32", + "si_adj": 1, + "signed": False, + "data_unit": "Wh", + "data_length": 2, + "description": "Dischargeable Electric Capacity", + }, + "time_of_duration": { + "address": 0x011A, + "register_type": "input", + "data_format": "uint16", + "si_adj": 1, + "signed": False, + "data_unit": "second", + "data_length": 1, + "description": "time_of_duration", + }, + "target_soc": { + "address": 0x011B, + "register_type": "input", + "data_format": "uint16", + "si_adj": 1, + "signed": False, + "data_unit": "%", + "data_length": 1, + "description": "Target SOC", + }, + "soc_upper": { + "address": 0x011C, + "register_type": "input", + "data_format": "uint16", + "si_adj": 1, + "signed": False, + "data_unit": "%", + "data_length": 1, + "description": "SOC Upper", + }, + "soc_lower": { + "address": 0x011D, + "register_type": "input", + "data_format": "uint16", + "si_adj": 1, + "signed": False, + "data_unit": "%", + "data_length": 1, + "description": "SOC Lower", + }, + "remote_control_timeout": { + "address": 0x011E, + "register_type": "input", + "data_format": "uint16", + "si_adj": 1, + "signed": False, + "data_unit": "second", + "data_length": 1, + "description": "Remote Control Timeout: 4-65535", + }, + "w_battery_force_charge_flag": { + "address": 0x011F, + "register_type": "input", + "data_format": "uint16", + "si_adj": 1, + "signed": False, + "data_unit": "N/A", + "data_length": 1, + "description": "W Battery Force Charge Flag: 0:No Action, 1:Force Charge", + }, + "w_bms_relay_state": { + "address": 0x0120, + "register_type": "input", + "data_format": "uint16", + "si_adj": 1, + "signed": False, + "data_unit": "N/A", + "data_length": 1, + "description": "W BMS Relay State: 0:OFF, 1:ON", + }, + # 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()) \ No newline at end of file diff --git a/src/solaxx3/rs485.py b/source/src/solaxx3/rs485.py similarity index 98% rename from src/solaxx3/rs485.py rename to source/src/solaxx3/rs485.py index 3d12da0..9bbb6f6 100644 --- a/src/solaxx3/rs485.py +++ b/source/src/solaxx3/rs485.py @@ -1,6 +1,5 @@ from typing import Any -# from pymodbus.client.sync import ModbusSerialClient from pymodbus.client import ModbusSerialClient from datetime import date, datetime, timedelta from struct import * @@ -166,4 +165,4 @@ class SolaxX3: values_list = self.client.read_holding_registers( address=address, count=read_block_length, slave=1 ).registers - self._holding_registers_values_list.extend(values_list) + self._holding_registers_values_list.extend(values_list) \ No newline at end of file diff --git a/source/test b/source/test deleted file mode 100644 index dffffd1..0000000 --- a/source/test +++ /dev/null @@ -1,3 +0,0 @@ -budsjagvon - -dsafasfd< diff --git a/src/solaxx3/registers.py b/src/solaxx3/registers.py deleted file mode 100644 index 2c036b5..0000000 --- a/src/solaxx3/registers.py +++ /dev/null @@ -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())