@rhizomatics/signalk-bluetti-plugin 1.4.1 → 1.5.1

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 +13 -0
  2. package/README.md +40 -4
  3. package/cli.js +71 -11
  4. package/devices/ac180.yaml +58 -0
  5. package/devices/ac180p.yaml +34 -0
  6. package/devices/ac180t.yaml +58 -0
  7. package/devices/ac200l.yaml +48 -0
  8. package/devices/ac200m.yaml +48 -0
  9. package/devices/ac200p.yaml +89 -0
  10. package/devices/ac200pl.yaml +48 -0
  11. package/devices/ac2a.yaml +34 -0
  12. package/devices/ac2p.yaml +34 -0
  13. package/devices/ac300.yaml +57 -0
  14. package/devices/ac500.yaml +56 -0
  15. package/devices/ac50b.yaml +31 -0
  16. package/devices/ac60.yaml +33 -0
  17. package/devices/ac60p.yaml +33 -0
  18. package/devices/ac70.yaml +62 -0
  19. package/devices/ac70p.yaml +58 -0
  20. package/devices/ap300.yaml +34 -0
  21. package/devices/eb3a.yaml +41 -0
  22. package/devices/el100v2.yaml +43 -0
  23. package/devices/el30v2.yaml +38 -0
  24. package/devices/ep2000.yaml +75 -0
  25. package/devices/ep500.yaml +57 -0
  26. package/devices/ep500p.yaml +57 -0
  27. package/devices/ep600.yaml +151 -0
  28. package/devices/ep760.yaml +72 -0
  29. package/devices/ep800.yaml +21 -0
  30. package/devices/handsfree1.yaml +62 -0
  31. package/devices/pr100v2.yaml +34 -0
  32. package/devices/pr30v2.yaml +34 -0
  33. package/docs/assets/icon.svg +36 -0
  34. package/docs/assets/screenshots/bluetti_data.png +0 -0
  35. package/docs/examples/model_definition.yaml +112 -0
  36. package/index.js +75 -32
  37. package/lib/path-mapper.js +51 -9
  38. package/lib/register-loader.js +120 -0
  39. package/lib/scanner.js +1 -1
  40. package/package.json +13 -6
  41. package/lib/csv-loader.js +0 -160
  42. package/registers/ac200p.csv +0 -47
  43. package/registers/el100v2.csv +0 -27
@@ -1,47 +0,0 @@
1
- # Bluetti register map example — based on AC200P / AC200MAX community reverse-engineering.
2
- # Replace with your device's actual CSV. Columns the plugin recognises:
3
- #
4
- # field_name — a standard Bluetti register name (see lib/path-mapper.js
5
- # for the ones the code already maps to a SignalK path),
6
- # or any identifier you like if you're supplying signalk_path
7
- # register_address — Modbus holding register number (decimal); leave blank
8
- # for a fixed constant_value row instead (e.g. model specs)
9
- # register_count — number of 16-bit registers this field spans (1 for uint16/int16, 2 for int32/float32)
10
- # data_type — uint16 | int16 | uint32 | int32 | float32 | bool
11
- # scale — multiply raw value by this to get physical value
12
- # offset — add after scale (usually 0)
13
- # unit — V | A | W | Wh | % | °C | Hz | min — drives SignalK unit conversion
14
- # signalk_path — override; only needed for a register the code doesn't
15
- # recognise by field_name. Use {name} where the device name goes
16
- # constant_value — fixed value for a non-register row (register_address blank)
17
- #
18
- field_name,register_address,register_count,data_type,scale,offset,unit,signalk_path,constant_value
19
- # ── Battery ────────────────────────────────────────────────────────────────
20
- battery_percent,100,1,uint16,1,0,%,,
21
- battery_voltage,101,1,uint16,0.1,0,V,,
22
- battery_current,102,1,int16,0.1,0,A,,
23
- battery_power,103,1,int16,1,0,W,,
24
- battery_temperature,104,1,uint16,0.1,0,°C,,
25
- # ── DC / Solar input ────────────────────────────────────────────────────────
26
- dc_input_power,107,1,uint16,1,0,W,,
27
- dc_input_voltage,108,1,uint16,0.1,0,V,,
28
- dc_input_current,109,1,uint16,0.1,0,A,,
29
- # ── AC output (inverter) ────────────────────────────────────────────────────
30
- ac_output_power,110,1,uint16,1,0,W,,
31
- ac_output_voltage,111,1,uint16,0.1,0,V,,
32
- ac_output_current,112,1,uint16,0.1,0,A,,
33
- ac_output_frequency,113,1,uint16,0.1,0,Hz,,
34
- # ── AC input (charger / mains) ──────────────────────────────────────────────
35
- ac_input_power,114,1,uint16,1,0,W,,
36
- ac_input_voltage,115,1,uint16,0.1,0,V,,
37
- ac_input_current,116,1,uint16,0.1,0,A,,
38
- ac_input_frequency,117,1,uint16,0.1,0,Hz,,
39
- # ── Internal temperature ────────────────────────────────────────────────────
40
- internal_temperature,118,1,uint16,0.1,0,°C,,
41
- # ── Estimated time remaining ────────────────────────────────────────────────
42
- time_remaining_minutes,119,1,uint16,1,0,min,,
43
- # ── Fixed model facts ────────────────────────────────────────────────────────
44
- battery_chemistry,,,,,,,,LiFePO4
45
- total_capacity,,,,,,Wh,,2000
46
- battery_manufacturer_name,,,,,,,,Bluetti
47
- battery_manufacturer_model,,,,,,,,AC200P
@@ -1,27 +0,0 @@
1
- # Bluetti Elite 100 V2 (EL100V2) register map
2
- # Source: https://github.com/Patrick762/bluetti-bt-lib
3
- # BaseDeviceV2 fields: BATTERY_SOC (102)
4
- # EL100V2-specific fields: 140, 142, 144, 146, 1314
5
- # Note: DEVICE_TYPE (110) and DEVICE_SN (116) are string/serial fields — omitted.
6
- #
7
- # field_name is a standard Bluetti register name — the code maps these to
8
- # SignalK paths on its own (see lib/path-mapper.js). signalk_path is an
9
- # override, only needed if you're exposing a register the code doesn't
10
- # recognise. constant_value is for fixed, non-register facts about this model
11
- # (register_address left blank for those rows).
12
- #
13
- field_name,register_address,register_count,data_type,scale,offset,unit,signalk_path,constant_value
14
- battery_soc,102,1,uint16,1,0,%,,
15
- dc_output_power,140,1,uint16,1,0,W,,
16
- ac_output_power,142,1,uint16,1,0,W,,
17
- dc_input_power,144,1,uint16,1,0,W,,
18
- ac_input_power,146,1,uint16,1,0,W,,
19
- ac_input_voltage,1314,1,uint16,0.1,0,V,,
20
- # ── Fixed model facts ────────────────────────────────────────────────────────
21
- battery_chemistry,,,,,,,,LiFePO4
22
- total_capacity,,,,,,Wh,,1024
23
- battery_manufacturer_name,,,,,,,,Bluetti
24
- battery_manufacturer_model,,,,,,,,Elite 100 V2
25
- # dc_output_power (140) only reports power, not current — this fixed nominal
26
- # voltage (12V accessory port) is what lib/path-mapper.js derives current from.
27
- dc_output_voltage,,,,,,V,,12