DIYBMS v4

Hello Stuart,

iam using the newest software on esp32 so 2-09-21. the controller keeps rebooting so i hooked it up to arduino to see the output and this is what i got, can u help me ? i dont know what to do. i reflashed all the 4.2 modules with the controler. when it does boot up i get all the modules to display and no fault messages in the web interface.
with the older firmware it worked like a charme, with this newest not so much

regards and keep up the good work.

Edwin

Many thanks to everyone for suggestions!

I was goin to make some small tests with cable length and so on and ended up completely relocating the controller and changing the communication cables and a power supply for the controller.
Initially it was so:

  • powered with a cell phone charger
  • located near inverter power cables
  • communication cable going in the came cable trace with power cable
  • communication cable 2 twisted pairs in the same cable around 2,5m from controller to the battery compartment and there 1,5 m on the tx side and 15cm on rx side

After relocation:

  • powered with a dc-dc convertor
  • installed way further from power cables
  • communication cables traced separately from power cables
  • tx and rx cables a separate twisted pairs 1,5m and 30 cm respectively

Almost one hour from turning it back on and no errors so far. Previously they were appearing every 5-10 minutes.

Interesting, most have found the latest to fix a lot of random reboots.

First, disconnect the TFT screen if you have one.

Also disabled influx and Mqtt integration.

Does that fix the reboots?

Hi stuart,

Weirdly enough it does. I have a influx server running. I get a bunch of data but it does indeed cause the controller to reboot.

Do u know what the problem could be ? What can I do to help diagnose the problem

Edwin

I need to get the actual text of the error/stack dump.

Can you try and capture it using a usb cable?

1 Like

Ofcourse if u tel me how. Arduino serial ? Or do I need something else?

Just a microusb cable into your computer.

If you use the Arduino serial terminal/console it will output the debug information.

Just wait for it to crash and capture the screen text (as text not a picture!)

1 Like

