From f3145af8a0837c472f7894fa0ced1d500792e739 Mon Sep 17 00:00:00 2001 From: Niclas Kempe Date: Sat, 24 Apr 2021 21:49:52 +0100 Subject: [PATCH 1/3] Added more registers and support for total energy generated --- readreg.py | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/readreg.py b/readreg.py index d174ac7..5d64912 100644 --- a/readreg.py +++ b/readreg.py @@ -1,6 +1,16 @@ #!/usr/bin/env python3 import minimalmodbus import serial +import struct + +#Support functions + +def convertToFloat(input_int): + #read_long returns a 32-bit int, convert to float... + packed_v = struct.pack('>l', input_int) + output_float = struct.unpack('>f', packed_v)[0] + return output_float + # Set to true to edit values WRITE = True @@ -34,6 +44,26 @@ BAT_SOC = 0x311A BAT_RATED_VOLTAGE = 0x9067 +BAT_VOLTAGE_MAX_DAY = 0x3302# 00: 00 Refresh every day V 100 +BAT_VOLTAGE_MIN_DAY = 0x3303# 00: 00 Refresh every day V 100 +CONS_ENERGY_TODAY_L = 0x3304# 00: 00 Clear every day KWH 100 +CONS_ENERGY_TODAY_H = 0x3305# 100 +CONS_ENERGY_MONTH_L = 0x3306# 00: 00 Clear on the first day of month 100 +CONS_ENERGY_MONTH_H = 0x3307# KWH 100 +CONS_ENERGY_YEAR_L = 0x3308# 00: 00 Clear on 1, Jan. 100 +CONS_ENERGY_YEAR_H = 0x3309# 100 +CONS_ENERGY_TOTAL_L = 0x330A# 100 +CONS_ENERGY_TOTAL_H = 0x330B# KWH 100 +GEN_ENERGY_TODAY_L = 0x330C# 00: 00 Clear every day. 100 +GEN_ENERGY_TODAY_H = 0x330D# 100 +GEN_ENERGY_MONTH_L = 0x330E# 00: 00 Clear on the first day of month. 100 +GEN_ENERGY_MONTH_H = 0x330F# KWH 100 +GEN_ENERGY_YEAR_L = 0x3310# 00: 00 Clear on 1, Jan. 100 +GEN_ENERGY_YEAR_H = 0x3311# KWH 100 +GEN_ENERGY_TOTAL_L = 0x3312# KWH 100 +GEN_ENERGY_TOTAL_H = 0x3313# 100 + + # Print panel info pv_voltage = instrument.read_register( PV_VOLTAGE, 2, 4, False @@ -54,6 +84,28 @@ ) # Registernumber, number of decimals print("Batt. temp:\t" + str(temperature) + "C") +# Print generated energy info +gen_energy_day = instrument.read_register( + GEN_ENERGY_TODAY_L, 2, 4, False +) # Registernumber, number of decimals +print("Energy today:\t" + str(gen_energy_day) + "kWH") + +gen_energy_day=instrument.read_long( +GEN_ENERGY_TODAY_L, 4, False, 0) # Registernumber, number of decimals +f = convertToFloat(gen_energy_day) +print("Energy day:\t" + str(f) + str("kWh")) + +gen_energy_month=instrument.read_long( +GEN_ENERGY_MONTH_L, 4, False, 0) # Registernumber, number of decimals +f = convertToFloat(gen_energy_month) +print("Energy month:\t" + str(f) + str("kWh")) + +gen_energy_year=instrument.read_long( +GEN_ENERGY_YEAR_L, 4, False, 0) # Registernumber, number of decimals +f = convertToFloat(gen_energy_year) +print("Energy year:\t" + str(f) + str("kWh")) + + if WRITE: # Set battery type, 1 = Sealed sealed = 1 @@ -102,3 +154,4 @@ print("Voltage configuration:") val = instrument.read_register(0x900E, 2, 3, False) print(val) + From f126cd77a226dd381c2097f2e9b5b0f91a22a0f2 Mon Sep 17 00:00:00 2001 From: Niclas Kempe Date: Sat, 24 Apr 2021 22:00:31 +0100 Subject: [PATCH 2/3] Removed superfluous day-printout --- readreg.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/readreg.py b/readreg.py index 5d64912..f55e866 100644 --- a/readreg.py +++ b/readreg.py @@ -16,7 +16,7 @@ def convertToFloat(input_int): WRITE = True instrument = minimalmodbus.Instrument( - "/dev/ttyUSB0", 1 + "/dev/ttyXRUSB0", 1 ) # port name, slave address (in decimal) instrument.serial.baudrate = 115200 # Baud @@ -84,16 +84,10 @@ def convertToFloat(input_int): ) # Registernumber, number of decimals print("Batt. temp:\t" + str(temperature) + "C") -# Print generated energy info -gen_energy_day = instrument.read_register( - GEN_ENERGY_TODAY_L, 2, 4, False -) # Registernumber, number of decimals -print("Energy today:\t" + str(gen_energy_day) + "kWH") - gen_energy_day=instrument.read_long( GEN_ENERGY_TODAY_L, 4, False, 0) # Registernumber, number of decimals f = convertToFloat(gen_energy_day) -print("Energy day:\t" + str(f) + str("kWh")) +print("Energy today:\t" + str(f) + str("kWh")) gen_energy_month=instrument.read_long( GEN_ENERGY_MONTH_L, 4, False, 0) # Registernumber, number of decimals From a7ac07cfcee463c3deb7c713708a7b2cf5995313 Mon Sep 17 00:00:00 2001 From: Niclas Kempe Date: Sat, 24 Apr 2021 22:01:54 +0100 Subject: [PATCH 3/3] Restored serial port to USB0 --- readreg.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readreg.py b/readreg.py index f55e866..79010b4 100644 --- a/readreg.py +++ b/readreg.py @@ -16,7 +16,7 @@ def convertToFloat(input_int): WRITE = True instrument = minimalmodbus.Instrument( - "/dev/ttyXRUSB0", 1 + "/dev/ttyUSB0", 1 ) # port name, slave address (in decimal) instrument.serial.baudrate = 115200 # Baud