node-red-contrib-byd-lvs-monitor 1.1.0

Node-RED nodes for monitoring BYD Battery-Box LVS cell-level data via Modbus

npm install node-red-contrib-byd-lvs-monitor

node-red-contrib-byd-lvs-monitor

Node-RED nodes for monitoring BYD Battery-Box LVS Premium cell-level data via BMU Ethernet port.

Reads per-module cell voltages, temperatures, SOC/SOH, balancing status, energy counters, errors and warnings directly from the BYD BMU (Battery Management Unit).

Features

  • Cell-level monitoring for all LVS modules (up to 256)
  • Auto-detection of module count, towers must be specified manually for correct splitting
  • 16 cell voltages and up to 8 temperature sensors per module
  • Balancing status per cell
  • Lifetime charge/discharge energy counters
  • InfluxDB formatter for v2 (batch) and v3 (line protocol)
  • MQTT formatter with Generic and Home Assistant output modes
  • Battery notifier with SOC warranty timer and cell drift alerts
  • Dashboard widget with live data, 24-hour history charts, and cell drift analysis

Installation

Install via the Node-RED Palette Manager: search for node-red-contrib-byd-lvs-monitor.

Or install manually:

cd ~/.node-red
npm install node-red-contrib-byd-lvs-monitor

Nodes

BYD LVS config

Shared configuration node for BMU connection settings.

Property Default Description
Host 192.168.16.254 BMU IP address if there is no DHCP server in your local net
Port 8080 BMU TCP port
Modules 0 (auto-detect) Number of BMS modules, 0 = auto-detect from registers
Towers 1 Number of battery towers (for multi-tower setups)
Convert mV to V off Output cell voltages in V instead of mV

BYD LVS read

Reads all BMS modules and outputs complete battery data as JSON.

Input: Any message triggers a read cycle. Connect to an Inject node set to repeat.

Output (msg.payload):

{
  "timestamp": "2026-02-19T14:30:05.123Z",
  "host": "192.168.1.155",
  "summary": {
    "soc": 62, "soh": 98, "pack_voltage": 54.0, "pack_voltage_2": 54.1,
    "current": -25.3,
    "max_cell_v": 3.64, "min_cell_v": 3.42,
    "max_temp": 27, "min_temp": 22,
    "towers": 2, "bmu_serial": "P050A...",
    "sys_charge_energy_kwh": 9876.543, "sys_discharge_energy_kwh": 9654.321,
    "sys_estimated_cycles": 142.3, "sys_efficiency": 97.8, "sys_warranty_used_pct": 5.2
  },
  "modules": {
    "BMS1": {
      "bms_id": 1, "serial": "E050A...",
      "soc": 93.2, "soh": 98,
      "bat_voltage": 53.7, "output_voltage": 53.8,
      "current": -6.3, "power": -338.9,
      "max_cell_v": 3382, "min_cell_v": 3370,
      "max_temp": 26, "min_temp": 23,
      "cell_voltages": [3382, 3380, ...],
      "cell_temps": [25, 26, 24, 25, 23, 24, 26, 25],
      "balancing": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
      "balancing_active": 0,
      "errors": 0, "warnings1": 0, "warnings2": 0,
      "charge_energy_kwh": 1234.567, "discharge_energy_kwh": 1198.432,
      "estimated_cycles": 332.9, "round_trip_efficiency": 97.1,
      "warranty_used_pct": 10.1, "warranty_remaining_pct": 89.9
    }
  }
}

Status indicators:

  • Grey ring — Idle
  • Blue dot — Reading in progress (shows current BMS module)
  • Green dot — Last read successful (SOC% and time)
  • Yellow ring — Skipped (previous read still in progress)
  • Red dot — Error

Inject interval: Must be longer than the scan duration. Each module takes approximately 2–3 seconds. For 8 modules use 30s interval, for 32 modules use 120s.

BYD LVS influxdb

Formats battery data for InfluxDB storage. Supports both InfluxDB v2 and v3.

Property Default Description
InfluxDB version v2 v2 = batch array for node-red-contrib-influxdb, v3 = line protocol for node-red-contrib-influxdb3
Measurement prefix byd Prefix for measurement names

Measurements:

Measurement Points per scan Tags Fields
{prefix}_summary 1 host soc, soh, pack_voltage, current, max_cell_v, min_cell_v, max_temp, min_temp, towers, pack_voltage_2, sys_charge_energy_kwh, sys_discharge_energy_kwh, sys_estimated_cycles, sys_efficiency, sys_warranty_used_pct
{prefix}_module 1 per module host, module soc, soh, voltage, output_voltage, current, power, min_temp, max_temp, errors, warnings1, warnings2, balancing_active, charge_energy_kwh, discharge_energy_kwh, estimated_cycles, round_trip_efficiency, warranty_used_pct
{prefix}_cell 16 per module host, module, cell voltage, balancing
{prefix}_temp up to 8 per module host, module, sensor temperature

BYD LVS mqtt

Formats battery data for MQTT publishing. Connect output to a standard MQTT out node.

Property Default Description
Output mode Generic Generic (per-cell JSON objects) or Home Assistant (individual scalar topics)
Parent topic byd Root topic prefix for all messages

Generic mode — multiple messages per scan with JSON objects:

byd/summary            → {"soc":99, "soh":98, "pack_voltage":56.7, "current":-25.3, ...}
byd/module/BMS1        → {"soc":93.2, "soh":98, "voltage":53.7, "current":-6.3, "power":-338.9,
                           "min_temp":23, "max_temp":26, "errors":0, "warnings1":0, "warnings2":0,
                           "balancing_active":0, "charge_energy_kwh":1234.567, ...}
