Skip to content

Conversation

mystardious
Copy link

  • Add export_limit property to EntityRemoteControlManager interface
  • Implement export_limit setter in RemoteControlManager with async register write
  • Add ModbusRemoteControlNumberDescription for export limit in remote control config
  • Restrict export limit to KH models only (KH_PRE119, KH_PRE133, KH_133)
  • Use register 41012 for KH inverters
  • Support 0-10kW range with 0.001kW steps
  • Integrate with existing remote control system

- Add export_limit property to EntityRemoteControlManager interface
- Implement export_limit setter in RemoteControlManager with async register write
- Add ModbusRemoteControlNumberDescription for export limit in remote control config
- Restrict export limit to KH models only (KH_PRE119, KH_PRE133, KH_133)
- Use register 41012 for KH inverters
- Support 0-10kW range with 0.001kW steps
- Integrate with existing remote control system
@mystardious
Copy link
Author

Adds another box to allow you to specify the export limit.

Screenshot 2025-10-08 at 12 52 43 pm

@MartB
Copy link
Contributor

MartB commented Oct 14, 2025

41012 with u32 also works for H3 after 180 (as far as I can confirm)

Been using it for a while.

@mystardious
Copy link
Author

Yep that's the same case for me I have done a dump of my registers in the 40K range below:

FoxESS adaptive scan (stop after 5 consecutive errors +2)
Target: 192.168.0.200:4196 (slave 247)
Timeout: 0.2s

=== Range 40000-40099 (auto-stop) ===
[40000] (u16): 25
[40001] (u16): 10
[40002] (u16): 15
[40003] (u16): 17
[40004] (u16): 42
[40005] (u16): 23
[40006] (u16): 60
[40007] (u16): 0
[40008] (u16): 1
[40009] (u16): 0
[40010] (u16): 1
[40011] (u16): 2
[40012] (u16): 247
[40013] (u16): 0
[40014] (u16): 180
⛔️ stopping early at 40046 (5 consecutive errors)

=== Range 41000-41099 (auto-stop) ===
[41000] (u16): 0
[41001] (u16): 0
[41002] (u16): 0
[41003] (u16): 0
[41004] (u16): 0
[41005] (u16): 0
[41006] (u16): 0
[41007] (u16): 500
[41008] (u16): 500
[41009] (u16): 10
[41010] (u16): 100
[41011] (u16): 10
[41012] (u16): 10000
[41013] (u16): 1
[41014] (u16): 1
[41015] (u16): 3
[41016] (u16): 100
[41017] (u16): 0
[41018] (u16): 0
[41019] (u16): 2300
[41020] (u16): 1
[41021] (u16): 0
[41022] (u16): 0
[41023] (u16): 10000
⛔️ stopping early at 41055 (5 consecutive errors)

=== Range 42000-42099 (auto-stop) ===
[42000] (u16): 7
[42001] (u16): 1
[42002] (u16): 167
[42003] (u16): 1
[42004] (u16): 167
[42005] (u16): 2530
[42006] (u16): 2050
[42007] (u16): 5015
[42008] (u16): 4750
⛔️ stopping early at 42040 (5 consecutive errors)

=== Range 42100-42199 (auto-stop) ===
[42100] (u16): 11
[42101] (u16): 2650
[42102] (u16): 300
[42103] (u16): 2750
[42104] (u16): 36
[42105] (u16): 2900
[42106] (u16): 36
[42107] (u16): 1800
[42108] (u16): 2100
[42109] (u16): 700
[42110] (u16): 300
[42111] (u16): 2580
⛔️ stopping early at 42143 (5 consecutive errors)

=== Range 42200-42299 (auto-stop) ===
[42200] (u16): 1
[42201] (u16): 5200
[42202] (u16): 36
[42203] (u16): 5200
[42204] (u16): 36
[42205] (u16): 4700
[42206] (u16): 300
[42207] (u16): 4700
[42208] (u16): 300
[42209] (u16): 40
⛔️ stopping early at 42241 (5 consecutive errors)

=== Range 42300-42399 (auto-stop) ===
[42300] (u16): 19
[42301] (u16): 4985
[42302] (u16): 4975
[42303] (u16): 4800
[42304] (u16): 40
[42305] (u16): 5015
[42306] (u16): 5025
[42307] (u16): 5200
[42308] (u16): 50
[42309] (u16): 1000
[42310] (u16): 20
[42311] (u16): 167
[42312] (u16): 100
[42313] (u16): 100
[42314] (u16): 1
⛔️ stopping early at 42346 (5 consecutive errors)

=== Range 42400-42499 (auto-stop) ===
[42400] (u16): 0
[42401] (u16): 2300
[42402] (u16): 600
[42403] (u16): 0
[42404] (u16): 1200
[42405] (u16): 304
[42406] (u16): 1600
[42407] (u16): 782
[42408] (u16): 2000
[42409] (u16): 782
[42410] (u16): 60000
[42411] (u16): 1000
[42412] (u16): 20
[42413] (u16): 1204
[42414] (u16): 200
[42415] (u16): 1195
[42416] (u16): 700
[42417] (u16): 1152
[42418] (u16): 2000
[42419] (u16): 1130
[42420] (u16): 60000
[42421] (u16): 1000
⛔️ stopping early at 42453 (5 consecutive errors)

