Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wrong Charge Voltage Limit (FLOAT instead of MAX) #421

Closed
MisterX1000 opened this issue Jan 16, 2023 · 83 comments
Closed

Wrong Charge Voltage Limit (FLOAT instead of MAX) #421

MisterX1000 opened this issue Jan 16, 2023 · 83 comments
Labels
bug Something isn't working

Comments

@MisterX1000
Copy link

see #415

After installation of v.0.14.3 FLOAT_CELL_VOLTAGE is used for CVL instead of MAX_CELL_VOLTAGE .

MIN_CELL_VOLTAGE = 2.9
MAX_CELL_VOLTAGE = 3.45
FLOAT_CELL_VOLTAGE = 3.35

With v.0.14.2 the CVL limit works like expected!

image

Here you can see that I installed the v.0.14.3 at 12.Jan - there was the CVL "jump" down.

image

@rcrc1978
Copy link

I'm having the same problem, in the picture you can see the gragh for CVL it starts at 13.8v (linear false). Then enabled you can see CVL goes to 13.4v, then I upped the float voltage to 3.4 and it then goes to13.6v. Finally disabled linear setting and back to 3.45/13.8v. I posted in 3 other places but they were either closed topics or old posts and likely would not be seen. Came on here again this morning and found yours.

CVL limit

@Louisvdw Louisvdw added the bug Something isn't working label Jan 16, 2023
@morres83
Copy link

Are there any updates on this topic? In my understanding, when looking at the code, linear mode is not usable as it will only charge up to the FLOAT voltage instead of the MAX voltage.

@pkali1
Copy link

pkali1 commented Mar 2, 2023

Inside battery.py change FLOAT_CELL_VOLTAGE to MAX_CELL_VOLTAGE and linear might be working.
I will test it today, if there is a sun..

def manage_charge_voltage_linear(self):
foundHighCellVoltage = False
if CVCM_ENABLE:
currentBatteryVoltage = 0
penaltySum = 0
for i in range(self.cell_count):
cv = self.get_cell_voltage(i)
if cv:
currentBatteryVoltage += cv

                if cv >= PENALTY_AT_CELL_VOLTAGE[0]:
                    foundHighCellVoltage = True
                    penaltySum += calcLinearRelationship(cv, PENALTY_AT_CELL_VOLTAGE, PENALTY_BATTERY_VOLTAGE)
        self.voltage = currentBatteryVoltage    # for testing
    
    if foundHighCellVoltage:
        # Keep penalty above min battery voltage
        self.control_voltage = max(currentBatteryVoltage - penaltySum, MIN_CELL_VOLTAGE * self.cell_count)
    else:
        self.control_voltage = MAX_CELL_VOLTAGE * self.cell_count      #  ............may be this is the problem........

@morres83
Copy link

morres83 commented Mar 2, 2023

I think this will not fully sove the issue. By doing this, you would most probably be able to charge to MAX voltage, but it will never switch to FLOAT, which is also not the desired behavior.
I guess the code from manage_charge_voltage_step(self) which seems to be working for me needs to be used as basis for MAX-FLOAT switchover.

@pkali1
Copy link

pkali1 commented Mar 2, 2023

Do we really need floating after some max_voltage time?

@MisterX1000
Copy link
Author

Do we really need floating after some max_voltage time?

Exactly what I thought - If we use LiFePo4 cells it is unnecessary ;-)

@morres83
Copy link

morres83 commented Mar 2, 2023

The step mode does reduce to the float value currently and certainly it is out of the LiFePo4's comfort zone if you keep the high voltage forever.
I have to say that I don't understand currently how exactly this PENALTY thing is supposed to be working, if this is ensuring that the high voltage is reduced after some time, it could be okay. But if the cells are not perfectly matched I think high voltage should be kept for some time and the reduction should not occur immediately after one cell hits the high voltage (i.e. to also give the balancer some more time). But as I said, maybe the PENALTY logic is doing all this correctly and the only thing to change then is what pkali1 suggested... ?!

@pkali1
Copy link

pkali1 commented Mar 3, 2023

Bug repair tested and working. (without switching to float) Makes my home solar every day charging cycle more smooth and fluent. Take care with setting penalties. If someone adds lineard tDiff for floating floating, it would be perfect.

Here is my example of setting (16x Lifepo4 200Ah) .

