@rhizomatics/signalk-bluetti-plugin 1.4.1 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +40 -4
  3. package/cli.js +69 -9
  4. package/docs/assets/icon.svg +36 -0
  5. package/docs/assets/screenshots/bluetti_data.png +0 -0
  6. package/docs/examples/model_definition.yaml +112 -0
  7. package/index.js +78 -25
  8. package/lib/path-mapper.js +51 -9
  9. package/lib/register-loader.js +120 -0
  10. package/lib/scanner.js +1 -1
  11. package/package.json +12 -5
  12. package/registers/ac180.yaml +58 -0
  13. package/registers/ac180p.yaml +34 -0
  14. package/registers/ac180t.yaml +58 -0
  15. package/registers/ac200l.yaml +48 -0
  16. package/registers/ac200m.yaml +48 -0
  17. package/registers/ac200p.yaml +89 -0
  18. package/registers/ac200pl.yaml +48 -0
  19. package/registers/ac2a.yaml +34 -0
  20. package/registers/ac2p.yaml +34 -0
  21. package/registers/ac300.yaml +57 -0
  22. package/registers/ac500.yaml +56 -0
  23. package/registers/ac50b.yaml +31 -0
  24. package/registers/ac60.yaml +33 -0
  25. package/registers/ac60p.yaml +33 -0
  26. package/registers/ac70.yaml +62 -0
  27. package/registers/ac70p.yaml +58 -0
  28. package/registers/ap300.yaml +34 -0
  29. package/registers/eb3a.yaml +41 -0
  30. package/registers/el100v2.yaml +43 -0
  31. package/registers/el30v2.yaml +38 -0
  32. package/registers/ep2000.yaml +75 -0
  33. package/registers/ep500.yaml +57 -0
  34. package/registers/ep500p.yaml +57 -0
  35. package/registers/ep600.yaml +151 -0
  36. package/registers/ep760.yaml +72 -0
  37. package/registers/ep800.yaml +21 -0
  38. package/registers/handsfree1.yaml +62 -0
  39. package/registers/pr100v2.yaml +34 -0
  40. package/registers/pr30v2.yaml +34 -0
  41. package/lib/csv-loader.js +0 -160
  42. package/registers/ac200p.csv +0 -47
  43. package/registers/el100v2.csv +0 -27