=== Range 42700-42799 (auto-stop) ===
[42700] (u16): 17
[42701] (u16): 2070
[42702] (u16): 2150
[42703] (u16): 2530
[42704] (u16): 2600
[42705] (u16): 0
[42706] (u16): 167
[42707] (u16): 1
⛔️ stopping early at 42739 (5 consecutive errors)

=== Range 42800-42899 (auto-stop) ===
[42800] (u16): 3
[42801] (u16): 241
[42802] (u16): 100
[42803] (u16): 900
[42804] (u16): 16
⛔️ stopping early at 42836 (5 consecutive errors)

=== Range 42900-42999 (auto-stop) ===
⛔️ stopping early at 42931 (5 consecutive errors)

=== Range 43000-43099 (auto-stop) ===
[43000] (u16): 54
[43001] (u16): 0
[43002] (u16): 0
[43003] (u16): 100
[43004] (u16): 0
[43005] (u16): 2415
[43006] (u16): 2300
[43007] (u16): 100
[43008] (u16): 0
[43009] (u16): 100
[43010] (u16): 25
[43011] (u16): 100
[43012] (u16): 50
[43013] (u16): 90
[43014] (u16): 100
[43015] (u16): 2070
[43016] (u16): 440
[43017] (u16): 2200
[43018] (u16): 0
[43019] (u16): 2400
[43020] (u16): 0
[43021] (u16): 2580
[43022] (u16): 600
[43023] (u16): 20
[43024] (u16): 5
[43025] (u16): 1000
[43026] (u16): 0
⛔️ stopping early at 43058 (5 consecutive errors)

=== Range 44000-44099 (auto-stop) ===
[44000] (u16): 4
[44001] (u16): 20
[44002] (u16): 0
[44003] (u16): 0
[44004] (u16): 0
[44005] (u16): 0
[44006] (u16): 0
[44007] (u16): 0
[44008] (u16): 0
[44009] (u16): 0
[44010] (u16): 0
[44011] (u16): 0
[44012] (u16): 0
[44013] (u16): 0
[44014] (u16): 0
[44015] (u16): 0
⛔️ stopping early at 44047 (5 consecutive errors)

=== Range 46000-46099 (auto-stop) ===
[46000] (u16): 0
[46001] (u16): 4
[46002] (u16): 20
[46003] (u16): 0
[46004] (u16): 0
[46005] (u16): 0
[46006] (u16): 0
[46007] (u16): 0
[46018] (u16): 0
[46019] (u16): 0
[46020] (u16): 0
[46021] (u16): 0
⛔️ stopping early at 46053 (5 consecutive errors)

=== Range 46500-46599 (auto-stop) ===
[46500] (u16): 0
[46501] (u16): 0
[46502] (u16): 13000
[46503] (u16): 0
[46504] (u16): 0
[46505] (u16): 13000
[46506] (u16): 0
[46507] (u16): 0
[46508] (u16): 0
[46509] (u16): 0
[46510] (u16): 0
[46511] (u16): 0
[46512] (u16): 0
[46513] (u16): 0
[46514] (u16): 0
⛔️ stopping early at 46546 (5 consecutive errors)

=== Range 46600-46699 (auto-stop) ===
[46601] (u16): 0
[46602] (u16): 0
[46603] (u16): 0
[46604] (u16): 0
[46605] (u16): 0
[46606] (u16): 0
[46607] (u16): 500
[46608] (u16): 500
[46609] (u16): 10
[46610] (u16): 100
[46611] (u16): 10
[46612] (u16): 1
[46613] (u16): 3
[46614] (u16): 0
[46615] (u16): 0
[46616] (u16): 0
[46617] (u16): 10000
[46618] (u16): 480
[46619] (u16): 1500
⛔️ stopping early at 46651 (5 consecutive errors)

