summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--candump.sh10
-rw-r--r--ee-discovery.json269
-rw-r--r--endurenergy.h707
-rw-r--r--mqtt-esp5100.c1789
-rw-r--r--to-snprintf.pl28
5 files changed, 2803 insertions, 0 deletions
diff --git a/candump.sh b/candump.sh
new file mode 100644
index 0000000..1b3201d
--- /dev/null
+++ b/candump.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+# https://www.kernel.org/doc/Documentation/networking/can.txt
+# https://github.com/linux-can/can-utils
+
+ip link set can0 up type can bitrate 250000
+ifconfig can0 up
+#ifconfig can0 txqueuelen 65536
+
+#ip link set can1 up type can bitrate 250000
+#ifconfig can1 txqueuelen 65536
diff --git a/ee-discovery.json b/ee-discovery.json
new file mode 100644
index 0000000..3e32799
--- /dev/null
+++ b/ee-discovery.json
@@ -0,0 +1,269 @@
+# for each battery:
+# topic homeassistant/device/%SERIAL/config
+
+# Configuration variables:
+# NAMEOFPROGRAM
+# MQTTTOPIC solar/battery/esp-5100/%SERIAL%/state
+# SWVERSION
+# SERIAL
+# ESPVERSION
+
+
+{
+ "device": {
+ "identifiers": "%SERIAL",
+ "name": "ESP-5100",
+ "manufacturer": "EndurEnergy",
+ "hw_version": "%ESPHWVERSION%",
+ "serial_number": "%SERIAL%",
+ "sw_version": "%ESPVERSION%",
+ },
+ "origin": {
+ "name": "%NAMEOFPROGRAM%",
+ "sw_version": "%SWVERSION%",
+ "support_url": "https://src.rockgeeks.net"
+ },
+ "components": {
+ "ESP-5100-%SERIAL%_CANID": {
+ "platform": "sensor",
+ "name": "canid",
+ "unique_id": "%SERIAL%canid",
+ "value_template":"{{ value_json.canid }}",
+ "state_topic": "solar/battery/esp-5100/%SERIAL%/state"
+ },
+ "ESP-5100_%SERIAL%_SOH": {
+ "platform": "sensor",
+ "device_class": "battery",
+ "name": "SOH",
+ "unique_id": "%SERIAL%soh",
+ "value_template":"{{ value_json.soh }}",
+ "state_topic": "solar/battery/esp-5100/%SERIAL%/state"
+ },
+ "ESP-5100_%SERIAL%_SOC": {
+ "platform": "sensor",
+ "device_class": "battery",
+ "name": "SOC",
+ "unique_id": "%SERIAL%soc",
+ "value_template":"{{ value_json.soc }}",
+ "state_topic": "solar/battery/esp-5100/%SERIAL%/state"
+ },
+ "ESP-5100_%SERIAL%_I": {
+ "platform": "sensor",
+ "device_class": "current",
+ "unit_of_measurement": "A",
+ "name": "Current",
+ "unique_id": "%SERIAL%i",
+ "value_template":"{{ value_json.i }}",
+ "state_topic": "solar/battery/esp-5100/%SERIAL%/state"
+ },
+ "ESP-5100_%SERIAL%_V": {
+ "platform": "sensor",
+ "device_class": "voltage",
+ "unit_of_measurement": "V",
+ "name": "Pack Voltage",
+ "unique_id": "%SERIAL%v",
+ "value_template":"{{ value_json.v }}",
+ "state_topic": "solar/battery/esp-5100/%SERIAL%/state"
+ },
+ "ESP-5100_%SERIAL%_T1": {
+ "platform": "sensor",
+ "device_class": "temperature",
+ "unit_of_measurement": "°C",
+ "name": "Temperature 1",
+ "unique_id": "%SERIAL%t1",
+ "value_template":"{{ value_json.t1 }}",
+ "state_topic": "solar/battery/esp-5100/%SERIAL%/state"
+ },
+ "ESP-5100_%SERIAL%_T2": {
+ "platform": "sensor",
+ "device_class": "temperature",
+ "unit_of_measurement": "°C",
+ "name": "Temperature 2",
+ "unique_id": "%SERIAL%t2",
+ "value_template":"{{ value_json.t2 }}",
+ "state_topic": "solar/battery/esp-5100/%SERIAL%/state"
+ },
+ "ESP-5100_%SERIAL%_T3": {
+ "platform": "sensor",
+ "device_class": "temperature",
+ "unit_of_measurement": "°C",
+ "name": "Temperature 3",
+ "unique_id": "%SERIAL%t3",
+ "value_template":"{{ value_json.t3 }}",
+ "state_topic": "solar/battery/esp-5100/%SERIAL%/state"
+ },
+ "ESP-5100_%SERIAL%_V1": {
+ "platform": "sensor",
+ "device_class": "voltage",
+ "unit_of_measurement": "V",
+ "name": "Cell 1 Voltage",
+ "unique_id": "%SERIAL%v01",
+ "value_template":"{{ value_json.v01 }}",
+ "state_topic": "solar/battery/esp-5100/%SERIAL%/state"
+ },
+ "ESP-5100_%SERIAL%_V2": {
+ "platform": "sensor",
+ "device_class": "voltage",
+ "unit_of_measurement": "V",
+ "name": "Cell 2 Voltage",
+ "unique_id": "%SERIAL%v02",
+ "value_template":"{{ value_json.v02 }}",
+ "state_topic": "solar/battery/esp-5100/%SERIAL%/state"
+ },
+ "ESP-5100_%SERIAL%_V3": {
+ "platform": "sensor",
+ "device_class": "voltage",
+ "unit_of_measurement": "V",
+ "name": "Cell 3 Voltage",
+ "unique_id": "%SERIAL%v03",
+ "value_template":"{{ value_json.v03 }}",
+ "state_topic": "solar/battery/esp-5100/%SERIAL%/state"
+ },
+ "ESP-5100_%SERIAL%_V4": {
+ "platform": "sensor",
+ "device_class": "voltage",
+ "unit_of_measurement": "V",
+ "name": "Cell 4 Voltage",
+ "unique_id": "%SERIAL%v04",
+ "value_template":"{{ value_json.v04 }}",
+ "state_topic": "solar/battery/esp-5100/%SERIAL%/state"
+ },
+ "ESP-5100_%SERIAL%_V5": {
+ "platform": "sensor",
+ "device_class": "voltage",
+ "unit_of_measurement": "V",
+ "name": "Cell 5 Voltage",
+ "unique_id": "%SERIAL%v05",
+ "value_template":"{{ value_json.v05 }}",
+ "state_topic": "solar/battery/esp-5100/%SERIAL%/state"
+ },
+ "ESP-5100_%SERIAL%_V6": {
+ "platform": "sensor",
+ "device_class": "voltage",
+ "unit_of_measurement": "V",
+ "name": "Cell 6 Voltage",
+ "unique_id": "%SERIAL%v06",
+ "value_template":"{{ value_json.v06 }}",
+ "state_topic": "solar/battery/esp-5100/%SERIAL%/state"
+ },
+ "ESP-5100_%SERIAL%_V7": {
+ "platform": "sensor",
+ "device_class": "voltage",
+ "unit_of_measurement": "V",
+ "name": "Cell 7 Voltage",
+ "unique_id": "%SERIAL%v07",
+ "value_template":"{{ value_json.v07 }}",
+ "state_topic": "solar/battery/esp-5100/%SERIAL%/state"
+ },
+ "ESP-5100_%SERIAL%_V8": {
+ "platform": "sensor",
+ "device_class": "voltage",
+ "unit_of_measurement": "V",
+ "name": "Cell 8 Voltage",
+ "unique_id": "%SERIAL%v08",
+ "value_template":"{{ value_json.v08 }}",
+ "state_topic": "solar/battery/esp-5100/%SERIAL%/state"
+ },
+ "ESP-5100_%SERIAL%_V9": {
+ "platform": "sensor",
+ "device_class": "voltage",
+ "unit_of_measurement": "V",
+ "name": "Cell 9 Voltage",
+ "unique_id": "%SERIAL%v09",
+ "value_template":"{{ value_json.v09 }}",
+ "state_topic": "solar/battery/esp-5100/%SERIAL%/state"
+ },
+ "ESP-5100_%SERIAL%_V10": {
+ "platform": "sensor",
+ "device_class": "voltage",
+ "unit_of_measurement": "V",
+ "name": "Cell 10 Voltage",
+ "unique_id": "%SERIAL%v10",
+ "value_template":"{{ value_json.v10 }}",
+ "state_topic": "solar/battery/esp-5100/%SERIAL%/state"
+ },
+ "ESP-5100_%SERIAL%_V11": {
+ "platform": "sensor",
+ "device_class": "voltage",
+ "unit_of_measurement": "V",
+ "name": "Cell 11 Voltage",
+ "unique_id": "%SERIAL%v11",
+ "value_template":"{{ value_json.v11 }}",
+ "state_topic": "solar/battery/esp-5100/%SERIAL%/state"
+ },
+ "ESP-5100_%SERIAL%_V12": {
+ "platform": "sensor",
+ "device_class": "voltage",
+ "unit_of_measurement": "V",
+ "name": "Cell 12 Voltage",
+ "unique_id": "%SERIAL%v12",
+ "value_template":"{{ value_json.v12 }}",
+ "state_topic": "solar/battery/esp-5100/%SERIAL%/state"
+ },
+ "ESP-5100_%SERIAL%_V13": {
+ "platform": "sensor",
+ "device_class": "voltage",
+ "unit_of_measurement": "V",
+ "name": "Cell 13 Voltage",
+ "unique_id": "%SERIAL%v13",
+ "value_template":"{{ value_json.v13 }}",
+ "state_topic": "solar/battery/esp-5100/%SERIAL%/state"
+ },
+ "ESP-5100_%SERIAL%_V14": {
+ "platform": "sensor",
+ "device_class": "voltage",
+ "unit_of_measurement": "V",
+ "name": "Cell 14 Voltage",
+ "unique_id": "%SERIAL%v14",
+ "value_template":"{{ value_json.v14 }}",
+ "state_topic": "solar/battery/esp-5100/%SERIAL%/state"
+ },
+ "ESP-5100_%SERIAL%_V15": {
+ "platform": "sensor",
+ "device_class": "voltage",
+ "unit_of_measurement": "V",
+ "name": "Cell 15 Voltage",
+ "unique_id": "%SERIAL%v15",
+ "value_template":"{{ value_json.v15 }}",
+ "state_topic": "solar/battery/esp-5100/%SERIAL%/state"
+ },
+ "ESP-5100_%SERIAL%_V16": {
+ "platform": "sensor",
+ "device_class": "voltage",
+ "unit_of_measurement": "V",
+ "name": "Cell 16 Voltage",
+ "unique_id": "%SERIAL%v16",
+ "value_template":"{{ value_json.v16 }}",
+ "state_topic": "solar/battery/esp-5100/%SERIAL%/state"
+ }
+
+
+ }
+}
+# homeassistant/<component>/[node_id/]<object_id>/config
+#{
+# "canid": %d,
+# "soh": %4.2f,
+# "soc": %4.2f,
+# "i": %5.3f,
+# "v": %5.3f,
+# "t1": %d,
+# "t2": %d,
+# "t3": %d,
+# "v1": %5.3f,
+# "v2": %5.3f,
+# "v3": %5.3f,
+# "v4": %5.3f,
+# "v5": %5.3f,
+# "v6": %5.3f,
+# "v7": %5.3f,
+# "v8": %5.3f,
+# "v9": %5.3f,
+# "v10": %5.3f,
+# "v11": %5.3f,
+# "v12": %5.3f,
+# "v13": %5.3f,
+# "v14": %5.3f,
+# "v15": %5.3f,
+# "v16": %5.3f
+#}
diff --git a/endurenergy.h b/endurenergy.h
new file mode 100644
index 0000000..dc443e5
--- /dev/null
+++ b/endurenergy.h
@@ -0,0 +1,707 @@
+/*
+ * endurenergy.h
+ *
+ * Reverse engineered internal CAN bus data formats for the EndurEnergy ESP-5100. Still a work in progress.
+ */
+
+#ifndef _ENDURENERGY_H
+#define _ENDURENERGY_H
+
+#define BATTERY_ID_MIN 1
+#define BATTERY_ID_MAX 8
+
+#define MSG(canid,mask,batid,batmask)
+
+#define MSG_SENDER_MASK 0x0000000f
+
+/*
+ 18A6A0F<id>
+ 18A8A2F<id>
+ 1010 0110
+ 1010 1000
+
+ 1110 0001
+ 1110 0010
+
+
+ Notes:
+ PDU formats for all messages are 0xe1 and 0xe2 (multi battery)
+ This is less than 240, so the message is addressable (PDU1) and the PDU specific field contains the destination address
+ (though it's unclear if this follows that spec)
+
+
+*/
+
+
+
+#define MSGID_UNK1 0x18a6a000
+#define MSGID_UNK1_MASK 0x1fffff00
+
+struct diag1 {
+ uint8_t field;
+ union {
+
+
+ /*
+ * Missing items (so far):
+ * Server addr
+ * port
+ * local IP
+ * SSID
+ * Password
+ * Encry
+ * HDCP
+
+ */
+ struct {
+ uint8_t pad; /* always 0 */
+ uint8_t field;
+ union {
+ struct { uint8_t hw_ver; uint8_t reserved[2]; } f00; /* guess */
+ struct { uint32_t device_id; } f01; /* displayed in decimal */
+ struct { char product_id[4]; } f02; /* not NUL terminated */
+ struct { uint8_t unknown[4]; } f03; /* 0x01 0x01 0x00 0x00 */
+ struct { uint8_t unknown[4]; } f04; /*1: 03 10 01 6E, 2: 03 10 7B 56, 3: 03 10 A6 4A, 4: 03 10 BD 90, 5: 03 10 C3 EE, 6: 03 10 7D 50, 7: 03 10 59 D0, 8: 03 10 2E C2 */
+ struct { uint16_t sw_ver; uint8_t reserved[2]; } f05;
+ struct { uint8_t reserved[4]; } f06;
+
+ };
+ } f03;
+
+/* (2025-01-21 08:45:45.935024) can0 18A6A0F8 [8] 2A 00 19 D4 1A 00 00 31 -> port 0x1ad4 -> 6868 */
+
+ struct {
+ uint8_t pad; /* always 0 */
+ uint8_t field;
+ union {
+ struct { char bmsid[4]; } f00; /* 0..3 */
+ struct { char bmsid[4]; } f01; /* 4..7 */
+ struct { char bmsid[4]; } f02; /* 8..11 */
+ struct { char bmsid[4]; } f03; /* 12..15 */
+ struct { char bmsid[4]; } f04; /* 16..19 */
+ struct { char bmsid[4]; } f05; /* 20..21 (last byte is NUL) */
+ struct { uint8_t reserved[4]; } f06;
+ struct { uint8_t reserved[4]; } f07;
+ struct { uint8_t reserved[4]; } f08;
+ };
+ } f2c;
+
+
+ struct {
+ uint8_t pad; /* always 0 */
+ uint8_t field;
+ struct { char ssid[4]; } f00; // XXX: or is it passphrase?
+ struct { char ssid[4]; } f01;
+ struct { char ssid[4]; } f02;
+ struct { char ssid[4]; } f03;
+ struct { char ssid[4]; } f04;
+ struct { char ssid[4]; } f05;
+ struct { char ssid[4]; } f06;
+ struct { char ssid[4]; } f07;
+ struct { char ssid[4]; } f08;
+ struct { char ssid[4]; } f09;
+ struct { char ssid[4]; } f0a;
+ struct { char ssid[4]; } f0b;
+ struct { char ssid[4]; } f0c;
+ struct { char ssid[4]; } f0d;
+ struct { char ssid[4]; } f0e;
+ struct { char ssid[4]; } f0f;
+ struct { char ssid[4]; } f10;
+ struct { char ssid[4]; } f11;
+ struct { char ssid[4]; } f12;
+ struct { char ssid[4]; } f13;
+ struct { char ssid[4]; } f14;
+ struct { char ssid[4]; } f15;
+ struct { char ssid[4]; } f16;
+ struct { char ssid[4]; } f17;
+ struct { char ssid[4]; } f18;
+ } f78;
+
+ };
+ uint8_t csum;
+} __attribute__((packed));
+
+
+#define MSGID_UNK2 0x18a8a200
+#define MSGID_UNK2_MASK 0x1fffff00
+
+struct unk2 {
+ uint8_t data[7];
+ uint8_t csum;
+} __attribute__((packed));
+
+
+
+
+/* priority 6, EDP 0, DP 0, PDU format 0xe1, PDU specific 0xe2 */
+#define MSGID_CELL_VOLTAGE 0x18e1e200
+#define MSGID_CELL_VOLTAGE_MASK 0x1fffff00
+
+struct cell_voltage {
+ uint8_t start_index;
+ uint16_t voltage[3]; /* Cell voltages in mV */
+ uint8_t checksum;
+} __attribute__((packed));
+
+/* priority 6, EDP 0, DP 0, PDU format 0xe1, PDU specific 0xe3 */
+#define MSGID_TEMPERATURE 0x18e1e300
+#define MSGID_TEMPERATURE_MASK 0x1fffff00
+
+struct temperature {
+ uint8_t temperature1; /* integer degrees celcius */
+ uint8_t temperature2; /* integer degrees celcius */
+ uint8_t temperature3; /* integer degrees celcius */
+} __attribute__((packed));
+
+/* priority 6, EDP 0, DP 0, PDU format 0xe1, PDU specific 0xe4 */
+#define MSG_SUMMARY 0x18e1e400
+#define MSG_SUMMARY_MASK 0x1fffff00
+
+struct summary {
+ uint8_t field;
+ union {
+ struct voltage_max_min { // field == 0
+ uint8_t pad0; /* always seems to be 7 */
+ uint16_t v_max; /* big endian, max cell voltage in mV */
+ uint16_t v_min; /* big endian, min cell voltage in mV */
+ uint8_t pad1; /* always seems to be 0 */
+ } i00;
+
+ /*
+ * BMS_TOOL interface:
+ *
+ * SOC_UP System Voltage Current 3
+ * Max Cell Min Cell Voltage Different # probably computed(?)
+ * Max Temp Min Temp Capacity 3
+ * Discharge CAP Charge CAP Max Soc 3
+ * Discharge Quantity Charge Quantity SOH
+ * Battery Voltage Fuse Voltage Output Voltage
+ * <cell voltages>
+ * Battery Temperature:
+ * Temperature1 Temperature2 Temperature3
+ *
+ *
+ * Missing items (so far):
+ * BMS ID
+ * Product ID
+ * Server addr
+ * port
+ * local IP
+ * SSID
+ * Password
+ * Encry
+ * HDCP
+ *
+ * System Voltage
+ * Voltage Difference
+ * Battery Voltage
+ * Fuse Voltage
+ * Output Voltage
+
+
+ ID B ID Device ID Bms ID Product ID
+ 1 *10208 22507318 (0x1576f36) 0916F260012202250731? NT01
+ 2 *10136 22507087 (0x1576e4f) 0916F260012202250708? NT01 01 57 6e 4f -> 4F 6E 57 01
+ 3 *10166 22507155 (0x1576e93) 0916F260012202250715? NT01
+ 4 *10175 22507145 (0x1576e89) 0916F260012202250714? NT01
+ 5 *10084 22507255 (0x1576ef7) 0916F260012202250725? NT01
+ 6 *10153 22507081 (0x1576e49) 0916F260012202250708? NT01
+ 7 *10165 22507158 (0x1576e96) 0916F260012202250715? NT01
+ 8 *10142 22507084 (0x1576e4c) 0916F260012202250708? NT01
+
+ */
+
+ struct misc { // field == 0x01
+ uint8_t temperature_max;
+ uint8_t temperature_min;
+ uint16_t unknown;
+ uint16_t voltage; // some cell voltage * 1000 -> almost certainly mean cell voltage
+ } i01;
+
+ struct pack_voltage { // field == 0x02
+ uint16_t unknown; /* seems always to be 3 */
+ uint16_t voltage;
+ uint16_t pad; /* always 0 */
+ } i02;
+
+ struct current { // field == 0x03
+ int32_t current; /* negative means battery is charging */
+ uint16_t soc; /* same value as in both soc fields below */
+ } i03;
+
+ struct soc { // field == 0x04
+ uint16_t soc_up;
+ uint16_t soc_max;
+ uint16_t soc_unknown; /* is always 0x310 */
+ } i04;
+
+ struct device_id { // field == 0x05
+ uint32_t device_id;
+ uint8_t pad0;
+ uint8_t pad1;
+ } i05;
+
+ struct charge_cap { // field == 0x06
+ uint32_t charge_cap; /* divide by 100 to get Ah */
+ uint8_t pad0;
+ uint8_t pad1;
+ } i06;
+ struct discharge_cap { // field == 0x07
+ uint32_t discharge_cap; /* divide by 100 to get Ah */
+ uint8_t pad0;
+ uint8_t pad1;
+ } i07;
+ struct charge_quantity { // field == 0x08
+ uint32_t charge_quantity; /* divide by 10000 to get kWh */
+ uint8_t pad0;
+ uint8_t pad1;
+ } i08;
+ struct discharge_quantity { // field == 0x09
+ uint32_t discharge_quantity; /* divide by 10000 to get kWh, e.g. 14 25 51 00 -> 0x00512512 -> 5317908 -> 531.7908kWh */
+ uint8_t pad0;
+ uint8_t pad1;
+ } i09;
+
+ struct versions { // field == 0x0A
+ uint16_t sw_ver; /* currently 03CC */
+ uint16_t hw_ver; /* currently 0001*/
+ uint16_t pad;
+ } i0a;
+
+ struct battery_id_1 { // field == 0xB
+ /* BatteryID[0:3] */
+ char sn[4];
+ uint8_t pad[2];
+ } i0b;
+ struct battery_id_2 { // field == 0xC
+ /* BatteryID[4:7] */
+ char sn[4];
+ uint8_t pad[2];
+ } i0c;
+ struct battery_id_3 { // field == 0xD
+ /* BatteryID[8:11] */
+ char sn[4];
+ uint8_t pad[2];
+ } i0d;
+ struct battery_id_4 { // field == 0xE
+ /* BatteryID[12:15] */
+ char sn[4];
+ uint8_t pad[2];
+ } i0e;
+ struct battery_id_5 { // field == 0xF
+ /* BatteryID[16:18] */
+ char sn[3];
+ uint8_t pad[3];
+ } i0f;
+
+ struct filler_10 { uint8_t pad[6]; } i10; /* always seems to be 0 */
+ struct filler_11 { uint8_t pad[6]; } i11; /* always seems to be 0 */
+ struct filler_12 { uint8_t pad[6]; } i12; /* always seems to be 0 */
+ struct filler_13 { uint8_t pad[6]; } i13; /* always seems to be 0 */
+ struct filler_14 { uint8_t pad[6]; } i14; /* always seems to be 0 */
+
+ struct soh { // field == 0x15
+ // can0 18E1E4F7 [8] 15 E8 03 5A 5A 00 00 B4
+ uint16_t soh; /* big endian, percent and 10ths, i.e. 98.5% shows as 985 (0x3d9 -> D9 03) */
+ uint8_t cap0; /* capacity in amp-hours */
+ uint8_t cap1; /* capacity in amp-hours? */
+ uint8_t pad0; /* always seems to be 0 */
+ uint8_t pad1; /* always seems to be 0 */
+ } i15;
+
+ };
+ uint8_t csum; // ?? appears to be sum of bytes[0:6]
+} __attribute__((packed));
+
+
+/*************************************************************************
+ * Known faults and alarms:
+ *
+ * Fault (10):
+ * Hardware
+ * Short
+ * Sample
+ * TempOpen
+ * TempShort
+ * Current
+ * Address Conflict
+ * Slave Offline
+ * PreCharge OutTime
+ * Slave Fault
+ *
+ * Alarm (11): "Fault Code Description"
+ * UV1 total voltage low
+ * UV2 single cell low
+ * OTD discharge temperature high
+ * UTD discharge temperature low
+ * OCD1 discharge overcurrent
+ * OV1 total voltage high
+ * OV2 single cell high
+ * OTC charge temperature high
+ * UTC charge temperature low
+ * OCC charge overcurrent
+ * Low SOC
+ *
+
+
+ * can0 18E1E5F7 [8] 00 00 00 00 02 48 00 4A <- UV2 fault
+ * can0 18E1E5F8 [8] 01 04 00 00 00 04 00 09 <-- OV2
+
+ * no fault/alarm
+ * can0 18E1E5F6 [8] 00 00 00 00 02 00 00 02
+ * can0 18E1E5F6 [8] 01 00 00 00 00 00 00 01
+ * can0 18E1E5F6 [8] 02 00 00 00 00 00 00 02
+ *
+ * UV2 alarm (red)
+ * can0 18E1E5F7 [8] 00 00 00 00 02 48 00 4A
+ * can0 18E1E5F7 [8] 01 40 00 48 00 40 00 C9
+ * can0 18E1E5F7 [8] 02 00 00 00 00 00 00 02
+ *
+ * OV2 alarm (yellow)
+ * can0 18E1E5F6 [8] 00 00 00 00 02 00 00 02
+ * can0 18E1E5F6 [8] 01 04 00 00 00 00 00 05
+ * can0 18E1E5F6 [8] 02 00 00 00 00 00 00 02
+ *
+ * OV2 alarm (red)
+ * can0 18E1E5F8 [8] 00 00 00 00 04 00 00 04
+ * can0 18E1E5F8 [8] 01 04 00 00 00 04 00 09 <-- OV2
+ * can0 18E1E5F8 [8] 02 00 00 00 00 00 00 02
+
+
+ Too cold to charge
+ Faults < 00 00 00 02 20 00 00 20 00 00 00 20 00 00 00 20 00 00 >
+ Current 0.349A [discharge] SOC 71.8% Temp: 5°C 5°C 9°C *
+
+ - 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ OV2(y) 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00
+ OV2(r) 00 00 00 04 00 00 04 00 00 00 04 00 00 00 00 00 00 00
+ UV2(r) 00 00 00 00 02 48 00 40 00 48 00 40 00 00 00 00 00 00
+ UTC 00 00 00 02 20 00 00 20 00 00 00 20 00 00 00 20 00 00
+
+
+ Fault6 00 00 00 02 00 00 00 20 00 00 00 20 00 00 00 20 00 00 >
+
+
+
+
+ 2026-02-19
+ Battery 4 - bank not charging (cold)
+ Faults < 00 00 00 02 00 00 00 20 00 00 00 20 00 00 00 20 00 00 >
+ Current 0.736A [discharge] SOC 40.3% Temp: 3°C 3°C 5°C *
+
+
+
+
+
+== Battery 1 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010208 Device ID 22507318
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 0.497A [discharge] SOC 48.0% Temp: 3°C 3°C 6°C *
+== Battery 2 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010136 Device ID 22507087
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 0.000A [discharge] SOC 41.2% Temp: 3°C 4°C 6°C *
+== Battery 3 SOH 96.5% HW 0x1 SW 0x3cc 1416719SLKOPG010166 Device ID 22507155
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -0.566A [charge] SOC 31.1% Temp: 6°C 6°C 9°C
+
+== Battery 4 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010175 Device ID 22507145
+ Faults < 00 00 00 02 00 00 00 20 00 00 00 20 00 00 00 20 00 00 >
+ Current 0.258A [discharge] SOC 40.3% Temp: 3°C 3°C 4°C *
+
+== Battery 5 SOH 97.1% HW 0x1 SW 0x3cc 1416719SLKOPG010084 Device ID 22507255
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 0.000A [discharge] SOC 41.7% Temp: 5°C 5°C 6°C *
+
+== Battery 6 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010153 Device ID 22507081
+ Faults < 00 00 00 02 00 00 00 20 00 00 00 20 00 00 00 20 00 00 >
+ Current 0.000A [discharge] SOC 30.9% Temp: 5°C 5°C 6°C *
+
+== Battery 7 SOH 98.9% HW 0x1 SW 0x3cc 1416330SLKOPG008100 Device ID 22501168
+ Faults < 00 00 00 02 20 00 00 20 00 00 00 20 00 00 00 20 00 00 >
+ Current 0.847A [discharge] SOC 78.0% Temp: 5°C 5°C 8°C *
+== Battery 8 SOH 98.2% HW 0x1 SW 0x3cc 1416719SLKOPG010159 Device ID 22507035
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 0.386A [discharge] SOC 56.5% Temp: 5°C 5°C 8°C *
+
+
+
+
+ */
+
+/* priority 6, EDP 0, DP 0, PDU format 0xe1, PDU specific 0xe5 */
+/* XXX: "faults" may be a misnomer, maybe "status"? */
+#define MSGID_FAULTS 0x18e1e500
+#define MSGID_FAULTS_MASK 0x1fffff00
+
+struct faults {
+ uint8_t field;
+ union {
+ // 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00 # slave
+ // 00 00 00 04 00 00 04 00 00 00 00 00 00 00 00 00 00 00 # master
+
+
+/*
+== Battery 1 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010208 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -12.299A [charge] SOC 99.0% Temp: 16°C 17°C 19°C
+ Cell V: C1:3.416V C2:3.422V C3:3.421V C4:3.424V C5:3.423V C6:3.423V C7:3.421V C8:3.426V C9:3.430V C10:3.430V C11:3.441V C12:3.443V C13:3.440V C14:3.442V C15:3.450V C16:3.439V
+== Battery 2 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010136 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -10.351A [charge] SOC 99.0% Temp: 17°C 17°C 20°C
+ Cell V: C1:3.427V C2:3.425V C3:3.432V C4:3.432V C5:3.431V C6:3.422V C7:3.429V C8:3.444V C9:3.435V C10:3.426V C11:3.426V C12:3.437V C13:3.431V C14:3.434V C15:3.434V C16:3.435V
+== Battery 3 SOH 98.2% HW 0x1 SW 0xcc 1416719SLKOPG010166 Faults < 00 00 00 02 00 00 04 00 00 00 04 00 00 00 00 00 00 00>
+ Current -2.019A [charge] SOC 99.0% Temp: 23°C 23°C 26°C
+ Cell V: C1:3.390V C2:3.385V C3:3.389V C4:3.382V C5:3.394V C6:3.427V C7:3.386V C8:3.434V C9:3.436V C10:3.459V C11:3.435V C12:3.508V C13:3.457V C14:3.542V C15:3.550V C16:3.410V
+== Battery 4 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010175 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -7.554A [charge] SOC 99.0% Temp: 19°C 19°C 20°C
+ Cell V: C1:3.438V C2:3.446V C3:3.424V C4:3.423V C5:3.428V C6:3.426V C7:3.434V C8:3.436V C9:3.425V C10:3.428V C11:3.462V C12:3.442V C13:3.430V C14:3.438V C15:3.447V C16:3.440V
+== Battery 5 SOH 98.6% HW 0x1 SW 0xcc 1416719SLKOPG010084 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -8.381A [charge] SOC 99.0% Temp: 20°C 20°C 21°C
+ Cell V: C1:3.447V C2:3.428V C3:3.433V C4:3.431V C5:3.430V C6:3.448V C7:3.431V C8:3.439V C9:3.435V C10:3.428V C11:3.424V C12:3.428V C13:3.430V C14:3.440V C15:3.441V C16:3.451V
+== Battery 6 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010153 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -2.056A [charge] SOC 99.0% Temp: 22°C 22°C 23°C
+ Cell V: C1:3.393V C2:3.415V C3:3.430V C4:3.407V C5:3.420V C6:3.394V C7:3.396V C8:3.460V C9:3.388V C10:3.441V C11:3.523V C12:3.495V C13:3.461V C14:3.487V C15:3.415V C16:3.431V
+== Battery 7 SOH 99.8% HW 0x1 SW 0xcc 1416330SLKOPG008100 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -11.974A [charge] SOC 99.0% Temp: 15°C 15°C 17°C
+ Cell V: C1:3.424V C2:3.425V C3:3.429V C4:3.440V C5:3.426V C6:3.426V C7:3.430V C8:3.434V C9:3.435V C10:3.436V C11:3.426V C12:3.437V C13:3.435V C14:3.435V C15:3.433V C16:3.432V
+== Battery 8 SOH 99.7% HW 0x1 SW 0xcc 1416719SLKOPG010159 Faults < 00 00 00 04 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -12.446A [charge] SOC 99.0% Temp: 20°C 21°C 23°C
+ Cell V: C1:3.420V C2:3.430V C3:3.430V C4:3.434V C5:3.434V C6:3.433V C7:3.433V C8:3.440V C9:3.436V C10:3.437V C11:3.432V C12:3.427V C13:3.428V C14:3.437V C15:3.436V C16:3.437V
+
+== Battery 1 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010208 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -12.299A [charge] SOC 99.0% Temp: 16°C 17°C 19°C
+ Cell V: C1:3.416V C2:3.423V C3:3.421V C4:3.423V C5:3.423V C6:3.423V C7:3.421V C8:3.426V C9:3.430V C10:3.430V C11:3.441V C12:3.443V C13:3.440V C14:3.442V C15:3.450V C16:3.439V
+== Battery 2 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010136 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -10.351A [charge] SOC 99.0% Temp: 17°C 17°C 20°C
+ Cell V: C1:3.427V C2:3.425V C3:3.433V C4:3.432V C5:3.431V C6:3.421V C7:3.429V C8:3.444V C9:3.435V C10:3.426V C11:3.426V C12:3.437V C13:3.431V C14:3.434V C15:3.434V C16:3.435V
+== Battery 3 SOH 98.2% HW 0x1 SW 0xcc 1416719SLKOPG010166 Faults < 00 00 00 02 00 00 04 00 00 00 04 00 00 00 00 00 00 00>
+ Current -1.964A [charge] SOC 100.0% Temp: 23°C 23°C 26°C
+ Cell V: C1:3.390V C2:3.385V C3:3.389V C4:3.383V C5:3.394V C6:3.427V C7:3.385V C8:3.433V C9:3.436V C10:3.458V C11:3.436V C12:3.508V C13:3.457V C14:3.542V C15:3.550V C16:3.410V
+== Battery 4 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010175 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -7.499A [charge] SOC 100.0% Temp: 19°C 19°C 20°C
+ Cell V: C1:3.438V C2:3.446V C3:3.424V C4:3.422V C5:3.427V C6:3.426V C7:3.434V C8:3.436V C9:3.424V C10:3.428V C11:3.461V C12:3.443V C13:3.430V C14:3.438V C15:3.446V C16:3.440V
+== Battery 5 SOH 98.6% HW 0x1 SW 0xcc 1416719SLKOPG010084 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -8.381A [charge] SOC 99.0% Temp: 20°C 20°C 21°C
+ Cell V: C1:3.445V C2:3.429V C3:3.433V C4:3.431V C5:3.430V C6:3.448V C7:3.431V C8:3.439V C9:3.435V C10:3.428V C11:3.424V C12:3.428V C13:3.431V C14:3.440V C15:3.441V C16:3.451V
+== Battery 6 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010153 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -2.056A [charge] SOC 99.0% Temp: 22°C 22°C 23°C
+ Cell V: C1:3.393V C2:3.415V C3:3.430V C4:3.407V C5:3.420V C6:3.394V C7:3.396V C8:3.460V C9:3.388V C10:3.441V C11:3.523V C12:3.495V C13:3.461V C14:3.488V C15:3.414V C16:3.432V
+== Battery 7 SOH 99.8% HW 0x1 SW 0xcc 1416330SLKOPG008100 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -11.974A [charge] SOC 99.0% Temp: 15°C 15°C 17°C
+ Cell V: C1:3.424V C2:3.425V C3:3.428V C4:3.440V C5:3.427V C6:3.425V C7:3.430V C8:3.435V C9:3.436V C10:3.436V C11:3.426V C12:3.437V C13:3.435V C14:3.435V C15:3.433V C16:3.432V
+== Battery 8 SOH 99.7% HW 0x1 SW 0xcc 1416719SLKOPG010159 Faults < 00 00 00 04 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -12.446A [charge] SOC 99.0% Temp: 20°C 21°C 23°C
+ Cell V: C1:3.420V C2:3.430V C3:3.430V C4:3.434V C5:3.435V C6:3.432V C7:3.433V C8:3.440V C9:3.436V C10:3.437V C11:3.432V C12:3.427V C13:3.428V C14:3.437V C15:3.436V C16:3.436V
+
+== Battery 1 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010208 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -12.299A [charge] SOC 99.0% Temp: 16°C 17°C 19°C
+ Cell V: C1:3.416V C2:3.423V C3:3.421V C4:3.423V C5:3.423V C6:3.423V C7:3.421V C8:3.425V C9:3.429V C10:3.430V C11:3.441V C12:3.443V C13:3.439V C14:3.443V C15:3.449V C16:3.439V
+== Battery 2 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010136 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -10.351A [charge] SOC 99.0% Temp: 17°C 17°C 20°C
+ Cell V: C1:3.427V C2:3.425V C3:3.433V C4:3.432V C5:3.431V C6:3.421V C7:3.429V C8:3.444V C9:3.435V C10:3.425V C11:3.426V C12:3.436V C13:3.431V C14:3.433V C15:3.435V C16:3.435V
+== Battery 3 SOH 98.2% HW 0x1 SW 0xcc 1416719SLKOPG010166 Faults < 00 00 00 02 00 00 04 00 00 00 04 00 00 00 00 00 00 00>
+ Current -1.964A [charge] SOC 100.0% Temp: 23°C 23°C 26°C
+ Cell V: C1:3.390V C2:3.384V C3:3.390V C4:3.383V C5:3.394V C6:3.427V C7:3.385V C8:3.433V C9:3.436V C10:3.458V C11:3.436V C12:3.508V C13:3.456V C14:3.542V C15:3.550V C16:3.411V
+== Battery 4 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010175 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -7.499A [charge] SOC 100.0% Temp: 19°C 19°C 20°C
+ Cell V: C1:3.438V C2:3.445V C3:3.424V C4:3.422V C5:3.427V C6:3.425V C7:3.434V C8:3.436V C9:3.424V C10:3.428V C11:3.461V C12:3.443V C13:3.430V C14:3.438V C15:3.446V C16:3.440V
+== Battery 5 SOH 98.6% HW 0x1 SW 0xcc 1416719SLKOPG010084 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -8.381A [charge] SOC 99.0% Temp: 20°C 20°C 21°C
+ Cell V: C1:3.445V C2:3.429V C3:3.433V C4:3.431V C5:3.430V C6:3.448V C7:3.431V C8:3.438V C9:3.435V C10:3.427V C11:3.423V C12:3.428V C13:3.431V C14:3.440V C15:3.441V C16:3.451V
+== Battery 6 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010153 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -2.056A [charge] SOC 99.0% Temp: 22°C 22°C 23°C
+ Cell V: C1:3.393V C2:3.415V C3:3.430V C4:3.407V C5:3.419V C6:3.394V C7:3.396V C8:3.460V C9:3.388V C10:3.441V C11:3.523V C12:3.496V C13:3.461V C14:3.487V C15:3.415V C16:3.432V
+== Battery 7 SOH 99.8% HW 0x1 SW 0xcc 1416330SLKOPG008100 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -11.974A [charge] SOC 99.0% Temp: 15°C 15°C 17°C
+ Cell V: C1:3.424V C2:3.425V C3:3.428V C4:3.440V C5:3.427V C6:3.425V C7:3.430V C8:3.435V C9:3.436V C10:3.435V C11:3.425V C12:3.436V C13:3.435V C14:3.433V C15:3.433V C16:3.432V
+== Battery 8 SOH 99.7% HW 0x1 SW 0xcc 1416719SLKOPG010159 Faults < 00 00 00 04 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -12.373A [charge] SOC 100.0% Temp: 20°C 21°C 23°C
+ Cell V: C1:3.420V C2:3.430V C3:3.430V C4:3.434V C5:3.435V C6:3.432V C7:3.433V C8:3.439V C9:3.435V C10:3.437V C11:3.432V C12:3.426V C13:3.427V C14:3.438V C15:3.435V C16:3.436V
+
+== Battery 1 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010208 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -12.299A [charge] SOC 99.0% Temp: 16°C 17°C 19°C
+ Cell V: C1:3.415V C2:3.423V C3:3.421V C4:3.424V C5:3.423V C6:3.423V C7:3.421V C8:3.426V C9:3.430V C10:3.430V C11:3.441V C12:3.443V C13:3.439V C14:3.443V C15:3.449V C16:3.439V
+== Battery 2 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010136 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -10.351A [charge] SOC 99.0% Temp: 17°C 17°C 20°C
+ Cell V: C1:3.428V C2:3.425V C3:3.433V C4:3.432V C5:3.432V C6:3.421V C7:3.429V C8:3.443V C9:3.435V C10:3.425V C11:3.426V C12:3.436V C13:3.431V C14:3.433V C15:3.435V C16:3.435V
+== Battery 3 SOH 98.2% HW 0x1 SW 0xcc 1416719SLKOPG010166 Faults < 00 00 00 02 00 00 04 00 00 00 04 00 00 00 00 00 00 00>
+ Current -1.964A [charge] SOC 100.0% Temp: 23°C 23°C 26°C
+ Cell V: C1:3.390V C2:3.384V C3:3.390V C4:3.382V C5:3.394V C6:3.427V C7:3.386V C8:3.433V C9:3.436V C10:3.459V C11:3.435V C12:3.508V C13:3.456V C14:3.542V C15:3.550V C16:3.411V
+== Battery 4 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010175 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -7.499A [charge] SOC 100.0% Temp: 19°C 19°C 20°C
+ Cell V: C1:3.438V C2:3.445V C3:3.424V C4:3.422V C5:3.427V C6:3.425V C7:3.434V C8:3.436V C9:3.424V C10:3.428V C11:3.462V C12:3.442V C13:3.430V C14:3.438V C15:3.447V C16:3.440V
+== Battery 5 SOH 98.6% HW 0x1 SW 0xcc 1416719SLKOPG010084 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -8.381A [charge] SOC 99.0% Temp: 20°C 20°C 21°C
+ Cell V: C1:3.446V C2:3.428V C3:3.434V C4:3.431V C5:3.430V C6:3.447V C7:3.431V C8:3.438V C9:3.435V C10:3.427V C11:3.423V C12:3.428V C13:3.431V C14:3.440V C15:3.440V C16:3.451V
+== Battery 6 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010153 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -2.056A [charge] SOC 99.0% Temp: 22°C 22°C 23°C
+ Cell V: C1:3.393V C2:3.416V C3:3.430V C4:3.407V C5:3.419V C6:3.394V C7:3.396V C8:3.460V C9:3.388V C10:3.441V C11:3.523V C12:3.496V C13:3.461V C14:3.487V C15:3.415V C16:3.431V
+== Battery 7 SOH 99.8% HW 0x1 SW 0xcc 1416330SLKOPG008100 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -11.974A [charge] SOC 99.0% Temp: 15°C 15°C 17°C
+ Cell V: C1:3.424V C2:3.425V C3:3.428V C4:3.440V C5:3.426V C6:3.425V C7:3.430V C8:3.434V C9:3.435V C10:3.436V C11:3.425V C12:3.437V C13:3.435V C14:3.433V C15:3.433V C16:3.432V
+== Battery 8 SOH 99.7% HW 0x1 SW 0xcc 1416719SLKOPG010159 Faults < 00 00 00 04 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -12.373A [charge] SOC 100.0% Temp: 20°C 21°C 23°C
+ Cell V: C1:3.421V C2:3.429V C3:3.430V C4:3.433V C5:3.435V C6:3.433V C7:3.433V C8:3.439V C9:3.435V C10:3.437V C11:3.432V C12:3.426V C13:3.427V C14:3.438V C15:3.435V C16:3.436V
+
+== Battery 1 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010208 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -12.299A [charge] SOC 100.0% Temp: 16°C 17°C 19°C
+ Cell V: C1:3.415V C2:3.423V C3:3.421V C4:3.424V C5:3.423V C6:3.423V C7:3.421V C8:3.426V C9:3.430V C10:3.430V C11:3.440V C12:3.442V C13:3.440V C14:3.442V C15:3.450V C16:3.440V
+== Battery 2 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010136 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -10.774A [charge] SOC 100.0% Temp: 17°C 17°C 20°C
+ Cell V: C1:3.428V C2:3.425V C3:3.433V C4:3.432V C5:3.432V C6:3.421V C7:3.429V C8:3.443V C9:3.435V C10:3.425V C11:3.427V C12:3.436V C13:3.432V C14:3.434V C15:3.435V C16:3.435V
+== Battery 3 SOH 98.2% HW 0x1 SW 0xcc 1416719SLKOPG010166 Faults < 00 00 00 02 00 00 04 00 00 00 04 00 00 00 00 00 00 00>
+ Current -1.964A [charge] SOC 100.0% Temp: 23°C 23°C 26°C
+ Cell V: C1:3.390V C2:3.384V C3:3.389V C4:3.383V C5:3.394V C6:3.427V C7:3.386V C8:3.433V C9:3.436V C10:3.459V C11:3.435V C12:3.508V C13:3.456V C14:3.542V C15:3.551V C16:3.411V
+== Battery 4 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010175 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -7.499A [charge] SOC 100.0% Temp: 19°C 19°C 20°C
+ Cell V: C1:3.438V C2:3.445V C3:3.424V C4:3.422V C5:3.428V C6:3.426V C7:3.434V C8:3.436V C9:3.424V C10:3.428V C11:3.462V C12:3.442V C13:3.430V C14:3.438V C15:3.447V C16:3.440V
+== Battery 5 SOH 98.6% HW 0x1 SW 0xcc 1416719SLKOPG010084 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -8.861A [charge] SOC 100.0% Temp: 20°C 20°C 21°C
+ Cell V: C1:3.446V C2:3.428V C3:3.434V C4:3.431V C5:3.430V C6:3.447V C7:3.431V C8:3.438V C9:3.434V C10:3.428V C11:3.424V C12:3.429V C13:3.431V C14:3.441V C15:3.441V C16:3.451V
+== Battery 6 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010153 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -2.056A [charge] SOC 99.0% Temp: 22°C 22°C 23°C
+ Cell V: C1:3.393V C2:3.416V C3:3.430V C4:3.407V C5:3.419V C6:3.394V C7:3.396V C8:3.461V C9:3.387V C10:3.440V C11:3.523V C12:3.496V C13:3.461V C14:3.488V C15:3.415V C16:3.431V
+== Battery 7 SOH 99.8% HW 0x1 SW 0xcc 1416330SLKOPG008100 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -11.974A [charge] SOC 99.0% Temp: 15°C 15°C 17°C
+ Cell V: C1:3.425V C2:3.425V C3:3.429V C4:3.440V C5:3.426V C6:3.425V C7:3.430V C8:3.434V C9:3.435V C10:3.436V C11:3.425V C12:3.437V C13:3.435V C14:3.435V C15:3.433V C16:3.433V
+== Battery 8 SOH 99.7% HW 0x1 SW 0xcc 1416719SLKOPG010159 Faults < 00 00 00 04 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -12.373A [charge] SOC 100.0% Temp: 20°C 21°C 23°C
+ Cell V: C1:3.421V C2:3.429V C3:3.430V C4:3.433V C5:3.435V C6:3.433V C7:3.433V C8:3.440V C9:3.435V C10:3.438V C11:3.432V C12:3.427V C13:3.428V C14:3.438V C15:3.436V C16:3.436V
+
+
+
+
+
+ f7 switches from 04 to 00 on charge (100% SOC already reached, see above):
+== Battery 2 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010136 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -0.825A [charge] SOC 100.0% Temp: 17°C 18°C 20°C
+ Cell V: C1:3.390V C2:3.388V C3:3.393V C4:3.392V C5:3.392V C6:3.387V C7:3.391V C8:3.400V C9:3.393V C10:3.390V C11:3.391V C12:3.394V C13:3.391V C14:3.392V C15:3.392V C16:3.393V
+== Battery 2 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010136 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -0.825A [charge] SOC 100.0% Temp: 17°C 17°C 20°C
+ Cell V: C1:3.389V C2:3.387V C3:3.392V C4:3.391V C5:3.392V C6:3.386V C7:3.390V C8:3.399V C9:3.393V C10:3.390V C11:3.391V C12:3.394V C13:3.391V C14:3.392V C15:3.392V C16:3.393V
+
+== Battery 2 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010136 Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00>
+ Current -0.807A [charge] SOC 100.0% Temp: 17°C 17°C 20°C
+ Cell V: C1:3.389V C2:3.387V C3:3.392V C4:3.391V C5:3.392V C6:3.386V C7:3.390V C8:3.399V C9:3.393V C10:3.390V C11:3.391V C12:3.394V C13:3.390V C14:3.391V C15:3.392V C16:3.392V
+== Battery 2 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010136 Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00>
+ Current -0.807A [charge] SOC 100.0% Temp: 17°C 18°C 20°C
+ Cell V: C1:3.389V C2:3.387V C3:3.392V C4:3.391V C5:3.391V C6:3.386V C7:3.390V C8:3.399V C9:3.392V C10:3.389V C11:3.389V C12:3.393V C13:3.390V C14:3.391V C15:3.392V C16:3.392V
+
+
+== Battery 7 SOH 99.8% HW 0x1 SW 0xcc 1416330SLKOPG008100 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -3.732A [charge] SOC 100.0% Temp: 15°C 15°C 17°C
+ Cell V: C1:3.390V C2:3.391V C3:3.393V C4:3.400V C5:3.393V C6:3.392V C7:3.394V C8:3.396V C9:3.395V C10:3.396V C11:3.392V C12:3.397V C13:3.397V C14:3.396V C15:3.396V C16:3.394V
+== Battery 7 SOH 99.8% HW 0x1 SW 0xcc 1416330SLKOPG008100 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current -3.732A [charge] SOC 100.0% Temp: 15°C 15°C 17°C
+ Cell V: C1:3.390V C2:3.391V C3:3.393V C4:3.400V C5:3.393V C6:3.392V C7:3.394V C8:3.396V C9:3.395V C10:3.396V C11:3.392V C12:3.397V C13:3.396V C14:3.396V C15:3.395V C16:3.394V
+
+== Battery 7 SOH 99.8% HW 0x1 SW 0xcc 1416330SLKOPG008100 Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00>
+ Current -3.456A [charge] SOC 100.0% Temp: 15°C 15°C 17°C
+ Cell V: C1:3.390V C2:3.391V C3:3.393V C4:3.399V C5:3.392V C6:3.392V C7:3.393V C8:3.395V C9:3.395V C10:3.395V C11:3.392V C12:3.396V C13:3.396V C14:3.396V C15:3.395V C16:3.394V
+== Battery 7 SOH 99.8% HW 0x1 SW 0xcc 1416330SLKOPG008100 Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00>
+ Current -3.456A [charge] SOC 100.0% Temp: 15°C 15°C 17°C
+ Cell V: C1:3.390V C2:3.391V C3:3.392V C4:3.399V C5:3.391V C6:3.391V C7:3.393V C8:3.395V C9:3.395V C10:3.395V C11:3.392V C12:3.396V C13:3.395V C14:3.395V C15:3.394V C16:3.392V
+
+
+
+
+
+== Battery 1 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010208 Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00>
+ Current 0.000A [discharge] SOC 100.0% Temp: 17°C 17°C 19°C
+ Cell V: C1:3.356V C2:3.357V C3:3.357V C4:3.361V C5:3.359V C6:3.361V C7:3.358V C8:3.359V C9:3.359V C10:3.359V C11:3.362V C12:3.363V C13:3.362V C14:3.363V C15:3.363V C16:3.361V
+
+== Battery 2 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010136 Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00>
+ Current -0.292A [charge] SOC 100.0% Temp: 17°C 18°C 20°C
+ Cell V: C1:3.360V C2:3.359V C3:3.361V C4:3.361V C5:3.361V C6:3.359V C7:3.360V C8:3.364V C9:3.361V C10:3.359V C11:3.360V C12:3.362V C13:3.361V C14:3.361V C15:3.361V C16:3.361V
+== Battery 3 SOH 98.2% HW 0x1 SW 0xcc 1416719SLKOPG010166 Faults < 00 00 00 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00>
+ Current 1.214A [discharge] SOC 100.0% Temp: 23°C 23°C 26°C
+ Cell V: C1:3.347V C2:3.347V C3:3.347V C4:3.347V C5:3.349V C6:3.361V C7:3.347V C8:3.362V C9:3.363V C10:3.372V C11:3.363V C12:3.389V C13:3.371V C14:3.399V C15:3.400V C16:3.353V
+== Battery 4 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010175 Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00>
+ Current 0.442A [discharge] SOC 100.0% Temp: 19°C 19°C 20°C
+ Cell V: C1:3.364V C2:3.365V C3:3.360V C4:3.359V C5:3.361V C6:3.360V C7:3.362V C8:3.363V C9:3.358V C10:3.360V C11:3.370V C12:3.364V C13:3.362V C14:3.364V C15:3.366V C16:3.365V
+== Battery 5 SOH 98.6% HW 0x1 SW 0xcc 1416719SLKOPG010084 Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00>
+ Current 0.386A [discharge] SOC 100.0% Temp: 20°C 20°C 21°C
+ Cell V: C1:3.366V C2:3.361V C3:3.363V C4:3.362V C5:3.363V C6:3.366V C7:3.363V C8:3.365V C9:3.361V C10:3.362V C11:3.362V C12:3.362V C13:3.363V C14:3.364V C15:3.364V C16:3.364V
+== Battery 6 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010153 Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00>
+ Current 1.214A [discharge] SOC 100.0% Temp: 22°C 22°C 23°C
+ Cell V: C1:3.346V C2:3.353V C3:3.359V C4:3.350V C5:3.354V C6:3.347V C7:3.347V C8:3.369V C9:3.345V C10:3.364V C11:3.392V C12:3.383V C13:3.371V C14:3.379V C15:3.354V C16:3.360V
+== Battery 7 SOH 99.8% HW 0x1 SW 0xcc 1416330SLKOPG008100 Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00>
+ Current 0.000A [discharge] SOC 100.0% Temp: 15°C 15°C 18°C
+ Cell V: C1:3.359V C2:3.359V C3:3.360V C4:3.361V C5:3.360V C6:3.359V C7:3.360V C8:3.360V C9:3.360V C10:3.360V C11:3.360V C12:3.360V C13:3.360V C14:3.360V C15:3.360V C16:3.359V
+== Battery 8 SOH 99.7% HW 0x1 SW 0xcc 1416719SLKOPG010159 Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00>
+ Current 0.588A [discharge] SOC 100.0% Temp: 20°C 21°C 24°C
+ Cell V: C1:3.358V C2:3.362V C3:3.363V C4:3.363V C5:3.363V C6:3.363V C7:3.364V C8:3.364V C9:3.364V C10:3.364V C11:3.362V C12:3.360V C13:3.360V C14:3.364V C15:3.364V C16:3.362V
+
+*/
+
+
+ /*
+ Commonly seen in other related protocols:
+ single overvoltage
+ single undervoltage
+ group overvoltage
+ group undervoltage
+
+ charge overtemp
+ charge undertemp
+ discharge overtemp
+ discharge undertemp
+
+ charge overcurrent
+ discharge overcurrent
+
+ short circuit
+
+
+
+ See:
+ https://www.lithiumbatterypcb.com/wp-content/uploads/2023/05/CANBUS-communication-protocol.pdf
+
+ */
+
+ struct {
+ uint8_t f1;
+ uint8_t f2;
+ uint8_t f3;
+ uint8_t f4; /* always seems to be 0x02 on slaves, 0x04 on masters */
+ uint8_t f5;
+ uint8_t f6;
+ } i0;
+ struct {
+ uint8_t f7; /* OV2: 0x04, UV2 0x40 */
+ uint8_t f8;
+ uint8_t f9;
+ uint8_t fa;
+ uint8_t fb;
+ uint8_t fc;
+ } i1;
+ struct {
+ uint8_t fd;
+ uint8_t fe;
+ uint8_t ff;
+ uint8_t f10;
+ uint8_t f11;
+ uint8_t f12;
+ } i2;
+ };
+ uint8_t csum; /* checksum */
+} __attribute__((packed));
+
+
+#define MSGID_E1E6 0x18e1e600
+#define MSGID_E1E6_MASK 0x1fffff00
+struct e1e6 {
+ uint8_t data[8];
+} __attribute__((packed));
+
+
+/* priority 6, EDP 0, DP 0, PDU format 0xe2, PDU specific 0xe1 */
+/* Only sent by master */
+#define MSGID_BATTERIES 0x18e2e100
+#define MSGID_BATTERIES_MASK 0x1fffff00
+
+struct batteries {
+ uint16_t battery_mask; /* bitmask of batteries in system */
+ uint16_t unknown1; /* 0x8855 */
+ uint16_t unknown2; /* 0x0000 */
+ uint16_t unknown3; /* 0x8822 */
+} __attribute__((packed));
+
+#endif /* !_ENDURENERGY_H */
diff --git a/mqtt-esp5100.c b/mqtt-esp5100.c
new file mode 100644
index 0000000..1413014
--- /dev/null
+++ b/mqtt-esp5100.c
@@ -0,0 +1,1789 @@
+/*
+ * mqtt-esp5100
+ *
+ * Publish CAN data from EndurEnergy ESP-5100 batteries via MQTT
+ *
+ */
+
+#include <errno.h>
+#include <sys/ioctl.h>
+#include <limits.h>
+#include <signal.h>
+#include <stdbool.h>
+#include <stdarg.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <syslog.h>
+#include <sys/socket.h>
+#include <linux/can.h>
+#include <net/if.h>
+#include <sys/time.h>
+#include <time.h>
+#include <unistd.h>
+#include <getopt.h>
+#include <mosquitto.h>
+
+#include "endurenergy.h"
+#include "log.h"
+
+#define MQTT_ESP5100_VERSION "1.0"
+#define MQTT_ESP5100_NAME "mqtt-esp5100"
+
+#define DEFAULT_HOSTNAME "localhost"
+#define DEFAULT_PORT 1883
+
+#ifndef MQTT_NAME
+# define MQTT_NAME "quail"
+#endif
+
+struct battery_info {
+ bool ready;
+ char sn[20];
+ uint32_t device_id;
+ uint16_t sw_ver;
+ uint16_t hw_ver;
+ uint8_t t[3]; /* temperature */
+ uint8_t t_min;
+ uint8_t t_max;
+ float current;
+ float soc;
+ float soc_up;
+ float soc_max;
+ float soh;
+ uint16_t cell_voltages[16];
+ float charge_cap;
+ float discharge_cap;
+ float charge_quantity;
+ float discharge_quantity;
+ uint8_t cap0;
+ uint8_t cap1;
+ uint8_t faults[18];
+ uint16_t f1_unknown; // 18E1E4.. field 1
+ uint16_t f1_voltage;
+ uint16_t f2_unknown; // 18E1E4.. field 2
+ uint16_t pack_voltage;
+ uint8_t e1e6[8]; /* unknown message contents */
+
+} battery_info[BATTERY_ID_MAX];
+
+#define B battery_info[battery - 1]
+
+bool foreground = true;
+
+void
+message (int level, char *const m, ...) {
+ char buf[8192] = {0};
+ va_list ap;
+ va_start (ap, m);
+ vsnprintf (buf, sizeof (buf), m, ap);
+ va_end (ap);
+
+ if (foreground) {
+ puts (buf);
+ } else {
+ syslog (LOG_DAEMON|level, "%s", buf);
+ }
+}
+
+bool keep_going = true;
+bool exit_immediately = true;
+
+void
+sigint (int sig) {
+ if (exit_immediately) exit (EXIT_SUCCESS);
+ keep_going = false;
+}
+
+
+const char *
+mqtt_strerror (int err) {
+ static const char *const mqtt_errors[] = {
+ [MOSQ_ERR_SUCCESS] = "MOSQ_ERR_SUCCESS",
+ [MOSQ_ERR_NOMEM] = "MOSQ_ERR_NOMEM",
+ [MOSQ_ERR_PROTOCOL] = "MOSQ_ERR_PROTOCOL",
+ [MOSQ_ERR_INVAL] = "MOSQ_ERR_INVAL",
+ [MOSQ_ERR_NO_CONN] = "MOSQ_ERR_NO_CONN",
+ [MOSQ_ERR_CONN_REFUSED] = "MOSQ_ERR_CONN_REFUSED",
+ [MOSQ_ERR_NOT_FOUND] = "MOSQ_ERR_NOT_FOUND",
+ [MOSQ_ERR_CONN_LOST] = "MOSQ_ERR_CONN_LOST",
+ [MOSQ_ERR_TLS] = "MOSQ_ERR_TLS",
+ [MOSQ_ERR_PAYLOAD_SIZE] = "MOSQ_ERR_PAYLOAD_SIZE",
+ [MOSQ_ERR_NOT_SUPPORTED] = "MOSQ_ERR_NOT_SUPPORTED",
+ [MOSQ_ERR_AUTH] = "MOSQ_ERR_AUTH",
+ [MOSQ_ERR_ACL_DENIED] = "MOSQ_ERR_ACL_DENIED",
+ [MOSQ_ERR_UNKNOWN] = "MOSQ_ERR_UNKNOWN",
+ [MOSQ_ERR_ERRNO] = "MOSQ_ERR_ERRNO",
+ [MOSQ_ERR_EAI] = "MOSQ_ERR_EAI",
+ [MOSQ_ERR_PROXY] = "MOSQ_ERR_PROXY",
+ [MOSQ_ERR_PLUGIN_DEFER] = "MOSQ_ERR_PLUGIN_DEFER",
+ [MOSQ_ERR_MALFORMED_UTF8] = "MOSQ_ERR_MALFORMED_UTF8",
+ [MOSQ_ERR_KEEPALIVE] = "MOSQ_ERR_KEEPALIVE",
+ [MOSQ_ERR_LOOKUP] = "MOSQ_ERR_LOOKUP",
+ [MOSQ_ERR_MALFORMED_PACKET] = "MOSQ_ERR_MALFORMED_PACKET",
+ [MOSQ_ERR_DUPLICATE_PROPERTY] = "MOSQ_ERR_DUPLICATE_PROPERTY",
+ [MOSQ_ERR_TLS_HANDSHAKE] = "MOSQ_ERR_TLS_HANDSHAKE",
+ [MOSQ_ERR_QOS_NOT_SUPPORTED] = "MOSQ_ERR_QOS_NOT_SUPPORTED",
+ [MOSQ_ERR_OVERSIZE_PACKET] = "MOSQ_ERR_OVERSIZE_PACKET",
+ [MOSQ_ERR_OCSP] = "MOSQ_ERR_OCSP",
+ [MOSQ_ERR_TIMEOUT] = "MOSQ_ERR_TIMEOUT",
+ [MOSQ_ERR_RETAIN_NOT_SUPPORTED] = "MOSQ_ERR_RETAIN_NOT_SUPPORTED",
+ [MOSQ_ERR_TOPIC_ALIAS_INVALID] = "MOSQ_ERR_TOPIC_ALIAS_INVALID",
+ [MOSQ_ERR_ADMINISTRATIVE_ACTION] = "MOSQ_ERR_ADMINISTRATIVE_ACTION",
+ [MOSQ_ERR_ALREADY_EXISTS] = "MOSQ_ERR_ALREADY_EXISTS",
+ };
+ if (err < 0 || err >= sizeof (mqtt_errors) / sizeof (mqtt_errors[0]) || mqtt_errors[err] == NULL) {
+ return "Unknown MQTT error";
+ }
+ if (err == MOSQ_ERR_ERRNO) {
+ return strerror (errno);
+ }
+ return mqtt_errors[err];
+}
+
+
+static char secret[256];
+void
+read_secret_file (char *file, char **username, char **password) {
+ FILE *fp = fopen (file, "rt");
+ if (fp == NULL) {
+ fatal ("failed to open secret file '%s': %s", file, strerror (errno));
+ }
+ if (fgets (secret, sizeof (secret), fp) == NULL) {
+ fatal ("failed to read secret file '%s': %s", file, strerror (errno));
+ }
+ if (fclose (fp)) {
+ warning ("error closing secret file '%s': %s", file, strerror (errno));
+ }
+ if (strlen (secret) > 0) {
+ char *end = NULL;
+ while ((end = strrchr (secret, '\n'))) { *end = 0; }
+ }
+
+ char *col = strchr (secret, ':');
+ if (col) {
+ *username = secret;
+ *col = 0;
+ *password = col + 1;
+ } else {
+ *password = secret;
+ }
+}
+
+void
+discovery (struct mosquitto *mosq, int battery) {
+ char topic[512] = {0};
+ char payload[16384] = {0};
+
+ /*
+ * https://mosquitto.org/api/files/mosquitto-h.html
+ * Discover messages: https://www.home-assistant.io/integrations/mqtt/#mqtt-discovery
+ * device_class: https://www.home-assistant.io/integrations/sensor/#device-class
+ */
+ snprintf (topic, sizeof (topic), "homeassistant/device/%s/config", B.sn);
+ snprintf (payload, sizeof (payload), "\
+{\n\
+ \"device\": {\n\
+ \"identifiers\": \"%s\",\n\
+ \"name\": \"ESP-5100\",\n\
+ \"manufacturer\": \"EndurEnergy\",\n\
+ \"hw_version\": \"0x%hx\",\n\
+ \"serial_number\": \"%s\",\n\
+ \"sw_version\": \"0x%hx\"\n\
+ },\n\
+ \"origin\": {\n\
+ \"name\": \"%s\",\n\
+ \"sw_version\": \"%s\",\n\
+ \"support_url\": \"https://src.rockgeeks.net\"\n\
+ },\n\
+ \"components\": {\n\
+ \"ESP-5100-%s_CANID\": {\n\
+ \"platform\": \"sensor\",\n\
+ \"name\": \"canid\",\n\
+ \"unique_id\": \"%scanid\",\n\
+ \"value_template\":\"{{ value_json.canid }}\",\n\
+ \"state_topic\": \"solar/battery/esp-5100/%s/state\"\n\
+ },\n\
+ \"ESP-5100_%s_SOH\": {\n\
+ \"platform\": \"sensor\",\n\
+ \"device_class\": \"battery\",\n\
+ \"name\": \"SOH\",\n\
+ \"unique_id\": \"%ssoh\",\n\
+ \"value_template\":\"{{ value_json.soh }}\",\n\
+ \"state_topic\": \"solar/battery/esp-5100/%s/state\"\n\
+ },\n\
+ \"ESP-5100_%s_SOC\": {\n\
+ \"platform\": \"sensor\",\n\
+ \"device_class\": \"battery\",\n\
+ \"name\": \"SOC\",\n\
+ \"unique_id\": \"%ssoc\",\n\
+ \"value_template\":\"{{ value_json.soc }}\",\n\
+ \"state_topic\": \"solar/battery/esp-5100/%s/state\"\n\
+ },\n\
+ \"ESP-5100_%s_I\": {\n\
+ \"platform\": \"sensor\",\n\
+ \"device_class\": \"current\",\n\
+ \"unit_of_measurement\": \"A\",\n\
+ \"name\": \"Current\",\n\
+ \"unique_id\": \"%si\",\n\
+ \"value_template\":\"{{ value_json.i }}\",\n\
+ \"state_topic\": \"solar/battery/esp-5100/%s/state\"\n\
+ },\n\
+ \"ESP-5100_%s_V\": {\n\
+ \"platform\": \"sensor\",\n\
+ \"device_class\": \"voltage\",\n\
+ \"unit_of_measurement\": \"V\",\n\
+ \"name\": \"Pack Voltage\",\n\
+ \"unique_id\": \"%sv\",\n\
+ \"value_template\":\"{{ value_json.v }}\",\n\
+ \"state_topic\": \"solar/battery/esp-5100/%s/state\"\n\
+ },\n\
+ \"ESP-5100_%s_T1\": {\n\
+ \"platform\": \"sensor\",\n\
+ \"device_class\": \"temperature\",\n\
+ \"unit_of_measurement\": \"°C\",\n\
+ \"name\": \"Temperature 1\",\n\
+ \"unique_id\": \"%st1\",\n\
+ \"value_template\":\"{{ value_json.t1 }}\",\n\
+ \"state_topic\": \"solar/battery/esp-5100/%s/state\"\n\
+ },\n\
+ \"ESP-5100_%s_T2\": {\n\
+ \"platform\": \"sensor\",\n\
+ \"device_class\": \"temperature\",\n\
+ \"unit_of_measurement\": \"°C\",\n\
+ \"name\": \"Temperature 2\",\n\
+ \"unique_id\": \"%st2\",\n\
+ \"value_template\":\"{{ value_json.t2 }}\",\n\
+ \"state_topic\": \"solar/battery/esp-5100/%s/state\"\n\
+ },\n\
+ \"ESP-5100_%s_T3\": {\n\
+ \"platform\": \"sensor\",\n\
+ \"device_class\": \"temperature\",\n\
+ \"unit_of_measurement\": \"°C\",\n\
+ \"name\": \"Temperature 3\",\n\
+ \"unique_id\": \"%st3\",\n\
+ \"value_template\":\"{{ value_json.t3 }}\",\n\
+ \"state_topic\": \"solar/battery/esp-5100/%s/state\"\n\
+ },\n\
+ \"ESP-5100_%s_V1\": {\n\
+ \"platform\": \"sensor\",\n\
+ \"device_class\": \"voltage\",\n\
+ \"unit_of_measurement\": \"V\",\n\
+ \"name\": \"Cell 1 Voltage\",\n\
+ \"unique_id\": \"%sv01\",\n\
+ \"value_template\":\"{{ value_json.v01 }}\",\n\
+ \"state_topic\": \"solar/battery/esp-5100/%s/state\"\n\
+ },\n\
+ \"ESP-5100_%s_V2\": {\n\
+ \"platform\": \"sensor\",\n\
+ \"device_class\": \"voltage\",\n\
+ \"unit_of_measurement\": \"V\",\n\
+ \"name\": \"Cell 2 Voltage\",\n\
+ \"unique_id\": \"%sv02\",\n\
+ \"value_template\":\"{{ value_json.v02 }}\",\n\
+ \"state_topic\": \"solar/battery/esp-5100/%s/state\"\n\
+ },\n\
+ \"ESP-5100_%s_V3\": {\n\
+ \"platform\": \"sensor\",\n\
+ \"device_class\": \"voltage\",\n\
+ \"unit_of_measurement\": \"V\",\n\
+ \"name\": \"Cell 3 Voltage\",\n\
+ \"unique_id\": \"%sv03\",\n\
+ \"value_template\":\"{{ value_json.v03 }}\",\n\
+ \"state_topic\": \"solar/battery/esp-5100/%s/state\"\n\
+ },\n\
+ \"ESP-5100_%s_V4\": {\n\
+ \"platform\": \"sensor\",\n\
+ \"device_class\": \"voltage\",\n\
+ \"unit_of_measurement\": \"V\",\n\
+ \"name\": \"Cell 4 Voltage\",\n\
+ \"unique_id\": \"%sv04\",\n\
+ \"value_template\":\"{{ value_json.v04 }}\",\n\
+ \"state_topic\": \"solar/battery/esp-5100/%s/state\"\n\
+ },\n\
+ \"ESP-5100_%s_V5\": {\n\
+ \"platform\": \"sensor\",\n\
+ \"device_class\": \"voltage\",\n\
+ \"unit_of_measurement\": \"V\",\n\
+ \"name\": \"Cell 5 Voltage\",\n\
+ \"unique_id\": \"%sv05\",\n\
+ \"value_template\":\"{{ value_json.v05 }}\",\n\
+ \"state_topic\": \"solar/battery/esp-5100/%s/state\"\n\
+ },\n\
+ \"ESP-5100_%s_V6\": {\n\
+ \"platform\": \"sensor\",\n\
+ \"device_class\": \"voltage\",\n\
+ \"unit_of_measurement\": \"V\",\n\
+ \"name\": \"Cell 6 Voltage\",\n\
+ \"unique_id\": \"%sv06\",\n\
+ \"value_template\":\"{{ value_json.v06 }}\",\n\
+ \"state_topic\": \"solar/battery/esp-5100/%s/state\"\n\
+ },\n\
+ \"ESP-5100_%s_V7\": {\n\
+ \"platform\": \"sensor\",\n\
+ \"device_class\": \"voltage\",\n\
+ \"unit_of_measurement\": \"V\",\n\
+ \"name\": \"Cell 7 Voltage\",\n\
+ \"unique_id\": \"%sv07\",\n\
+ \"value_template\":\"{{ value_json.v07 }}\",\n\
+ \"state_topic\": \"solar/battery/esp-5100/%s/state\"\n\
+ },\n\
+ \"ESP-5100_%s_V8\": {\n\
+ \"platform\": \"sensor\",\n\
+ \"device_class\": \"voltage\",\n\
+ \"unit_of_measurement\": \"V\",\n\
+ \"name\": \"Cell 8 Voltage\",\n\
+ \"unique_id\": \"%sv08\",\n\
+ \"value_template\":\"{{ value_json.v08 }}\",\n\
+ \"state_topic\": \"solar/battery/esp-5100/%s/state\"\n\
+ },\n\
+ \"ESP-5100_%s_V9\": {\n\
+ \"platform\": \"sensor\",\n\
+ \"device_class\": \"voltage\",\n\
+ \"unit_of_measurement\": \"V\",\n\
+ \"name\": \"Cell 9 Voltage\",\n\
+ \"unique_id\": \"%sv09\",\n\
+ \"value_template\":\"{{ value_json.v09 }}\",\n\
+ \"state_topic\": \"solar/battery/esp-5100/%s/state\"\n\
+ },\n\
+ \"ESP-5100_%s_V10\": {\n\
+ \"platform\": \"sensor\",\n\
+ \"device_class\": \"voltage\",\n\
+ \"unit_of_measurement\": \"V\",\n\
+ \"name\": \"Cell 10 Voltage\",\n\
+ \"unique_id\": \"%sv10\",\n\
+ \"value_template\":\"{{ value_json.v10 }}\",\n\
+ \"state_topic\": \"solar/battery/esp-5100/%s/state\"\n\
+ },\n\
+ \"ESP-5100_%s_V11\": {\n\
+ \"platform\": \"sensor\",\n\
+ \"device_class\": \"voltage\",\n\
+ \"unit_of_measurement\": \"V\",\n\
+ \"name\": \"Cell 11 Voltage\",\n\
+ \"unique_id\": \"%sv11\",\n\
+ \"value_template\":\"{{ value_json.v11 }}\",\n\
+ \"state_topic\": \"solar/battery/esp-5100/%s/state\"\n\
+ },\n\
+ \"ESP-5100_%s_V12\": {\n\
+ \"platform\": \"sensor\",\n\
+ \"device_class\": \"voltage\",\n\
+ \"unit_of_measurement\": \"V\",\n\
+ \"name\": \"Cell 12 Voltage\",\n\
+ \"unique_id\": \"%sv12\",\n\
+ \"value_template\":\"{{ value_json.v12 }}\",\n\
+ \"state_topic\": \"solar/battery/esp-5100/%s/state\"\n\
+ },\n\
+ \"ESP-5100_%s_V13\": {\n\
+ \"platform\": \"sensor\",\n\
+ \"device_class\": \"voltage\",\n\
+ \"unit_of_measurement\": \"V\",\n\
+ \"name\": \"Cell 13 Voltage\",\n\
+ \"unique_id\": \"%sv13\",\n\
+ \"value_template\":\"{{ value_json.v13 }}\",\n\
+ \"state_topic\": \"solar/battery/esp-5100/%s/state\"\n\
+ },\n\
+ \"ESP-5100_%s_V14\": {\n\
+ \"platform\": \"sensor\",\n\
+ \"device_class\": \"voltage\",\n\
+ \"unit_of_measurement\": \"V\",\n\
+ \"name\": \"Cell 14 Voltage\",\n\
+ \"unique_id\": \"%sv14\",\n\
+ \"value_template\":\"{{ value_json.v14 }}\",\n\
+ \"state_topic\": \"solar/battery/esp-5100/%s/state\"\n\
+ },\n\
+ \"ESP-5100_%s_V15\": {\n\
+ \"platform\": \"sensor\",\n\
+ \"device_class\": \"voltage\",\n\
+ \"unit_of_measurement\": \"V\",\n\
+ \"name\": \"Cell 15 Voltage\",\n\
+ \"unique_id\": \"%sv15\",\n\
+ \"value_template\":\"{{ value_json.v15 }}\",\n\
+ \"state_topic\": \"solar/battery/esp-5100/%s/state\"\n\
+ },\n\
+ \"ESP-5100_%s_V16\": {\n\
+ \"platform\": \"sensor\",\n\
+ \"device_class\": \"voltage\",\n\
+ \"unit_of_measurement\": \"V\",\n\
+ \"name\": \"Cell 16 Voltage\",\n\
+ \"unique_id\": \"%sv16\",\n\
+ \"value_template\":\"{{ value_json.v16 }}\",\n\
+ \"state_topic\": \"solar/battery/esp-5100/%s/state\"\n\
+ }\n\
+ \n\
+ }\n\
+}\n\
+",
+ B.sn, B.hw_ver, B.sn, B.sw_ver, MQTT_ESP5100_NAME, MQTT_ESP5100_VERSION, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn,
+ B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn,
+ B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn,
+ B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn,
+ B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn, B.sn);
+
+ int rc = mosquitto_publish (mosq, NULL, topic, strlen (payload), payload, 0, true);
+ if (rc != MOSQ_ERR_SUCCESS) error ("discovery %s: %s", B.sn, mqtt_strerror (rc));
+ if (foreground) info ("%s\n%s", topic, payload);
+}
+
+void
+publish (struct mosquitto *mosq, int battery) {
+ char topic[512] = {0};
+ char payload[8196] = {0};
+
+ snprintf (topic, sizeof (topic), "solar/battery/esp-5100/%s/state", B.sn);
+ snprintf (payload, sizeof (payload),"\
+{\
+ \"canid\": %d, \"soh\": %4.2f, \"soc\": %4.2f, \"i\": %5.3f, \"v\": %5.3f, \"t1\": %d, \"t2\": %d, \"t3\": %d,\
+ \"v1\": %5.3f, \"v2\": %5.3f, \"v3\": %5.3f, \"v4\": %5.3f, \"v5\": %5.3f, \"v6\": %5.3f, \"v7\": %5.3f, \"v8\": %5.3f,\
+ \"v9\": %5.3f, \"v10\": %5.3f, \"v11\": %5.3f, \"v12\": %5.3f, \"v13\": %5.3f, \"v14\": %5.3f, \"v15\": %5.3f, \"v16\": %5.3f }",
+ battery, B.soh, B.soc, (float)B.current, (float)B.f1_voltage / 1000, B.t[0], B.t[1], B.t[2],
+ (float)B.cell_voltages[0] / 1000, (float)B.cell_voltages[1] / 1000, (float)B.cell_voltages[2] / 1000, (float)B.cell_voltages[3] / 1000,
+ (float)B.cell_voltages[4] / 1000, (float)B.cell_voltages[5] / 1000, (float)B.cell_voltages[6] / 1000, (float)B.cell_voltages[7] / 1000,
+ (float)B.cell_voltages[8] / 1000, (float)B.cell_voltages[9] / 1000, (float)B.cell_voltages[10] / 1000, (float)B.cell_voltages[11] / 1000,
+ (float)B.cell_voltages[12] / 1000, (float)B.cell_voltages[13] / 1000, (float)B.cell_voltages[14] / 1000, (float)B.cell_voltages[15] / 1000);
+
+ int rc = mosquitto_publish (mosq, NULL, topic, strlen (payload), payload, 0, true);
+ if (rc != MOSQ_ERR_SUCCESS) error ("publish: %s", mqtt_strerror (rc));
+ if (foreground) info ("%s\n%s\n", topic, payload);
+}
+
+bool
+cs_ok (uint8_t data[8]) {
+ uint8_t cs = 0;
+ for (int i = 0; i < 7; i++) {
+ cs += data[i];
+ }
+ return cs == data[7];
+}
+
+void
+help (void) {
+ printf ("Usage:\n");
+}
+
+void
+version (void) {
+ printf ("Version %s\n", MQTT_ESP5100_VERSION);
+}
+
+
+int
+main (int argc, char *argv[]) {
+ struct mosquitto *mosq;
+ unsigned int interval = 10;
+ char *hostname = DEFAULT_HOSTNAME;
+ int port = DEFAULT_PORT;
+ char *username = NULL;
+ char *password = "";
+ char *pidfile = NULL;
+ struct sockaddr_can addr;
+ struct ifreq ifr;
+ unsigned int can_bus_id = 0;
+ char can_bus[16] = {0};
+ bool verbose = false;
+ int s, o, rc;
+
+ struct option opts[] = {
+ { "hostname", required_argument, NULL, 'H' },
+ { "port", required_argument, NULL, 'P' },
+ { "username", required_argument, NULL, 'u' },
+ { "password", required_argument, NULL, 'p' },
+ { "secret", required_argument, NULL, 's' },
+ { "interval", required_argument, NULL, 'i' },
+ { "bus", required_argument, NULL, 'b' },
+ { "pidfile", required_argument, NULL, 1 },
+ { "foreground", no_argument, NULL, 'f' },
+ { "help", no_argument, NULL, 'h' },
+ { "version", no_argument, NULL, 'v' },
+ { "verbose", no_argument, NULL, 'V' },
+ { NULL, 0, NULL, 0 }
+ };
+
+ while ((o = getopt_long (argc, argv, "H:P:u:p:s:i:b:fhv", opts, NULL)) != -1) {
+ switch (o) {
+ case 'H':
+ hostname = optarg;
+ break;
+ case 'P':
+ {
+ errno = 0;
+ unsigned long p = strtoul (optarg, NULL, 0);
+ if (p == 0 || p > 65535 || errno) {
+ fatal ("invalid port argument '%s'", optarg);
+ }
+ port = (int)p;
+ }
+ break;
+ case 'u':
+ username = optarg;
+ break;
+ case 'p':
+ password = optarg;
+ break;
+ case 's':
+ read_secret_file (optarg, &username, &password);
+ break;
+ case 'i':
+ {
+ errno = 0;
+ unsigned long i = strtoul (optarg, NULL, 0);
+ if (i == 0 || i > UINT_MAX || errno) {
+ fatal ("invalid interval argument '%s'", optarg);
+ } else if (i > 60 * 60) {
+ warning ("interval '%s' seems uselessly large", optarg);
+ }
+ interval = (unsigned int)i;
+ }
+ break;
+ case 'b':
+ {
+ errno = 0;
+ unsigned long b = strtoul (optarg, NULL, 0);
+ if (b == 0 || b > UINT_MAX || errno) {
+ fatal ("invalid CAN bus id '%s'", optarg);
+ } else if (b > 16) {
+ warning ("uh, I doubt your device has %s CAN busses, but whatever", optarg);
+ }
+ can_bus_id = (unsigned int)b;
+ }
+ break;
+ case 'f':
+ foreground = true;
+ break;
+ case 'h':
+ help ();
+ exit (EXIT_SUCCESS);
+ case 'v':
+ version ();
+ exit (EXIT_SUCCESS);
+ case 1:
+ pidfile = optarg;
+ break;
+ case '?':
+ default:
+ printf ("%c\n", o);
+ help ();
+ exit (EXIT_FAILURE);
+ }
+ }
+
+
+ if (! foreground) {
+ if (daemon (0, 0) < 0) {
+ fatal ("failed to daemonize: %s", strerror (errno));
+ }
+ openlog ("mqtt-esp5100", 0, LOG_DAEMON);
+ if (pidfile) {
+ FILE *fp = fopen (pidfile, "wt");
+ if (fp == NULL) {
+ error ("failed to create pid file '%s': %s", pidfile, strerror (errno));
+ } else {
+ fprintf (fp, "%u\n", getpid ());
+ fclose (fp);
+ }
+ }
+ }
+
+ if (signal (SIGINT, sigint) < 0 || signal (SIGTERM, sigint) < 0) {
+ fatal ("signal: %s", strerror (errno));
+ }
+
+ snprintf (can_bus, sizeof (can_bus), "can%u", can_bus_id);
+
+ s = socket (PF_CAN, SOCK_RAW, CAN_RAW); // or PF_CAN, SOCK_DGRAM, CAN_BCM
+ if (s < 0) fatal ("socket(can): %s", strerror (errno));
+
+ strcpy (ifr.ifr_name, can_bus);
+ rc = ioctl (s, SIOCGIFINDEX, &ifr);
+ if (rc < 0) fatal ("ioctl(SIOCGIFINDEX): %s", strerror (errno));
+
+ addr.can_family = AF_CAN;
+ addr.can_ifindex = ifr.ifr_ifindex;
+
+ rc = bind (s, (struct sockaddr *)&addr, sizeof (addr));
+ if (rc < 0) fatal ("bind(): %s", strerror (errno));
+
+
+ info ("publishing to %s:%u every %us", hostname, port, interval);
+
+ mosquitto_lib_init ();
+
+ mosq = mosquitto_new (MQTT_NAME, false, NULL);
+ if (mosq == NULL) {
+ fatal ("mosquitto_new: %s", strerror (errno));
+ }
+
+ if (username) {
+ rc = mosquitto_username_pw_set (mosq, username, password);
+ if (rc != MOSQ_ERR_SUCCESS) {
+ fatal ("%s", mqtt_strerror (rc));
+ }
+ }
+
+ rc = mosquitto_connect (mosq, hostname, port, 60);
+ if (rc != MOSQ_ERR_SUCCESS) {
+ fatal ("mosquitto_connect: %s", mqtt_strerror (rc));
+ }
+
+ exit_immediately = false;
+
+ rc = mosquitto_loop_start (mosq);
+ if (rc != MOSQ_ERR_SUCCESS) {
+ fatal ("%s", mqtt_strerror (rc));
+ }
+
+
+ time_t tp = time (NULL);
+ bool all_ready = false;
+ bool sent_discovery = false;
+
+ while (keep_going) {
+ ssize_t n_bytes;
+ struct can_frame frame;
+ struct timeval tv;
+ n_bytes = read (s, &frame, sizeof (struct can_frame));
+ ioctl (s, SIOCGSTAMP, &tv);
+ if (n_bytes < 0) { error ("read: %s", strerror (errno)); break; }
+ if (n_bytes < sizeof (struct can_frame)) { error ("short read"); break; }
+
+ int battery = (int)(frame.can_id & MSG_SENDER_MASK);
+ if (battery < BATTERY_ID_MIN || battery > BATTERY_ID_MAX) {
+ error ("invalid battery id %d", battery);
+ continue;
+ }
+
+ if ((frame.can_id & MSGID_BATTERIES_MASK) == MSGID_BATTERIES) {
+ //struct batteries *b = (struct batteries *)frame.data;
+ /* XXX */
+
+ } else if ((frame.can_id & MSGID_CELL_VOLTAGE_MASK) == MSGID_CELL_VOLTAGE) {
+ if (! cs_ok (frame.data)) { error ("invalid checksum"); continue; }
+
+ for (int i = 0; i < 3; i++) {
+ int idx = (int)frame.data[0];
+ if (idx + i >= 16) break;
+ uint16_t *v = (uint16_t *)&frame.data[2 * i + 1];
+ B.cell_voltages[idx + i] = *v;
+ }
+
+ } else if ((frame.can_id & MSGID_TEMPERATURE_MASK) == MSGID_TEMPERATURE) {
+ struct temperature *t = (struct temperature *)frame.data;;
+ B.t[0] = t->temperature1;
+ B.t[1] = t->temperature2;
+ B.t[2] = t->temperature3;
+
+ } else if ((frame.can_id & MSG_SUMMARY_MASK) == MSG_SUMMARY) {
+ struct summary *s = (struct summary *)frame.data;
+ if (! cs_ok (frame.data)) { error ("invalid checksum"); continue; }
+
+ if (s->field == 0x01) {
+ B.t_min = s->i01.temperature_min;
+ B.t_max = s->i01.temperature_max;
+ B.f1_unknown = s->i01.unknown;
+ B.f1_voltage = s->i01.voltage;
+ } else if (s->field == 0x02) {
+ B.f2_unknown = s->i02.unknown;
+ B.pack_voltage = s->i02.voltage;
+ } else if (s->field == 0x03) {
+ B.current = (float)s->i03.current / 1000;
+ B.soc = (float)s->i03.soc / 10;
+ } else if (s->field == 0x04) {
+ B.soc_up = (float)s->i04.soc_up / 10;
+ B.soc_max = (float)s->i04.soc_max / 10;
+ } else if (s->field == 0x05) {
+ B.device_id = s->i05.device_id;
+ } else if (s->field == 0x06) {
+ B.charge_cap = (float)s->i06.charge_cap / 100; /* Ah */
+ } else if (s->field == 0x07) {
+ B.discharge_cap = (float)s->i07.discharge_cap / 100; /* Ah */
+ } else if (s->field == 0x08) {
+ B.charge_quantity = (float)s->i08.charge_quantity / 10000; /* kWh */
+ } else if (s->field == 0x09) {
+ B.discharge_quantity = (float)s->i09.discharge_quantity / 10000; /* kWh */
+ } else if (s->field == 0x0a) {
+ B.sw_ver = s->i0a.sw_ver;
+ B.hw_ver = s->i0a.hw_ver;
+ } else if (s->field == 0x0b) {
+ for (int i = 0; i < 4; i++) { B.sn[0 + i] = s->i0b.sn[i]; }
+ } else if (s->field == 0x0c) {
+ for (int i = 0; i < 4; i++) { B.sn[4 + i] = s->i0c.sn[i]; }
+ } else if (s->field == 0x0d) {
+ for (int i = 0; i < 4; i++) { B.sn[8 + i] = s->i0d.sn[i]; }
+ } else if (s->field == 0x0e) {
+ for (int i = 0; i < 4; i++) { B.sn[12 + i] = s->i0e.sn[i]; }
+ } else if (s->field == 0x0f) {
+ for (int i = 0; i < 3; i++) { B.sn[16 + i] = s->i0f.sn[i]; }
+ /* fields 0x10 - 0x14 are always 0 */
+ } else if (s->field == 0x15) {
+ B.soh = (float)s->i15.soh / 10;
+ B.cap0 = s->i15.cap0; /* ?? units ?? */
+ B.cap1 = s->i15.cap1; /* ?? units ?? */
+ }
+
+ if (! B.ready) {
+ B.ready = true;
+ for (int i = 0; i < 19; i++) { B.ready = B.ready && B.sn[i] != 0; }
+ }
+
+ } else if ((frame.can_id & MSGID_FAULTS_MASK) == MSGID_FAULTS) {
+ if (! cs_ok (frame.data)) { error ("invalid checksum"); continue; }
+ struct faults *f = (struct faults *)frame.data;
+
+ if (f->field == 0x00) {
+ for (int i = 0; i < 6; i++) { B.faults[0 + i] = frame.data[1 + i]; }
+ } else if (f->field == 0x01) {
+ for (int i = 0; i < 6; i++) { B.faults[6 + i] = frame.data[1 + i]; }
+ } else if (f->field == 0x02) {
+ for (int i = 0; i < 6; i++) { B.faults[12 + i] = frame.data[1 + i]; }
+ }
+
+ } else if ((frame.can_id & MSGID_E1E6_MASK) == MSGID_E1E6) {
+ for (int i = 0; i < 8; i++) { B.e1e6[i] = frame.data[i]; }
+ } else {
+ printf ("unknown frame 0x%x\n", frame.can_id);
+ }
+
+ if (! all_ready) {
+ all_ready = true;
+ for (int battery = 1; battery < BATTERY_ID_MAX + 1; battery++) { all_ready = all_ready && B.ready; }
+ continue;
+ }
+
+ if (! sent_discovery) {
+ for (int battery = 1; battery < BATTERY_ID_MAX + 1; battery++) discovery (mosq, battery);
+ sent_discovery = true;
+ }
+
+
+ /* XXX: replace with timerfd */
+ time_t n = time (NULL);
+ if (n > tp + interval) {
+ tp = n;
+
+ for (int battery = 1; battery < BATTERY_ID_MAX+1; battery++) {
+ publish (mosq, battery);
+
+ if (verbose) {
+ printf ("== Battery %d SOH %3.1f%% HW 0x%hx SW 0x%hx %s Device ID %u\n Faults <",
+ battery, B.soh, B.hw_ver, B.sw_ver, B.sn, B.device_id);
+ for (int i = 0; i < 18; i++) { printf (" %02hhx", B.faults[i]); }
+ printf (" >\n Current %5.3fA [%scharge] SOC %3.1f%% Temp: %hhu°C %hhu°C %hhu°C%s\n Cell V:",
+ B.current, (B.current < 0 ? "" : "dis"), B.soc,
+ B.t[0], B.t[1], B.t[2], (B.t[0] < 6 || B.t[1] < 6 || B.t[2] < 6 ? " *" : "")); /* note: charging seen at 4°C 4°C 6°C */
+
+ float pack_voltage = 0;
+ for (int i = 0; i < 16; i++) {
+ float v = (float)B.cell_voltages[i] / 1000;
+ pack_voltage += v;
+ printf (" C%u:%5.3fV", i+1, v);
+ }
+ putchar ('\n');
+ printf (" Voltage avg: %5.3fV (computed: %5.3fV) Pack Voltage: %6.3fV (computed %6.3fV) f1_u: 0x%04hx (%hu) f2_u: 0x%04hx (%hu)\n",
+ (float)B.f1_voltage / 1000, pack_voltage / 16, (float)B.pack_voltage / 1000, pack_voltage, B.f1_unknown, B.f1_unknown, B.f2_unknown, B.f2_unknown);
+ printf (" E1E6: %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx\n",
+ B.e1e6[0], B.e1e6[1], B.e1e6[2], B.e1e6[3], B.e1e6[4], B.e1e6[5], B.e1e6[6], B.e1e6[7]);
+ }
+ }
+ if (verbose) printf ("\n");
+ }
+
+ }
+
+ close (s);
+
+ mosquitto_disconnect (mosq);
+ mosquitto_loop_stop (mosq, false);
+ mosquitto_destroy (mosq);
+ mosquitto_lib_cleanup ();
+
+ if (pidfile) {
+ unlink (pidfile);
+ }
+
+ return 0;
+}
+
+
+/*
+ == Battery 1 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010208 Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -13.109A [charge] SOC 66.7% Temp: 10°C 10°C 12°C
+ Cell V: C1:3.372V C2:3.379V C3:3.378V C4:3.371V C5:3.374V C6:3.371V C7:3.373V C8:3.377V C9:3.382V C10:3.379V C11:3.389V C12:3.389V C13:3.385V C14:3.389V C15:3.384V C16:3.389V
+ f1_v: 3380 f1_u: 0x050a (1290) f2: 03 43 00 00 00 00
+
+== Battery 2 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010136 Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -14.341A [charge] SOC 65.1% Temp: 10°C 11°C 13°C
+ Cell V: C1:3.380V C2:3.382V C3:3.380V C4:3.388V C5:3.377V C6:3.372V C7:3.383V C8:3.374V C9:3.379V C10:3.370V C11:3.372V C12:3.386V C13:3.388V C14:3.388V C15:3.390V C16:3.389V
+ f1_v: 3380 f1_u: 0x0f01 (3841) f2: 03 4c 00 00 00 00
+== Battery 3 SOH 98.2% HW 0x1 SW 0xcc 1416719SLKOPG010166 Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -20.115A [charge] SOC 55.3% Temp: 13°C 13°C 15°C
+ Cell V: C1:3.384V C2:3.389V C3:3.385V C4:3.392V C5:3.378V C6:3.376V C7:3.381V C8:3.379V C9:3.380V C10:3.376V C11:3.383V C12:3.374V C13:3.384V C14:3.379V C15:3.383V C16:3.392V
+ f1_v: 3382 f1_u: 0x0c01 (3073) f2: 03 60 00 00 00 00
+== Battery 4 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010175 Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -14.376A [charge] SOC 60.6% Temp: 9°C 9°C 10°C
+ Cell V: C1:3.375V C2:3.376V C3:3.381V C4:3.384V C5:3.379V C6:3.382V C7:3.378V C8:3.379V C9:3.392V C10:3.391V C11:3.380V C12:3.388V C13:3.390V C14:3.390V C15:3.389V C16:3.393V
+ f1_v: 3384 f1_u: 0x0901 (2305) f2: 03 84 00 00 00 00
+== Battery 5 SOH 98.6% HW 0x1 SW 0xcc 1416719SLKOPG010084 Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -13.273A [charge] SOC 64.1% Temp: 11°C 11°C 11°C
+ Cell V: C1:3.392V C2:3.377V C3:3.376V C4:3.373V C5:3.376V C6:3.390V C7:3.383V C8:3.387V C9:3.389V C10:3.387V C11:3.388V C12:3.387V C13:3.386V C14:3.392V C15:3.389V C16:3.396V
+ f1_v: 3385 f1_u: 0x1001 (4097) f2: 01 94 00 00 00 00
+== Battery 6 SOH 98.5% HW 0x1 SW 0xcc 1416719SLKOPG010153 Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -15.867A [charge] SOC 59.7% Temp: 10°C 10°C 11°C
+ Cell V: C1:3.385V C2:3.372V C3:3.371V C4:3.376V C5:3.372V C6:3.388V C7:3.382V C8:3.381V C9:3.390V C10:3.384V C11:3.381V C12:3.385V C13:3.386V C14:3.385V C15:3.390V C16:3.388V
+ f1_v: 3382 f1_u: 0x0f01 (3841) f2: 03 64 00 00 00 00
+== Battery 7 SOH 99.8% HW 0x1 SW 0xcc 1416330SLKOPG008100 Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -6.124A [charge] SOC 81.6% Temp: 6°C 6°C 8°C
+ Cell V: C1:3.378V C2:3.380V C3:3.383V C4:3.384V C5:3.376V C6:3.376V C7:3.382V C8:3.387V C9:3.387V C10:3.386V C11:3.376V C12:3.392V C13:3.388V C14:3.387V C15:3.387V C16:3.387V
+ f1_v: 3383 f1_u: 0x0c01 (3073) f2: 03 73 00 00 00 00
+== Battery 8 SOH 99.7% HW 0x1 SW 0xcc 1416719SLKOPG010159 Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -14.801A [charge] SOC 68.0% Temp: 12°C 12°C 14°C
+ Cell V: C1:3.380V C2:3.375V C3:3.378V C4:3.382V C5:3.382V C6:3.378V C7:3.378V C8:3.385V C9:3.379V C10:3.383V C11:3.381V C12:3.377V C13:3.384V C14:3.385V C15:3.377V C16:3.392V
+ f1_v: 3380 f1_u: 0x1001 (4097) f2: 03 4e 00 00 00 00
+
+*/
+
+
+
+/*
+
+ Cold battery, transition from not charging to charging:
+
+
+
+ == Battery 1 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010208 Device ID 22507318
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 0.000A [discharge] SOC 47.3% Temp: 4°C 5°C 7°C *
+ Cell V: C1:3.274V C2:3.270V C3:3.270V C4:3.263V C5:3.268V C6:3.264V C7:3.276V C8:3.278V C9:3.274V C10:3.277V C11:3.265V C12:3.264V C13:3.269V C14:3.266V C15:3.272V C16:3.272V
+ Voltage avg: 3.270V (computed: 3.270V) Pack Voltage: 52.321V (computed 52.322V) f1_u: 0x0307 (775) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 2 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010136 Device ID 22507087
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 0.000A [discharge] SOC 40.7% Temp: 5°C 5°C 8°C *
+ Cell V: C1:3.271V C2:3.272V C3:3.270V C4:3.272V C5:3.271V C6:3.275V C7:3.274V C8:3.272V C9:3.274V C10:3.276V C11:3.276V C12:3.270V C13:3.270V C14:3.268V C15:3.268V C16:3.271V
+ Voltage avg: 3.271V (computed: 3.272V) Pack Voltage: 52.347V (computed 52.350V) f1_u: 0x0f01 (3841) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 c6 0c 79
+== Battery 3 SOH 96.5% HW 0x1 SW 0x3cc 1416719SLKOPG010166 Device ID 22507155
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -0.183A [charge] SOC 31.1% Temp: 7°C 8°C 10°C
+ Cell V: C1:3.275V C2:3.275V C3:3.275V C4:3.274V C5:3.272V C6:3.274V C7:3.270V C8:3.275V C9:3.273V C10:3.273V C11:3.273V C12:3.273V C13:3.273V C14:3.277V C15:3.276V C16:3.274V
+ Voltage avg: 3.274V (computed: 3.274V) Pack Voltage: 52.384V (computed 52.382V) f1_u: 0x060d (1549) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 4 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010175 Device ID 22507145
+ Faults < 00 00 00 02 00 00 00 20 00 00 00 00 00 00 00 20 00 00 >
+ Current 0.000A [discharge] SOC 39.2% Temp: 5°C 6°C 7°C *
+ Cell V: C1:3.277V C2:3.274V C3:3.273V C4:3.268V C5:3.266V C6:3.267V C7:3.277V C8:3.277V C9:3.268V C10:3.270V C11:3.278V C12:3.275V C13:3.276V C14:3.277V C15:3.279V C16:3.275V
+ Voltage avg: 3.273V (computed: 3.274V) Pack Voltage: 52.374V (computed 52.377V) f1_u: 0x0f01 (3841) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 e6
+== Battery 5 SOH 97.1% HW 0x1 SW 0x3cc 1416719SLKOPG010084 Device ID 22507255
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -0.181A [charge] SOC 40.6% Temp: 7°C 6°C 8°C
+ Cell V: C1:3.277V C2:3.280V C3:3.280V C4:3.280V C5:3.281V C6:3.278V C7:3.281V C8:3.281V C9:3.258V C10:3.263V C11:3.269V C12:3.271V C13:3.273V C14:3.266V C15:3.276V C16:3.272V
+ Voltage avg: 3.273V (computed: 3.274V) Pack Voltage: 52.388V (computed 52.386V) f1_u: 0x0901 (2305) f2_u: 0x0102 (258)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 6 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010153 Device ID 22507081
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 20 00 00 >
+ Current 0.000A [discharge] SOC 29.5% Temp: 9°C 8°C 9°C
+ Cell V: C1:3.264V C2:3.271V C3:3.270V C4:3.266V C5:3.270V C6:3.266V C7:3.267V C8:3.273V C9:3.263V C10:3.273V C11:3.279V C12:3.275V C13:3.276V C14:3.275V C15:3.274V C16:3.279V
+ Voltage avg: 3.271V (computed: 3.271V) Pack Voltage: 52.338V (computed 52.341V) f1_u: 0x000a (10) f2_u: 0x0100 (256)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 7 SOH 98.9% HW 0x1 SW 0x3cc 1416330SLKOPG008100 Device ID 22501168
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 1.013A [discharge] SOC 73.9% Temp: 11°C 11°C 14°C
+ Cell V: C1:3.273V C2:3.271V C3:3.269V C4:3.265V C5:3.268V C6:3.270V C7:3.270V C8:3.270V C9:3.271V C10:3.268V C11:3.271V C12:3.267V C13:3.269V C14:3.271V C15:3.273V C16:3.276V
+ Voltage avg: 3.270V (computed: 3.270V) Pack Voltage: 52.324V (computed 52.322V) f1_u: 0x030f (783) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 8 SOH 98.2% HW 0x1 SW 0x3cc 1416719SLKOPG010159 Device ID 22507035
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 0.000A [discharge] SOC 55.6% Temp: 6°C 7°C 10°C
+ Cell V: C1:3.275V C2:3.271V C3:3.271V C4:3.269V C5:3.270V C6:3.270V C7:3.270V C8:3.272V C9:3.272V C10:3.267V C11:3.273V C12:3.275V C13:3.275V C14:3.271V C15:3.273V C16:3.271V
+ Voltage avg: 3.271V (computed: 3.272V) Pack Voltage: 52.346V (computed 52.345V) f1_u: 0x0900 (2304) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 01
+
+== Battery 1 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010208 Device ID 22507318
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 0.000A [discharge] SOC 47.3% Temp: 4°C 5°C 7°C *
+ Cell V: C1:3.275V C2:3.271V C3:3.271V C4:3.263V C5:3.268V C6:3.264V C7:3.276V C8:3.278V C9:3.274V C10:3.277V C11:3.264V C12:3.262V C13:3.269V C14:3.266V C15:3.272V C16:3.274V
+ Voltage avg: 3.270V (computed: 3.270V) Pack Voltage: 52.321V (computed 52.324V) f1_u: 0x0307 (775) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 02
+== Battery 2 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010136 Device ID 22507087
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 0.000A [discharge] SOC 40.7% Temp: 5°C 5°C 8°C *
+ Cell V: C1:3.271V C2:3.272V C3:3.270V C4:3.272V C5:3.271V C6:3.275V C7:3.274V C8:3.273V C9:3.275V C10:3.278V C11:3.278V C12:3.272V C13:3.270V C14:3.268V C15:3.268V C16:3.271V
+ Voltage avg: 3.271V (computed: 3.272V) Pack Voltage: 52.347V (computed 52.358V) f1_u: 0x0f01 (3841) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 02
+== Battery 3 SOH 96.5% HW 0x1 SW 0x3cc 1416719SLKOPG010166 Device ID 22507155
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -0.183A [charge] SOC 31.1% Temp: 7°C 8°C 10°C
+ Cell V: C1:3.275V C2:3.275V C3:3.275V C4:3.274V C5:3.272V C6:3.274V C7:3.268V C8:3.275V C9:3.272V C10:3.273V C11:3.274V C12:3.274V C13:3.275V C14:3.279V C15:3.278V C16:3.274V
+ Voltage avg: 3.274V (computed: 3.274V) Pack Voltage: 52.384V (computed 52.387V) f1_u: 0x060d (1549) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 4 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010175 Device ID 22507145
+ Faults < 00 00 00 02 00 00 00 20 00 00 00 00 00 00 00 20 00 00 >
+ Current 0.000A [discharge] SOC 39.2% Temp: 5°C 5°C 7°C *
+ Cell V: C1:3.276V C2:3.273V C3:3.272V C4:3.268V C5:3.266V C6:3.267V C7:3.277V C8:3.277V C9:3.268V C10:3.270V C11:3.278V C12:3.275V C13:3.276V C14:3.277V C15:3.279V C16:3.275V
+ Voltage avg: 3.273V (computed: 3.273V) Pack Voltage: 52.374V (computed 52.374V) f1_u: 0x0f01 (3841) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 c4 0c 88
+== Battery 5 SOH 97.1% HW 0x1 SW 0x3cc 1416719SLKOPG010084 Device ID 22507255
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -0.181A [charge] SOC 40.6% Temp: 7°C 6°C 8°C
+ Cell V: C1:3.277V C2:3.280V C3:3.280V C4:3.280V C5:3.280V C6:3.276V C7:3.281V C8:3.282V C9:3.260V C10:3.266V C11:3.270V C12:3.272V C13:3.273V C14:3.266V C15:3.276V C16:3.272V
+ Voltage avg: 3.273V (computed: 3.274V) Pack Voltage: 52.388V (computed 52.391V) f1_u: 0x0901 (2305) f2_u: 0x0102 (258)
+ E1E6: 01 01 00 01 01 00 00 02
+== Battery 6 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010153 Device ID 22507081
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 20 00 00 >
+ Current 0.000A [discharge] SOC 29.5% Temp: 9°C 8°C 9°C
+ Cell V: C1:3.264V C2:3.271V C3:3.270V C4:3.266V C5:3.270V C6:3.266V C7:3.267V C8:3.273V C9:3.263V C10:3.272V C11:3.278V C12:3.275V C13:3.277V C14:3.275V C15:3.274V C16:3.280V
+ Voltage avg: 3.273V (computed: 3.271V) Pack Voltage: 52.338V (computed 52.341V) f1_u: 0x030a (778) f2_u: 0x0100 (256)
+ E1E6: 01 01 00 01 01 c9 0c f4
+== Battery 7 SOH 98.9% HW 0x1 SW 0x3cc 1416330SLKOPG008100 Device ID 22501168
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 1.013A [discharge] SOC 73.9% Temp: 11°C 11°C 14°C
+ Cell V: C1:3.274V C2:3.273V C3:3.270V C4:3.265V C5:3.268V C6:3.270V C7:3.270V C8:3.270V C9:3.271V C10:3.268V C11:3.271V C12:3.267V C13:3.268V C14:3.271V C15:3.272V C16:3.276V
+ Voltage avg: 3.272V (computed: 3.270V) Pack Voltage: 52.324V (computed 52.324V) f1_u: 0x030f (783) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 8 SOH 98.2% HW 0x1 SW 0x3cc 1416719SLKOPG010159 Device ID 22507035
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 0.000A [discharge] SOC 55.6% Temp: 6°C 7°C 10°C
+ Cell V: C1:3.275V C2:3.272V C3:3.271V C4:3.271V C5:3.271V C6:3.271V C7:3.270V C8:3.272V C9:3.272V C10:3.267V C11:3.273V C12:3.275V C13:3.275V C14:3.271V C15:3.273V C16:3.271V
+ Voltage avg: 3.271V (computed: 3.272V) Pack Voltage: 52.346V (computed 52.350V) f1_u: 0x0900 (2304) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 00
+
+== Battery 1 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010208 Device ID 22507318
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 0.000A [discharge] SOC 47.3% Temp: 4°C 5°C 7°C *
+ Cell V: C1:3.275V C2:3.271V C3:3.271V C4:3.265V C5:3.270V C6:3.266V C7:3.278V C8:3.280V C9:3.278V C10:3.280V C11:3.271V C12:3.270V C13:3.269V C14:3.266V C15:3.272V C16:3.274V
+ Voltage avg: 3.270V (computed: 3.272V) Pack Voltage: 52.321V (computed 52.356V) f1_u: 0x0307 (775) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 02
+== Battery 2 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010136 Device ID 22507087
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 0.000A [discharge] SOC 40.7% Temp: 5°C 5°C 8°C *
+ Cell V: C1:3.275V C2:3.275V C3:3.274V C4:3.272V C5:3.271V C6:3.275V C7:3.274V C8:3.273V C9:3.275V C10:3.278V C11:3.278V C12:3.272V C13:3.273V C14:3.270V C15:3.271V C16:3.275V
+ Voltage avg: 3.271V (computed: 3.274V) Pack Voltage: 52.347V (computed 52.381V) f1_u: 0x0f01 (3841) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 3 SOH 96.5% HW 0x1 SW 0x3cc 1416719SLKOPG010166 Device ID 22507155
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -0.183A [charge] SOC 31.1% Temp: 7°C 8°C 10°C
+ Cell V: C1:3.278V C2:3.277V C3:3.278V C4:3.278V C5:3.276V C6:3.277V C7:3.273V C8:3.279V C9:3.278V C10:3.273V C11:3.274V C12:3.274V C13:3.275V C14:3.279V C15:3.278V C16:3.277V
+ Voltage avg: 3.274V (computed: 3.276V) Pack Voltage: 52.384V (computed 52.424V) f1_u: 0x060d (1549) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 13
+== Battery 4 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010175 Device ID 22507145
+ Faults < 00 00 00 02 00 00 00 20 00 00 00 00 00 00 00 20 00 00 >
+ Current 0.000A [discharge] SOC 39.2% Temp: 6°C 5°C 7°C *
+ Cell V: C1:3.280V C2:3.277V C3:3.279V C4:3.268V C5:3.266V C6:3.267V C7:3.277V C8:3.277V C9:3.268V C10:3.271V C11:3.280V C12:3.276V C13:3.279V C14:3.280V C15:3.282V C16:3.278V
+ Voltage avg: 3.273V (computed: 3.275V) Pack Voltage: 52.374V (computed 52.405V) f1_u: 0x0f01 (3841) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 5 SOH 97.1% HW 0x1 SW 0x3cc 1416719SLKOPG010084 Device ID 22507255
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -0.181A [charge] SOC 40.6% Temp: 7°C 6°C 8°C
+ Cell V: C1:3.281V C2:3.284V C3:3.283V C4:3.280V C5:3.280V C6:3.276V C7:3.281V C8:3.282V C9:3.260V C10:3.266V C11:3.270V C12:3.272V C13:3.275V C14:3.269V C15:3.278V C16:3.275V
+ Voltage avg: 3.273V (computed: 3.276V) Pack Voltage: 52.388V (computed 52.412V) f1_u: 0x0901 (2305) f2_u: 0x0102 (258)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 6 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010153 Device ID 22507081
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 20 00 00 >
+ Current -1.616A [charge] SOC 29.5% Temp: 9°C 8°C 9°C
+ Cell V: C1:3.267V C2:3.272V C3:3.272V C4:3.267V C5:3.273V C6:3.269V C7:3.272V C8:3.276V C9:3.267V C10:3.276V C11:3.283V C12:3.279V C13:3.277V C14:3.275V C15:3.274V C16:3.280V
+ Voltage avg: 3.273V (computed: 3.274V) Pack Voltage: 52.377V (computed 52.379V) f1_u: 0x030a (778) f2_u: 0x0100 (256)
+ E1E6: 01 01 00 01 01 10 03 b3
+== Battery 7 SOH 98.9% HW 0x1 SW 0x3cc 1416330SLKOPG008100 Device ID 22501168
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 0.276A [discharge] SOC 73.9% Temp: 11°C 11°C 14°C
+ Cell V: C1:3.274V C2:3.273V C3:3.270V C4:3.269V C5:3.271V C6:3.272V C7:3.273V C8:3.275V C9:3.273V C10:3.275V C11:3.274V C12:3.272V C13:3.273V C14:3.276V C15:3.277V C16:3.276V
+ Voltage avg: 3.272V (computed: 3.273V) Pack Voltage: 52.367V (computed 52.373V) f1_u: 0x030f (783) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 10 03 39
+== Battery 8 SOH 98.2% HW 0x1 SW 0x3cc 1416719SLKOPG010159 Device ID 22507035
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 0.000A [discharge] SOC 55.6% Temp: 6°C 7°C 10°C
+ Cell V: C1:3.275V C2:3.272V C3:3.271V C4:3.271V C5:3.271V C6:3.271V C7:3.272V C8:3.275V C9:3.275V C10:3.271V C11:3.276V C12:3.278V C13:3.278V C14:3.276V C15:3.276V C16:3.277V
+ Voltage avg: 3.271V (computed: 3.274V) Pack Voltage: 52.346V (computed 52.385V) f1_u: 0x0900 (2304) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 00
+
+== Battery 1 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010208 Device ID 22507318
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -1.762A [charge] SOC 47.3% Temp: 4°C 5°C 7°C *
+ Cell V: C1:3.278V C2:3.274V C3:3.276V C4:3.265V C5:3.270V C6:3.266V C7:3.278V C8:3.280V C9:3.278V C10:3.280V C11:3.271V C12:3.270V C13:3.275V C14:3.271V C15:3.277V C16:3.277V
+ Voltage avg: 3.274V (computed: 3.274V) Pack Voltage: 52.392V (computed 52.386V) f1_u: 0x0307 (775) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 d9 01 f2
+== Battery 2 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010136 Device ID 22507087
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 0.000A [discharge] SOC 40.7% Temp: 5°C 5°C 8°C *
+ Cell V: C1:3.275V C2:3.275V C3:3.274V C4:3.277V C5:3.276V C6:3.278V C7:3.278V C8:3.276V C9:3.279V C10:3.281V C11:3.280V C12:3.276V C13:3.277V C14:3.274V C15:3.274V C16:3.275V
+ Voltage avg: 3.271V (computed: 3.277V) Pack Voltage: 52.347V (computed 52.425V) f1_u: 0x0f01 (3841) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 02
+== Battery 3 SOH 96.5% HW 0x1 SW 0x3cc 1416719SLKOPG010166 Device ID 22507155
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -0.183A [charge] SOC 31.1% Temp: 7°C 8°C 10°C
+ Cell V: C1:3.278V C2:3.277V C3:3.278V C4:3.278V C5:3.276V C6:3.277V C7:3.273V C8:3.279V C9:3.278V C10:3.277V C11:3.277V C12:3.277V C13:3.277V C14:3.281V C15:3.281V C16:3.280V
+ Voltage avg: 3.274V (computed: 3.278V) Pack Voltage: 52.384V (computed 52.444V) f1_u: 0x060d (1549) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 eb
+== Battery 4 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010175 Device ID 22507145
+ Faults < 00 00 00 02 00 00 00 20 00 00 00 00 00 00 00 20 00 00 >
+ Current 0.000A [discharge] SOC 39.2% Temp: 6°C 5°C 7°C *
+ Cell V: C1:3.280V C2:3.277V C3:3.279V C4:3.274V C5:3.272V C6:3.271V C7:3.280V C8:3.281V C9:3.272V C10:3.275V C11:3.281V C12:3.279V C13:3.279V C14:3.280V C15:3.282V C16:3.278V
+ Voltage avg: 3.273V (computed: 3.277V) Pack Voltage: 52.374V (computed 52.440V) f1_u: 0x0f01 (3841) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 cf 0c 98
+== Battery 5 SOH 97.1% HW 0x1 SW 0x3cc 1416719SLKOPG010084 Device ID 22507255
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -0.181A [charge] SOC 40.6% Temp: 7°C 6°C 8°C
+ Cell V: C1:3.281V C2:3.284V C3:3.283V C4:3.284V C5:3.285V C6:3.280V C7:3.284V C8:3.286V C9:3.265V C10:3.270V C11:3.273V C12:3.275V C13:3.278V C14:3.271V C15:3.280V C16:3.275V
+ Voltage avg: 3.273V (computed: 3.278V) Pack Voltage: 52.388V (computed 52.454V) f1_u: 0x0901 (2305) f2_u: 0x0102 (258)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 6 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010153 Device ID 22507081
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 20 00 00 >
+ Current -1.616A [charge] SOC 29.5% Temp: 9°C 8°C 9°C
+ Cell V: C1:3.271V C2:3.276V C3:3.275V C4:3.267V C5:3.273V C6:3.269V C7:3.272V C8:3.276V C9:3.267V C10:3.276V C11:3.283V C12:3.279V C13:3.281V C14:3.278V C15:3.278V C16:3.282V
+ Voltage avg: 3.273V (computed: 3.275V) Pack Voltage: 52.377V (computed 52.403V) f1_u: 0x030a (778) f2_u: 0x0100 (256)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 7 SOH 98.9% HW 0x1 SW 0x3cc 1416330SLKOPG008100 Device ID 22501168
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 0.276A [discharge] SOC 73.9% Temp: 11°C 11°C 14°C
+ Cell V: C1:3.276V C2:3.275V C3:3.273V C4:3.273V C5:3.275V C6:3.275V C7:3.273V C8:3.275V C9:3.273V C10:3.275V C11:3.274V C12:3.272V C13:3.273V C14:3.276V C15:3.277V C16:3.279V
+ Voltage avg: 3.272V (computed: 3.275V) Pack Voltage: 52.367V (computed 52.394V) f1_u: 0x030f (783) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 01
+== Battery 8 SOH 98.2% HW 0x1 SW 0x3cc 1416719SLKOPG010159 Device ID 22507035
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 0.000A [discharge] SOC 55.6% Temp: 6°C 7°C 10°C
+ Cell V: C1:3.278V C2:3.275V C3:3.275V C4:3.275V C5:3.275V C6:3.274V C7:3.275V C8:3.278V C9:3.278V C10:3.271V C11:3.276V C12:3.278V C13:3.278V C14:3.276V C15:3.276V C16:3.277V
+ Voltage avg: 3.271V (computed: 3.276V) Pack Voltage: 52.346V (computed 52.415V) f1_u: 0x0900 (2304) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 22 88
+
+== Battery 1 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010208 Device ID 22507318
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -1.762A [charge] SOC 47.3% Temp: 4°C 5°C 7°C *
+ Cell V: C1:3.278V C2:3.274V C3:3.276V C4:3.270V C5:3.274V C6:3.269V C7:3.279V C8:3.283V C9:3.281V C10:3.283V C11:3.272V C12:3.272V C13:3.275V C14:3.271V C15:3.277V C16:3.277V
+ Voltage avg: 3.274V (computed: 3.276V) Pack Voltage: 52.392V (computed 52.411V) f1_u: 0x0307 (775) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 02
+== Battery 2 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010136 Device ID 22507087
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 0.000A [discharge] SOC 40.7% Temp: 5°C 5°C 8°C *
+ Cell V: C1:3.277V C2:3.277V C3:3.275V C4:3.279V C5:3.277V C6:3.280V C7:3.278V C8:3.276V C9:3.279V C10:3.281V C11:3.280V C12:3.276V C13:3.277V C14:3.274V C15:3.274V C16:3.277V
+ Voltage avg: 3.277V (computed: 3.277V) Pack Voltage: 52.438V (computed 52.437V) f1_u: 0x0e05 (3589) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 3 SOH 96.5% HW 0x1 SW 0x3cc 1416719SLKOPG010166 Device ID 22507155
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -3.012A [charge] SOC 31.1% Temp: 7°C 8°C 10°C
+ Cell V: C1:3.281V C2:3.280V C3:3.281V C4:3.281V C5:3.278V C6:3.278V C7:3.275V C8:3.280V C9:3.280V C10:3.277V C11:3.277V C12:3.277V C13:3.277V C14:3.281V C15:3.281V C16:3.280V
+ Voltage avg: 3.279V (computed: 3.279V) Pack Voltage: 52.467V (computed 52.464V) f1_u: 0x0f01 (3841) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 10 03 87
+== Battery 4 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010175 Device ID 22507145
+ Faults < 00 00 00 02 00 00 00 20 00 00 00 00 00 00 00 20 00 00 >
+ Current 0.000A [discharge] SOC 39.2% Temp: 6°C 5°C 7°C *
+ Cell V: C1:3.281V C2:3.279V C3:3.279V C4:3.274V C5:3.272V C6:3.271V C7:3.280V C8:3.281V C9:3.272V C10:3.275V C11:3.281V C12:3.279V C13:3.281V C14:3.282V C15:3.283V C16:3.280V
+ Voltage avg: 3.273V (computed: 3.278V) Pack Voltage: 52.374V (computed 52.450V) f1_u: 0x0f01 (3841) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 14
+== Battery 5 SOH 97.1% HW 0x1 SW 0x3cc 1416719SLKOPG010084 Device ID 22507255
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -0.181A [charge] SOC 40.6% Temp: 7°C 6°C 8°C
+ Cell V: C1:3.283V C2:3.284V C3:3.286V C4:3.286V C5:3.287V C6:3.282V C7:3.284V C8:3.286V C9:3.265V C10:3.270V C11:3.273V C12:3.275V C13:3.278V C14:3.271V C15:3.280V C16:3.279V
+ Voltage avg: 3.273V (computed: 3.279V) Pack Voltage: 52.388V (computed 52.469V) f1_u: 0x0901 (2305) f2_u: 0x0102 (258)
+ E1E6: 01 01 00 01 01 d2 0c a6
+== Battery 6 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010153 Device ID 22507081
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 20 00 00 >
+ Current -1.616A [charge] SOC 29.5% Temp: 9°C 8°C 9°C
+ Cell V: C1:3.271V C2:3.276V C3:3.275V C4:3.269V C5:3.275V C6:3.272V C7:3.274V C8:3.278V C9:3.270V C10:3.277V C11:3.284V C12:3.280V C13:3.281V C14:3.278V C15:3.278V C16:3.282V
+ Voltage avg: 3.273V (computed: 3.276V) Pack Voltage: 52.377V (computed 52.420V) f1_u: 0x030a (778) f2_u: 0x0100 (256)
+ E1E6: 01 01 00 01 01 00 00 d7
+== Battery 7 SOH 98.9% HW 0x1 SW 0x3cc 1416330SLKOPG008100 Device ID 22501168
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 0.276A [discharge] SOC 73.9% Temp: 11°C 11°C 14°C
+ Cell V: C1:3.276V C2:3.275V C3:3.273V C4:3.273V C5:3.275V C6:3.275V C7:3.275V C8:3.277V C9:3.277V C10:3.277V C11:3.275V C12:3.275V C13:3.275V C14:3.278V C15:3.277V C16:3.279V
+ Voltage avg: 3.272V (computed: 3.276V) Pack Voltage: 52.367V (computed 52.412V) f1_u: 0x030f (783) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 8 SOH 98.2% HW 0x1 SW 0x3cc 1416719SLKOPG010159 Device ID 22507035
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 0.000A [discharge] SOC 55.6% Temp: 6°C 7°C 10°C
+ Cell V: C1:3.278V C2:3.275V C3:3.275V C4:3.275V C5:3.275V C6:3.274V C7:3.275V C8:3.278V C9:3.278V C10:3.273V C11:3.278V C12:3.280V C13:3.280V C14:3.277V C15:3.277V C16:3.279V
+ Voltage avg: 3.271V (computed: 3.277V) Pack Voltage: 52.346V (computed 52.427V) f1_u: 0x0900 (2304) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 00
+
+== Battery 1 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010208 Device ID 22507318
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -1.762A [charge] SOC 47.3% Temp: 4°C 5°C 7°C *
+ Cell V: C1:3.278V C2:3.277V C3:3.275V C4:3.269V C5:3.273V C6:3.273V C7:3.279V C8:3.283V C9:3.281V C10:3.283V C11:3.272V C12:3.272V C13:3.275V C14:3.274V C15:3.278V C16:3.279V
+ Voltage avg: 3.274V (computed: 3.276V) Pack Voltage: 52.392V (computed 52.421V) f1_u: 0x0307 (775) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 02
+== Battery 2 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010136 Device ID 22507087
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.461A [charge] SOC 40.7% Temp: 5°C 5°C 8°C *
+ Cell V: C1:3.277V C2:3.277V C3:3.275V C4:3.279V C5:3.277V C6:3.280V C7:3.279V C8:3.278V C9:3.282V C10:3.282V C11:3.283V C12:3.276V C13:3.277V C14:3.275V C15:3.276V C16:3.277V
+ Voltage avg: 3.277V (computed: 3.278V) Pack Voltage: 52.438V (computed 52.450V) f1_u: 0x0e05 (3589) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 3 SOH 96.5% HW 0x1 SW 0x3cc 1416719SLKOPG010166 Device ID 22507155
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -3.012A [charge] SOC 31.1% Temp: 7°C 8°C 10°C
+ Cell V: C1:3.282V C2:3.281V C3:3.283V C4:3.281V C5:3.278V C6:3.278V C7:3.275V C8:3.280V C9:3.280V C10:3.278V C11:3.279V C12:3.278V C13:3.280V C14:3.282V C15:3.283V C16:3.282V
+ Voltage avg: 3.279V (computed: 3.280V) Pack Voltage: 52.467V (computed 52.480V) f1_u: 0x0f01 (3841) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 b5
+== Battery 4 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010175 Device ID 22507145
+ Faults < 00 00 00 02 00 00 00 20 00 00 00 00 00 00 00 20 00 00 >
+ Current 0.000A [discharge] SOC 39.2% Temp: 6°C 6°C 7°C
+ Cell V: C1:3.281V C2:3.279V C3:3.279V C4:3.274V C5:3.273V C6:3.274V C7:3.282V C8:3.281V C9:3.273V C10:3.276V C11:3.283V C12:3.281V C13:3.283V C14:3.284V C15:3.286V C16:3.280V
+ Voltage avg: 3.279V (computed: 3.279V) Pack Voltage: 52.374V (computed 52.469V) f1_u: 0x0b01 (2817) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 cf 0c f5
+== Battery 5 SOH 97.1% HW 0x1 SW 0x3cc 1416719SLKOPG010084 Device ID 22507255
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -0.181A [charge] SOC 40.6% Temp: 7°C 6°C 8°C
+ Cell V: C1:3.283V C2:3.284V C3:3.286V C4:3.286V C5:3.287V C6:3.282V C7:3.285V C8:3.287V C9:3.268V C10:3.271V C11:3.275V C12:3.277V C13:3.281V C14:3.272V C15:3.283V C16:3.279V
+ Voltage avg: 3.273V (computed: 3.280V) Pack Voltage: 52.388V (computed 52.486V) f1_u: 0x0901 (2305) f2_u: 0x0102 (258)
+ E1E6: 01 01 00 01 01 00 00 97
+== Battery 6 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010153 Device ID 22507081
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 20 00 00 >
+ Current -1.616A [charge] SOC 29.5% Temp: 9°C 8°C 9°C
+ Cell V: C1:3.271V C2:3.277V C3:3.276V C4:3.271V C5:3.276V C6:3.275V C7:3.274V C8:3.278V C9:3.270V C10:3.277V C11:3.284V C12:3.280V C13:3.282V C14:3.281V C15:3.280V C16:3.282V
+ Voltage avg: 3.273V (computed: 3.277V) Pack Voltage: 52.377V (computed 52.434V) f1_u: 0x030a (778) f2_u: 0x0100 (256)
+ E1E6: 01 01 00 01 01 00 00 e6
+== Battery 7 SOH 98.9% HW 0x1 SW 0x3cc 1416330SLKOPG008100 Device ID 22501168
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 0.276A [discharge] SOC 73.9% Temp: 11°C 11°C 14°C
+ Cell V: C1:3.277V C2:3.277V C3:3.275V C4:3.275V C5:3.275V C6:3.278V C7:3.275V C8:3.277V C9:3.277V C10:3.277V C11:3.275V C12:3.275V C13:3.275V C14:3.278V C15:3.277V C16:3.281V
+ Voltage avg: 3.272V (computed: 3.277V) Pack Voltage: 52.367V (computed 52.424V) f1_u: 0x030f (783) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 ed
+== Battery 8 SOH 98.2% HW 0x1 SW 0x3cc 1416719SLKOPG010159 Device ID 22507035
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 0.000A [discharge] SOC 55.6% Temp: 6°C 7°C 10°C
+ Cell V: C1:3.280V C2:3.277V C3:3.278V C4:3.277V C5:3.278V C6:3.275V C7:3.277V C8:3.280V C9:3.279V C10:3.275V C11:3.278V C12:3.281V C13:3.280V C14:3.277V C15:3.277V C16:3.279V
+ Voltage avg: 3.271V (computed: 3.278V) Pack Voltage: 52.346V (computed 52.448V) f1_u: 0x0900 (2304) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 00
+
+== Battery 1 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010208 Device ID 22507318
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -1.762A [charge] SOC 47.3% Temp: 4°C 5°C 7°C *
+ Cell V: C1:3.278V C2:3.277V C3:3.275V C4:3.269V C5:3.273V C6:3.273V C7:3.283V C8:3.283V C9:3.281V C10:3.282V C11:3.275V C12:3.273V C13:3.278V C14:3.274V C15:3.281V C16:3.279V
+ Voltage avg: 3.274V (computed: 3.277V) Pack Voltage: 52.392V (computed 52.434V) f1_u: 0x0307 (775) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 2 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010136 Device ID 22507087
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.461A [charge] SOC 40.7% Temp: 5°C 5°C 8°C *
+ Cell V: C1:3.278V C2:3.278V C3:3.277V C4:3.280V C5:3.279V C6:3.281V C7:3.281V C8:3.280V C9:3.283V C10:3.282V C11:3.283V C12:3.276V C13:3.277V C14:3.275V C15:3.276V C16:3.278V
+ Voltage avg: 3.277V (computed: 3.279V) Pack Voltage: 52.438V (computed 52.464V) f1_u: 0x0e05 (3589) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 d5
+== Battery 3 SOH 96.5% HW 0x1 SW 0x3cc 1416719SLKOPG010166 Device ID 22507155
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -3.012A [charge] SOC 31.1% Temp: 7°C 8°C 10°C
+ Cell V: C1:3.282V C2:3.281V C3:3.283V C4:3.282V C5:3.280V C6:3.280V C7:3.276V C8:3.282V C9:3.282V C10:3.279V C11:3.280V C12:3.280V C13:3.280V C14:3.282V C15:3.283V C16:3.282V
+ Voltage avg: 3.279V (computed: 3.281V) Pack Voltage: 52.467V (computed 52.494V) f1_u: 0x0f01 (3841) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 d0 0c 9c
+== Battery 4 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010175 Device ID 22507145
+ Faults < 00 00 00 02 00 00 00 20 00 00 00 00 00 00 00 20 00 00 >
+ Current -2.662A [charge] SOC 39.2% Temp: 6°C 6°C 7°C
+ Cell V: C1:3.284V C2:3.279V C3:3.281V C4:3.276V C5:3.275V C6:3.275V C7:3.282V C8:3.281V C9:3.273V C10:3.276V C11:3.283V C12:3.281V C13:3.283V C14:3.284V C15:3.286V C16:3.280V
+ Voltage avg: 3.279V (computed: 3.280V) Pack Voltage: 52.481V (computed 52.479V) f1_u: 0x0b01 (2817) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 cb 0c 89
+== Battery 5 SOH 97.1% HW 0x1 SW 0x3cc 1416719SLKOPG010084 Device ID 22507255
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -0.181A [charge] SOC 40.6% Temp: 7°C 6°C 8°C
+ Cell V: C1:3.285V C2:3.286V C3:3.287V C4:3.286V C5:3.287V C6:3.285V C7:3.288V C8:3.287V C9:3.268V C10:3.271V C11:3.275V C12:3.277V C13:3.281V C14:3.272V C15:3.283V C16:3.280V
+ Voltage avg: 3.281V (computed: 3.281V) Pack Voltage: 52.500V (computed 52.498V) f1_u: 0x0901 (2305) f2_u: 0x0203 (515)
+ E1E6: 01 01 00 01 01 00 00 e8
+== Battery 6 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010153 Device ID 22507081
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 20 00 00 >
+ Current -1.616A [charge] SOC 29.5% Temp: 9°C 8°C 9°C
+ Cell V: C1:3.271V C2:3.277V C3:3.276V C4:3.271V C5:3.276V C6:3.275V C7:3.276V C8:3.280V C9:3.270V C10:3.281V C11:3.285V C12:3.283V C13:3.282V C14:3.283V C15:3.280V C16:3.282V
+ Voltage avg: 3.273V (computed: 3.278V) Pack Voltage: 52.377V (computed 52.448V) f1_u: 0x030a (778) f2_u: 0x0100 (256)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 7 SOH 98.9% HW 0x1 SW 0x3cc 1416330SLKOPG008100 Device ID 22501168
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 0.276A [discharge] SOC 73.9% Temp: 11°C 11°C 14°C
+ Cell V: C1:3.277V C2:3.277V C3:3.275V C4:3.275V C5:3.275V C6:3.278V C7:3.277V C8:3.279V C9:3.279V C10:3.278V C11:3.277V C12:3.277V C13:3.277V C14:3.279V C15:3.278V C16:3.282V
+ Voltage avg: 3.272V (computed: 3.278V) Pack Voltage: 52.367V (computed 52.440V) f1_u: 0x030f (783) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 8 SOH 98.2% HW 0x1 SW 0x3cc 1416719SLKOPG010159 Device ID 22507035
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -1.928A [charge] SOC 55.6% Temp: 6°C 7°C 10°C
+ Cell V: C1:3.282V C2:3.278V C3:3.279V C4:3.277V C5:3.278V C6:3.275V C7:3.277V C8:3.280V C9:3.279V C10:3.275V C11:3.278V C12:3.281V C13:3.283V C14:3.278V C15:3.279V C16:3.280V
+ Voltage avg: 3.278V (computed: 3.279V) Pack Voltage: 52.466V (computed 52.459V) f1_u: 0x050c (1292) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 22 88
+
+== Battery 1 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010208 Device ID 22507318
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -1.762A [charge] SOC 47.3% Temp: 4°C 5°C 7°C *
+ Cell V: C1:3.280V C2:3.275V C3:3.276V C4:3.272V C5:3.277V C6:3.271V C7:3.283V C8:3.283V C9:3.281V C10:3.282V C11:3.275V C12:3.273V C13:3.278V C14:3.274V C15:3.281V C16:3.282V
+ Voltage avg: 3.274V (computed: 3.278V) Pack Voltage: 52.392V (computed 52.443V) f1_u: 0x0307 (775) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 01
+== Battery 2 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010136 Device ID 22507087
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.461A [charge] SOC 40.7% Temp: 5°C 5°C 8°C *
+ Cell V: C1:3.278V C2:3.278V C3:3.277V C4:3.280V C5:3.279V C6:3.281V C7:3.281V C8:3.280V C9:3.283V C10:3.284V C11:3.281V C12:3.279V C13:3.277V C14:3.278V C15:3.277V C16:3.279V
+ Voltage avg: 3.277V (computed: 3.280V) Pack Voltage: 52.438V (computed 52.472V) f1_u: 0x0e05 (3589) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 3 SOH 96.5% HW 0x1 SW 0x3cc 1416719SLKOPG010166 Device ID 22507155
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -3.012A [charge] SOC 31.1% Temp: 7°C 8°C 10°C
+ Cell V: C1:3.284V C2:3.281V C3:3.284V C4:3.282V C5:3.280V C6:3.280V C7:3.276V C8:3.282V C9:3.282V C10:3.279V C11:3.280V C12:3.280V C13:3.282V C14:3.284V C15:3.285V C16:3.283V
+ Voltage avg: 3.279V (computed: 3.281V) Pack Voltage: 52.467V (computed 52.504V) f1_u: 0x0f01 (3841) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 d4 0c 9d
+== Battery 4 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010175 Device ID 22507145
+ Faults < 00 00 00 02 00 00 00 20 00 00 00 00 00 00 00 20 00 00 >
+ Current -2.662A [charge] SOC 39.2% Temp: 5°C 6°C 7°C *
+ Cell V: C1:3.284V C2:3.279V C3:3.281V C4:3.276V C5:3.275V C6:3.275V C7:3.283V C8:3.282V C9:3.275V C10:3.277V C11:3.285V C12:3.281V C13:3.284V C14:3.284V C15:3.286V C16:3.280V
+ Voltage avg: 3.279V (computed: 3.280V) Pack Voltage: 52.481V (computed 52.487V) f1_u: 0x0b01 (2817) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 34
+== Battery 5 SOH 97.1% HW 0x1 SW 0x3cc 1416719SLKOPG010084 Device ID 22507255
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.589A [charge] SOC 40.6% Temp: 7°C 6°C 8°C
+ Cell V: C1:3.285V C2:3.286V C3:3.287V C4:3.286V C5:3.287V C6:3.285V C7:3.288V C8:3.287V C9:3.268V C10:3.272V C11:3.278V C12:3.277V C13:3.282V C14:3.274V C15:3.284V C16:3.280V
+ Voltage avg: 3.281V (computed: 3.282V) Pack Voltage: 52.500V (computed 52.506V) f1_u: 0x0901 (2305) f2_u: 0x0203 (515)
+ E1E6: 01 01 00 01 01 00 00 eb
+== Battery 6 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010153 Device ID 22507081
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 20 00 00 >
+ Current -1.616A [charge] SOC 29.5% Temp: 9°C 8°C 9°C
+ Cell V: C1:3.271V C2:3.280V C3:3.276V C4:3.273V C5:3.277V C6:3.275V C7:3.276V C8:3.280V C9:3.270V C10:3.281V C11:3.285V C12:3.283V C13:3.282V C14:3.283V C15:3.280V C16:3.284V
+ Voltage avg: 3.273V (computed: 3.279V) Pack Voltage: 52.377V (computed 52.456V) f1_u: 0x030a (778) f2_u: 0x0100 (256)
+ E1E6: 01 01 00 01 01 00 00 02
+== Battery 7 SOH 98.9% HW 0x1 SW 0x3cc 1416330SLKOPG008100 Device ID 22501168
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 0.276A [discharge] SOC 73.9% Temp: 11°C 11°C 14°C
+ Cell V: C1:3.278V C2:3.278V C3:3.277V C4:3.276V C5:3.277V C6:3.277V C7:3.278V C8:3.281V C9:3.280V C10:3.278V C11:3.277V C12:3.277V C13:3.277V C14:3.279V C15:3.278V C16:3.282V
+ Voltage avg: 3.272V (computed: 3.278V) Pack Voltage: 52.367V (computed 52.450V) f1_u: 0x030f (783) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 a9
+== Battery 8 SOH 98.2% HW 0x1 SW 0x3cc 1416719SLKOPG010159 Device ID 22507035
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -1.928A [charge] SOC 55.6% Temp: 6°C 7°C 10°C
+ Cell V: C1:3.282V C2:3.278V C3:3.279V C4:3.278V C5:3.279V C6:3.277V C7:3.278V C8:3.281V C9:3.281V C10:3.276V C11:3.281V C12:3.283V C13:3.283V C14:3.278V C15:3.279V C16:3.280V
+ Voltage avg: 3.278V (computed: 3.280V) Pack Voltage: 52.466V (computed 52.473V) f1_u: 0x050c (1292) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 00
+
+== Battery 1 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010208 Device ID 22507318
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -1.762A [charge] SOC 47.3% Temp: 4°C 5°C 7°C *
+ Cell V: C1:3.280V C2:3.275V C3:3.276V C4:3.272V C5:3.277V C6:3.271V C7:3.282V C8:3.286V C9:3.282V C10:3.285V C11:3.275V C12:3.276V C13:3.278V C14:3.277V C15:3.280V C16:3.281V
+ Voltage avg: 3.274V (computed: 3.278V) Pack Voltage: 52.392V (computed 52.453V) f1_u: 0x0307 (775) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 01
+== Battery 2 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010136 Device ID 22507087
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.461A [charge] SOC 40.7% Temp: 5°C 5°C 8°C *
+ Cell V: C1:3.280V C2:3.279V C3:3.278V C4:3.281V C5:3.280V C6:3.282V C7:3.281V C8:3.281V C9:3.283V C10:3.284V C11:3.281V C12:3.279V C13:3.277V C14:3.278V C15:3.277V C16:3.279V
+ Voltage avg: 3.277V (computed: 3.280V) Pack Voltage: 52.438V (computed 52.480V) f1_u: 0x0e05 (3589) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 3 SOH 96.5% HW 0x1 SW 0x3cc 1416719SLKOPG010166 Device ID 22507155
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -3.012A [charge] SOC 31.1% Temp: 7°C 8°C 10°C
+ Cell V: C1:3.284V C2:3.281V C3:3.284V C4:3.284V C5:3.281V C6:3.281V C7:3.277V C8:3.283V C9:3.283V C10:3.282V C11:3.282V C12:3.281V C13:3.283V C14:3.285V C15:3.285V C16:3.283V
+ Voltage avg: 3.279V (computed: 3.282V) Pack Voltage: 52.467V (computed 52.519V) f1_u: 0x0f01 (3841) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 d1 0c a2
+== Battery 4 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010175 Device ID 22507145
+ Faults < 00 00 00 02 00 00 00 20 00 00 00 00 00 00 00 20 00 00 >
+ Current -2.662A [charge] SOC 39.2% Temp: 6°C 6°C 7°C
+ Cell V: C1:3.283V C2:3.281V C3:3.281V C4:3.279V C5:3.276V C6:3.276V C7:3.284V C8:3.285V C9:3.277V C10:3.277V C11:3.285V C12:3.281V C13:3.284V C14:3.284V C15:3.286V C16:3.283V
+ Voltage avg: 3.279V (computed: 3.281V) Pack Voltage: 52.481V (computed 52.502V) f1_u: 0x0b01 (2817) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 d7
+== Battery 5 SOH 97.1% HW 0x1 SW 0x3cc 1416719SLKOPG010084 Device ID 22507255
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.589A [charge] SOC 40.6% Temp: 7°C 6°C 8°C
+ Cell V: C1:3.285V C2:3.288V C3:3.288V C4:3.286V C5:3.287V C6:3.286V C7:3.289V C8:3.288V C9:3.268V C10:3.272V C11:3.278V C12:3.277V C13:3.282V C14:3.274V C15:3.284V C16:3.280V
+ Voltage avg: 3.281V (computed: 3.282V) Pack Voltage: 52.500V (computed 52.512V) f1_u: 0x0901 (2305) f2_u: 0x0203 (515)
+ E1E6: 01 01 00 01 01 00 00 da
+== Battery 6 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010153 Device ID 22507081
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 20 00 00 >
+ Current -1.616A [charge] SOC 29.5% Temp: 9°C 8°C 9°C
+ Cell V: C1:3.271V C2:3.280V C3:3.276V C4:3.273V C5:3.277V C6:3.275V C7:3.275V C8:3.282V C9:3.272V C10:3.282V C11:3.285V C12:3.284V C13:3.283V C14:3.284V C15:3.280V C16:3.284V
+ Voltage avg: 3.279V (computed: 3.279V) Pack Voltage: 52.474V (computed 52.463V) f1_u: 0x000a (10) f2_u: 0x0100 (256)
+ E1E6: 01 01 00 01 01 00 00 02
+== Battery 7 SOH 98.9% HW 0x1 SW 0x3cc 1416330SLKOPG008100 Device ID 22501168
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 0.276A [discharge] SOC 73.9% Temp: 11°C 11°C 14°C
+ Cell V: C1:3.278V C2:3.278V C3:3.277V C4:3.276V C5:3.277V C6:3.277V C7:3.278V C8:3.281V C9:3.280V C10:3.281V C11:3.278V C12:3.279V C13:3.277V C14:3.280V C15:3.279V C16:3.283V
+ Voltage avg: 3.278V (computed: 3.279V) Pack Voltage: 52.466V (computed 52.459V) f1_u: 0x030f (783) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 c2
+== Battery 8 SOH 98.2% HW 0x1 SW 0x3cc 1416719SLKOPG010159 Device ID 22507035
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -1.928A [charge] SOC 55.6% Temp: 6°C 7°C 10°C
+ Cell V: C1:3.282V C2:3.278V C3:3.279V C4:3.280V C5:3.280V C6:3.278V C7:3.278V C8:3.281V C9:3.281V C10:3.276V C11:3.281V C12:3.283V C13:3.283V C14:3.280V C15:3.280V C16:3.281V
+ Voltage avg: 3.278V (computed: 3.280V) Pack Voltage: 52.466V (computed 52.481V) f1_u: 0x050c (1292) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 00
+
+== Battery 1 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010208 Device ID 22507318
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -1.762A [charge] SOC 47.3% Temp: 4°C 5°C 7°C *
+ Cell V: C1:3.280V C2:3.279V C3:3.279V C4:3.271V C5:3.278V C6:3.273V C7:3.283V C8:3.285V C9:3.282V C10:3.285V C11:3.275V C12:3.276V C13:3.278V C14:3.277V C15:3.280V C16:3.281V
+ Voltage avg: 3.279V (computed: 3.279V) Pack Voltage: 52.392V (computed 52.462V) f1_u: 0x0307 (775) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 d2 0c a4
+== Battery 2 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010136 Device ID 22507087
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.461A [charge] SOC 40.7% Temp: 5°C 5°C 8°C *
+ Cell V: C1:3.280V C2:3.279V C3:3.278V C4:3.281V C5:3.280V C6:3.282V C7:3.281V C8:3.281V C9:3.283V C10:3.283V C11:3.283V C12:3.280V C13:3.280V C14:3.278V C15:3.277V C16:3.280V
+ Voltage avg: 3.277V (computed: 3.280V) Pack Voltage: 52.438V (computed 52.486V) f1_u: 0x0e05 (3589) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 13
+== Battery 3 SOH 96.5% HW 0x1 SW 0x3cc 1416719SLKOPG010166 Device ID 22507155
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -3.012A [charge] SOC 31.1% Temp: 7°C 8°C 10°C
+ Cell V: C1:3.284V C2:3.282V C3:3.285V C4:3.285V C5:3.282V C6:3.282V C7:3.277V C8:3.283V C9:3.283V C10:3.282V C11:3.282V C12:3.281V C13:3.283V C14:3.285V C15:3.285V C16:3.284V
+ Voltage avg: 3.279V (computed: 3.283V) Pack Voltage: 52.467V (computed 52.525V) f1_u: 0x0f01 (3841) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 d2 0c a0
+== Battery 4 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010175 Device ID 22507145
+ Faults < 00 00 00 02 00 00 00 20 00 00 00 00 00 00 00 20 00 00 >
+ Current -2.662A [charge] SOC 39.2% Temp: 6°C 6°C 7°C
+ Cell V: C1:3.283V C2:3.281V C3:3.281V C4:3.279V C5:3.276V C6:3.276V C7:3.284V C8:3.285V C9:3.277V C10:3.280V C11:3.285V C12:3.284V C13:3.284V C14:3.287V C15:3.286V C16:3.282V
+ Voltage avg: 3.279V (computed: 3.282V) Pack Voltage: 52.481V (computed 52.510V) f1_u: 0x0b01 (2817) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 ed
+== Battery 5 SOH 97.1% HW 0x1 SW 0x3cc 1416719SLKOPG010084 Device ID 22507255
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.589A [charge] SOC 40.6% Temp: 7°C 6°C 8°C
+ Cell V: C1:3.285V C2:3.290V C3:3.287V C4:3.286V C5:3.287V C6:3.286V C7:3.289V C8:3.288V C9:3.268V C10:3.274V C11:3.279V C12:3.279V C13:3.283V C14:3.276V C15:3.285V C16:3.280V
+ Voltage avg: 3.281V (computed: 3.283V) Pack Voltage: 52.500V (computed 52.522V) f1_u: 0x0901 (2305) f2_u: 0x0203 (515)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 6 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010153 Device ID 22507081
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 20 00 00 >
+ Current -3.675A [charge] SOC 29.5% Temp: 9°C 8°C 9°C
+ Cell V: C1:3.273V C2:3.279V C3:3.278V C4:3.275V C5:3.279V C6:3.275V C7:3.276V C8:3.283V C9:3.274V C10:3.282V C11:3.285V C12:3.284V C13:3.283V C14:3.284V C15:3.280V C16:3.286V
+ Voltage avg: 3.279V (computed: 3.280V) Pack Voltage: 52.474V (computed 52.476V) f1_u: 0x000a (10) f2_u: 0x0100 (256)
+ E1E6: 01 01 00 01 01 ca 0c 93
+== Battery 7 SOH 98.9% HW 0x1 SW 0x3cc 1416330SLKOPG008100 Device ID 22501168
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -0.916A [charge] SOC 73.9% Temp: 11°C 11°C 14°C
+ Cell V: C1:3.281V C2:3.278V C3:3.278V C4:3.278V C5:3.279V C6:3.277V C7:3.278V C8:3.281V C9:3.282V C10:3.279V C11:3.279V C12:3.279V C13:3.277V C14:3.280V C15:3.279V C16:3.283V
+ Voltage avg: 3.278V (computed: 3.279V) Pack Voltage: 52.466V (computed 52.468V) f1_u: 0x030f (783) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 8 SOH 98.2% HW 0x1 SW 0x3cc 1416719SLKOPG010159 Device ID 22507035
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -1.928A [charge] SOC 55.6% Temp: 6°C 7°C 10°C
+ Cell V: C1:3.282V C2:3.278V C3:3.279V C4:3.280V C5:3.280V C6:3.278V C7:3.278V C8:3.281V C9:3.282V C10:3.277V C11:3.282V C12:3.283V C13:3.285V C14:3.280V C15:3.282V C16:3.281V
+ Voltage avg: 3.278V (computed: 3.280V) Pack Voltage: 52.466V (computed 52.488V) f1_u: 0x050c (1292) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 d2 0c a7
+
+== Battery 1 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010208 Device ID 22507318
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.662A [charge] SOC 47.3% Temp: 4°C 5°C 7°C *
+ Cell V: C1:3.280V C2:3.279V C3:3.279V C4:3.271V C5:3.278V C6:3.273V C7:3.283V C8:3.285V C9:3.282V C10:3.284V C11:3.277V C12:3.276V C13:3.279V C14:3.276V C15:3.281V C16:3.284V
+ Voltage avg: 3.279V (computed: 3.279V) Pack Voltage: 52.471V (computed 52.467V) f1_u: 0x0307 (775) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 10 03 cb
+== Battery 2 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010136 Device ID 22507087
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.461A [charge] SOC 40.7% Temp: 5°C 5°C 8°C *
+ Cell V: C1:3.280V C2:3.280V C3:3.280V C4:3.281V C5:3.280V C6:3.283V C7:3.282V C8:3.281V C9:3.285V C10:3.286V C11:3.283V C12:3.281V C13:3.280V C14:3.278V C15:3.277V C16:3.280V
+ Voltage avg: 3.277V (computed: 3.281V) Pack Voltage: 52.438V (computed 52.497V) f1_u: 0x0e05 (3589) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 3 SOH 96.5% HW 0x1 SW 0x3cc 1416719SLKOPG010166 Device ID 22507155
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -3.012A [charge] SOC 31.1% Temp: 7°C 8°C 10°C
+ Cell V: C1:3.284V C2:3.282V C3:3.285V C4:3.285V C5:3.282V C6:3.282V C7:3.278V C8:3.282V C9:3.283V C10:3.282V C11:3.283V C12:3.281V C13:3.284V C14:3.285V C15:3.287V C16:3.284V
+ Voltage avg: 3.283V (computed: 3.283V) Pack Voltage: 52.467V (computed 52.529V) f1_u: 0x0f01 (3841) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 d7 0c b0
+== Battery 4 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010175 Device ID 22507145
+ Faults < 00 00 00 02 00 00 00 20 00 00 00 00 00 00 00 20 00 00 >
+ Current -2.662A [charge] SOC 39.2% Temp: 5°C 6°C 7°C *
+ Cell V: C1:3.283V C2:3.283V C3:3.282V C4:3.277V C5:3.278V C6:3.276V C7:3.287V C8:3.283V C9:3.277V C10:3.280V C11:3.285V C12:3.284V C13:3.284V C14:3.287V C15:3.286V C16:3.282V
+ Voltage avg: 3.279V (computed: 3.282V) Pack Voltage: 52.481V (computed 52.514V) f1_u: 0x0b01 (2817) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 5 SOH 97.1% HW 0x1 SW 0x3cc 1416719SLKOPG010084 Device ID 22507255
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.589A [charge] SOC 40.6% Temp: 7°C 6°C 8°C
+ Cell V: C1:3.285V C2:3.290V C3:3.287V C4:3.287V C5:3.288V C6:3.287V C7:3.290V C8:3.289V C9:3.269V C10:3.276V C11:3.280V C12:3.281V C13:3.283V C14:3.276V C15:3.285V C16:3.280V
+ Voltage avg: 3.281V (computed: 3.283V) Pack Voltage: 52.500V (computed 52.533V) f1_u: 0x0901 (2305) f2_u: 0x0203 (515)
+ E1E6: 01 01 00 01 01 d1 0c 9a
+== Battery 6 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010153 Device ID 22507081
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 20 00 00 >
+ Current -3.675A [charge] SOC 29.5% Temp: 9°C 8°C 9°C
+ Cell V: C1:3.273V C2:3.279V C3:3.278V C4:3.275V C5:3.279V C6:3.275V C7:3.276V C8:3.283V C9:3.274V C10:3.282V C11:3.286V C12:3.284V C13:3.285V C14:3.283V C15:3.282V C16:3.287V
+ Voltage avg: 3.279V (computed: 3.280V) Pack Voltage: 52.474V (computed 52.481V) f1_u: 0x000a (10) f2_u: 0x0100 (256)
+ E1E6: 01 01 00 01 01 00 00 01
+== Battery 7 SOH 98.9% HW 0x1 SW 0x3cc 1416330SLKOPG008100 Device ID 22501168
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -0.916A [charge] SOC 73.9% Temp: 11°C 11°C 14°C
+ Cell V: C1:3.282V C2:3.278V C3:3.280V C4:3.278V C5:3.279V C6:3.277V C7:3.278V C8:3.281V C9:3.282V C10:3.279V C11:3.279V C12:3.279V C13:3.278V C14:3.279V C15:3.281V C16:3.284V
+ Voltage avg: 3.278V (computed: 3.280V) Pack Voltage: 52.466V (computed 52.474V) f1_u: 0x030f (783) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 02
+== Battery 8 SOH 98.2% HW 0x1 SW 0x3cc 1416719SLKOPG010159 Device ID 22507035
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -1.928A [charge] SOC 55.6% Temp: 6°C 7°C 10°C
+ Cell V: C1:3.283V C2:3.279V C3:3.281V C4:3.280V C5:3.281V C6:3.278V C7:3.278V C8:3.281V C9:3.282V C10:3.277V C11:3.282V C12:3.283V C13:3.285V C14:3.280V C15:3.282V C16:3.282V
+ Voltage avg: 3.278V (computed: 3.281V) Pack Voltage: 52.466V (computed 52.494V) f1_u: 0x050c (1292) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 00
+
+== Battery 1 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010208 Device ID 22507318
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.662A [charge] SOC 47.3% Temp: 4°C 5°C 7°C *
+ Cell V: C1:3.280V C2:3.280V C3:3.277V C4:3.272V C5:3.277V C6:3.275V C7:3.285V C8:3.286V C9:3.282V C10:3.285V C11:3.278V C12:3.276V C13:3.279V C14:3.276V C15:3.281V C16:3.284V
+ Voltage avg: 3.279V (computed: 3.280V) Pack Voltage: 52.471V (computed 52.473V) f1_u: 0x0307 (775) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 cc 0c 9c
+== Battery 2 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010136 Device ID 22507087
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -3.087A [charge] SOC 40.7% Temp: 5°C 5°C 8°C *
+ Cell V: C1:3.280V C2:3.282V C3:3.280V C4:3.281V C5:3.280V C6:3.283V C7:3.282V C8:3.281V C9:3.285V C10:3.286V C11:3.283V C12:3.281V C13:3.280V C14:3.280V C15:3.277V C16:3.280V
+ Voltage avg: 3.280V (computed: 3.281V) Pack Voltage: 52.502V (computed 52.501V) f1_u: 0x0a01 (2561) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 3 SOH 96.5% HW 0x1 SW 0x3cc 1416719SLKOPG010166 Device ID 22507155
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -3.914A [charge] SOC 31.1% Temp: 7°C 8°C 10°C
+ Cell V: C1:3.285V C2:3.283V C3:3.286V C4:3.285V C5:3.282V C6:3.282V C7:3.278V C8:3.282V C9:3.283V C10:3.282V C11:3.283V C12:3.281V C13:3.284V C14:3.285V C15:3.287V C16:3.285V
+ Voltage avg: 3.283V (computed: 3.283V) Pack Voltage: 52.533V (computed 52.533V) f1_u: 0x0f01 (3841) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 d2 0c a0
+== Battery 4 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010175 Device ID 22507145
+ Faults < 00 00 00 02 00 00 00 20 00 00 00 00 00 00 00 20 00 00 >
+ Current -2.662A [charge] SOC 39.2% Temp: 5°C 6°C 7°C *
+ Cell V: C1:3.283V C2:3.283V C3:3.282V C4:3.277V C5:3.278V C6:3.276V C7:3.287V C8:3.283V C9:3.277V C10:3.279V C11:3.287V C12:3.283V C13:3.285V C14:3.285V C15:3.288V C16:3.285V
+ Voltage avg: 3.279V (computed: 3.282V) Pack Voltage: 52.481V (computed 52.518V) f1_u: 0x0b01 (2817) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 5 SOH 97.1% HW 0x1 SW 0x3cc 1416719SLKOPG010084 Device ID 22507255
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.589A [charge] SOC 40.6% Temp: 7°C 6°C 8°C
+ Cell V: C1:3.285V C2:3.290V C3:3.288V C4:3.287V C5:3.288V C6:3.287V C7:3.290V C8:3.289V C9:3.269V C10:3.276V C11:3.280V C12:3.281V C13:3.282V C14:3.278V C15:3.285V C16:3.282V
+ Voltage avg: 3.281V (computed: 3.284V) Pack Voltage: 52.500V (computed 52.537V) f1_u: 0x0901 (2305) f2_u: 0x0203 (515)
+ E1E6: 01 01 00 01 01 00 00 13
+== Battery 6 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010153 Device ID 22507081
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 20 00 00 >
+ Current -3.675A [charge] SOC 29.5% Temp: 9°C 8°C 9°C
+ Cell V: C1:3.275V C2:3.279V C3:3.281V C4:3.275V C5:3.281V C6:3.276V C7:3.277V C8:3.283V C9:3.275V C10:3.282V C11:3.286V C12:3.284V C13:3.285V C14:3.283V C15:3.282V C16:3.287V
+ Voltage avg: 3.279V (computed: 3.281V) Pack Voltage: 52.474V (computed 52.491V) f1_u: 0x000a (10) f2_u: 0x0100 (256)
+ E1E6: 01 01 00 01 01 00 00 01
+== Battery 7 SOH 98.9% HW 0x1 SW 0x3cc 1416330SLKOPG008100 Device ID 22501168
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -0.916A [charge] SOC 73.9% Temp: 11°C 11°C 14°C
+ Cell V: C1:3.282V C2:3.278V C3:3.280V C4:3.279V C5:3.280V C6:3.278V C7:3.278V C8:3.282V C9:3.283V C10:3.279V C11:3.280V C12:3.279V C13:3.278V C14:3.279V C15:3.281V C16:3.284V
+ Voltage avg: 3.278V (computed: 3.280V) Pack Voltage: 52.466V (computed 52.480V) f1_u: 0x030f (783) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 02
+== Battery 8 SOH 98.2% HW 0x1 SW 0x3cc 1416719SLKOPG010159 Device ID 22507035
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -1.928A [charge] SOC 55.6% Temp: 6°C 7°C 10°C
+ Cell V: C1:3.283V C2:3.279V C3:3.281V C4:3.280V C5:3.281V C6:3.278V C7:3.280V C8:3.283V C9:3.282V C10:3.277V C11:3.282V C12:3.283V C13:3.286V C14:3.281V C15:3.282V C16:3.282V
+ Voltage avg: 3.278V (computed: 3.281V) Pack Voltage: 52.466V (computed 52.500V) f1_u: 0x050c (1292) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 00
+
+
+*/
+
+
+/*
+ charge to discharge
+
+ == Battery 1 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010208 Device ID 22507318
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.129A [charge] SOC 70.1% Temp: 8°C 8°C 10°C
+ Cell V: C1:3.324V C2:3.326V C3:3.327V C4:3.329V C5:3.328V C6:3.329V C7:3.324V C8:3.326V C9:3.327V C10:3.326V C11:3.332V C12:3.334V C13:3.320V C14:3.322V C15:3.321V C16:3.320V
+ Voltage avg: 3.328V (computed: 3.326V) Pack Voltage: 53.252V (computed 53.215V) f1_u: 0x0c01 (3073) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 10
+== Battery 2 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010136 Device ID 22507087
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.277A [charge] SOC 66.8% Temp: 8°C 9°C 11°C
+ Cell V: C1:3.329V C2:3.329V C3:3.330V C4:3.331V C5:3.329V C6:3.327V C7:3.330V C8:3.328V C9:3.328V C10:3.320V C11:3.321V C12:3.321V C13:3.323V C14:3.321V C15:3.324V C16:3.332V
+ Voltage avg: 3.329V (computed: 3.326V) Pack Voltage: 53.275V (computed 53.223V) f1_u: 0x0e01 (3585) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 da
+== Battery 3 SOH 96.5% HW 0x1 SW 0x3cc 1416719SLKOPG010166 Device ID 22507155
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.479A [charge] SOC 64.0% Temp: 12°C 12°C 14°C
+ Cell V: C1:3.325V C2:3.324V C3:3.324V C4:3.336V C5:3.330V C6:3.330V C7:3.331V C8:3.332V C9:3.330V C10:3.330V C11:3.331V C12:3.329V C13:3.332V C14:3.331V C15:3.333V C16:3.327V
+ Voltage avg: 3.331V (computed: 3.330V) Pack Voltage: 53.315V (computed 53.275V) f1_u: 0x0b03 (2819) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 fc 0c 19
+== Battery 4 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010175 Device ID 22507145
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.222A [charge] SOC 67.4% Temp: 9°C 9°C 9°C
+ Cell V: C1:3.329V C2:3.329V C3:3.331V C4:3.326V C5:3.325V C6:3.325V C7:3.322V C8:3.323V C9:3.321V C10:3.333V C11:3.330V C12:3.332V C13:3.333V C14:3.333V C15:3.333V C16:3.334V
+ Voltage avg: 3.323V (computed: 3.329V) Pack Voltage: 53.310V (computed 53.259V) f1_u: 0x010d (269) f2_u: 0x0000 (0)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 5 SOH 97.1% HW 0x1 SW 0x3cc 1416719SLKOPG010084 Device ID 22507255
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.001A [charge] SOC 69.4% Temp: 10°C 10°C 11°C
+ Cell V: C1:3.326V C2:3.324V C3:3.324V C4:3.322V C5:3.322V C6:3.326V C7:3.325V C8:3.324V C9:3.323V C10:3.335V C11:3.334V C12:3.334V C13:3.333V C14:3.336V C15:3.335V C16:3.337V
+ Voltage avg: 3.332V (computed: 3.329V) Pack Voltage: 53.329V (computed 53.260V) f1_u: 0x1001 (4097) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 6 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010153 Device ID 22507081
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -1.579A [charge] SOC 67.2% Temp: 10°C 10°C 11°C
+ Cell V: C1:3.327V C2:3.324V C3:3.324V C4:3.318V C5:3.319V C6:3.321V C7:3.318V C8:3.321V C9:3.320V C10:3.331V C11:3.339V C12:3.333V C13:3.333V C14:3.332V C15:3.333V C16:3.339V
+ Voltage avg: 3.330V (computed: 3.327V) Pack Voltage: 53.282V (computed 53.232V) f1_u: 0x0b01 (2817) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 d7
+== Battery 7 SOH 98.9% HW 0x1 SW 0x3cc 1416330SLKOPG008100 Device ID 22501168
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -0.714A [charge] SOC 95.8% Temp: 9°C 8°C 8°C
+ Cell V: C1:3.318V C2:3.320V C3:3.318V C4:3.329V C5:3.328V C6:3.327V C7:3.329V C8:3.330V C9:3.328V C10:3.328V C11:3.329V C12:3.328V C13:3.327V C14:3.328V C15:3.328V C16:3.318V
+ Voltage avg: 3.322V (computed: 3.326V) Pack Voltage: 53.104V (computed 53.213V) f1_u: 0x0304 (772) f2_u: 0x0100 (256)
+ E1E6: 01 01 00 01 01 f6 0c 08
+== Battery 8 SOH 98.2% HW 0x1 SW 0x3cc 1416719SLKOPG010159 Device ID 22507035
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -1.946A [charge] SOC 75.7% Temp: 10°C 11°C 13°C
+ Cell V: C1:3.327V C2:3.329V C3:3.328V C4:3.332V C5:3.332V C6:3.330V C7:3.330V C8:3.333V C9:3.331V C10:3.332V C11:3.329V C12:3.327V C13:3.320V C14:3.320V C15:3.321V C16:3.330V
+ Voltage avg: 3.329V (computed: 3.328V) Pack Voltage: 53.280V (computed 53.251V) f1_u: 0x0a01 (2561) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 01
+
+== Battery 1 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010208 Device ID 22507318
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.129A [charge] SOC 70.1% Temp: 8°C 8°C 10°C
+ Cell V: C1:3.316V C2:3.318V C3:3.318V C4:3.318V C5:3.320V C6:3.319V C7:3.316V C8:3.317V C9:3.317V C10:3.326V C11:3.332V C12:3.334V C13:3.320V C14:3.322V C15:3.321V C16:3.320V
+ Voltage avg: 3.328V (computed: 3.321V) Pack Voltage: 53.252V (computed 53.134V) f1_u: 0x0c01 (3073) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 2 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010136 Device ID 22507087
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.277A [charge] SOC 66.8% Temp: 8°C 9°C 11°C
+ Cell V: C1:3.321V C2:3.318V C3:3.320V C4:3.322V C5:3.320V C6:3.317V C7:3.330V C8:3.328V C9:3.328V C10:3.320V C11:3.321V C12:3.321V C13:3.323V C14:3.321V C15:3.324V C16:3.322V
+ Voltage avg: 3.329V (computed: 3.322V) Pack Voltage: 53.275V (computed 53.156V) f1_u: 0x0e01 (3585) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 3 SOH 96.5% HW 0x1 SW 0x3cc 1416719SLKOPG010166 Device ID 22507155
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.479A [charge] SOC 64.0% Temp: 12°C 12°C 14°C
+ Cell V: C1:3.325V C2:3.324V C3:3.324V C4:3.326V C5:3.322V C6:3.321V C7:3.320V C8:3.324V C9:3.322V C10:3.321V C11:3.322V C12:3.320V C13:3.332V C14:3.331V C15:3.333V C16:3.327V
+ Voltage avg: 3.331V (computed: 3.325V) Pack Voltage: 53.315V (computed 53.194V) f1_u: 0x0b03 (2819) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 ac
+== Battery 4 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010175 Device ID 22507145
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 3.347A [discharge] SOC 67.4% Temp: 9°C 9°C 9°C
+ Cell V: C1:3.321V C2:3.318V C3:3.322V C4:3.326V C5:3.325V C6:3.325V C7:3.322V C8:3.323V C9:3.321V C10:3.323V C11:3.322V C12:3.322V C13:3.323V C14:3.325V C15:3.324V C16:3.321V
+ Voltage avg: 3.323V (computed: 3.323V) Pack Voltage: 53.159V (computed 53.163V) f1_u: 0x010d (269) f2_u: 0x0000 (0)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 5 SOH 97.1% HW 0x1 SW 0x3cc 1416719SLKOPG010084 Device ID 22507255
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.001A [charge] SOC 69.4% Temp: 10°C 10°C 11°C
+ Cell V: C1:3.326V C2:3.324V C3:3.324V C4:3.322V C5:3.322V C6:3.326V C7:3.325V C8:3.324V C9:3.323V C10:3.325V C11:3.325V C12:3.325V C13:3.324V C14:3.325V C15:3.325V C16:3.324V
+ Voltage avg: 3.332V (computed: 3.324V) Pack Voltage: 53.329V (computed 53.189V) f1_u: 0x1001 (4097) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 04
+== Battery 6 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010153 Device ID 22507081
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -1.579A [charge] SOC 67.2% Temp: 10°C 10°C 11°C
+ Cell V: C1:3.327V C2:3.324V C3:3.324V C4:3.318V C5:3.319V C6:3.321V C7:3.318V C8:3.321V C9:3.320V C10:3.323V C11:3.330V C12:3.325V C13:3.324V C14:3.322V C15:3.322V C16:3.329V
+ Voltage avg: 3.330V (computed: 3.323V) Pack Voltage: 53.282V (computed 53.167V) f1_u: 0x0b01 (2817) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 e6
+== Battery 7 SOH 98.9% HW 0x1 SW 0x3cc 1416330SLKOPG008100 Device ID 22501168
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 1.380A [discharge] SOC 95.8% Temp: 8°C 8°C 8°C
+ Cell V: C1:3.318V C2:3.320V C3:3.318V C4:3.317V C5:3.319V C6:3.320V C7:3.319V C8:3.317V C9:3.315V C10:3.316V C11:3.319V C12:3.315V C13:3.327V C14:3.328V C15:3.328V C16:3.318V
+ Voltage avg: 3.322V (computed: 3.320V) Pack Voltage: 53.104V (computed 53.114V) f1_u: 0x0304 (772) f2_u: 0x0100 (256)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 8 SOH 98.2% HW 0x1 SW 0x3cc 1416719SLKOPG010159 Device ID 22507035
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -1.946A [charge] SOC 75.7% Temp: 10°C 10°C 13°C
+ Cell V: C1:3.319V C2:3.320V C3:3.320V C4:3.320V C5:3.322V C6:3.320V C7:3.321V C8:3.319V C9:3.320V C10:3.332V C11:3.329V C12:3.327V C13:3.320V C14:3.320V C15:3.321V C16:3.320V
+ Voltage avg: 3.320V (computed: 3.322V) Pack Voltage: 53.109V (computed 53.150V) f1_u: 0x0c01 (3073) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 00
+
+== Battery 1 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010208 Device ID 22507318
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.129A [charge] SOC 70.1% Temp: 8°C 8°C 10°C
+ Cell V: C1:3.316V C2:3.318V C3:3.318V C4:3.318V C5:3.320V C6:3.319V C7:3.316V C8:3.317V C9:3.317V C10:3.316V C11:3.319V C12:3.318V C13:3.318V C14:3.318V C15:3.319V C16:3.319V
+ Voltage avg: 3.317V (computed: 3.318V) Pack Voltage: 53.252V (computed 53.086V) f1_u: 0x0601 (1537) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 f5 0c 1b
+== Battery 2 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010136 Device ID 22507087
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.277A [charge] SOC 66.8% Temp: 8°C 9°C 11°C
+ Cell V: C1:3.321V C2:3.318V C3:3.320V C4:3.322V C5:3.320V C6:3.317V C7:3.319V C8:3.320V C9:3.318V C10:3.319V C11:3.318V C12:3.321V C13:3.321V C14:3.320V C15:3.321V C16:3.322V
+ Voltage avg: 3.329V (computed: 3.320V) Pack Voltage: 53.275V (computed 53.117V) f1_u: 0x0e01 (3585) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 f9 0c 1a
+== Battery 3 SOH 96.5% HW 0x1 SW 0x3cc 1416719SLKOPG010166 Device ID 22507155
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.479A [charge] SOC 64.0% Temp: 12°C 12°C 14°C
+ Cell V: C1:3.324V C2:3.322V C3:3.323V C4:3.326V C5:3.322V C6:3.321V C7:3.320V C8:3.324V C9:3.322V C10:3.321V C11:3.322V C12:3.320V C13:3.322V C14:3.321V C15:3.323V C16:3.325V
+ Voltage avg: 3.331V (computed: 3.322V) Pack Voltage: 53.315V (computed 53.158V) f1_u: 0x0b03 (2819) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 02
+== Battery 4 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010175 Device ID 22507145
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 3.347A [discharge] SOC 67.4% Temp: 9°C 9°C 9°C
+ Cell V: C1:3.321V C2:3.318V C3:3.322V C4:3.323V C5:3.322V C6:3.322V C7:3.320V C8:3.320V C9:3.321V C10:3.322V C11:3.321V C12:3.321V C13:3.323V C14:3.325V C15:3.324V C16:3.321V
+ Voltage avg: 3.323V (computed: 3.322V) Pack Voltage: 53.159V (computed 53.146V) f1_u: 0x010d (269) f2_u: 0x0000 (0)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 5 SOH 97.1% HW 0x1 SW 0x3cc 1416719SLKOPG010084 Device ID 22507255
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.001A [charge] SOC 69.4% Temp: 10°C 10°C 11°C
+ Cell V: C1:3.322V C2:3.320V C3:3.320V C4:3.320V C5:3.320V C6:3.324V C7:3.322V C8:3.323V C9:3.320V C10:3.325V C11:3.325V C12:3.325V C13:3.324V C14:3.325V C15:3.325V C16:3.324V
+ Voltage avg: 3.332V (computed: 3.323V) Pack Voltage: 53.329V (computed 53.164V) f1_u: 0x1001 (4097) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 04
+== Battery 6 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010153 Device ID 22507081
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -1.579A [charge] SOC 67.2% Temp: 10°C 10°C 11°C
+ Cell V: C1:3.315V C2:3.317V C3:3.315V C4:3.315V C5:3.315V C6:3.319V C7:3.317V C8:3.319V C9:3.317V C10:3.322V C11:3.328V C12:3.325V C13:3.324V C14:3.322V C15:3.322V C16:3.329V
+ Voltage avg: 3.330V (computed: 3.320V) Pack Voltage: 53.282V (computed 53.121V) f1_u: 0x0b01 (2817) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 7 SOH 98.9% HW 0x1 SW 0x3cc 1416330SLKOPG008100 Device ID 22501168
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 1.380A [discharge] SOC 95.8% Temp: 8°C 8°C 8°C
+ Cell V: C1:3.315V C2:3.319V C3:3.317V C4:3.317V C5:3.319V C6:3.320V C7:3.319V C8:3.317V C9:3.315V C10:3.316V C11:3.319V C12:3.315V C13:3.317V C14:3.317V C15:3.316V C16:3.316V
+ Voltage avg: 3.322V (computed: 3.317V) Pack Voltage: 53.104V (computed 53.074V) f1_u: 0x0304 (772) f2_u: 0x0100 (256)
+ E1E6: 01 01 00 01 01 00 00 02
+== Battery 8 SOH 98.2% HW 0x1 SW 0x3cc 1416719SLKOPG010159 Device ID 22507035
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 2.206A [discharge] SOC 75.8% Temp: 10°C 11°C 13°C
+ Cell V: C1:3.319V C2:3.320V C3:3.320V C4:3.320V C5:3.322V C6:3.320V C7:3.321V C8:3.319V C9:3.320V C10:3.319V C11:3.319V C12:3.316V C13:3.318V C14:3.318V C15:3.320V C16:3.316V
+ Voltage avg: 3.320V (computed: 3.319V) Pack Voltage: 53.109V (computed 53.107V) f1_u: 0x0c01 (3073) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 0f
+
+== Battery 1 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010208 Device ID 22507318
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 2.501A [discharge] SOC 70.1% Temp: 8°C 8°C 10°C
+ Cell V: C1:3.315V C2:3.315V C3:3.315V C4:3.319V C5:3.317V C6:3.319V C7:3.315V C8:3.316V C9:3.315V C10:3.317V C11:3.317V C12:3.318V C13:3.318V C14:3.318V C15:3.319V C16:3.319V
+ Voltage avg: 3.317V (computed: 3.317V) Pack Voltage: 53.072V (computed 53.072V) f1_u: 0x0601 (1537) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 10 03 95
+== Battery 2 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010136 Device ID 22507087
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.277A [charge] SOC 66.8% Temp: 8°C 9°C 11°C
+ Cell V: C1:3.319V C2:3.317V C3:3.320V C4:3.320V C5:3.319V C6:3.316V C7:3.319V C8:3.320V C9:3.318V C10:3.319V C11:3.318V C12:3.321V C13:3.321V C14:3.320V C15:3.321V C16:3.319V
+ Voltage avg: 3.329V (computed: 3.319V) Pack Voltage: 53.275V (computed 53.107V) f1_u: 0x0e01 (3585) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 14
+== Battery 3 SOH 96.5% HW 0x1 SW 0x3cc 1416719SLKOPG010166 Device ID 22507155
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.479A [charge] SOC 64.0% Temp: 12°C 12°C 14°C
+ Cell V: C1:3.324V C2:3.322V C3:3.323V C4:3.324V C5:3.321V C6:3.319V C7:3.319V C8:3.320V C9:3.320V C10:3.319V C11:3.321V C12:3.317V C13:3.322V C14:3.321V C15:3.323V C16:3.325V
+ Voltage avg: 3.331V (computed: 3.321V) Pack Voltage: 53.315V (computed 53.140V) f1_u: 0x0b03 (2819) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 0c 00 0f
+== Battery 4 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010175 Device ID 22507145
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 3.347A [discharge] SOC 67.4% Temp: 9°C 9°C 9°C
+ Cell V: C1:3.318V C2:3.319V C3:3.319V C4:3.323V C5:3.322V C6:3.322V C7:3.320V C8:3.320V C9:3.321V C10:3.322V C11:3.321V C12:3.321V C13:3.321V C14:3.323V C15:3.321V C16:3.322V
+ Voltage avg: 3.323V (computed: 3.321V) Pack Voltage: 53.159V (computed 53.135V) f1_u: 0x010d (269) f2_u: 0x0000 (0)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 5 SOH 97.1% HW 0x1 SW 0x3cc 1416719SLKOPG010084 Device ID 22507255
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.001A [charge] SOC 69.4% Temp: 10°C 10°C 11°C
+ Cell V: C1:3.320V C2:3.320V C3:3.319V C4:3.320V C5:3.320V C6:3.324V C7:3.322V C8:3.323V C9:3.320V C10:3.323V C11:3.323V C12:3.323V C13:3.323V C14:3.323V C15:3.324V C16:3.322V
+ Voltage avg: 3.321V (computed: 3.322V) Pack Voltage: 53.143V (computed 53.149V) f1_u: 0x0f01 (3841) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 6 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010153 Device ID 22507081
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -1.579A [charge] SOC 67.2% Temp: 10°C 10°C 11°C
+ Cell V: C1:3.314V C2:3.315V C3:3.313V C4:3.315V C5:3.315V C6:3.319V C7:3.317V C8:3.319V C9:3.317V C10:3.322V C11:3.328V C12:3.325V C13:3.322V C14:3.322V C15:3.321V C16:3.325V
+ Voltage avg: 3.330V (computed: 3.319V) Pack Voltage: 53.282V (computed 53.109V) f1_u: 0x0b01 (2817) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 7 SOH 98.9% HW 0x1 SW 0x3cc 1416330SLKOPG008100 Device ID 22501168
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 1.380A [discharge] SOC 95.8% Temp: 8°C 8°C 8°C
+ Cell V: C1:3.315V C2:3.319V C3:3.317V C4:3.317V C5:3.317V C6:3.319V C7:3.319V C8:3.316V C9:3.314V C10:3.313V C11:3.319V C12:3.315V C13:3.317V C14:3.317V C15:3.316V C16:3.316V
+ Voltage avg: 3.322V (computed: 3.317V) Pack Voltage: 53.104V (computed 53.066V) f1_u: 0x0304 (772) f2_u: 0x0100 (256)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 8 SOH 98.2% HW 0x1 SW 0x3cc 1416719SLKOPG010159 Device ID 22507035
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 2.206A [discharge] SOC 75.8% Temp: 10°C 10°C 13°C
+ Cell V: C1:3.316V C2:3.321V C3:3.318V C4:3.318V C5:3.320V C6:3.320V C7:3.320V C8:3.318V C9:3.318V C10:3.319V C11:3.319V C12:3.316V C13:3.318V C14:3.318V C15:3.320V C16:3.316V
+ Voltage avg: 3.320V (computed: 3.318V) Pack Voltage: 53.109V (computed 53.095V) f1_u: 0x0c01 (3073) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 f6 0c 0e
+
+== Battery 1 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010208 Device ID 22507318
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 2.501A [discharge] SOC 70.1% Temp: 8°C 8°C 10°C
+ Cell V: C1:3.315V C2:3.315V C3:3.315V C4:3.319V C5:3.317V C6:3.319V C7:3.315V C8:3.316V C9:3.315V C10:3.317V C11:3.317V C12:3.318V C13:3.316V C14:3.319V C15:3.316V C16:3.315V
+ Voltage avg: 3.317V (computed: 3.317V) Pack Voltage: 53.072V (computed 53.064V) f1_u: 0x0601 (1537) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 2 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010136 Device ID 22507087
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -2.277A [charge] SOC 66.8% Temp: 8°C 9°C 11°C
+ Cell V: C1:3.319V C2:3.317V C3:3.320V C4:3.320V C5:3.319V C6:3.316V C7:3.318V C8:3.319V C9:3.318V C10:3.317V C11:3.318V C12:3.320V C13:3.319V C14:3.320V C15:3.320V C16:3.317V
+ Voltage avg: 3.318V (computed: 3.319V) Pack Voltage: 53.275V (computed 53.097V) f1_u: 0x0d01 (3329) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 10
+== Battery 3 SOH 96.5% HW 0x1 SW 0x3cc 1416719SLKOPG010166 Device ID 22507155
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 3.936A [discharge] SOC 64.0% Temp: 12°C 12°C 14°C
+ Cell V: C1:3.323V C2:3.321V C3:3.323V C4:3.321V C5:3.319V C6:3.320V C7:3.319V C8:3.320V C9:3.320V C10:3.319V C11:3.321V C12:3.317V C13:3.322V C14:3.320V C15:3.323V C16:3.323V
+ Voltage avg: 3.320V (computed: 3.321V) Pack Voltage: 53.132V (computed 53.131V) f1_u: 0x0503 (1283) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 02
+== Battery 4 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010175 Device ID 22507145
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 3.347A [discharge] SOC 67.4% Temp: 9°C 9°C 9°C
+ Cell V: C1:3.318V C2:3.319V C3:3.319V C4:3.320V C5:3.319V C6:3.322V C7:3.321V C8:3.318V C9:3.318V C10:3.319V C11:3.321V C12:3.320V C13:3.321V C14:3.323V C15:3.321V C16:3.322V
+ Voltage avg: 3.323V (computed: 3.320V) Pack Voltage: 53.159V (computed 53.121V) f1_u: 0x010d (269) f2_u: 0x0000 (0)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 5 SOH 97.1% HW 0x1 SW 0x3cc 1416719SLKOPG010084 Device ID 22507255
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 3.182A [discharge] SOC 69.4% Temp: 10°C 10°C 11°C
+ Cell V: C1:3.320V C2:3.320V C3:3.319V C4:3.318V C5:3.320V C6:3.322V C7:3.322V C8:3.321V C9:3.319V C10:3.321V C11:3.322V C12:3.322V C13:3.323V C14:3.323V C15:3.324V C16:3.322V
+ Voltage avg: 3.321V (computed: 3.321V) Pack Voltage: 53.143V (computed 53.138V) f1_u: 0x0f01 (3841) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 01
+== Battery 6 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010153 Device ID 22507081
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current -1.579A [charge] SOC 67.2% Temp: 10°C 10°C 11°C
+ Cell V: C1:3.314V C2:3.315V C3:3.313V C4:3.312V C5:3.314V C6:3.319V C7:3.317V C8:3.317V C9:3.315V C10:3.318V C11:3.329V C12:3.321V C13:3.322V C14:3.322V C15:3.321V C16:3.325V
+ Voltage avg: 3.318V (computed: 3.318V) Pack Voltage: 53.090V (computed 53.094V) f1_u: 0x000a (10) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 35
+== Battery 7 SOH 98.9% HW 0x1 SW 0x3cc 1416330SLKOPG008100 Device ID 22501168
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 1.380A [discharge] SOC 95.8% Temp: 8°C 8°C 8°C
+ Cell V: C1:3.314V C2:3.318V C3:3.315V C4:3.315V C5:3.317V C6:3.317V C7:3.319V C8:3.316V C9:3.314V C10:3.313V C11:3.319V C12:3.315V C13:3.315V C14:3.316V C15:3.316V C16:3.314V
+ Voltage avg: 3.322V (computed: 3.316V) Pack Voltage: 53.104V (computed 53.053V) f1_u: 0x0304 (772) f2_u: 0x0100 (256)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 8 SOH 98.2% HW 0x1 SW 0x3cc 1416719SLKOPG010159 Device ID 22507035
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 2.206A [discharge] SOC 75.8% Temp: 10°C 10°C 13°C
+ Cell V: C1:3.315V C2:3.319V C3:3.317V C4:3.318V C5:3.320V C6:3.320V C7:3.320V C8:3.318V C9:3.318V C10:3.318V C11:3.319V C12:3.316V C13:3.317V C14:3.318V C15:3.318V C16:3.315V
+ Voltage avg: 3.320V (computed: 3.318V) Pack Voltage: 53.109V (computed 53.086V) f1_u: 0x0c01 (3073) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 00
+
+== Battery 1 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010208 Device ID 22507318
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 2.501A [discharge] SOC 70.1% Temp: 8°C 8°C 10°C
+ Cell V: C1:3.315V C2:3.315V C3:3.315V C4:3.317V C5:3.317V C6:3.319V C7:3.316V C8:3.314V C9:3.315V C10:3.314V C11:3.317V C12:3.315V C13:3.316V C14:3.319V C15:3.316V C16:3.315V
+ Voltage avg: 3.317V (computed: 3.316V) Pack Voltage: 53.072V (computed 53.055V) f1_u: 0x0601 (1537) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 d7
+== Battery 2 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010136 Device ID 22507087
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 2.777A [discharge] SOC 66.8% Temp: 8°C 9°C 11°C
+ Cell V: C1:3.318V C2:3.318V C3:3.319V C4:3.319V C5:3.318V C6:3.316V C7:3.317V C8:3.317V C9:3.317V C10:3.317V C11:3.318V C12:3.320V C13:3.319V C14:3.320V C15:3.320V C16:3.317V
+ Voltage avg: 3.318V (computed: 3.318V) Pack Voltage: 53.087V (computed 53.090V) f1_u: 0x0d01 (3329) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 1a
+== Battery 3 SOH 96.5% HW 0x1 SW 0x3cc 1416719SLKOPG010166 Device ID 22507155
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 3.936A [discharge] SOC 64.0% Temp: 12°C 12°C 14°C
+ Cell V: C1:3.323V C2:3.321V C3:3.323V C4:3.321V C5:3.319V C6:3.320V C7:3.320V C8:3.319V C9:3.318V C10:3.318V C11:3.321V C12:3.317V C13:3.321V C14:3.320V C15:3.322V C16:3.323V
+ Voltage avg: 3.320V (computed: 3.320V) Pack Voltage: 53.132V (computed 53.126V) f1_u: 0x0503 (1283) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 02
+== Battery 4 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010175 Device ID 22507145
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 3.347A [discharge] SOC 67.4% Temp: 9°C 9°C 9°C
+ Cell V: C1:3.317V C2:3.318V C3:3.319V C4:3.320V C5:3.318V C6:3.320V C7:3.321V C8:3.318V C9:3.318V C10:3.319V C11:3.321V C12:3.320V C13:3.321V C14:3.320V C15:3.322V C16:3.322V
+ Voltage avg: 3.323V (computed: 3.320V) Pack Voltage: 53.159V (computed 53.114V) f1_u: 0x010d (269) f2_u: 0x0000 (0)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 5 SOH 97.1% HW 0x1 SW 0x3cc 1416719SLKOPG010084 Device ID 22507255
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 3.182A [discharge] SOC 69.4% Temp: 10°C 10°C 11°C
+ Cell V: C1:3.319V C2:3.319V C3:3.319V C4:3.318V C5:3.320V C6:3.322V C7:3.322V C8:3.321V C9:3.319V C10:3.321V C11:3.322V C12:3.322V C13:3.322V C14:3.322V C15:3.324V C16:3.321V
+ Voltage avg: 3.321V (computed: 3.321V) Pack Voltage: 53.143V (computed 53.133V) f1_u: 0x0f01 (3841) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 01
+== Battery 6 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010153 Device ID 22507081
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 4.634A [discharge] SOC 67.2% Temp: 10°C 10°C 11°C
+ Cell V: C1:3.315V C2:3.312V C3:3.315V C4:3.313V C5:3.315V C6:3.316V C7:3.317V C8:3.317V C9:3.315V C10:3.318V C11:3.329V C12:3.321V C13:3.322V C14:3.319V C15:3.321V C16:3.325V
+ Voltage avg: 3.318V (computed: 3.318V) Pack Voltage: 53.090V (computed 53.090V) f1_u: 0x000a (10) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 7 SOH 98.9% HW 0x1 SW 0x3cc 1416330SLKOPG008100 Device ID 22501168
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 1.380A [discharge] SOC 95.8% Temp: 8°C 8°C 8°C
+ Cell V: C1:3.314V C2:3.318V C3:3.315V C4:3.315V C5:3.317V C6:3.317V C7:3.317V C8:3.315V C9:3.312V C10:3.313V C11:3.319V C12:3.313V C13:3.315V C14:3.314V C15:3.314V C16:3.314V
+ Voltage avg: 3.322V (computed: 3.315V) Pack Voltage: 53.104V (computed 53.042V) f1_u: 0x0304 (772) f2_u: 0x0100 (256)
+ E1E6: 01 01 00 01 01 00 00 01
+== Battery 8 SOH 98.2% HW 0x1 SW 0x3cc 1416719SLKOPG010159 Device ID 22507035
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 2.206A [discharge] SOC 75.8% Temp: 10°C 10°C 13°C
+ Cell V: C1:3.315V C2:3.319V C3:3.317V C4:3.317V C5:3.317V C6:3.319V C7:3.319V C8:3.317V C9:3.318V C10:3.318V C11:3.318V C12:3.316V C13:3.317V C14:3.318V C15:3.318V C16:3.315V
+ Voltage avg: 3.320V (computed: 3.317V) Pack Voltage: 53.109V (computed 53.078V) f1_u: 0x0c01 (3073) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 f4 0c 0d
+
+== Battery 1 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010208 Device ID 22507318
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 2.501A [discharge] SOC 70.1% Temp: 8°C 8°C 10°C
+ Cell V: C1:3.314V C2:3.313V C3:3.314V C4:3.317V C5:3.317V C6:3.319V C7:3.316V C8:3.314V C9:3.315V C10:3.314V C11:3.317V C12:3.315V C13:3.317V C14:3.315V C15:3.316V C16:3.317V
+ Voltage avg: 3.317V (computed: 3.316V) Pack Voltage: 53.072V (computed 53.050V) f1_u: 0x0601 (1537) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 2 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010136 Device ID 22507087
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 2.777A [discharge] SOC 66.8% Temp: 8°C 9°C 11°C
+ Cell V: C1:3.318V C2:3.318V C3:3.319V C4:3.319V C5:3.318V C6:3.316V C7:3.317V C8:3.317V C9:3.317V C10:3.317V C11:3.316V C12:3.319V C13:3.318V C14:3.319V C15:3.317V C16:3.317V
+ Voltage avg: 3.318V (computed: 3.318V) Pack Voltage: 53.087V (computed 53.082V) f1_u: 0x0d01 (3329) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 d5
+== Battery 3 SOH 96.5% HW 0x1 SW 0x3cc 1416719SLKOPG010166 Device ID 22507155
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 3.936A [discharge] SOC 64.0% Temp: 12°C 12°C 14°C
+ Cell V: C1:3.321V C2:3.321V C3:3.322V C4:3.320V C5:3.318V C6:3.320V C7:3.320V C8:3.319V C9:3.318V C10:3.318V C11:3.321V C12:3.317V C13:3.321V C14:3.320V C15:3.322V C16:3.321V
+ Voltage avg: 3.320V (computed: 3.320V) Pack Voltage: 53.132V (computed 53.119V) f1_u: 0x0503 (1283) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 02
+== Battery 4 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010175 Device ID 22507145
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 3.347A [discharge] SOC 67.4% Temp: 9°C 9°C 9°C
+ Cell V: C1:3.317V C2:3.318V C3:3.319V C4:3.320V C5:3.318V C6:3.320V C7:3.320V C8:3.317V C9:3.317V C10:3.318V C11:3.320V C12:3.318V C13:3.320V C14:3.319V C15:3.320V C16:3.322V
+ Voltage avg: 3.323V (computed: 3.319V) Pack Voltage: 53.159V (computed 53.103V) f1_u: 0x010d (269) f2_u: 0x0000 (0)
+ E1E6: 01 01 00 01 01 00 00 95
+== Battery 5 SOH 97.1% HW 0x1 SW 0x3cc 1416719SLKOPG010084 Device ID 22507255
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 3.182A [discharge] SOC 69.4% Temp: 10°C 10°C 11°C
+ Cell V: C1:3.319V C2:3.319V C3:3.319V C4:3.317V C5:3.319V C6:3.321V C7:3.321V C8:3.319V C9:3.318V C10:3.320V C11:3.321V C12:3.321V C13:3.322V C14:3.322V C15:3.324V C16:3.321V
+ Voltage avg: 3.321V (computed: 3.320V) Pack Voltage: 53.143V (computed 53.123V) f1_u: 0x0f01 (3841) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 6 SOH 96.9% HW 0x1 SW 0x3cc 1416719SLKOPG010153 Device ID 22507081
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 4.634A [discharge] SOC 67.2% Temp: 10°C 10°C 11°C
+ Cell V: C1:3.315V C2:3.312V C3:3.315V C4:3.313V C5:3.315V C6:3.316V C7:3.315V C8:3.316V C9:3.315V C10:3.319V C11:3.328V C12:3.320V C13:3.321V C14:3.318V C15:3.319V C16:3.325V
+ Voltage avg: 3.318V (computed: 3.318V) Pack Voltage: 53.090V (computed 53.082V) f1_u: 0x000a (10) f2_u: 0x0002 (2)
+ E1E6: 01 01 00 01 01 00 00 00
+== Battery 7 SOH 98.9% HW 0x1 SW 0x3cc 1416330SLKOPG008100 Device ID 22501168
+ Faults < 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 1.380A [discharge] SOC 95.8% Temp: 8°C 8°C 8°C
+ Cell V: C1:3.314V C2:3.316V C3:3.316V C4:3.313V C5:3.317V C6:3.316V C7:3.317V C8:3.315V C9:3.312V C10:3.313V C11:3.319V C12:3.313V C13:3.315V C14:3.314V C15:3.314V C16:3.314V
+ Voltage avg: 3.322V (computed: 3.315V) Pack Voltage: 53.104V (computed 53.038V) f1_u: 0x0304 (772) f2_u: 0x0100 (256)
+ E1E6: 01 01 00 01 01 0c 00 02
+== Battery 8 SOH 98.2% HW 0x1 SW 0x3cc 1416719SLKOPG010159 Device ID 22507035
+ Faults < 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >
+ Current 2.206A [discharge] SOC 75.8% Temp: 10°C 10°C 13°C
+ Cell V: C1:3.314V C2:3.319V C3:3.315V C4:3.317V C5:3.317V C6:3.319V C7:3.319V C8:3.317V C9:3.318V C10:3.318V C11:3.318V C12:3.316V C13:3.316V C14:3.318V C15:3.317V C16:3.313V
+ Voltage avg: 3.320V (computed: 3.317V) Pack Voltage: 53.109V (computed 53.071V) f1_u: 0x0c01 (3073) f2_u: 0x0003 (3)
+ E1E6: 01 01 00 01 01 f3 0c 00
+*/
diff --git a/to-snprintf.pl b/to-snprintf.pl
new file mode 100644
index 0000000..19ead06
--- /dev/null
+++ b/to-snprintf.pl
@@ -0,0 +1,28 @@
+#!/usr/bin/perl
+#
+# to use:
+# perl to-snprintf.pl < ee-discovery.json
+#
+
+use strict;
+use warnings;
+
+my @variables;
+
+print <<"HEADER";
+ snprintf (str, str_len, "\\
+HEADER
+
+while (my $line = <>) {
+ chomp $line;
+ next if $line eq '' or $line =~ m/^#/;
+ if ($line =~ s/%([A-Z]+)%/%s/) {
+ push @variables, lc $1;
+ }
+ $line =~ s/"/\\"/g;
+ print "$line\\n\\\n";
+}
+
+print "\",\n";
+
+print " ".join(', ',@variables).");\n";