@@ -0,0 +1,34 @@
1
+ # Bluetti AC2A register map
2
+ # Source: https://github.com/Patrick762/bluetti-bt-lib (bluetti_bt_lib/devices/ac2a.py)
3
+ #
4
+ # field_name is a standard Bluetti register name — the code maps these to
5
+ # SignalK paths on its own (see lib/path-mapper.js). `path` on a field is an
6
+ # override, only needed if you're exposing a register the code doesn't
7
+ # recognise. `constants` are fixed, non-register facts about this model —
8
+ # a bare scalar (string/number) or { value, unit } for one that needs unit
9
+ # conversion (e.g. total_capacity in Wh -> J). No verified nominal capacity
10
+ # is bundled for most models — add a total_capacity constant yourself if you
11
+ # know it, to enable the derived remaining-capacity calculation.
12
+ #
13
+
14
+ fields:
15
+ dc_output_power:
16
+ register: 140
17
+ unit: W
18
+ ac_output_power:
19
+ register: 142
20
+ unit: W
21
+ dc_input_power:
22
+ register: 144
23
+ unit: W
24
+ ac_input_power:
25
+ register: 146
26
+ unit: W
27
+ power_generation:
28
+ register: 154
29
+ scale: 0.1
30
+ unit: kWh
31
+ constants:
32
+ battery_chemistry: LiFePO4
33
+ battery_manufacturer_name: Bluetti
34
+ battery_manufacturer_model: AC2A
@@ -0,0 +1,34 @@
1
+ # Bluetti AC2P register map
2
+ # Source: https://github.com/Patrick762/bluetti-bt-lib (bluetti_bt_lib/devices/ac2p.py)
3
+ #
4
+ # field_name is a standard Bluetti register name — the code maps these to
5
+ # SignalK paths on its own (see lib/path-mapper.js). `path` on a field is an
6
+ # override, only needed if you're exposing a register the code doesn't
7
+ # recognise. `constants` are fixed, non-register facts about this model —
8
+ # a bare scalar (string/number) or { value, unit } for one that needs unit
9
+ # conversion (e.g. total_capacity in Wh -> J). No verified nominal capacity
10
+ # is bundled for most models — add a total_capacity constant yourself if you
11
+ # know it, to enable the derived remaining-capacity calculation.
12
+ #
13
+
14
+ fields:
15
+ dc_output_power:
16
+ register: 140
17
+ unit: W
18
+ ac_output_power:
19
+ register: 142
20
+ unit: W
21
+ dc_input_power:
22
+ register: 144
23
+ unit: W
24
+ ac_input_power:
25
+ register: 146
26
+ unit: W
27
+ power_generation:
28
+ register: 154
29
+ scale: 0.1
30
+ unit: kWh
31
+ constants:
32
+ battery_chemistry: LiFePO4
33
+ battery_manufacturer_name: Bluetti
34
+ battery_manufacturer_model: AC2P
@@ -0,0 +1,57 @@
1
+ # Bluetti AC300 register map
2
+ # Source: https://github.com/Patrick762/bluetti-bt-lib (bluetti_bt_lib/devices/ac300.py)
3
+ #
4
+ # field_name is a standard Bluetti register name — the code maps these to
5
+ # SignalK paths on its own (see lib/path-mapper.js). `path` on a field is an
6
+ # override, only needed if you're exposing a register the code doesn't
7
+ # recognise. `constants` are fixed, non-register facts about this model —
8
+ # a bare scalar (string/number) or { value, unit } for one that needs unit
9
+ # conversion (e.g. total_capacity in Wh -> J). No verified nominal capacity
10
+ # is bundled for most models — add a total_capacity constant yourself if you
11
+ # know it, to enable the derived remaining-capacity calculation.
12
+ #
13
+
14
+ fields:
15
+ battery_soc:
16
+ register: 43
17
+ unit: "%"
18
+ dc_input_power:
19
+ register: 36
20
+ unit: W
21
+ ac_input_power:
22
+ register: 37
23
+ unit: W
24
+ ac_output_power:
25
+ register: 38
26
+ unit: W
27
+ dc_output_power:
28
+ register: 39
29
+ unit: W
30
+ ac_output_voltage:
31
+ register: 71
32
+ scale: 0.1
33
+ unit: V
34
+ ac_output_frequency:
35
+ register: 74
36
+ scale: 0.01
37
+ unit: Hz
38
+ ac_input_voltage:
39
+ register: 77
40
+ scale: 0.1
41
+ unit: V
42
+ ac_input_frequency:
43
+ register: 80
44
+ scale: 0.01
45
+ unit: Hz
46
+ dc_input_voltage:
47
+ register: 86
48
+ scale: 0.1
49
+ unit: V
50
+ dc_input_current:
51
+ register: 88
52
+ scale: 0.1
53
+ unit: A
54
+ constants:
55
+ battery_chemistry: LiFePO4
56
+ battery_manufacturer_name: Bluetti
57
+ battery_manufacturer_model: AC300
@@ -0,0 +1,56 @@
1
+ # Bluetti AC500 register map
2
+ # Source: https://github.com/Patrick762/bluetti-bt-lib (bluetti_bt_lib/devices/ac500.py)
3
+ #
4
+ # field_name is a standard Bluetti register name — the code maps these to
5
+ # SignalK paths on its own (see lib/path-mapper.js). `path` on a field is an
6
+ # override, only needed if you're exposing a register the code doesn't
7
+ # recognise. `constants` are fixed, non-register facts about this model —
8
+ # a bare scalar (string/number) or { value, unit } for one that needs unit
9
+ # conversion (e.g. total_capacity in Wh -> J). No verified nominal capacity
10
+ # is bundled for most models — add a total_capacity constant yourself if you
11
+ # know it, to enable the derived remaining-capacity calculation.
12
+ #
13
+
14
+ fields:
15
+ battery_soc:
16
+ register: 43
17
+ unit: "%"
18
+ dc_input_power:
19
+ register: 36
20
+ unit: W
21
+ ac_input_power:
22
+ register: 37
23
+ unit: W
24
+ ac_output_power:
25
+ register: 38
26
+ unit: W
27
+ dc_output_power:
28
+ register: 39
29
+ unit: W
30
+ ac_output_voltage:
31
+ register: 71
32
+ unit: V
33
+ ac_output_frequency:
34
+ register: 74
35
+ scale: 0.1
36
+ unit: Hz
37
+ ac_input_voltage:
38
+ register: 77
39
+ scale: 0.1
40
+ unit: V
41
+ ac_input_frequency:
42
+ register: 80
43
+ scale: 0.01
44
+ unit: Hz
45
+ dc_input_voltage:
46
+ register: 86
47
+ scale: 0.1
48
+ unit: V
49
+ dc_input_current:
50
+ register: 88
51
+ scale: 0.1
52
+ unit: A
53
+ constants:
54
+ battery_chemistry: LiFePO4
55
+ battery_manufacturer_name: Bluetti
56
+ battery_manufacturer_model: AC500
@@ -0,0 +1,31 @@
1
+ # Bluetti AC50B register map
2
+ # Source: https://github.com/Patrick762/bluetti-bt-lib (bluetti_bt_lib/devices/ac50b.py)
3
+ #
4
+ # field_name is a standard Bluetti register name — the code maps these to
5
+ # SignalK paths on its own (see lib/path-mapper.js). `path` on a field is an
6
+ # override, only needed if you're exposing a register the code doesn't
7
+ # recognise. `constants` are fixed, non-register facts about this model —
8
+ # a bare scalar (string/number) or { value, unit } for one that needs unit
9
+ # conversion (e.g. total_capacity in Wh -> J). No verified nominal capacity
10
+ # is bundled for most models — add a total_capacity constant yourself if you
11
+ # know it, to enable the derived remaining-capacity calculation.
12
+ #
13
+
14
+ fields:
15
+ dc_output_power:
16
+ register: 140
17
+ unit: W
18
+ ac_output_power:
19
+ register: 142
20
+ unit: W
21
+ ac_input_power:
22
+ register: 146
23
+ unit: W
24
+ time_remaining_minutes:
25
+ register: 104
26
+ scale: 6
27
+ unit: min
28
+ constants:
29
+ battery_chemistry: LiFePO4
30
+ battery_manufacturer_name: Bluetti
31
+ battery_manufacturer_model: AC50B
@@ -0,0 +1,33 @@
1
+ # Bluetti AC60 register map
2
+ # Source: https://github.com/Patrick762/bluetti-bt-lib (bluetti_bt_lib/devices/ac60.py)
3
+ #
4
+ # field_name is a standard Bluetti register name — the code maps these to
5
+ # SignalK paths on its own (see lib/path-mapper.js). `path` on a field is an
6
+ # override, only needed if you're exposing a register the code doesn't
7
+ # recognise. `constants` are fixed, non-register facts about this model —
8
+ # a bare scalar (string/number) or { value, unit } for one that needs unit
9
+ # conversion (e.g. total_capacity in Wh -> J). No verified nominal capacity
10
+ # is bundled for most models — add a total_capacity constant yourself if you
11
+ # know it, to enable the derived remaining-capacity calculation.
12
+ #
13
+
14
+ fields:
15
+ dc_output_power:
16
+ register: 140
17
+ unit: W
18
+ ac_output_power:
19
+ register: 142
20
+ unit: W
21
+ dc_input_power:
22
+ register: 144
23
+ unit: W
24
+ ac_input_power:
25
+ register: 146
26
+ unit: W
27
+ ac_input_voltage:
28
+ register: 1314
29
+ unit: V
30
+ constants:
31
+ battery_chemistry: LiFePO4
32
+ battery_manufacturer_name: Bluetti
33
+ battery_manufacturer_model: AC60
@@ -0,0 +1,33 @@
1
+ # Bluetti AC60P register map
2
+ # Source: https://github.com/Patrick762/bluetti-bt-lib (bluetti_bt_lib/devices/ac60p.py)
3
+ #
4
+ # field_name is a standard Bluetti register name — the code maps these to
5
+ # SignalK paths on its own (see lib/path-mapper.js). `path` on a field is an
6
+ # override, only needed if you're exposing a register the code doesn't
7
+ # recognise. `constants` are fixed, non-register facts about this model —
8
+ # a bare scalar (string/number) or { value, unit } for one that needs unit
9
+ # conversion (e.g. total_capacity in Wh -> J). No verified nominal capacity
10
+ # is bundled for most models — add a total_capacity constant yourself if you
11
+ # know it, to enable the derived remaining-capacity calculation.
12
+ #
13
+
14
+ fields:
15
+ dc_output_power:
16
+ register: 140
17
+ unit: W
18
+ ac_output_power:
19
+ register: 142
20
+ unit: W
21
+ dc_input_power:
22
+ register: 144
23
+ unit: W
24
+ ac_input_power:
25
+ register: 146
26
+ unit: W
27
+ ac_input_voltage:
28
+ register: 1314
29
+ unit: V
30
+ constants:
31
+ battery_chemistry: LiFePO4
32
+ battery_manufacturer_name: Bluetti
33
+ battery_manufacturer_model: AC60P
@@ -0,0 +1,62 @@
1
+ # Bluetti AC70 register map
2
+ # Source: https://github.com/Patrick762/bluetti-bt-lib (bluetti_bt_lib/devices/ac70.py)
3
+ #
4
+ # field_name is a standard Bluetti register name — the code maps these to
5
+ # SignalK paths on its own (see lib/path-mapper.js). `path` on a field is an
6
+ # override, only needed if you're exposing a register the code doesn't
7
+ # recognise. `constants` are fixed, non-register facts about this model —
8
+ # a bare scalar (string/number) or { value, unit } for one that needs unit
9
+ # conversion (e.g. total_capacity in Wh -> J). No verified nominal capacity
10
+ # is bundled for most models — add a total_capacity constant yourself if you
11
+ # know it, to enable the derived remaining-capacity calculation.
12
+ #
13
+
14
+ fields:
15
+ dc_output_power:
16
+ register: 140
17
+ unit: W
18
+ ac_output_power:
19
+ register: 142
20
+ unit: W
21
+ dc_input_power:
22
+ register: 144
23
+ unit: W
24
+ ac_input_power:
25
+ register: 146
26
+ unit: W
27
+ time_remaining_minutes:
28
+ register: 104
29
+ scale: 6
30
+ unit: min
31
+ dc_input_voltage:
32
+ register: 1213
33
+ scale: 0.1
34
+ unit: V
35
+ dc_input_current:
36
+ register: 1214
37
+ scale: 0.1
38
+ unit: A
39
+ ac_input_frequency:
40
+ register: 1300
41
+ scale: 0.1
42
+ unit: Hz
43
+ ac_input_voltage:
44
+ register: 1314
45
+ scale: 0.1
46
+ unit: V
47
+ ac_input_current:
48
+ register: 1315
49
+ scale: 0.1
50
+ unit: A
51
+ ac_output_frequency:
52
+ register: 1500
53
+ scale: 0.1
54
+ unit: Hz
55
+ ac_output_voltage:
56
+ register: 1511
57
+ scale: 0.1
58
+ unit: V
59
+ constants:
60
+ battery_chemistry: LiFePO4
61
+ battery_manufacturer_name: Bluetti
62
+ battery_manufacturer_model: AC70
@@ -0,0 +1,58 @@
1
+ # Bluetti AC70P register map
2
+ # Source: https://github.com/Patrick762/bluetti-bt-lib (bluetti_bt_lib/devices/ac70p.py)
3
+ #
4
+ # field_name is a standard Bluetti register name — the code maps these to
5
+ # SignalK paths on its own (see lib/path-mapper.js). `path` on a field is an
6
+ # override, only needed if you're exposing a register the code doesn't
7
+ # recognise. `constants` are fixed, non-register facts about this model —
8
+ # a bare scalar (string/number) or { value, unit } for one that needs unit
9
+ # conversion (e.g. total_capacity in Wh -> J). No verified nominal capacity
10
+ # is bundled for most models — add a total_capacity constant yourself if you
11
+ # know it, to enable the derived remaining-capacity calculation.
12
+ #
13
+
14
+ fields:
15
+ dc_output_power:
16
+ register: 140
17
+ unit: W
18
+ ac_output_power:
19
+ register: 142
20
+ unit: W
21
+ dc_input_power:
22
+ register: 144
23
+ unit: W
24
+ ac_input_power:
25
+ register: 146
26
+ unit: W
27
+ dc_input_voltage:
28
+ register: 1213
29
+ scale: 0.1
30
+ unit: V
31
+ dc_input_current:
32
+ register: 1214
33
+ scale: 0.1
34
+ unit: A
35
+ ac_input_frequency:
36
+ register: 1300
37
+ scale: 0.1
38
+ unit: Hz
39
+ ac_input_voltage:
40
+ register: 1314
41
+ scale: 0.1
42
+ unit: V
43
+ ac_input_current:
44
+ register: 1315
45
+ scale: 0.1
46
+ unit: A
47
+ ac_output_frequency:
48
+ register: 1500
49
+ scale: 0.1
50
+ unit: Hz
51
+ ac_output_voltage:
52
+ register: 1511
53
+ scale: 0.1
54
+ unit: V
55
+ constants:
56
+ battery_chemistry: LiFePO4
57
+ battery_manufacturer_name: Bluetti
58
+ battery_manufacturer_model: AC70P
@@ -0,0 +1,34 @@
1
+ # Bluetti AP300 register map
2
+ # Source: https://github.com/Patrick762/bluetti-bt-lib (bluetti_bt_lib/devices/ap300.py)
3
+ #
4
+ # field_name is a standard Bluetti register name — the code maps these to
5
+ # SignalK paths on its own (see lib/path-mapper.js). `path` on a field is an
6
+ # override, only needed if you're exposing a register the code doesn't
7
+ # recognise. `constants` are fixed, non-register facts about this model —
8
+ # a bare scalar (string/number) or { value, unit } for one that needs unit
9
+ # conversion (e.g. total_capacity in Wh -> J). No verified nominal capacity
10
+ # is bundled for most models — add a total_capacity constant yourself if you
11
+ # know it, to enable the derived remaining-capacity calculation.
12
+ #
13
+
14
+ fields:
15
+ dc_output_power:
16
+ register: 140
17
+ unit: W
18
+ ac_output_power:
19
+ register: 142
20
+ unit: W
21
+ dc_input_power:
22
+ register: 144
23
+ unit: W
24
+ ac_input_power:
25
+ register: 146
26
+ unit: W
27
+ ac_input_voltage:
28
+ register: 1314
29
+ scale: 0.1
30
+ unit: V
31
+ constants:
32
+ battery_chemistry: LiFePO4
33
+ battery_manufacturer_name: Bluetti
34
+ battery_manufacturer_model: AP300
@@ -0,0 +1,41 @@
1
+ # Bluetti EB3A register map
2
+ # Source: https://github.com/Patrick762/bluetti-bt-lib (bluetti_bt_lib/devices/eb3a.py)
3
+ #
4
+ # field_name is a standard Bluetti register name — the code maps these to
5
+ # SignalK paths on its own (see lib/path-mapper.js). `path` on a field is an
6
+ # override, only needed if you're exposing a register the code doesn't
7
+ # recognise. `constants` are fixed, non-register facts about this model —
8
+ # a bare scalar (string/number) or { value, unit } for one that needs unit
9
+ # conversion (e.g. total_capacity in Wh -> J). No verified nominal capacity
10
+ # is bundled for most models — add a total_capacity constant yourself if you
11
+ # know it, to enable the derived remaining-capacity calculation.
12
+ #
13
+
14
+ fields:
15
+ battery_soc:
16
+ register: 43
17
+ unit: "%"
18
+ dc_input_power:
19
+ register: 36
20
+ unit: W
21
+ ac_input_power:
22
+ register: 37
23
+ unit: W
24
+ ac_output_power:
25
+ register: 38
26
+ unit: W
27
+ dc_output_power:
28
+ register: 39
29
+ unit: W
30
+ ac_input_voltage:
31
+ register: 77
32
+ scale: 0.1
33
+ unit: V
34
+ dc_input_voltage:
35
+ register: 86
36
+ scale: 0.01
37
+ unit: V
38
+ constants:
39
+ battery_chemistry: LiFePO4
40
+ battery_manufacturer_name: Bluetti
41
+ battery_manufacturer_model: EB3A
@@ -0,0 +1,43 @@
1
+ # Bluetti EL100V2 register map
2
+ # Source: https://github.com/Patrick762/bluetti-bt-lib (bluetti_bt_lib/devices/el100v2.py)
3
+ #
4
+ # field_name is a standard Bluetti register name — the code maps these to
5
+ # SignalK paths on its own (see lib/path-mapper.js). `path` on a field is an
6
+ # override, only needed if you're exposing a register the code doesn't
7
+ # recognise. `constants` are fixed, non-register facts about this model —
8
+ # a bare scalar (string/number) or { value, unit } for one that needs unit
9
+ # conversion (e.g. total_capacity in Wh -> J). No verified nominal capacity
10
+ # is bundled for most models — add a total_capacity constant yourself if you
11
+ # know it, to enable the derived remaining-capacity calculation.
12
+ #
13
+
14
+ fields:
15
+ battery_soc:
16
+ register: 102
17
+ unit: "%"
18
+ dc_output_power:
19
+ register: 140
20
+ unit: W
21
+ ac_output_power:
22
+ register: 142
23
+ unit: W
24
+ dc_input_power:
25
+ register: 144
26
+ unit: W
27
+ ac_input_power:
28
+ register: 146
29
+ unit: W
30
+ ac_input_voltage:
31
+ register: 1314
32
+ scale: 0.1
33
+ unit: V
34
+ constants:
35
+ battery_chemistry: LiFePO4
36
+ total_capacity:
37
+ value: 1024
38
+ unit: Wh
39
+ battery_manufacturer_name: Bluetti
40
+ battery_manufacturer_model: Elite 100 V2
41
+ dc_output_voltage:
42
+ value: 12
43
+ unit: V
@@ -0,0 +1,38 @@
1
+ # Bluetti EL30V2 register map
2
+ # Source: https://github.com/Patrick762/bluetti-bt-lib (bluetti_bt_lib/devices/el30v2.py)
3
+ #
4
+ # field_name is a standard Bluetti register name — the code maps these to
5
+ # SignalK paths on its own (see lib/path-mapper.js). `path` on a field is an
6
+ # override, only needed if you're exposing a register the code doesn't
7
+ # recognise. `constants` are fixed, non-register facts about this model —
8
+ # a bare scalar (string/number) or { value, unit } for one that needs unit
9
+ # conversion (e.g. total_capacity in Wh -> J). No verified nominal capacity
10
+ # is bundled for most models — add a total_capacity constant yourself if you
11
+ # know it, to enable the derived remaining-capacity calculation.
12
+ #
13
+
14
+ fields:
15
+ dc_output_power:
16
+ register: 140
17
+ unit: W
18
+ ac_output_power:
19
+ register: 142
20
+ unit: W
21
+ dc_input_power:
22
+ register: 144
23
+ unit: W
24
+ ac_input_power:
25
+ register: 146
26
+ unit: W
27
+ time_remaining_minutes:
28
+ register: 104
29
+ scale: 1.002
30
+ unit: min
31
+ ac_input_voltage:
32
+ register: 1314
33
+ scale: 0.1
34
+ unit: V
35
+ constants:
36
+ battery_chemistry: LiFePO4
37
+ battery_manufacturer_name: Bluetti
38
+ battery_manufacturer_model: Elite 30 V2
@@ -0,0 +1,75 @@
1
+ # Bluetti EP2000 register map
2
+ # Source: https://github.com/Patrick762/bluetti-bt-lib (bluetti_bt_lib/devices/ep2000.py)
3
+ #
4
+ # field_name is a standard Bluetti register name — the code maps these to
5
+ # SignalK paths on its own (see lib/path-mapper.js). `path` on a field is an
6
+ # override, only needed if you're exposing a register the code doesn't
7
+ # recognise. `constants` are fixed, non-register facts about this model —
8
+ # a bare scalar (string/number) or { value, unit } for one that needs unit
9
+ # conversion (e.g. total_capacity in Wh -> J). No verified nominal capacity
10
+ # is bundled for most models — add a total_capacity constant yourself if you
11
+ # know it, to enable the derived remaining-capacity calculation.
12
+ #
13
+
14
+ fields:
15
+ battery_soc:
16
+ register: 102
17
+ unit: "%"
18
+ dc_input_power:
19
+ register: 1212
20
+ unit: W
21
+ dc_input_voltage:
22
+ register: 1213
23
+ scale: 0.1
24
+ unit: V
25
+ dc_input_current:
26
+ register: 1214
27
+ scale: 0.1
28
+ unit: A
29
+ pv_s2_power:
30
+ register: 1220
31
+ unit: W
32
+ pv_s2_voltage:
33
+ register: 1221
34
+ scale: 0.1
35
+ unit: V
36
+ pv_s2_current:
37
+ register: 1222
38
+ scale: 0.1
39
+ unit: A
40
+ grid_frequency:
41
+ register: 1300
42
+ scale: 0.1
43
+ unit: Hz
44
+ grid_p1_voltage:
45
+ register: 1314
46
+ scale: 0.1
47
+ unit: V
48
+ grid_p2_voltage:
49
+ register: 1320
50
+ scale: 0.1
51
+ unit: V
52
+ grid_p3_voltage:
53
+ register: 1326
54
+ scale: 0.1
55
+ unit: V
56
+ ac_output_frequency:
57
+ register: 1500
58
+ scale: 0.1
59
+ unit: Hz
60
+ ac_p1_voltage:
61
+ register: 1511
62
+ scale: 0.1
63
+ unit: V
64
+ ac_p2_voltage:
65
+ register: 1518
66
+ scale: 0.1
67
+ unit: V
68
+ ac_p3_voltage:
69
+ register: 1525
70
+ scale: 0.1
71
+ unit: V
72
+ constants:
73
+ battery_chemistry: LiFePO4
74
+ battery_manufacturer_name: Bluetti
75
+ battery_manufacturer_model: EP2000
@@ -0,0 +1,57 @@
1
+ # Bluetti EP500 register map
2
+ # Source: https://github.com/Patrick762/bluetti-bt-lib (bluetti_bt_lib/devices/ep500.py)
3
+ #
4
+ # field_name is a standard Bluetti register name — the code maps these to
5
+ # SignalK paths on its own (see lib/path-mapper.js). `path` on a field is an
6
+ # override, only needed if you're exposing a register the code doesn't
7
+ # recognise. `constants` are fixed, non-register facts about this model —
8
+ # a bare scalar (string/number) or { value, unit } for one that needs unit
9
+ # conversion (e.g. total_capacity in Wh -> J). No verified nominal capacity
10
+ # is bundled for most models — add a total_capacity constant yourself if you
11
+ # know it, to enable the derived remaining-capacity calculation.
12
+ #
13
+
14
+ fields:
15
+ battery_soc:
16
+ register: 43
17
+ unit: "%"
18
+ dc_input_power:
19
+ register: 36
20
+ unit: W
21
+ ac_input_power:
22
+ register: 37
23
+ unit: W
24
+ ac_output_power:
25
+ register: 38
26
+ unit: W
27
+ dc_output_power:
28
+ register: 39
29
+ unit: W
30
+ ac_output_voltage:
31
+ register: 71
32
+ scale: 0.1
33
+ unit: V
34
+ ac_output_frequency:
35
+ register: 74
36
+ scale: 0.01
37
+ unit: Hz
38
+ ac_input_voltage:
39
+ register: 77
40
+ scale: 0.1
41
+ unit: V
42
+ ac_input_frequency:
43
+ register: 80
44
+ scale: 0.01
45
+ unit: Hz
46
+ dc_input_voltage:
47
+ register: 86
48
+ scale: 0.1
49
+ unit: V
50
+ dc_input_current:
51
+ register: 88
52
+ scale: 0.1
53
+ unit: A
54
+ constants:
55
+ battery_chemistry: LiFePO4
56
+ battery_manufacturer_name: Bluetti
57
+ battery_manufacturer_model: EP500