Set Steps to reduce battery current. The current will be changed linear between those steps
CELL_VOLTAGES_WHILE_CHARGING = [3.55, 3.50, 3.45, 3.30]
MAX_CHARGE_CURRENT_CV = [ 0, 10, 30, 50]

if the cell voltage reaches 3.55V, then reduce current battery-voltage by 0.01V
if the cell voltage goes over 3.6V, then the maximum penalty will not be exceeded
there will be a sum of all penalties for each cell, which exceeds the limits
PENALTY_AT_CELL_VOLTAGE = [3.47, 3.55, 3.6]
PENALTY_BATTERY_VOLTAGE = [0.01, 0.05, 0.1] # this voltage will be subtracted

Thanks and I think you can pull this simple bug repair into code.

@pkali1
Copy link

pkali1 commented Mar 4, 2023

`
def manage_charge_voltage_linear(self):
    foundHighCellVoltage = False
    if CVCM_ENABLE:
        currentBatteryVoltage = 0
        penaltySum = 0
        for i in range(self.cell_count):
            cv = self.get_cell_voltage(i)
            if cv:
                currentBatteryVoltage += cv

                if cv >= PENALTY_AT_CELL_VOLTAGE[0]:
                    foundHighCellVoltage = True
                    penaltySum += calcLinearRelationship(cv, PENALTY_AT_CELL_VOLTAGE, PENALTY_BATTERY_VOLTAGE)
        self.voltage = currentBatteryVoltage    # for testing

        if None == self.max_voltage_start_time:     # zacatek noveho kodu
            if MAX_CELL_VOLTAGE * self.cell_count <= currentBatteryVoltage and True == self.allow_max_voltage:
                self.max_voltage_start_time = time()
            else:
                if SOC_LEVEL_TO_RESET_VOLTAGE_LIMIT > self.soc and not self.allow_max_voltage:
                    self.allow_max_voltage = True
        else:
            tDiff = time() - self.max_voltage_start_time
            if MAX_VOLTAGE_TIME_SEC < tDiff:
                self.max_voltage_start_time = None
                self.allow_max_voltage = False      # konec noveho kodu


    if foundHighCellVoltage:
        # Keep penalty above min battery voltage
        self.control_voltage = max(currentBatteryVoltage - penaltySum, MIN_CELL_VOLTAGE * self.cell_count)
    else:
        if self.allow_max_voltage:										# zacatek noveho kodu
            self.control_voltage = MAX_CELL_VOLTAGE * self.cell_count
        else:
            self.control_voltage = FLOAT_CELL_VOLTAGE * self.cell_count    # konec noveho kodu`

@pkali1
Copy link

pkali1 commented Mar 4, 2023

Floating time added. Not complete testing.

@pkali1
Copy link

pkali1 commented Mar 6, 2023

The code from battery.py was not complletely copied.. sorry. Now corrected and working correctly with driver 14.3 and venus 2.90.
Regards

@mr-manuel
Copy link
Collaborator

mr-manuel added a commit to mr-manuel/venus-os_dbus-serialbattery that referenced this issue Mar 12, 2023
@mr-manuel
Copy link
Collaborator

The code from battery.py was not complletely copied.. sorry. Now corrected and working correctly with driver 14.3 and venus 2.90. Regards

@pkali1 you are right, that the time counter for the max voltage is missing.

I added this to my fork. Please try it and let me know. https://github.com/mr-manuel/venus-os_dbus-serialbattery/tree/issue-421

You can install it by executing this commands:

cd /tmp

wget https://github.com/mr-manuel/venus-os_dbus-serialbattery/archive/refs/heads/issue-421.zip
unzip issue-421.zip

cp -rf /tmp/venus-os_dbus-serialbattery-issue-421/etc/dbus-serialbattery/ /data/etc

