A "reverse engineering" of the Pytes CAN protocol when used with Victron/Venus OS. Inspired by https://github.com/dfch/BydCanProtocol
The following information has been discovered between a Pytes V5α and a Victron Venus OS v3.34.
- CAN protocol is set to 500kBit/s (no FD).
- All information has been dumped on a Raspberry 4 with Venus OS v3.34 (as written above) and a waveshare RS485 CAN HAT with
cansniffer -c -t 0 can0
. - To test if the protocol works as expected you can use
cansend
on the Raspberry to send can messages to Venus OS. You need to send all messages, and do that in a loop, otherwise Venus OS does not show any information about the battery after some seconds. - Another user posted can messages from his Pytes E-Box 4850-C here: hoylabs/OpenDTU-OnBattery#541 (reply in thread)
Id | Hex | Ascii | Description |
---|---|---|---|
351 | 38 02 E8 03 E8 03 C7 01 | 8....... | Dvcc: CVL, CCL, DCL, DVL |
[00:01] "38 02" (V/10, DeciVolt) 56.8V CVL | |||
[02:03] "E8 03" (A/10, DeciAmp) 100.0A CCL | |||
[04:05] "E8 03" (A/10, DeciAmp) 100.0A DCL | |||
[06:07] "C7 01" (V/10, DeciVolt) 45.5V DVL | |||
355 | 33 00 64 00 | 3.d. | StateInfo: State of Charge, State of Health |
[00:01] "33 00" (%) 51% SoC | |||
[02:03] "64 00" (%) 100% SoH | |||
356 | 8E 14 F9 FF B4 00 | ...... | BatteryStats: Voltage, Amps, Temperature |
[00:01] "BE 14" (mV, MilliVolt) 52.62V current voltage | |||
[02:03] "F9 FF" (A/10, DeciAmp, signed) -0.7A consumed Amps; "-" discharge / "+" charge | |||
[04:05] "B4 00" (°C/10, Deci, signed) 18.0°C battery temperature | |||
35A | 00 00 00 00 00 00 00 00 | ........ | Alarms and Warnings, bit field, '0' means OK |
1. .. .. .. .. .. .. .. | ........ | [00,0] "1" Low battery voltage: Alarm | |
4. .. .. .. .. .. .. .. | ........ | [00,0] "4" High temperature: Alarm | |
.4 .. .. .. .. .. .. .. | ........ | [00,1] "4" High battery voltage : Alarm | |
.. 1. .. .. .. .. .. .. | ........ | [01,0] "1" Low charge temperature: Alarm | |
.. 4. .. .. .. .. .. .. | ........ | [01,0] "4" High discharge current: Alarm | |
.. .1 .. .. .. .. .. .. | ........ | [01,1] "1" Low temperature: Alarm | |
.. .4 .. .. .. .. .. .. | ........ | [01,1] "4" High charge temperature: Alarm | |
.. .. 4. .. .. .. .. .. | ........ | [02,0] "4" Internal failure: Alarm | |
.. .. .1 .. .. .. .. .. | ........ | [02,1] "1" High charge current: Alarm | |
.. .. .. .1 .. .. .. .. | ........ | [03,1] "01" Cell imbalance: Alarm | |
.. .. .. .. 1. .. .. .. | ........ | [04,0] "1" Low battery voltage: Warning | |
.. .. .. .. 4. .. .. .. | ........ | [04,0] "4" High temperature: Warning | |
.. .. .. .. .4 .. .. .. | ........ | [04,1] "4" High battery voltage : Warning | |
.. .. .. .. .. 1. .. .. | ........ | [05,0] "1" Low charge temperature: Warning | |
.. .. .. .. .. 4. .. .. | ........ | [05,0] "4" High discharge current: Warning | |
.. .. .. .. .. .1 .. .. | ........ | [05,1] "1" Low temperature: Warning | |
.. .. .. .. .. .4 .. .. | ........ | [05,1] "4" High charge temperature: Warning | |
.. .. .. .. .. .. 4. .. | ........ | [06,0] "4" Internal failure: Warning | |
.. .. .. .. .. .. .1 .. | ........ | [06,1] "1" High charge current: Warning | |
.. .. .. .. .. .. .. .1 | ........ | [07,1] "1" Cell imbalance: Warning | |
35E | 50 59 54 45 53 | PYTES | ManufacturerInfo |
[00:04] "50 59 54 45 53" (string) "PYTES" manufacturer identification | |||
35F | 01 00 6E 01 32 00 | ..n.2. | BatteryInfo: Firmware version, Ah available |
[00:01] "01 00" (v'01'.'00') maybe v01.00 hardware version | |||
[02:03] "6E 01" (v'6E'.'01') v110.01 firmware version | |||
[04:05] "32 00" (Ah) 50Ah capacity available | |||
360 | 00 | ........ | ??? always null |
372 | 02 00 01 00 01 00 02 00 | ........ | BankInfo |
[00:01] "02 00" 2 batteries online | |||
[02:03] "01 00" 1 batteries block charge | |||
[04:05] "00 00" 1 batteries block discharge | |||
[06:07] "02 00" 2 batteries offline | |||
373 | D8 0C DA 0C 21 01 23 01 | ....#.#. | CellInfo: Cell Voltage and Temperature |
[00:01] "D8 0C" (mV) 3.288V Lowest Cell Voltage, see 374 | |||
[02:03] "DA 0C" (mV) 3.290V Highest Cell Voltage, see 375 | |||
[04:05] "21 01" (Kelvin) 289K, 16°C Minimum Cell Temperature, see 376 | |||
[06:07] "23 01" (Kelvin) 291K, 18°C Maximum Cell Temperature, see 377 | |||
374 | 30 38 30 30 00 00 00 00 | 0800.... | Battery/Cell name (string) "0800 "with "Lowest Cell Voltage", see 373 |
375 | 30 34 30 30 00 00 00 00 | 0400.... | Battery/Cell name (string) "0400" with "Highest Cell Voltage", see 373 |
376 | 30 32 30 30 00 00 00 00 | 0000.... | Battery/Cell name (string) "0200" with "Minimum Cell Temperature", see 373 |
377 | 30 33 30 30 00 00 00 00 | 0000.... | Battery/Cell name (string) "0300" with "Maximum Cell Temperature", see 373 |
378 | 40 08 00 00 2B 07 00 00 | @...2... | History: Charged / Discharged Energy |
[00:03] "40 08 00 00" (kWh/10, HectoWattHour) 211.2kWh Charged Energy | |||
[04:07] "2B 07 00 00" (kWh/10, HectoWattHour) 183.5kWh Discharged Energy | |||
379 | 64 00 | d. | BatterySize: Installed Ah |
[00:01] "64 00" (Ah) 100Ah | |||
380 | XX XX XX XX XX XX XX XX | redacted | Serial number - part 1 (string) |
381 | XX XX XX XX XX XX XX XX | redacted | Serial number - part 2 (string) |