byd/module/BMS1/cell/1 → {"voltage":3567, "balancing":0, "temperature":31}
byd/module/BMS1/cell/9 → {"voltage":3571, "balancing":0}

Cells 1–8 include temperature (matching BYD BE Connect layout). Cells 9–16 have only voltage and balancing.

Home Assistant mode — individual scalar topics for easy HA sensor creation:

byd/summary/soc                        → 99
byd/summary/soh                        → 98
byd/summary/pack_voltage               → 56.7
byd/summary/current                    → -25.3
byd/summary/max_cell_v                 → 3.64
byd/summary/min_cell_v                 → 3.42
byd/summary/max_temp                   → 27
byd/summary/min_temp                   → 22
byd/summary/towers                     → 2
byd/summary/sys_charge_energy_kwh      → 9876.543
byd/summary/sys_discharge_energy_kwh   → 9654.321
byd/summary/sys_estimated_cycles       → 142.3
byd/summary/sys_efficiency             → 97.8
byd/summary/sys_warranty_used_pct      → 5.2
byd/module/BMS1/soc                    → 93.2
byd/module/BMS1/soh                    → 98
byd/module/BMS1/voltage                → 53.7
byd/module/BMS1/current                → -6.3
byd/module/BMS1/power                  → -338.9
byd/module/BMS1/min_temp               → 23
byd/module/BMS1/max_temp               → 26
byd/module/BMS1/errors                 → 0
byd/module/BMS1/charge_energy_kwh      → 1234.567
byd/module/BMS1/discharge_energy_kwh   → 1198.432
byd/module/BMS1/estimated_cycles       → 332.9
byd/module/BMS1/round_trip_efficiency  → 97.1
byd/module/BMS1/warranty_used_pct      → 10.1
byd/module/BMS1/cell/1                 → {"voltage":3567, "balancing":0, "temperature":31}
byd/module/BMS1/cell/9                 → {"voltage":3571, "balancing":0}

BYD LVS notifier

Monitors battery SOC and cell voltage drift, sends notifications when configurable thresholds are exceeded.

Property Default Description
SOC % 10 SOC percentage at or below which the timer starts counting
Days 14 Consecutive days below SOC threshold before notification is sent
Drift mV 100 Cell voltage deviation from module median that triggers a warning (checked at SOC < 50%)

Input: Single input with content-based detection. Messages with summary and modules properties (from BYD LVS read) update internal state. Any other message acts as a trigger and runs SOC/drift checks.

Output:

Field Description
msg.payload Human-readable notification text
msg.type "info" for SOC timer, "warning" for cell drift
msg.title "BYD LVS Battery"

Wire both the BYD LVS read node (continuous data) and an inject node (e.g. daily trigger) to the single input. Connect the output to a notification node (e.g. Victron notify on Cerbo GX) or a debug node.

[byd-lvs-read] ──┬── [byd-lvs-notifier] ─── [notification]
[inject 1x/day] ─┘

Usage Variants

Choose the setup that fits your needs. All example flows are importable directly in Node-RED: Menu → Import → Examples.

Setup Description Additional packages
InfluxDB + Grafana Read node → InfluxDB formatter. Use Grafana for visualization node-red-contrib-influxdb + external InfluxDB
MQTT Read node → MQTT formatter. Generic or Home Assistant mode External MQTT broker
Dashboard Read → Dashboard. Live data + 24h in-memory history charts node-red-dashboard-2-byd-lvs-monitor
Notifier Read + daily trigger → Notifier. SOC warranty timer and cell drift alerts

Dashboard installation

Search for node-red-dashboard-2-byd-lvs-monitor in the Palette Manager, or install manually:

cd ~/.node-red
npm install node-red-dashboard-2-byd-lvs-monitor

Connection

The BYD BMU uses Modbus RTU framing over TCP (not standard Modbus TCP). Default connection is port 8080. Only one client can be connected at a time — the node disconnects after each read cycle.

Make sure no other application (e.g. BYD BE Connect) is connected to the BMU while this node is active.

Compatibility

  • BYD Battery-Box LVS (Premium)
  • Node-RED >= 2.0.0
  • Node.js >= 14.0.0

Disclaimer

This software is NOT an official BYD diagnostic tool. It is provided "AS IS" without warranty of any kind.

The Ethernet port and its Modbus protocol on the BYD BMU are not documented in the product manual for diagnostic use by end-users or installers. Their availability and open accessibility are purely coincidental and may change with firmware updates without notice. The consequences of frequent or continuous Modbus polling on the BMU are unknown.

By using this software, you acknowledge and agree that:

  • The author assumes NO liability for any damages, loss of warranty, or other consequences whatsoever
  • You waive all claims for compensation arising from its use
  • You accept full responsibility for any decisions made based on information provided by this software
  • Incorrect readings may occur due to register misinterpretation, communication errors, or firmware differences

Data interpretation by this tool (including but not limited to warranty estimates, cycle counts, efficiency calculations, and cell drift analysis) reflects the author's understanding and may not be accurate. Always consult official BYD documentation or an authorized service partner for definitive assessments.

By your first use of this software, you irrevocably accept all of the above terms.

BYD and Battery-Box are registered trademarks of BYD Company Limited.

License

MIT

Node Info

Version: 1.1.0
Updated 23 hours ago
License: MIT
Rating: not yet rated

Categories

Actions

Rate:

Downloads

0 in the last week

Nodes

  • byd-lvs-config
  • byd-lvs-read
  • byd-lvs-influxdb
  • byd-lvs-mqtt
  • byd-lvs-notifier

Keywords

  • node-red
  • byd
  • battery
  • lvs
  • modbus
  • energy
  • solar

Maintainers