chmod +x /data/etc/dbus-serialbattery/*.sh
chmod +x /data/etc/dbus-serialbattery/*.py
chmod +x /data/etc/dbus-serialbattery/service/run
chmod +x /data/etc/dbus-serialbattery/service/log/run

bash /data/etc/dbus-serialbattery/reinstalllocal.sh

Pay attention, that in this release the configuration is not done anymore in the utils.py, but in a custom config.ini. Just copy the config.sample.ini. This prevents overriding the settings after updating in future versions. It includes also a lot more changes.

@Bonzai10
Copy link

Bonzai10 commented Mar 13, 2023

hello,
unfortunately no change. it takes allways the info from step, not linear. Time to Soc also not available.

grafik
grafik

grafik

@mr-manuel
Copy link
Collaborator

Is this enabled?

; Charge voltage control management enable (True/False).
CVCM_ENABLE = False

Currently the config file is a bit confusing, I will fix that.

@Bonzai10
Copy link

Bonzai10 commented Mar 13, 2023

no changing :-( i changed MAX_CELL_VOLTAGE = 3.50

grafik

grafik

@Bonzai10
Copy link

I think the whole linear is not activated

@mr-manuel
Copy link
Collaborator

Have you a voltage curve how the linear and how the step mode should look? I need some more days for further testing. The curve would help me a lot.

@Bonzai10
Copy link

No, after the install of your Version the data is lost 👎

@mr-manuel
Copy link
Collaborator

In VRM Portal? Check if the VRM ID changed

@mr-manuel
Copy link
Collaborator

no changing :-( i changed MAX_CELL_VOLTAGE = 3.50

grafik

grafik

If you changed MAX_CELL_VOLTAGE to 3.50 then this should be right. 3.50 * 16 = 56.00 or am I wrong?

@Bonzai10
Copy link

But i chosed linear, the changing was under step. Therefore i belive that linear is not avaliable. I check tomorrow the VRM again. I believe the usb Port hast changed. This Bug comes with changing from 14.2 to 14.3.

@mr-manuel
Copy link
Collaborator

@WaldemarFech maybe you can help us with that? How should the linear mode you implemented work exactly?

@WaldemarFech
Copy link
Contributor

WaldemarFech commented Mar 14, 2023

Sorry - where's the beginning of the "problem"? 😅

short:
the linear mode was to reduce the charge and discharge current limits - instead of jumping around while reaching the next step.

  • but no linear change of any max. charging voltage - this is, as the word say, the maximum... so i would set this to 3.6V (because in my case the BMS resets to 100% when one cell reaches 3.6V). The LiFePo4 cells have absolutely no problem with 3.65V - but you should not go over 3.75V. So there should be everything okay with 3.6V - this will be reached just a minute or less after 3.5V (depending on your charge current of course).

anyway:

  • the Victron and other chargers are not made to measure currents below 2A. So if we calculate a charge or discharge current limit of less than 2A, let's say 0A - then it should stop (we also send the stop charging command).
    BUT ... the charger goes then in the "ok, let's hold the actual voltage then ..."-mode .... and while it tries to hold this voltage (absorption Phase), then there still flows current into the battery - while it shows 0A - wrong!

What's my solution? A: I've implement the penalty mode.

  • You can set a penalty voltage. IF one cell goes over a specific voltage, THEN it means, that the actually "absorption" voltage is too high and there is still a flow of current into the battery. So? So we have to reduce the maximum charge voltage until the cell voltage isn't increasing anymore. But how much have we to lower the voltage? Well - until it stops rising. So as more cells goes over the maximum cell voltages and as higher they go over this maximum, as much the penalty will reduce the CVL.

check? :)

I haven't looked into the newer versions anymore - so i don't know what was changed.

can you post your relevant settings in your utils.py and a short description of your bug or the behavior that you would expect?

@pkali1
Copy link

pkali1 commented Mar 14, 2023

Here are my driver v14.3 and Venus 2.90 with Daly BMS working files. I hope it helps you.

battery.py.txt
utils.py.txt

@Bonzai10
Copy link

Hello,
the error arose when changing from 0.14.2 to 0.14.3. there were moved settings from utils.py to battery.py. Since this version it doesn't work for me anymore. Yours (WaldemarFech 0.14.3) works wonderfully.

however, all the innovations would be "nice to have" as well as the Bluetooth version

@morres83
Copy link

And even more strange things seem to happen, the battery is discharging by exactly 1.0A some seconds and then charging again with CCL. Seems being in a cycle. I have seen this also in non-linear mode but it occured only after swithing to float (53.6V). NOW CVL is much higher (as I said before it didn't change to fload mode) and still this discharging occures. You know why?

2023-03-16 14_46_26-Window

For your comment above, yes my penalty and max values were the same at 3.5V. I will change the first penalty voltage a bit higher and test the result..

@mr-manuel
Copy link
Collaborator

The effect you are seeing (charging/discharging) is triggered when the battery hits the CVL voltage. It doesn't matter what the voltage is. As the reasons I described above, the voltage is not lowered.

I update the config file to make that more clear, since it is not clear and I took a lot to understand how all is working.

@mr-manuel
Copy link
Collaborator

mr-manuel commented Mar 16, 2023

If you use the latest version from my fork and branch issue-421 you see also more informations about the current charge mode. It was uploaded just now.

grafik

@morres83
Copy link

morres83 commented Mar 16, 2023

OK I will give it again a try with latest version.

Where exactly is it specified that a discharging by 1 A is done? Is it a Victron "feature"?
In the nonlinear mode normally the CVL is hit when it is reduced to Float. Therefore I understand the discharging.
But I still don't get it for the penalty, penalty is acting on CVL, isn't it?

P.S.: The charge/discharge is the same for me when I set the first value of penalty at 3.51 and the Max_cell_voltage to 3.5

@mr-manuel
Copy link
Collaborator

Where exactly is it specified that a discharging by 1 A is done? Is it a Victron "feature"?

Nowhere. The battery is used as a buffer and when the battery voltage is the same or very close to CVL then this is the normal behaviour of Victron to maintain stability.

In the nonlinear mode normally the CVL is hit when it is reduced to Float. Therefore I understand the discharging.

No. CVL is reduced in step mode and also in linear mode when the battery voltage is the same as CVL for x seconds.

But I still don't get it for the penalty, penalty is acting on CVL, isn't it?

Thats true. Please read the linked comment for the penalty. #297 (comment)

@morres83
Copy link

So, I have been testing your script, that's the result of yesterday:

2023-03-17 06_58_22-Window

About 3pm I changed the penalty above the max (3.51V vs 3.5V) with no visible result in behavior.
I am unsure if this behavior works as expected by you (at least I don't like it that CVL and CCL literally change every single second).
As I am very unsure how to reproduce this on two parallel battery packs, so I might switch back to step mode and program something by myself into the aggregate/virtual battery device based on ther serialbattery raw data of the two battery backs.

@mr-manuel
Copy link
Collaborator

Have you also checked also the cell voltages? Without them it‘s hard to tell what happens. Also I added the Charge mode field to the GUI to see whats happening. Probably your cell voltage difference is to high. As described above it switches only to float, if the battery voltage reached CVL and all cell voltages are below penalty voltage.

For the linear mode I‘m also a bit sceptic that it changes every second. Maybe it would be better to do it all 60 seconds.

I don’t know how it behaves when two batteries want to change the CVL. More secure would be to respect the lower requested voltage.

@mr-manuel
Copy link
Collaborator

at least I don't like it that CVL and CCL literally change every single second

@morres83 I just uploaded a new version, where you can set, how often the penalty voltage is calculated (PENALTY_RECALCULATE_EVERY). So you can set it to 60 seconds or whatever you like.

@wormsman
Copy link

@mr-manuel this version seems to work quite well. For a real test I have to wait until it is sunny. When do you think you can put out a new version with your new additions and also the bluetooth for the jkbms?

@mr-manuel
Copy link
Collaborator

After this is merged: #459

@rcrc1978
Copy link

Mr-manuel

I'm trying to install/test your work, I'm new so have some questions. I copied/pasted each line into putty from your note below and hit enter after each one. After the very last one I rebooted, then went in and verified that "charge mode" shows under my serial batteries and it does.

cd /tmp

wget https://github.com/mr-manuel/venus-os_dbus-serialbattery/archive/refs/heads/issue-421.zip
unzip issue-421.zip

cp -rf /tmp/venus-os_dbus-serialbattery-issue-421/etc/dbus-serialbattery/ /data/etc

chmod +x /data/etc/dbus-serialbattery/.sh
chmod +x /data/etc/dbus-serialbattery/
.py
chmod +x /data/etc/dbus-serialbattery/service/run
chmod +x /data/etc/dbus-serialbattery/service/log/run

bash /data/etc/dbus-serialbattery/reinstalllocal.sh

After doing each of the above+enter for each line I logged in and checked the "nano /data/etc/dbus-serialbattery/utils.py" and looked through everything and see it's changed with no options to really adjust charge settings.

Then I went in and tried "nano /data/etc/dbus-serialbattery/config.ini" and all I have is a blank screen with no script. Do I just copy/paste everything from this link https://github.com/mr-manuel/venus-os_dbus-serialbattery/blob/7562c7432988146a19443691a5ae92707116662f/etc/dbus-serialbattery/config.default.ini#L13-L37[](url) into the config.ini on the putty screen?

@Bonzai10
Copy link

Bonzai10 commented Mar 18, 2023

You have to edit: config.default.ini
This is the right one. only config.ini is wrong.

@mr-manuel
Copy link
Collaborator

mr-manuel commented Mar 18, 2023

You have to edit: config.default.ini
This is the right one. only config.ini is wrong.

@Bonzai10 this is wrong. You should not change the config.default.ini, since all changes are lost after a driver update. The intention of the config.default.ini was to maintain the custon configurations, therefore there is a config.ini. If you do not create a config.ini then all settings are fetched from config.default.ini. All you put in config.ini overwrites the settings in config.default.ini and survive a driver update.

@rcrc1978 you have only to insert the values in config.ini which you want to change. You start from a blank file and copy over the setting from config.default.ini you want to change. All other values are fetched from the config.default.ini. If you change config.default.ini it is oberwritten on every update.

@rcrc1978
Copy link

rcrc1978 commented Mar 18, 2023

Thanks for the help Bonzai! I was able to get in there and adjust things, will test and see how everything goes.

Manuel i'm confused on that portion, there was no data available on the config.ini section. Do I copy and paste everything from the config.default.ini screen and then adjust those and save later so I can paste back in after updates?

@mr-manuel
Copy link
Collaborator

No. You create an empty config.ini and insert there only the settings you like to change (not use the default). For example if you want to chage the max charge and discharge current you only insert them into config.ini:

MAX_BATTERY_CHARGE_CURRENT = 70.0
MAX_BATTERY_DISCHARGE_CURRENT = 90.0

@ghost
Copy link

ghost commented Mar 20, 2023

Hi Manuel,
I'm also testing your fork, thanks for your work!
I already have it running and I think it already does what it should do, but I must certainly test it a few mor days to be sure to understand everything.

One question:
If I change a parameter in the config.ini how can I activate the changes without restarting my raspi? (don't want to restart if not neccessary because the USB Port of my JK BMS is always changing after a reboot and therfore my node red do not work until I change them again)

Thx!

@morres83
Copy link

@locke981 you should just be able to use ./reinstalllocal.sh and it does everything for you.

But is it normal that on reboot ports get changed such that it is not recognized in NodeRed anymore? Seems strange to me... Do the BMS blocks in NodeRed are really (only) dependent on the USB port (and not the name or something else)?

@ghost
Copy link

ghost commented Mar 20, 2023

you should just be able to use ./reinstalllocal.sh and it does everything for you.

Thanks will try that the next time I change something.

But is it normal that on reboot ports get changed such that it is not recognized in NodeRed anymore? Seems strange to me... Do the BMS blocks in NodeRed are really (only) dependent on the USB port (and not the name or something else)?

In Node Red the Node is not connected anymore, I have to select the Node inside the configuration of the Node again to get it working. I'm not aware if it's possible to change the node to something which is static like the name. If someone has a hint I would really appreciate it.

@mr-manuel
Copy link
Collaborator

But is it normal that on reboot ports get changed such that it is not recognized in NodeRed anymore? Seems strange to me... Do the BMS blocks in NodeRed are really (only) dependent on the USB port (and not the name or something else)?

There are a few issues and discussions about this. One of them is #481

@rcrc1978
Copy link

rcrc1978 commented Mar 31, 2023

mr-manuel,

Your fork is working great for me so far, took me a while to get things adjusted properly so it would drop to float voltage. But after messing around for a bit things are working pretty good. I'm using two BMS's so sometimes one will drop to float voltage before the second does. So it does go to float voltage before the second BMS's can finish the bulk cycle. I'm slowly bumping up the max voltage time to give it more time to finish and balance, so far i'm at about 45m.

One thing I have noticed is when being blocked from charging due to batteries being to cold the system is not letting the solar chargers make enough current to let the BMS battery heater circuit to come on. There is enough power available but the Solar charges are being held back from producing any output. I can tell by the high voltage on the PV side and plenty of sun available. If I disable DVCC setting the solar chargers produce enough amperage the heater circuit kicks in to heat the batteries. After that gets going I just re enable the DVCC setting, not sure if it did this before trying your fork though. The system is new this year so no prior testing with using the solar chargers only for charging. With Louis's v.0.14.3 version the battery heater would come on when powering the Multiplus from the AC input, have not tested yours with the AC input but will try if it's cold enough here the next couple of days.

@mr-manuel
Copy link
Collaborator

Should the heater circuit not come on even if there is no sun and the temperature is to low?

@rcrc1978
Copy link

rcrc1978 commented Mar 31, 2023

The JBD BMS heater circuit only works if charging current is available (higher system voltage than battery voltage). The BMS will let current out of the battery to maintain system voltage but not let any current to flow into the battery when below cold temp cutoff. What I'm seeing during cold temp cutoff the driver is preventing the solar chargers from producing enough current to completely stop all drain from the battery even though there is some available. I guess it may be a little hard to explain, there is always current flowing from the battery during cold temp cutoff. So in able for the heater circuit to kick in the current from the batteries has to go to zero so system voltage can rise above battery voltage to start the heater circuit. The driver is not allowing the solar chargers to bring the system voltage above battery voltage to stop current the coming out of the batteries. When I turn off DVCC it takes away the drivers control from the solar chargers and then uses the internal solar charger settings. This way it brings the system voltage up high enough to stop battery consumption and then starts the heater circuit, the BMS does block any current to flow into the battery during this state. Current just goes into the heater circuit.

Hopefully this explains it, I may just remove the BMS heater control circuit and use one of the relays on the solar chargers or cerbo gx to control it. At least that way I could turn them on regardless if charge current was available.

@mr-manuel
Copy link
Collaborator

I did not see the issue again with https://github.com/mr-manuel/venus-os_dbus-serialbattery/tree/issue-421. I will open a pull request for this next week.

mr-manuel added a commit to mr-manuel/venus-os_dbus-serialbattery that referenced this issue Apr 9, 2023
@mr-manuel
Copy link
Collaborator

This is fixed in the next version. If you already want to try it you can execute this command

wget -O /tmp/install-nightly.sh https://raw.githubusercontent.com/Louisvdw/dbus-serialbattery/jkbms_ble/etc/dbus-serialbattery/install-nightly.sh && bash /tmp/install-nightly.sh

and select 2 for jkbms_ble. Since it's currently the most up to date branch. You can ignore the Bluetooth part.

Louisvdw pushed a commit that referenced this issue May 6, 2023
* added balancing switch status

* added balancing switch status

* changed default config file
- added missing descriptions
- changed name

* indentation was wrong

* adding fix for Venus OS >= v3.00~14 QML files

* added cell balancing status for JKBMS

* changed ConsumedAmpHours
should be None instead of 0, if not available

* TimeToSoc fixes
- Added: Show TimeToSoc only, if enabled
- Changed: description in config file
- Changed: default value TIME_TO_SOC_VALUE_TYPE = 1

* resorted functions

* fix CPU overload
- changed: how often Time-To-Soc is calculated in seconds

* fix Time-to-Go and Time-to-SoC
- changed: Time-To-Go has to be always a positive int
since it's used from dbus-systemcalc-py
- changed: how Time-to-SoC is string is generated and displayed
(format like Time-To-Go)

* small fixes

* Show MOSFET temperature from JKBMS
Pull request from @baphomett
#440

* bump version to 1.0.0
respecting semantic versioning

* added uninstall script and fixed reinstall
- `/data/conf/serial-starter.d` was not recreated if deleted

* small fixes
- added description in utils.py
- change qml files in destination not source

* typo

* fixed cell balancing color for cells 13-24

* updated description in default config file

* Updated logging to get relevant informations

* clearer config file

* make config file clearer

* fix #421
- #421

* missing removals

* corrected typo, added missing +x in release.yml

* added info for new issue

* fix black lint errors

* optimize installation scripts

* added script to install directly from repository

* fixed serial-starter.d
#520

* smaller fixes

* fix #351

* fix System Switch in IO page

* fix #239
by @TimGFoley

* fix black lint errors

* run code analyse only on code change

* fix #311

* Separate Time-To-Go and Time-To-SoC activation

* remove duplicated and incorrect log message on handle_changed_setting

* properly log max battery currents on startup

* optimize uninstall script

* fix typo in log_settings

* add charge mode display

* Added: Temp name for sensor 1 & 2
Added the possibility to give a name to temperature sensor 1 & 2
This allows to see which sensor is low and high

* Added: Choose how battery temperature is assembled

* fix black lint errors

* Added/Changed alarms for JKBMS
* Added: HighInternalTemperature alarm for JKBMS
* Changed: Temperature alarm to not trigger all in the same condition

* Removed Alarms/HighCellVoltage
It does not exist on the dbus

* Changed: Moved charge mode
from IO page to Paramaters page

* Merge branch 'master' into master

* Added: Show (dis)charge current limitation reason

* Added changelog

* corrected file permissions

* Update readme

* Small word case changes

* fix dbus-daemon memory leak

`poll_battery` is already called from the dbus mainloop in a separate thread. Opening a new thread here (and especially never closing it) will accumulate threads and leads to problems like `dbus-daemon` memory usage increasing over time, leading to eventual reboot
by @seidler2547

* Added: Show specific TimeToSoC points in GUI
Only if 0%, 10%, 20%, 80%, 90% and/or 100% are selected

* fix black lint error

* removed wildcard import, fixed black lint errors

* removed wildcard import, fixed black lint errors

* remove old log message in handle_changed_setting()

* simplified condition for Time-To-Go/Soc

* fix renogy import

* added BMS info and cleanup
* MNB
* Revov
* Sinowealth

* moved BMS to subfolder

* Added self.unique_identifier to the battery class
Used to identify a BMS when multiple BMS are connected
planned for future use

* fix small errors

* added linear voltage recalculation interval
In the config file can now be defined how often CVL, CCL and DCL is recalculated

* revert Daly adaption

* replaced penalty voltage calculation
with automatically calculated penalty voltages to simplify config
max voltage is kept until batteries are balanced

* flake config change

* updated changelog

* disabled ANT BMS by default
#479

* fix typo

* fixed wrong variable assignment
`str` instead of `int`

* updated battery template

* updated nightly script

* Fix for #450
#450

* Read charge/discharge limit JKBMS
#4

* updated release workflow

* updated readme

* deploy to github pages only
on changes in master or docusaurus branch

* cleanup

* GitHub pages config change

* Renamed scripts for better reading #532

* update docusaurus dependencies

* limitation reason cleanup

* changed default config settings
FLOAT_CELL_VOLTAGE from 3.350V to 3.375V
LINEAR_LIMITATION_ENABLE from False to True

* small typo fixes

* updated changelog

* fix disconnection behaviour & small fixes
* on disconnect, show '---' after 10s and 'not connected' after 60s by @transistorgit
* small fixes in shell script
* added restart driver script

* fixed file permission

* Added: apply max voltage if CVCM_ENABLE is False
before float voltage was applied

* Added: BMS disconnect behaviour
* Choose to block charge/discharge on disconnect
* Trigger Venus OS alarm

* Changed: Remove wildcard import from dbushelper.py

* Added: Show additional data in device page
* show self.unique_identifier as serial number
* show self.production as device name

* Added: JKBMS unique identifier & fixed data length

* move config.ini before update

* read production date by @tranistorgit
this adds the battery production date

---------

Co-authored-by: Daniel Hillenbrand <daniel.hillenbrand@codeworkx.de>
Louisvdw pushed a commit that referenced this issue May 8, 2023
* added balancing switch status

* added balancing switch status

* changed default config file
- added missing descriptions
- changed name

* indentation was wrong

* adding fix for Venus OS >= v3.00~14 QML files

* added cell balancing status for JKBMS

* changed ConsumedAmpHours
should be None instead of 0, if not available

* TimeToSoc fixes
- Added: Show TimeToSoc only, if enabled
- Changed: description in config file
- Changed: default value TIME_TO_SOC_VALUE_TYPE = 1

* resorted functions

* fix CPU overload
- changed: how often Time-To-Soc is calculated in seconds

* fix Time-to-Go and Time-to-SoC
- changed: Time-To-Go has to be always a positive int
since it's used from dbus-systemcalc-py
- changed: how Time-to-SoC is string is generated and displayed
(format like Time-To-Go)

* small fixes

* Show MOSFET temperature from JKBMS
Pull request from @baphomett
#440

* bump version to 1.0.0
respecting semantic versioning

* added uninstall script and fixed reinstall
- `/data/conf/serial-starter.d` was not recreated if deleted

* small fixes
- added description in utils.py
- change qml files in destination not source

* typo

* fixed cell balancing color for cells 13-24

* updated description in default config file

* Updated logging to get relevant informations

* clearer config file

* make config file clearer

* fix #421
- #421

* missing removals

* corrected typo, added missing +x in release.yml

* added info for new issue

* fix black lint errors

* optimize installation scripts

* added script to install directly from repository

* fixed serial-starter.d
#520

* smaller fixes

* fix #351

* fix System Switch in IO page

* fix #239
by @TimGFoley

* fix black lint errors

* run code analyse only on code change

* fix #311

* Separate Time-To-Go and Time-To-SoC activation

* remove duplicated and incorrect log message on handle_changed_setting

* properly log max battery currents on startup

* optimize uninstall script

* fix typo in log_settings

* add charge mode display

* Added: Temp name for sensor 1 & 2
Added the possibility to give a name to temperature sensor 1 & 2
This allows to see which sensor is low and high

* Added: Choose how battery temperature is assembled

* fix black lint errors

* Added/Changed alarms for JKBMS
* Added: HighInternalTemperature alarm for JKBMS
* Changed: Temperature alarm to not trigger all in the same condition

* Removed Alarms/HighCellVoltage
It does not exist on the dbus

* Changed: Moved charge mode
from IO page to Paramaters page

* Merge branch 'master' into master

* Added: Show (dis)charge current limitation reason

* Added changelog

* corrected file permissions

* Update readme

* Small word case changes

* fix dbus-daemon memory leak

`poll_battery` is already called from the dbus mainloop in a separate thread. Opening a new thread here (and especially never closing it) will accumulate threads and leads to problems like `dbus-daemon` memory usage increasing over time, leading to eventual reboot
by @seidler2547

* Added: Show specific TimeToSoC points in GUI
Only if 0%, 10%, 20%, 80%, 90% and/or 100% are selected

* fix black lint error

* removed wildcard import, fixed black lint errors

* removed wildcard import, fixed black lint errors

* remove old log message in handle_changed_setting()

* simplified condition for Time-To-Go/Soc

* fix renogy import

* added BMS info and cleanup
* MNB
* Revov
* Sinowealth

* moved BMS to subfolder

* Added self.unique_identifier to the battery class
Used to identify a BMS when multiple BMS are connected
planned for future use

* fix small errors

* added linear voltage recalculation interval
In the config file can now be defined how often CVL, CCL and DCL is recalculated

* revert Daly adaption

* replaced penalty voltage calculation
with automatically calculated penalty voltages to simplify config
max voltage is kept until batteries are balanced

* flake config change

* updated changelog

* disabled ANT BMS by default
#479

* fix typo

* fixed wrong variable assignment
`str` instead of `int`

* updated battery template

* updated nightly script

* Fix for #450
#450

* Read charge/discharge limit JKBMS
#4

* updated release workflow

* updated readme

* deploy to github pages only
on changes in master or docusaurus branch

* cleanup

* GitHub pages config change

* Renamed scripts for better reading #532

* update docusaurus dependencies

* limitation reason cleanup

* changed default config settings
FLOAT_CELL_VOLTAGE from 3.350V to 3.375V
LINEAR_LIMITATION_ENABLE from False to True

* small typo fixes

* updated changelog

* fix disconnection behaviour & small fixes
* on disconnect, show '---' after 10s and 'not connected' after 60s by @transistorgit
* small fixes in shell script
* added restart driver script

* fixed file permission

* Added: apply max voltage if CVCM_ENABLE is False
before float voltage was applied

* Added: BMS disconnect behaviour
* Choose to block charge/discharge on disconnect
* Trigger Venus OS alarm

* Changed: Remove wildcard import from dbushelper.py

* Added: Show additional data in device page
* show self.unique_identifier as serial number
* show self.production as device name

* Added: JKBMS unique identifier & fixed data length

* move config.ini before update

* read production date by @tranistorgit
this adds the battery production date

* Changed: Merged all install files into one

* updated install docs for nightly build

* changed config backup

* changed release workflow

* changed release workflow

* changed release workflow

* optimized USB install method

* Daly improvements
* Set SoC on button press by @transistorgit
* Improved driver stability by @transistorgit & @mr-manuel

* moved production date and added custom field

---------

Co-authored-by: Daniel Hillenbrand <daniel.hillenbrand@codeworkx.de>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

9 participants