diy solar

diy solar

Android App for Overkill 4S BMS crashes when the battery pack is discharged

Torbjorn

New Member
Joined
Feb 21, 2021
Messages
5
I've built a battery pack using Overkill 4S BMS and 4 pcs 280Ah cells from AliExpress.

From the Overkill website, I've downloaded the latest apk-file for the Android app.
The location is turned on, and the xiaoxiang app has location permission.

If the pack is idle or charging, it is possible to start the app and look at all parameters.

However, as soon as the pack is discharged the App crashes. It is not possible to start it while discharging. It crashes instantly.

I'm using Samsung S9.

A family member has iPhones, so I've tried the iPhone app. That app work with all scenarios.
 
I am running the latest app ( 1026) on the overkill site and an earlier version,
xiaoxiang:v3.1.1015 app, no promlems with either on a Samsung tablet and an older phone.

Mike
 
I connected the Phone to a computer a looked at the data.
In the data-directory there was a crash-file with the below content.

I can add that I currently draw some 22Amps from the battery.
So the string "-22-1" shall most likely be rendered on the gauge meter on the display.
Somehow the code has a problem to cast the string to a number.

java.lang.NumberFormatException: For input string: "−22.1"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
at sun.misc.FloatingDecimal.parseFloat(FloatingDecimal.java:122)
at java.lang.Float.parseFloat(Float.java:451)
at java.lang.Float.valueOf(Float.java:416)
at com.jiabaida.bms.view.GaugeView.drawArcText(GaugeView.java:316)
at com.jiabaida.bms.view.GaugeView.onDraw(GaugeView.java:290)
at android.view.View.draw(View.java:23187)
at android.view.View.updateDisplayListIfDirty(View.java:22062)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5214)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5186)
at android.view.View.updateDisplayListIfDirty(View.java:22017)
at android.view.View.draw(View.java:22917)
at android.view.ViewGroup.drawChild(ViewGroup.java:5230)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4987)
at android.view.View.updateDisplayListIfDirty(View.java:22048)
at android.view.View.draw(View.java:22917)
at android.view.ViewGroup.drawChild(ViewGroup.java:5230)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4987)
at android.view.View.draw(View.java:23190)
at android.widget.ScrollView.draw(ScrollView.java:2880)
at android.view.View.updateDisplayListIfDirty(View.java:22062)
at android.view.View.draw(View.java:22917)
at android.view.ViewGroup.drawChild(ViewGroup.java:5230)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4987)
at android.view.View.draw(View.java:23190)
at android.view.View.updateDisplayListIfDirty(View.java:22062)
at android.view.View.draw(View.java:22917)
at android.view.ViewGroup.drawChild(ViewGroup.java:5230)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4987)
at android.view.View.draw(View.java:23190)
at android.view.View.updateDisplayListIfDirty(View.java:22062)
at android.view.View.draw(View.java:22917)
at android.view.ViewGroup.drawChild(ViewGroup.java:5230)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4987)
at android.view.View.draw(View.java:23190)
at android.view.View.updateDisplayListIfDirty(View.java:22062)
at android.view.View.draw(View.java:22917)
at android.view.ViewGroup.drawChild(ViewGroup.java:5230)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4987)
at com.jeremyfeinstein.slidingmenu.lib.CustomViewAbove.dispatchDraw(CustomViewAbove.java:827)
at android.view.View.draw(View.java:23190)
at android.view.View.updateDisplayListIfDirty(View.java:22062)
at android.view.View.draw(View.java:22917)
at android.view.ViewGroup.drawChild(ViewGroup.java:5230)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4987)
at android.view.View.updateDisplayListIfDirty(View.java:22048)
at android.view.View.draw(View.java:22917)
at android.view.ViewGroup.drawChild(ViewGroup.java:5230)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4987)
at android.view.View.updateDisplayListIfDirty(View.java:22048)
at android.view.View.draw(View.java:22917)
at android.view.ViewGroup.drawChild(ViewGroup.java:5230)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4987)
at android.view.View.updateDisplayListIfDirty(View.java:22048)
at android.view.View.draw(View.java:22917)
at android.view.ViewGroup.drawChild(ViewGroup.java:5230)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4987)
at android.view.View.draw(View.java:23190)
at com.android.internal.policy.DecorView.draw(DecorView.java:1154)
at android.view.View.updateDisplayListIfDirty(View.java:22062)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:588)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:594)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:667)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:4296)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:4080)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3348)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2225)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9126)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:999)
at android.view.Choreographer.doCallbacks(Choreographer.java:797)
at android.view.Choreographer.doFrame(Choreographer.java:732)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:984)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:8167)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
versionName=3.1.1026
versionCode=27
BOARD=exynos9810
BOOTLOADER=G960FXXSFFUB3
BRAND=samsung
CPU_ABI=arm64-v8a
CPU_ABI2=
DEVICE=starlte
DISPLAY=QP1A.190711.020.G960FXXSFFUB3
FINGERPRINT=samsung/starltexx/starlte:10/QP1A.190711.020/G960FXXSFFUB3:user/release-keys
HARDWARE=samsungexynos9810
HOST=SWDH4619
ID=QP1A.190711.020
IS_DEBUGGABLE=false
IS_EMULATOR=false
MANUFACTURER=samsung
MODEL=SM-G960F
PERMISSIONS_REVIEW_REQUIRED=true
PRODUCT=starltexx
RADIO=unknown
SERIAL=unknown
SUPPORTED_32_BIT_ABIS=[Ljava.lang.String;@3ac096d
SUPPORTED_64_BIT_ABIS=[Ljava.lang.String;@26d69a2
SUPPORTED_ABIS=[Ljava.lang.String;@4118633
TAGS=release-keys
TIME=1613368713000
TYPE=user
UNKNOWN=unknown
USER=dpi
崩溃时间:2021-04-10-15-18-58
 
Last edited:
Found this:

I bet it is a Locale issue. My Mobile is most locale set to Locale sv-SE and there expect comma (,) as decimal separator.
 
Solved:
I changed the language setting on the Mobile from Swedish to English. And now the App works.
And I can clearly see the gauge meter displays "-22,1" (i.e. a decimal comma).
So this must be an issue in the code. It cannot handle different Locale.
 
Solved:
I changed the language setting on the Mobile from Swedish to English. And now the App works.
And I can clearly see the gauge meter displays "-22,1" (i.e. a decimal comma).
So this must be an issue in the code. It cannot handle different Locale.
Nice work Torbjorn! I had the same problem with my app and it has frustrated me for a while?. Changing the language fom norwegian to english was all it took, thanks a lot! ?
 
I have just finished installing a 500 Ah LFP-bank in my boat. It works fine, the BMS also (after dealing with the decimal komma issue).
But I found something that puzzles me: I was testing the temp sensor. It works and close the charging at the defined temperature. Doing this, the APP reports 13,2V, but measuring the output I get 12,5V. This is the same if I close the charging manually on the APP or the low temp sensor kics in. No big deal, but do anyone have an explanation for this?
 
Thank you! I had the exact problem and to change the language solved it! Too bad I cannot have my native language on my phone just because a crappy chinese app... ?
 
Any permanent fix on this? Someone sent feedback to developer?
I sent an email to Overkill Solar support about the issue and described the possible root cause of the issue. Basically a summary of the above finding. I suggested that Overkill could pass it on to the relevant company where the development unit resided.
I got thanks in response and a message that he should forward my email to the manufacturing company.
Just checked Overkill website and they still list the same faulty version (3.1.1026). Conclude it was not a high prio issue :)
 
I sent an email to Overkill Solar support about the issue and described the possible root cause of the issue. Basically a summary of the above finding. I suggested that Overkill could pass it on to the relevant company where the development unit resided.
I got thanks in response and a message that he should forward my email to the manufacturing company.
Just checked Overkill website and they still list the same faulty version (3.1.1026). Conclude it was not a high prio issue :)
Ok thanks for feedback. You still have the e-mail you sent overkill? If you send it to me i can forward to developer :)
 
Back
Top