=== Range 49000-49099 (auto-stop) ===
[49000] (u16): 26863
[49001] (u16): 56825
[49002] (u16): 0
[49003] (u16): 0
[49004] (u16): 0
[49005] (u16): 0
[49006] (u16): 0
[49007] (u16): 1000
[49008] (u16): 0
[49009] (u16): 0
[49010] (u16): 0
[49011] (u16): 0
[49012] (u16): 0
[49013] (u16): 0
[49014] (u16): 0
[49015] (u16): 0
[49016] (u16): 0
[49017] (u16): 0
[49018] (u16): 0
[49019] (u16): 0
[49020] (u16): 0
[49021] (u16): 0
[49022] (u16): 0
[49023] (u16): 0
[49024] (u16): 0
[49025] (u16): 0
[49026] (u16): 0
[49027] (u16): 0
[49028] (u16): 0
[49029] (u16): 0
[49030] (u16): 0
[49031] (u16): 0
[49032] (u16): 0
[49033] (u16): 0
[49034] (u16): 0
[49035] (u16): 0
[49036] (u16): 0
[49037] (u16): 0
[49038] (u16): 0
[49039] (u16): 0
[49040] (u16): 0
[49041] (u16): 0
[49042] (u16): 0
[49043] (u16): 0
[49044] (u16): 0
[49045] (u16): 0
[49046] (u16): 0
[49047] (u16): 0
[49048] (u16): 0
[49049] (u16): 0
[49050] (u16): 0
[49051] (u16): 0
[49052] (u16): 0
[49053] (u16): 0
[49054] (u16): 0
[49055] (u16): 0
[49056] (u16): 0
[49057] (u16): 0
[49058] (u16): 0
[49059] (u16): 0
[49060] (u16): 0
[49061] (u16): 0
[49062] (u16): 0
[49063] (u16): 0
[49064] (u16): 0
[49065] (u16): 0
[49066] (u16): 0
[49067] (u16): 0
[49068] (u16): 0
[49069] (u16): 0
[49070] (u16): 0
[49071] (u16): 0
[49072] (u16): 0
[49073] (u16): 0
[49074] (u16): 0
[49075] (u16): 0
[49076] (u16): 0
[49077] (u16): 1
[49078] (u16): 0
[49079] (u16): 60
[49080] (u16): 0
[49081] (u16): 0
[49082] (u16): 0
[49083] (u16): 0
[49084] (u16): 0
[49085] (u16): 0
[49086] (u16): 0
[49087] (u16): 0
[49088] (u16): 0
[49089] (u16): 0
[49090] (u16): 0
[49091] (u16): 0
[49092] (u16): 0
[49093] (u16): 0
[49094] (u16): 0
[49095] (u16): 0
[49096] (u16): 0
[49097] (u16): 0
[49098] (u16): 0
[49099] (u16): 0

=== Range 49100-49199 (auto-stop) ===
[49100] (u16): 0
[49101] (u16): 0
[49102] (u16): 0
[49103] (u16): 0
[49104] (u16): 0
[49105] (u16): 0
[49106] (u16): 0
[49107] (u16): 0
[49108] (u16): 0
[49109] (u16): 0
[49110] (u16): 0
[49111] (u16): 0
[49112] (u16): 0
[49113] (u16): 0
[49114] (u16): 0
[49115] (u16): 0
[49116] (u16): 0
[49117] (u16): 0
[49118] (u16): 0
[49119] (u16): 0
[49120] (u16): 0
[49121] (u16): 0
[49122] (u16): 0
[49123] (u16): 0
[49124] (u16): 0
[49125] (u16): 0
[49126] (u16): 0
[49127] (u16): 0
[49128] (u16): 0
[49129] (u16): 0
[49130] (u16): 0
[49131] (u16): 0
[49132] (u16): 0
[49133] (u16): 0
[49134] (u16): 0
[49135] (u16): 0
[49136] (u16): 0
[49137] (u16): 0
[49138] (u16): 0
[49139] (u16): 100
[49140] (u16): 0
[49141] (u16): 0
[49142] (u16): 0
[49143] (u16): 0
[49144] (u16): 0
[49145] (u16): 0
[49146] (u16): 0
[49147] (u16): 0
[49148] (u16): 0
[49149] (u16): 0
[49150] (u16): 0
[49151] (u16): 0
[49152] (u16): 0
[49153] (u16): 0
[49154] (u16): 0
[49155] (u16): 0
[49156] (u16): 0
[49157] (u16): 0
[49158] (u16): 0
[49159] (u16): 0
[49160] (u16): 0
[49161] (u16): 0
[49162] (u16): 0
[49163] (u16): 0
[49164] (u16): 0
[49165] (u16): 0
[49166] (u16): 0
[49167] (u16): 0
[49168] (u16): 0
[49169] (u16): 0
[49170] (u16): 0
[49171] (u16): 0
[49172] (u16): 0
[49173] (u16): 0
[49174] (u16): 0
[49175] (u16): 0
[49176] (u16): 0
[49177] (u16): 0
[49178] (u16): 0
[49179] (u16): 0
[49180] (u16): 0
[49181] (u16): 0
[49182] (u16): 0
[49183] (u16): 0

=== Range 49200-49299 (auto-stop) ===
[49203] (u16): 1
[49206] (u16): 0
[49207] (u16): 2
[49208] (u16): 0
[49209] (u16): 0
[49210] (u16): 0
[49211] (u16): 0
[49212] (u16): 0
[49221] (u16): 0
[49222] (u16): 2025
[49223] (u16): 10
[49224] (u16): 15
[49225] (u16): 17
[49226] (u16): 47
[49227] (u16): 6
[49228] (u16): 1
[49229] (u16): 0
[49230] (u16): 0
⛔️ stopping early at 49262 (5 consecutive errors)

✅ Adaptive scan complete.

@mystardious
Copy link
Author

I wanted to find Meter Compensation register if there was any. I had my installer set it to -60W for me and I don't think it is available as a modbus register.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants