package main type register struct { name string conv func([]byte) float64 mult float64 unit string } func (r *register) read(data []byte) float64 { return r.conv(data) * r.mult } var sungrowInputRegs = map[uint16]*register{ // 4990 - 4999: serial number in ASCII 5001: {"nominal_power", u16, 0.1, "kW"}, 5003: {"daily_power_yield", u16, 0.1, "kWh"}, 5004: {"total_power_yield", u32, 1, "kWh"}, 5006: {"total_running_time", u32, 1, "h"}, 5008: {"internal_temperature", u16, 0.1, "°C"}, 5011: {"pv1_potential", u16, 0.1, "V"}, 5012: {"pv1_current", u16, 0.1, "A"}, 5013: {"pv2_potential", u16, 0.1, "V"}, 5014: {"pv2_current", u16, 0.1, "A"}, //5015: {"pv3_potential", u16, 0.1, "V"}, //5016: {"pv3_current", u16, 0.1, "A"}, 5017: {"total_dc_power", u32, 1, "W"}, 5019: {"phase_a_potential", u16, 0.1, "V"}, //5020: {"phase_b_potential", u16, 0.1, "V"}, //5021: {"phase_c_potential", u16, 0.1, "V"}, 5022: {"phase_a_current", u16, 0.1, "A"}, //5023: {"phase_b_current", u16, 0.1, "A"}, //5024: {"phase_c_current", u16, 0.1, "A"}, 5031: {"output_real_power", u32, 1, "VA"}, 5033: {"output_reactive_power", s32, 1, "VA"}, 5035: {"power_factor", s16, 0.001, ""}, 5036: {"frequency", u16, 0.1, "Hz"}, 5049: {"nominal_reactive_power", s16, 0.1, "kVA"}, 5113: {"daily_running_time", u16, 1, "m"}, 5144: {"total_power_yield_2", u32, 0.1, "kWh"}, 5148: {"frequency_2", u16, 0.01, "Hz"}, }