this is the output of serial debug.
i had influx running all night with the server running and no problems. this morning i shut down the server and the controller started it`s reboots again until it got stuck. i am happy i know the problem now. i hope u can find the solution. :blush:

Rebooting...
ets Jun  8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:10124
load:0x40080400,len:5828
entry 0x400806a8



                _          __ 
    _|  o      |_)  |\/|  (_  
   (_|  |  \/  |_)  |  |  __) 
           /                  
[I][main.cpp:3286] setup(): CONTROLLER - ver:e2d28321e674484243ec1320f295843dbb2d07dc compiled 2021-09-02T11:28:48.112Z
[I][main.cpp:3291] setup(): ESP32 Chip model = 1, Rev 1, Cores=2, Features=50
[I][HAL_ESP32.cpp:232] ConfigureI2C(): Configure I2C
[I][HAL_ESP32.cpp:291] ConfigureI2C(): Found TCA9534A
[I][HAL_ESP32.cpp:321] ConfigureI2C(): Found TCA6408
[D][HAL_ESP32.h:288] TouchScreenUpdate(): Touch = touch=0 pressure=128 x=0 y=3244
[I][main.cpp:3306] setup(): TFT screen is INSTALLED
[I][main.cpp:934] SetControllerState(): ** Controller changed state from Unknown to PowerUp **
[I][main.cpp:3328] setup(): LITTLEFS mounted, totalBytes=589824, usedBytes=81920
[I][main.cpp:241] mountSDCard(): Mounting SD card
[W][sd_diskio.cpp:169] sdCommand(): no token received
[W][sd_diskio.cpp:169] sdCommand(): no token received
[W][sd_diskio.cpp:169] sdCommand(): no token received
[E][sd_diskio.cpp:194] sdCommand(): Card Failed! cmd: 0x00
[W][sd_diskio.cpp:505] ff_sd_initialize(): GO_IDLE_STATE failed
[E][sd_diskio.cpp:775] sdcard_mount(): f_mount failed: (3) The physical drive cannot work
[W][sd_diskio.cpp:169] sdCommand(): no token received
[W][sd_diskio.cpp:169] sdCommand(): no token received
[W][sd_diskio.cpp:169] sdCommand(): no token received
[E][sd_diskio.cpp:194] sdCommand(): Card Failed! cmd: 0x00
[E][main.cpp:260] mountSDCard(): Card Mount Failed
[I][HAL_ESP32.cpp:140] ConfigureCAN(): CAN driver installed.  Filter=1621098496 Mask=6291455
[I][HAL_ESP32.cpp:150] ConfigureCAN(): CAN driver started
[D][settings.cpp:20] ReadConfig(): ReadConfig diybms
[D][settings.cpp:42] ReadConfig(): checksum verified
[I][main.cpp:3352] setup(): 
[D][main.cpp:200] SetupRS485(): Setup RS485
[D][main.cpp:187] ConfigureRS485(): Configure RS485
[D][HAL_ESP32.cpp:86] SetOutputState(): SetOutputState 0=153
[D][HAL_ESP32.cpp:86] SetOutputState(): SetOutputState 1=153
[D][HAL_ESP32.cpp:86] SetOutputState(): SetOutputState 2=153
[D][HAL_ESP32.cpp:86] SetOutputState(): SetOutputState 3=153
Press SPACE BAR to enter terminal based configuration................skipped
[D][settings.cpp:20] ReadConfig(): ReadConfig diybmswifi
[D][settings.cpp:42] ReadConfig(): checksum verified
[I][main.cpp:934] SetControllerState(): ** Controller changed state from PowerUp to Stabilizing **
[D][tft.cpp:62] TFTScreenTouchInterrupt(): Touch
[D][main.cpp:757] tca6408_isr_task(): tca6408_isr
[I][tft.cpp:388] tftwakeup_task(): Wake up screen
[D][WiFiGeneric.cpp:374] _eventCallback(): Event: 0 - WIFI_READY
[D][WiFiGeneric.cpp:374] _eventCallback(): Event: 2 - STA_START
[I][main.cpp:1422] connectToWifi(): Hostname: DIYBMS-001704B9, current state 255
[D][WiFiGeneric.cpp:374] _eventCallback(): Event: 4 - STA_CONNECTED
[I][Rules.cpp:142] SetError(): Set error 4
[D][WiFiGeneric.cpp:374] _eventCallback(): Event: 7 - STA_GOT_IP
[D][WiFiGeneric.cpp:419] _eventCallback(): STA IP: 192.168.178.76, MASK: 255.255.255.0, GW: 192.168.178.1
[I][main.cpp:1511] onWifiConnect(): Wi-Fi status=3
[I][main.cpp:1513] onWifiConnect(): Request NTP from time.google.com
[I][DIYBMSServer.cpp:2595] StartServer(): Start Web Server complete
[I][ArduinoOTA.cpp:141] begin(): OTA server at: DIYBMS-001704B9.local:3232
[I][main.cpp:1547] onWifiConnect(): mDNS responder started
[I][main.cpp:1552] onWifiConnect(): You can access DIYBMS interface at http://DIYBMS-001704B9.local or http://192.168.178.76
[I][tft.cpp:388] tftwakeup_task(): Wake up screen
[I][Rules.cpp:142] SetError(): Set error 4
[W][AsyncTCP.cpp:969] _poll(): rx timeout 4
[I][main.cpp:934] SetControllerState(): ** Controller changed state from Stabilizing to Running **
[I][main.cpp:1459] influxdb_task(): Influx task
[D][influxdb.cpp:130] influx_task_action(): Create new client
[I][influxdb.cpp:167] influx_task_action(): Influx host 192.168.178.108 port 8086
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[I][main.cpp:1459] influxdb_task(): Influx task
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[E][influxdb.cpp:58] influxdb_onError(): Influx connect error
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[E][AsyncTCP.cpp:953] _poll(): 0x3ffed4c0 != 0x4cb2a8c0
[I][main.cpp:1459] influxdb_task(): Influx task
[D][influxdb.cpp:130] influx_task_action(): Create new client
[I][influxdb.cpp:167] influx_task_action(): Influx host 192.168.178.108 port 8086
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[E][influxdb.cpp:58] influxdb_onError(): Influx connect error
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[I][main.cpp:1459] influxdb_task(): Influx task
[D][influxdb.cpp:130] influx_task_action(): Create new client
[I][influxdb.cpp:167] influx_task_action(): Influx host 192.168.178.108 port 8086
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[E][AsyncTCP.cpp:953] _poll(): 0x3ffed3ec != 0x4cb2a8c0
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[E][AsyncTCP.cpp:953] _poll(): 0x3ffed3ec != 0x4cb2a8c0
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[E][AsyncTCP.cpp:953] _poll(): 0x3ffed3ec != 0x4cb2a8c0
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[E][AsyncTCP.cpp:953] _poll(): 0x3ffed3ec != 0x4cb2a8c0
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[E][AsyncTCP.cpp:953] _poll(): 0x3ffed3ec != 0x4cb2a8c0
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[E][AsyncTCP.cpp:953] _poll(): 0x3ffed3ec != 0x4cb2a8c0
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[E][AsyncTCP.cpp:953] _poll(): 0x3ffed3ec != 0x4cb2a8c0
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[E][AsyncTCP.cpp:953] _poll(): 0x3ffed3ec != 0x4cb2a8c0
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[E][AsyncTCP.cpp:953] _poll(): 0x3ffed3ec != 0x4cb2a8c0
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[E][AsyncTCP.cpp:953] _poll(): 0x3ffed3ec != 0x4cb2a8c0
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[E][AsyncTCP.cpp:953] _poll(): 0x3ffed3ec != 0x4cb2a8c0
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[E][AsyncTCP.cpp:953] _poll(): 0x3ffed3ec != 0x4cb2a8c0
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[E][AsyncTCP.cpp:953] _poll(): 0x3ffed3ec != 0x4cb2a8c0
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[E][AsyncTCP.cpp:953] _poll(): 0x3ffed3ec != 0x4cb2a8c0
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[E][AsyncTCP.cpp:953] _poll(): 0x3ffed3ec != 0x4cb2a8c0
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
[E][AsyncTCP.cpp:953] _poll(): 0x3ffed3ec != 0x4cb2a8c0
[W][AsyncTCP.cpp:949] _poll(): pcb is NULL
Guru Meditation Error: Core  1 panic'ed (InstrFetchProhibited). Exception was unhandled.
Core 1 register dump:
PC      : 0x00001670  PS      : 0x00060430  A0      : 0x800e630e  A1      : 0x3ffe9eb0  
A2      : 0x3ffec1a0  A3      : 0x000000f3  A4      : 0x00000001  A5      : 0x00000000  
A6      : 0x3ffe5f10  A7      : 0x00060223  A8      : 0x800e605f  A9      : 0x3ffe9e90  
A10     : 0x3ffec1e4  A11     : 0x3ffe9eb8  A12     : 0x3ffe9ebc  A13     : 0x3ffe9eb7  
A14     : 0x00060420  A15     : 0x00000000  SAR     : 0x00000004  EXCCAUSE: 0x00000014  
EXCVADDR: 0x00001670  LBEG    : 0x4000c2e0  LEND    : 0x4000c2f6  LCOUNT  : 0xffffffff  

ELF file SHA256: 0000000000000000

Backtrace: 0x00001670:0x3ffe9eb0 0x400e630b:0x3ffe9ee0 0x40092cf6:0x3ffe9f10

Rebooting...
ets Jun  8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:10124
load:0x40080400,len:5828
entry 0x400806a8



1 Like

Thanks for this. I think this has also been reported by somebody else.

The controller fails when the influx server is switched off/rebooted.

1 Like

Glad to help make it an even better product. Love it

1 Like

Dear Stuart, I have a question. If you see in the DIYBMS data I have cell 5 of the second group, with a much lower voltage, however the data I receive from Influx is not the same. What could be the cause of this difference in values?

image
Related to this, I have seen that in influs data arrives from cells 1_0 to 1_15 but they are identical to the values 0_0 to 0_15 and on the other hand the fields 0_16 to 0_31 appear but without data

Influx data is sent in batches of 8 cells at a time, with a few seconds delay between each request.

It should be the correct data though!

unfortunately it is not so. I don’t know what I could do
ah, I understand why the records 0_16 to 0_31 were generated and they have no data. When I was setting up for a while I had 32S 1P instead of 16S2P, this has generated the fields 0_16 to 0_31 with no data. What I am going to try is to update to the new version of the driver. Although since the influx I have is 1.8 I imagine that I have to update it too.

By the way Stuart, I have managed with the ventilation of my plate to place 16 modules and ventilate them to be burned for more than 5 continuous minutes without exceeding 61º

If you update the controller software, then follow the instructions in this link to make it work with older versions of influx.

Hi. Maybe someone got the same issue.

I have my OPENVPN Server where the remote systems (Victron Cerbo / Raspberry …) are connecting to. On this sites, a diybms is connected to the same network or even to the local wifi hotspot.

When I ssh to the remote Linux I can do a “curl http://ip.of.DIYBMS/monitor2.json” without a Problem.

Then I make a “ssh -L 1080:ip.of.DIYBMS:80 remotehost” and tunnel my traffic to my browser. Here things are getting nasty.
The response is the correct dark theme of the diybms managing screen, but no data.
only the blue ring running in circles.

I tried different options on SSH, but the results are not getting better.

That looks like a port mapping issue. Can you map port 80 to port 80 rather than 1080?

how did you solve the problem?

Redid all bms comunication wiring, rerouted all the cables, shortened cable 3 from 7m to 4m and cable 2 from 5m to 4m, removed all common grounds to each of the 3 packs, using now a different superseal conector for rx and tx, grounded all long comunication cables to the RX of the module that recieves the signal and now it works no voltage fluctuation on any cell while charging at 20A.

2 Likes



Black and Orange

2 Likes