Skip to content

Improve NOAH register mapping #85

@AHComp

Description

@AHComp

I fork parts of this project to c# and complete the register mapping.

` #region Hardcoded InputRegisters

        // RegisterNo 1
        model.InputRegisters.Add("RegisterNo1", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 1, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.INT }
            }
        });

        // RegisterNo 2
        model.InputRegisters.Add("out_power", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 2, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 1.0 } }
            }
        });

        // RegisterNo 3
        model.InputRegisters.Add("RegisterNo3", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 3, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.INT }
            }
        });

        // RegisterNo 4
        model.InputRegisters.Add("RegisterNo4", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 4, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.INT }
            }
        });

        // RegisterNo 5
        model.InputRegisters.Add("RegisterNo5", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 5, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.INT }
            }
        });

        // RegisterNo 6
        model.InputRegisters.Add("RegisterNo6", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 6, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.INT }
            }
        });

        // RegisterNo 7
        model.InputRegisters.Add("pv_tot_power", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 7, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 1.0 } }
            }
        });

        // RegisterNo 8
        model.InputRegisters.Add("priority_mode", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 8, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.ENUM, EnumOptions = new GrowattEnumOptions { EnumType = "INT_MAP", Values = new Dictionary<string, string> { { "0", "Load First" }, { "1", "Battery First" }, { "2", "Grid First" } } } }
            }
        });

        // RegisterNo 9
        model.InputRegisters.Add("RegisterNo9", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 9, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.INT }
            }
        });

        // RegisterNo 10
        model.InputRegisters.Add("bat_sysstate", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 10, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.ENUM, EnumOptions = new GrowattEnumOptions { EnumType = "INT_MAP", Values = new Dictionary<string, string> { { "0", "Idle" }, { "1", "Charging" }, { "2", "Discharging" } } } }
            }
        });

        // RegisterNo 11
        model.InputRegisters.Add("charging_discharging", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 11, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = -30000.0, Multiplier = 1.0 } }
            }
        });

        // RegisterNo 12
        model.InputRegisters.Add("bat_cnt", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 12, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 1.0 } }
            }
        });

        // RegisterNo 13
        model.InputRegisters.Add("tot_bat_soc_pct", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 13, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 1.0 } }
            }
        });

        // RegisterNo 14 (vermutlich workMode, Enum oder Bitfeld)
        model.InputRegisters.Add("work_mode", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 14, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.ENUM } // TODO: Werte mappen!
            }
        });

        // RegisterNo 15 (totalBatteryPackChargingStatus, Bitfeld Charging/Discharging/Idle)
        model.InputRegisters.Add("total_battery_pack_charging_status", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 15, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.ENUM } // BIT0: Charging, BIT1: Discharging, sonst Idle
            }
        });

        // RegisterNo 16 (totalBatteryPackChargingPower)
        model.InputRegisters.Add("total_battery_pack_charging_power", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 16, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 1.0 } }
            }
        });

        // RegisterNo 17 (heatingStatus, BIT0..3 für Bat 1-4 Heizung aktiv)
        model.InputRegisters.Add("heating_status", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 17, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.ENUM }
            }
        });

        // RegisterNo 18 (faultStatus, BIT0..3 Bat 1-4 Fault)
        model.InputRegisters.Add("fault_status", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 18, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.ENUM }
            }
        });

        // RegisterNo 19
        model.InputRegisters.Add("RegisterNo19", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 19, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.INT }
            }
        });

        // RegisterNo 20
        model.InputRegisters.Add("RegisterNo20", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 20, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.INT }
            }
        });

        // RegisterNo 21
        model.InputRegisters.Add("bat_1_ser_part_1", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 21, Offset = 0, Size = 4 },
                Data = new GrowattData { DataType = GrowattDataType.STRING }
            }
        });

        // RegisterNo 23
        model.InputRegisters.Add("bat_1_ser_part_2", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 23, Offset = 0, Size = 4 },
                Data = new GrowattData { DataType = GrowattDataType.STRING }
            }
        });

        // RegisterNo 25
        model.InputRegisters.Add("bat_1_ser_part_3", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 25, Offset = 0, Size = 4 },
                Data = new GrowattData { DataType = GrowattDataType.STRING }
            }
        });

        // RegisterNo 27
        model.InputRegisters.Add("bat_1_ser_part_4", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 27, Offset = 0, Size = 4 },
                Data = new GrowattData { DataType = GrowattDataType.STRING }
            }
        });

        // RegisterNo 29
        model.InputRegisters.Add("bat_1_soc_pct", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 29, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 1.0 } }
            }
        });

        // RegisterNo 30 (Temp)
        model.InputRegisters.Add("bat_1_temp", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 30, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT }
            }
        });

        // RegisterNo 31 (Warn)
        model.InputRegisters.Add("bat_1_warn_status", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 31, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.ENUM }
            }
        });

        // RegisterNo 32 (Protect)
        model.InputRegisters.Add("bat_1_protect_status", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 32, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.ENUM }
            }
        });

        // RegisterNo 33
        model.InputRegisters.Add("bat_2_ser_part_1", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 33, Offset = 0, Size = 4 },
                Data = new GrowattData { DataType = GrowattDataType.STRING }
            }
        });

        // RegisterNo 35
        model.InputRegisters.Add("bat_2_ser_part_2", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 35, Offset = 0, Size = 4 },
                Data = new GrowattData { DataType = GrowattDataType.STRING }
            }
        });

        // RegisterNo 37
        model.InputRegisters.Add("bat_2_ser_part_3", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 37, Offset = 0, Size = 4 },
                Data = new GrowattData { DataType = GrowattDataType.STRING }
            }
        });

        // RegisterNo 39
        model.InputRegisters.Add("bat_2_ser_part_4", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 39, Offset = 0, Size = 4 },
                Data = new GrowattData { DataType = GrowattDataType.STRING }
            }
        });

        // RegisterNo 41
        model.InputRegisters.Add("bat_2_soc_pct", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 41, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 1.0 } }
            }
        });

        // RegisterNo 42
        model.InputRegisters.Add("bat_2_temp", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 42, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT }
            }
        });

        // RegisterNo 43
        model.InputRegisters.Add("bat_2_warn_status", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 43, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.ENUM }
            }
        });

        // RegisterNo 44
        model.InputRegisters.Add("bat_2_protect_status", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 44, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.ENUM }
            }
        });

        // RegisterNo 45
        model.InputRegisters.Add("bat_3_ser_part_1", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 45, Offset = 0, Size = 4 },
                Data = new GrowattData { DataType = GrowattDataType.STRING }
            }
        });

        // RegisterNo 47
        model.InputRegisters.Add("bat_3_ser_part_2", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 47, Offset = 0, Size = 4 },
                Data = new GrowattData { DataType = GrowattDataType.STRING }
            }
        });

        // RegisterNo 49
        model.InputRegisters.Add("bat_3_ser_part_3", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 49, Offset = 0, Size = 4 },
                Data = new GrowattData { DataType = GrowattDataType.STRING }
            }
        });

        // RegisterNo 51
        model.InputRegisters.Add("bat_3_ser_part_4", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 51, Offset = 0, Size = 4 },
                Data = new GrowattData { DataType = GrowattDataType.STRING }
            }
        });

        // RegisterNo 53
        model.InputRegisters.Add("bat_3_soc_pct", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 53, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 1.0 } }
            }
        });

        // RegisterNo 54
        model.InputRegisters.Add("bat_3_temp", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 54, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT }
            }
        });

        // RegisterNo 55
        model.InputRegisters.Add("bat_3_warn_status", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 55, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.ENUM }
            }
        });

        // RegisterNo 56
        model.InputRegisters.Add("bat_3_protect_status", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 56, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.ENUM }
            }
        });

        // RegisterNo 57
        model.InputRegisters.Add("bat_4_ser_part_1", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 57, Offset = 0, Size = 4 },
                Data = new GrowattData { DataType = GrowattDataType.STRING }
            }
        });

        // RegisterNo 59
        model.InputRegisters.Add("bat_4_ser_part_2", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 59, Offset = 0, Size = 4 },
                Data = new GrowattData { DataType = GrowattDataType.STRING }
            }
        });

        // RegisterNo 61
        model.InputRegisters.Add("bat_4_ser_part_3", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 61, Offset = 0, Size = 4 },
                Data = new GrowattData { DataType = GrowattDataType.STRING }
            }
        });

        // RegisterNo 63
        model.InputRegisters.Add("bat_4_ser_part_4", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 63, Offset = 0, Size = 4 },
                Data = new GrowattData { DataType = GrowattDataType.STRING }
            }
        });

        // RegisterNo 65
        model.InputRegisters.Add("bat_4_soc_pct", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 65, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 1.0 } }
            }
        });

        // RegisterNo 66
        model.InputRegisters.Add("bat_4_temp", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 66, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT }
            }
        });

        // RegisterNo 67
        model.InputRegisters.Add("bat_4_warn_status", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 67, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.ENUM }
            }
        });

        // RegisterNo 68
        model.InputRegisters.Add("bat_4_protect_status", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 68, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.ENUM }
            }
        });

        // RegisterNo 69
        model.InputRegisters.Add("settable_time_period", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 69, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.ENUM }
            }
        });

        // RegisterNo 70
        model.InputRegisters.Add("ac_couple_warn_status", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 70, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.ENUM }
            }
        });

        // RegisterNo 71
        model.InputRegisters.Add("ac_couple_protect_status", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 71, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.ENUM }
            }
        });

        // RegisterNo 72
        model.InputRegisters.Add("pv_eng_today", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 72, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 0.1 } }
            }
        });

        // RegisterNo 73
        model.InputRegisters.Add("RegisterNo73", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 73, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 0.1 } }
            }
        });

        // RegisterNo 74
        model.InputRegisters.Add("pv_eng_month", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 74, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 0.1 } }
            }
        });

        // RegisterNo 75
        model.InputRegisters.Add("RegisterNo75", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 75, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 0.1 } }
            }
        });

        // RegisterNo 76
        model.InputRegisters.Add("pv_eng_year", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 76, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 0.1 } }
            }
        });

        // RegisterNo 77
        model.InputRegisters.Add("RegisterNo77", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 77, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 0.1 } }
            }
        });

        // RegisterNo 78
        model.InputRegisters.Add("eng_out_device", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 78, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 0.1 } }
            }
        });

        // RegisterNo 79
        model.InputRegisters.Add("ct_flag", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 79, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.ENUM }
            }
        });

        // RegisterNo 80
        model.InputRegisters.Add("total_household_load", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 80, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT }
            }
        });

        // RegisterNo 81
        model.InputRegisters.Add("household_load_apart_from_groplug", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 81, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT }
            }
        });

        // RegisterNo 82
        model.InputRegisters.Add("on_off_grid", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 82, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.ENUM }
            }
        });

        // RegisterNo 83
        model.InputRegisters.Add("ct_self_power", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 83, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 1.0 } }
            }
        });

        // RegisterNo 84
        model.InputRegisters.Add("RegisterNo84", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 84, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 1.0 } }
            }
        });

        // RegisterNo 85
        model.InputRegisters.Add("RegisterNo85", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 85, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 1.0 } }
            }
        });

        // RegisterNo 86
        model.InputRegisters.Add("RegisterNo86", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 86, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 1.0 } }
            }
        });

        // RegisterNo 87
        model.InputRegisters.Add("RegisterNo87", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 87, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 1.0 } }
            }
        });

        // RegisterNo 88
        model.InputRegisters.Add("RegisterNo88", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 88, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 1.0 } }
            }
        });

        // RegisterNo 89
        model.InputRegisters.Add("RegisterNo89", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 89, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 1.0 } }
            }
        });

        // RegisterNo 90
        model.InputRegisters.Add("charge_limit", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 90, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 1.0 } }
            }
        });

        // RegisterNo 91
        model.InputRegisters.Add("discharge_limit", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 91, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 1.0 } }
            }
        });

        // RegisterNo 92
        model.InputRegisters.Add("pv1Voltage", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 92, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 0.01 } }
            }
        });

        // RegisterNo 93
        model.InputRegisters.Add("pv1Current", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 93, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 0.01 } }
            }
        });

        // RegisterNo 94
        model.InputRegisters.Add("pv1Temp", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 94, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 0.01 } }
            }
        });

        // RegisterNo 95
        model.InputRegisters.Add("pv2Voltage", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 95, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 0.01 } }
            }
        });

        // RegisterNo 96
        model.InputRegisters.Add("pv2Current", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 96, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 0.01 } }
            }
        });

        // RegisterNo 97
        model.InputRegisters.Add("pv2Temp", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 97, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 0.01 } }
            }
        });

        // RegisterNo 98
        model.InputRegisters.Add("battery_soh", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 98, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT }
            }
        });

        // RegisterNo 99
        model.InputRegisters.Add("maxcvbat1", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 99, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 0.001 } }
            }
        });

        // RegisterNo 100
        model.InputRegisters.Add("mincvbat1", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 100, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 0.001 } }
            }
        });

        // RegisterNo 101
        model.InputRegisters.Add("bat_cyclecnt", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 101, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 1.0 } }
            }
        });

        // RegisterNo 102
        model.InputRegisters.Add("register_102", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 102, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 1.0 } }
            }
        });

        // RegisterNo 103
        model.InputRegisters.Add("pv3Voltage", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 103, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 0.01 } }
            }
        });

        // RegisterNo 104
        model.InputRegisters.Add("pv3Current", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 104, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 0.01 } }
            }
        });

        // RegisterNo 105
        model.InputRegisters.Add("pv3Temp", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 105, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 0.01 } }
            }
        });

        // RegisterNo 106
        model.InputRegisters.Add("pv4Voltage", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 106, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 0.01 } }
            }
        });

        // RegisterNo 107
        model.InputRegisters.Add("pv4Current", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 107, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 0.01 } }
            }
        });

        // RegisterNo 108
        model.InputRegisters.Add("pv4Temp", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 108, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 0.01 } }
            }
        });

        // RegisterNo 109
        model.InputRegisters.Add("out_voltage", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 109, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT, FloatOptions = new GrowattFloatOptions { Delta = 0.0, Multiplier = 0.01 } }
            }
        });

        // RegisterNo 110
        model.InputRegisters.Add("system_temp", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 110, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT }
            }
        });

        // RegisterNo 112
        model.InputRegisters.Add("max_cell_voltage", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 112, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT }
            }
        });

        // RegisterNo 113
        model.InputRegisters.Add("RegisterNo113", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 113, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT }
            }
        });

        // RegisterNo 114
        model.InputRegisters.Add("min_cell_voltage", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 114, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT }
            }
        });

        // RegisterNo 115
        model.InputRegisters.Add("RegisterNo115", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 115, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT }
            }
        });

        // RegisterNo 116
        model.InputRegisters.Add("RegisterNo116", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 116, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT }
            }
        });

        // RegisterNo 117
        model.InputRegisters.Add("RegisterNo117", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 117, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT }
            }
        });

        // RegisterNo 118
        model.InputRegisters.Add("RegisterNo118", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 118, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT }
            }
        });

        // RegisterNo 119
        model.InputRegisters.Add("RegisterNo119", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 119, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT }
            }
        });
        // RegisterNo 120
        model.InputRegisters.Add("bat_1_temp_f", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 120, Offset = 0, Size = 2 }, // Beispielwert!
                Data = new GrowattData { DataType = GrowattDataType.FLOAT }
            }
        });

        // RegisterNo 122
        model.InputRegisters.Add("bat_2_temp_f", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 122, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT }
            }
        });

        // RegisterNo 124
        model.InputRegisters.Add("bat_3_temp_f", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 124, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT }
            }
        });

        // RegisterNo 126
        model.InputRegisters.Add("bat_4_temp_f", new GrowattParameter
        {
            Growatt = new GrowatttRegister
            {
                Position = new GrowattRegisterPosition { RegisterNo = 126, Offset = 0, Size = 2 },
                Data = new GrowattData { DataType = GrowattDataType.FLOAT }
            }
        });

        #endregion`

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions