question

bowpay avatar image
bowpay asked

Cerbo GX Generator Display Bug - Not detecting digital I/O reading

I got everything finally installed in our larger RV offgrid system.


The Cerbo GX is the central component and is so far working pretty good but running into a generator issue.


When the generator is stopped outside of the Cerbo GX (manually) the Main Generator Screen does not reflect a stopped generator.

If I stop it from the Cerbo it works fine but the I/O digital input doesn't seem to change the outcome of the screen.

The settings screen will show that the generator is started and stopped based on the I/O port. Is this a bug?

This is a really big deal because I have a precision plex system that can activate the generator outside of the cerbo. The open/close contact for I/O generator are being fired but the main screen won't give me the correct into. (not good)


(Generator has been stopped manually on the generator)



cerbo gx
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

15 Answers
harold avatar image
harold answered ·

I don't know if it works, but one of the settings is 'detect Generator input on....'

1 comment
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

bowpay avatar image bowpay commented ·

Thanks I tried that but no change in the main display. Seems the generator side of the Cerbo is buggy.

0 Likes 0 ·
bowpay avatar image
bowpay answered ·

No answers yet. Thought I figured it out but didn't work..

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

mvader (Victron Energy) avatar image
mvader (Victron Energy) answered ·

Hi @Bowpay

The generator start/stop control feature only uses a relay. Its not using a digital input.

The purpose of being able to select "Generator" as a function for a digital input is merely to see a generator status (on/off) in the device list. Nothing more.

Its limited, but is what it is I'm afraid.


1 comment
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

bowpay avatar image bowpay commented ·

So you aren't going to add that to the bug list? If I SSH into the Cerbo can I change that behavior and is the code in a place that requires compilation?

0 Likes 0 ·
Kevin Windrem avatar image
Kevin Windrem answered ·

I have a CCGX not a Venus GX or Cerbo GX and can't test the digital inputs, but I'm willing to help with coding if possible. The generator code is in python source so it's theoretically possible to modify it but need more background on the problem.

dubs-spy shows a generator service but most of it's parameters are read-only so it's hard to change them from there. It appears only the ManualStart parameter can be written and it doesn't affect the main state when a condition (SOC, etc) or run based on time have started the generator.

I'd like to get more details on what happens with the generator digital input. Specifically:

Where do you see that input's state changing?

Is this input making any changes to the generator state?

Have you looked at the generator dbus service to see if any of it's parameters are changing with the generator digital input?

What would you LIKE the generator digital input to do? If this input truly means the generator isn't running, then it seems like Venus should clean up it's internal state, but then what? If a condition that should trigger the generator is still active or becomes active, should a generator restart be attempted? If so, when/how often?

Should the generator input affect only manual run? That is, should the generator digital input going active set Venus as if the operator pressed the manual start button on the GUI?

There are probably lots more questions that need an answer before Venus changes could be made.

Also, it might make sense to combine the three threads currently open.

20 comments
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Kevin Windrem avatar image Kevin Windrem commented ·

Good news and not so good news:

I discovered hooks to simulate the digital inputs so I can test/debug with my CCGX.

I ran some quick tests and discovered what mvader stated, that this input only displays the generator state on the Device List.

I looked into the "Detect Generator at AC input" and it apparently only generates an error if the generator input is selected and the digital input says the generator isn't running.

So there's much work to be done.

I'd like consensus on what is actually needed. The biggest hurdle is probably to get the generator digital input to interact with conditions that start and stop the generator. Integrating with a manual start/stop "shouldn't" be a huge deal but in my testing, manually stopping the generator from the GUI does NOT stop the generator if a condition such as low SOC requests the generator. As questioned above, what happens if the SOC is low and the generator input signals the generator isn't running? Venus has already activated the generator start/stop relay. So at least, that's an error condition, but how does it get cleared? Does Venus deactivate then reactivate the relay in an attempt to restart the generator????

Feedback please!

0 Likes 0 ·
bowpay avatar image bowpay Kevin Windrem commented ·

Sorry for the late reply. You have made a lot of good points. For now I am really mainly interested in showing that the generator is running if manually started. The device list will update if the generator is running or not but the main generator screen shows stopped. I need the main generator screen to show running. I am also using SOC for a start and everything else right now is disabled. In the case of a SOC start and a manual shut off occurs I would expect the Cerbo to show disabled generator until the generator is restarted manually. From there the Cerbo would go back to SOC start or whatever rules would be processed.

Basically if the generator is manually stopped then it should 'pause' the cerbo from processing anymore automatic start/stops. Sounds like we would need 3 states for processing the generator Cerbo Manual, Cerbo Auto Rules (SOC, etc), Manual Override Is this possible?

0 Likes 0 ·
bowpay avatar image bowpay bowpay commented ·

After second thought I am not sure how you would bypass this new 'pause' feature if the digital input gets a closed signal if we try to intercept the call for a regular SOC call. Sounds like a loop or some weird state issue. Hmm... The reason why I need the Cerbo to reflect the started generator is because when I am driving the Motorhome I have a generator button in front. I don't want to exhaust the batteries when we run the A/C so I will kick the generator on. When I go back to the Cerbo the generator start/stop doesn't reflect and now I am out of sync with run time and the ability to kill the generator if I am not by the button or not in the Motorhome.

New Use Case: In the case of a manual shutdown I would expect the cerbo to run back through the SOC rules. If i need to stop it, due to maintenance, then I can always just change the setting in the Cerbo. Hopefully this will make everything much easier.

0 Likes 0 ·
Kevin Windrem avatar image Kevin Windrem bowpay commented ·

Could you connect your driver's seat generator start/stop switch to an input on Venus that would do the same thing as the manual start/stop in the GUI?

That would make Venus boss of the generator control so not sure what else would be starting/stopping the generator.

That would also not override runs due to SOC and other conditions though.

Good discussion. We'll get there.

0 Likes 0 ·
Show more comments
Kevin Windrem avatar image Kevin Windrem bowpay commented ·

It would certainly be possible (easy) to add messages to the STATUS tile indicating: "Generator running but should not be" and "Generator not running but should be". The generator relay and all logic within Venus would continue to function as it is.

To do more it does seem we need multiple inputs to Venus.

One possibility is to use a "running" to "not running" transition on the existing generator digital input to "pause" Venus generator control.

I don't think you want to use the transition from not running to running to resume Venus generator control because if there are no conditions that cause the generator to run, the generator would immediately stop.

A second digital input (or a button on the generator overview page) could "resume" Venus generator control.

I did notice that conditions that auto start the generator override the Venus manual stop. That is, you can't stop the generator manually from Venus if an SOC condition is active. So we may need a "pause" button in Venus as well to prevent conditions from automatically start or stop the generator.


0 Likes 0 ·
bowpay avatar image bowpay Kevin Windrem commented ·

Yes, After more thought it does seem like we need a way to pause the venus instructions otherwise we get into a whole slew of what ifs. I don't think it will be possible though because I can't provide an alternative start signal.


How about this instead...

The SOC start takes precedence. I guess that make sense. If the signal comes through and Venus is in a stop mode then force it into manual start mode. Otherwise do nothing and let venus control it all. Would that work?

0 Likes 0 ·
Show more comments
Kevin Windrem avatar image
Kevin Windrem answered ·

OK, here's a first cut at connecting the generator digital input to manual start/stop

When the generator digital input state changes, the generator's Manual Start state is changed if no conditional run is active. If there is a conditional run active, the generator digital input will not change the Manual Start state and will NOT stop the generator! Instead, a warning message appears on the Overview Generator page:


The work is done in a separate process that interacts at the dBus service level.

You can find the code here, complete with setup script that does all the install work:

https://github.com/kwindrem/GeneratorConnector

Comments please!


12 comments
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

bowpay avatar image bowpay commented ·

Didn't work for me. I ran a SOC based on AC load just to get a SOC to fire. After manually stopping it the screen never changed. I did get some errors though when I ran the command on the Cerbo.

0 Likes 0 ·
1591404855283.png (41.1 KiB)
Kevin Windrem avatar image Kevin Windrem bowpay commented ·

Messages hint at a permission problem but I did find an error in the setup script. A new on is on the GitHub rep. The error may have caused the script to quit before everything was done.

My testing was from a unix host so I'm not sure what PuTTY might be doing differently. If it doesn't support shared ssh connections that might be part of the problem.

You can run the setup script from the Venus device after you've copied the files over to /data/GeneratorForward.

cd /data/GeneratorForward

./setup

then answer all the questions or

./setup activate eo y dl n

to bypass all prompts.

After install, you should see the ForwardGenInput.py in the ps list: ps | grep Gen

That's run from the service daemon and there should be a symbolic link at /service/ForwardGenInput that points to /data/GeneratorForward/service

If you've put the files on Venus somewhere else that could be a problem.

If ForwardGenInput.py is running, you should see com.victronenergy.generator.Forwarding in dubs-spy

To forward the generator input state to the generator Manual Start, you must have a generator digital input defined and the target generator control must start with com.victronenergy.generator.startstop.

I look at all digital inputs for one with a generator (type == 9).

You should see both of these services in dubs-spy as well.

If you change the generator input state (by starting/stopping the generator), you should see this reflected first in the digital input service in dubs-spy, then move to the .Forwarding service. You'll see that state duplicated there and you should see the ManualStart parameter there change too. Finally, this should be changing /ManualStart in the actual generator service. If all that's happening, AND you have no conditions causing the generator to run, the Generator Overview MANUAL START tile should be changing.

If you do have a run condition, you should see the warning message in the STATUS tile if you manually stop the generator.

The Forwarder log may also turn up clues:

tail /var/log/ForwardGenInput/current | tai64n

(tai64n converts the time stamp to human readable format)

Writing a setup summary line to the log WAS almost the last thing in the script BUT the critical step of creating the symlink to run the Forwarder wouldn't get called!!!!! I think it DID actually happen though according to your console dump.

I moved the logging call to the last step and created the directory structure if it doesn't yet exist. So you should be in a better state after you download the new setup file and run it.

I am slightly concerned about the touch calls. These crate flag files used by the reactivate action but I don't think you are there yet. Again, I wonder if this is something having to do with PuTTY.

setup is split into tow pieces: copying files from host to Venus, then doing all the setup which is run on Venus.

Keep me updated. I'm sure I can get this working for you.


0 Likes 0 ·
Kevin Windrem avatar image Kevin Windrem bowpay commented ·

[rewrite]

It appears you have placed the Forwarder files in /CustomUpdate. setup uses a hard-coded path and assumes files will be in /data/GeneratorForward. So the script is going to fail if files aren't located there and that directory doesn't exist.

You can either place your files in the expected place or edit the script. Just one place: forwarderDir=

The choice of /data is based on the fact that most other parts of the file system are overwritten when updating Venus software. /data is preserved.


I DID test this package on Venus v 2.54 and works fine.

(The command line I see in your console dump shows you specifying an ip address. If this is run on Venus as it appears, the ip address is not needed but silently ignored.)


0 Likes 0 ·
bowpay avatar image bowpay Kevin Windrem commented ·

Thank you. Got crazy busy yesterday. I have to head out today but will try to test this out this evening.

0 Likes 0 ·
Kevin Windrem avatar image Kevin Windrem bowpay commented ·

No worries. No rush. We'll get this going for you and if it's not what you expected, changes can be made

0 Likes 0 ·
bowpay avatar image bowpay Kevin Windrem commented ·

I moved the files over to the GeneratorForward and it worked better. There is a nameing issue in the setup file. The file is labeled rc.GeneratorForward but the script is calling for rc.GeneratorForwarder. I changed the file name and it seemed to work. After starting a SOC condition the generator never came on and it now reads this. I think there needs to be a delay of 10-20 seconds before checking to see if the I/O is reporting open or closed.


0 Likes 0 ·
1591472689924.png (42.7 KiB)
bowpay avatar image bowpay bowpay commented ·

Oh yeah I should mention that my generator is diesel and has 2 timed delayed relays to work with an open/close. Might have to make the delay more like 30 seconds to a minute after thinking about it. If Victron were to use this in their settings then I would highly suggest being able to set the delay in Venus.

0 Likes 0 ·
bowpay avatar image bowpay Kevin Windrem commented ·

BTW I just tested it using manual run and it worked great! After stopping the message did flash over to the message above "External override...". I think with a delay this will probably not show.

0 Likes 0 ·
bowpay avatar image bowpay Kevin Windrem commented ·

Crap it was my fault. The last few days have been colder climate and realized that the delay I had set on the delayed relay was too short. Just changed it and now its starting again. That delay might only have to be like 5-10 seconds now. Sorry about that. Still running into that error I posted above with the latest build.

0 Likes 0 ·
bowpay avatar image bowpay Kevin Windrem commented ·

What happened to the GeneratorConnector in Git? Have your changes been incorporated into Victron's 2.66 build?

0 Likes 0 ·
Kevin Windrem avatar image Kevin Windrem bowpay commented ·

It's still there (here):

https://github.com/kwindrem/GeneratorConnector

Just tested it on v2.70~15 and it's still working.

Should work fine on v2.66 as well.

You may also need to update SetupHelper:

https://github.com/kwindrem/SetupHelper

0 Likes 0 ·
bowpay avatar image bowpay Kevin Windrem commented ·

After I posted it I found the repo. I sure hope they include this in the official build. This is a no brainer here. I LOVE the functionality!

0 Likes 0 ·
Kevin Windrem avatar image
Kevin Windrem answered ·

Making progress -- yea!

I'm not sure why your generator didn't start when the SOC or AC load condition occurred. The only control the Forwarder has over the stock generator control is to turn ManualStart on and off which would have not affect on the Venus relay.

The Forwarder will only set ManualStart if all run conditions are clear. The Forwarder will NOT clear ManualStart if any run condition (other than manual start) exists.

Can you check the Venus relay? If it's in the correct state, the problem is not in Venus. But it's possible there's a bug somewhere else in Venus. I haven't been looking at the relay state.

You can disable the Forwarder to check stock Venus logic.

Typing:

svc -d /service/ForwardGenInput

on the venus command line will terminate the Forwarder.

svc -u /service/ForwardGenInput

(or a reboot) will start up Forwarder again.


The Forwarder log will have entries for it's actions so you can see what it did.

Lines containing "Forwarding" will show when the Forwarder made a change to the ManualStart, which is all it ever does.

Lines containing "Stop Sync Error" will show when the Forwarder sets/clears the condition the GUI uses to display the External override message.

Generator input and startstop dBus service discoveries are also logged.


Sorry about the setup rc.... typo. I updated the setup file yesterday. I fixed it the OPPOSITE way (removed the "er" in both places). This might cause issues later on when you update.

That portion of the script is only responsible for adding recovery code to rc.local to reactivate the Forwarder after a software update.


There is new code in GitHub. Changes are the setup script and a 30 second External override message delay in ForwardGenInput.py you suggested. Give it a try.


10 comments
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

bowpay avatar image bowpay commented ·

Running into an issue. I can't start the generator at all now using the Cerbo. I tried to reinstall but receiving an error with the latest build. I fixed the permission issue but the last error says "Bad interpreter...". How do I revert everything that was done so that I can verify the gen start/stop?


0 Likes 0 ·
1591499389137.png (43.6 KiB)
Kevin Windrem avatar image Kevin Windrem bowpay commented ·

Sorry for the long-winded response. Detailed instructions are intended to help get you running quickly. If you know unix, much of this you will already know.

I wonder if the setup file was corrupted when you downloaded it to the target. The /bin/sh^M suggests it might have been processed as a text file on a Windows machine. (^M is a carriage return which Windows uses at the end of each line but Unix does not.)

If that's the case, you might be able to recover the setup script with:

cd /data/GeneratorForward
tr -d '\r' < setup > temp
mv temp setup
If the script runs now, you may not need to uninstall everything. But I do recommend getting the latest from GitHub and updating what you have.


If you do, wish to uninstall, there's an option for that:
cd /data/GeneratorForward
./setup uninstall dl y

You can also run setup and answer all the prompts:

./setup

If the setup script still doesn't run, you could try to copy a fresh copy of it from GitHub, but make sure a Windows machine doesn't treat it as a text file and add carriage returns!

And as a last resort, here's how to completely uninstall manually. You should be able to copy/paste these commands to a command prompt.

svc -d /service/ForwardGenInput
rm /service/ForwardGenInput
rm -rf /data/GeneratorForward
cd /opt/victronenergy/gui/qml
ls -al OverviewGenerator.qml*

make sure you have two files, one ending in .orig

rm OverviewGenerator.qml
mv OverviewGenerator.qml.orig OverviewGenerator.qml

At this point the only thing remaining of the Forwarder is it's log file. If you want that gone too:

rm -rf /var/log/ForwardGenInput

At this point, I'd reboot.

When you are ready to reinstall, I suggest downloading a new copy from the Git repository and copy it to Venus as a zip file. Unzip it to /data/GeneratorForward and run setup again.

cd /data
unzip Venus-generator-start-stop-input-master.zip -d /data
mv Venus-generator-start-stop-input-master GeneratorForward
rm Venus-generator-start-stop-input-master.zip
cd /data/GeneratorForward
./setup activate eo y dl m


BTW, if you are running the setup script on Venus, there's no need to specify the IP address. It's ignored if you specify it. The IP address is only used if you are running setup from a unix host but I don't think PuTTY can do that.

0 Likes 0 ·
bowpay avatar image bowpay Kevin Windrem commented ·

The latest build is working out great! I did change the delay to 3 seconds instead of 30. 30 was a bit too long. 3 gave it just enough time that it didn't flash the wrong message. The only outstanding issue as of now is the countdown on the running SOC condition and Today's Runtime is still counting up. The problem here is that the generator run hours will be out of sync with the generator. Please tell me we can stop the accounting process? After this issue is resolved I seriously think Victron should include this into the next build. This is what I would expect in the UI.


BTW anyway to make updating an automatic process when a new firmware gets released? Just in case Victron doesn't want to include this fix.

0 Likes 0 ·
Kevin Windrem avatar image Kevin Windrem bowpay commented ·

Great!!! Glad things are working.

I've shortened the delay. I though 30 was too long but that's what you'd suggested. It's now 5 just in case.

I changed the "Run" message inside the generator icon. "Running" now indicates the generator is running based on the digital input rather than redundantly reporting what's in the status tile: the generator start/stop relay output.

I also fixed a bug that caused the input to get stuck in a running condition if the physical input went away.

Updates to the GitHub rep:

https://github.com/kwindrem/GuiMods

The Forwarder mechanism and GUI mods will already be reactivated following a software update.

Integrating the generator input with time accumulation will take more work. One big issue is that if there isn't an input to signal the generator is running, time would never count up/down. I also need to provide an indication of why time isn't changing. I'll dig into things a bit but need to consider the scenario where a generator input isn't provided.

Before this becomes a part of the stock code, there's the situation where the AC input is used for signaling that the generator is running rather than using a digital input.Some Venus implementations like the CCGX don't have any! I've looked at this a bit and it's not trivial. A complication here is that not all inverter/chargers have two AC inputs.

More to follow ...

0 Likes 0 ·
Kevin Windrem avatar image Kevin Windrem Kevin Windrem commented ·

Stopping time accumulation while the generator isn't running will take some effort. I've found the code but need to better understand how it functions before I open the hood and make changes. It'll take time. Not sure when I could have working code to try.

0 Likes 0 ·
bowpay avatar image bowpay Kevin Windrem commented ·

Maybe Victron can jump in and let us know the easiest route to pull this off? @mvader (Victron Energy)

0 Likes 0 ·
Kevin Windrem avatar image Kevin Windrem Kevin Windrem commented ·

Some progress. I've got a mechanism to pause running time without canceling the current condition.

But I'm stuck at getting dBus values I need to hook that up to the generator digital input. Any help setting up dbusmonitor or other hooks I can use inside startstop.py would be greatly appreciated.

0 Likes 0 ·
mvader (Victron Energy) avatar image mvader (Victron Energy) ♦♦ Kevin Windrem commented ·

Hi Kevin, for the generator start stop service to monitor more dbus data, looks like you have to add more paths here:

https://github.com/victronenergy/dbus_generator/blob/master/dbus_generator.py#L33

And a little lower you can see which callbacks are called upon changes in those monitored paths.


nice all the progress!


note that if we are to include this new functionality, it will probably have to be added to the existing service, rather than adding a new extra service as being designed now.

I’m not sure if we can do it anytime soon though:

- whilst I understand that this is a logical feature to be in for some; for most its not necessary

- its not so easy to do it properly and non-confusingly for average Joe - its making a system with two captains on one ship. Making it such that you could wire the manual start/stop signal into a digital input would already make it simpler I think.

- for people updating their system, care must be taken in what we can let silently change.

- how will this work in conjunction with the generator-should-be-running-but-is-not-running alarm thats also part of this code?

- why use a digital input, rather than looking at AC input status of a multi or quattro, as the code does already for above mentioned alarm?

- generator start/stop is crucial. Especially for the 1000s of unattended systems out there: any changes made to this feature will need to be rigourously tested. Especially a seemingly large change like this.

So whilst being super enthusiastic about all the progress, I’m also realistic in expecting that it will be hard to justify the time needed for this on our side soon.

0 Likes 0 ·
Kevin Windrem avatar image Kevin Windrem mvader (Victron Energy) ♦♦ commented ·

Matthijs, thanks for the prompt reply. I'll look more into the code you reference. (I can always set up manual polling for parameters as I've done other places if I can't figure out dbusmonitor.)

I have plans to add the AC input checking for "running" so that a digital input isn't used at all. Yes, that will assert an error message too but might be OK. My plan here is to use the same setting that activates the error to decide whether to look at AC input. I would consider the generator running if either AC input testing or the generator digital input was active.

My choice to add a separate process was for expediency in getting something working and to minimize changed to existing modules. Unfortunately, "stopping time" will require mods to startstop.py.

Again many thanks for your help during a busy time for you and your staff.

0 Likes 0 ·
Kevin Windrem avatar image Kevin Windrem Kevin Windrem commented ·

Made progress yesterday but hit a brick wall: deadlocks between my forwarder process and the main generator process.

I need to abandon the forwarder and move that code into startstop.py.

Stay tuned.

0 Likes 0 ·
Kevin Windrem avatar image
Kevin Windrem answered ·

I have made some enhancements to the system that may help with debug.

There are new files in the GitHub. I suggest you download a complete set and reinstall.

I added "Run" to the icon in the Generator Overview page when the Venus relay is closed. (See picture.) This is about as close as I could get to the actual relay and should closely reflect the actual state of the relay. The STATUS messages are based on parameters in the heart of the generator control and while unlikely there could be something down stream that interrupts the relay.

I also fixed a bug in setup that causes the Forwarder to be reactivated with every boot. This isn't harmful - just takes extra time during boot. You need to delete the lines in /data/rc.local that pertain to the Forwarder then run ./setup activate again.

I also optimized the code. The Forwarder was taking about 3% of the CPU and I was able to reduce that to under 1%. I decreased execution time of a section of code taking 0.7 seconds to under 20 mS in a loop that should have run every second.



2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Kevin Windrem avatar image
Kevin Windrem answered ·

I changed the indication inside the generator icon to "Running" reflecting the state of the generator digital input since it is not shown anywhere else. I removed "Run" which reflected the state of the Venus relay. Displaying both was confusing and the status tile reflects that anyway.

I also fixed a bug that occurred if the digital input service disappeared which could occur if the input was redefined to be for some other function.

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Kevin Windrem avatar image
Kevin Windrem answered ·

Here's a new version of the code that connects the generator digital input to the generator control logic. This is a complete redesign that incorporates the code into the existing generator control code.

If a generator digital input is defined, the new startstop code couples that input to the Manual Start such that if the generator is started or stopped externally, the Manual Start state will follow.

Manual Start will not track the digital input if a condition such as low SOC or a test run attempted to start the generator. In this case, if the digital input reports a stopped generator, this is interpreted as an "External Override" and a message is displayed on the Generator Overview page.

The running or stopped state of the input is also displayed on the Generator Overview page. It's text inserted into the icon in the upper left.

The latest addition was to couple running time reported by Venus to the generator digital input. That is, time accumulates only if the input reports the generator is running.

The package can be found here:

https://github.com/kwindrem/GeneratorConnector

If there is no generator digital input defined, the behavior is unaffected from the standard code.

If there is interest, I can look into hooking up the generator AC input as an alternate "running"/"stopped" source.

The previous version discussed in this thread as the "Forwarder" has been decommissioned as I'd hit a brick wall with a separate forwarder service. If you have installed it, please uninstall the package and install this new one.

The changes to startstop.py are substantial. As such, the stock file needs to be replaced. If the stock file changes in the future, I check the file's content during installation and prevent replacement with the one from this package. I will add file versioning in the future if needed to keep up with Venus software updates.

16 comments
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

bowpay avatar image bowpay commented ·

Awesome! I just uninstalled and try to reinstall. Getting a couple of warnings. Wasn't sure what to do...


0 Likes 0 ·
1591919398539.png (39.3 KiB)
Kevin Windrem avatar image Kevin Windrem bowpay commented ·

Oh darn. Looks like the two files I need to replace are different between Venus 2.54 and 2.60~26.

I'll need to implement installer versioning to get this new code to install on 2.54. I have 2.54 in the backup slot and will reboot and inspect the files.

0 Likes 0 ·
Kevin Windrem avatar image Kevin Windrem Kevin Windrem commented ·

Added file versions to installer

You should do a complete uninstall:

cd /data/GeneratorConnector

./setup uninstall

then grab a new repository and install from scratch.

File sets are currently provided for version 2.54 and 2.60~26. I'll do my best to keep the repository up to date.

0 Likes 0 ·
Kevin Windrem avatar image Kevin Windrem commented ·

I have looked into hooking up the generator AC input to this logic, however documentation suggests there aren't any parameters that will provide AC input status for the generator when it is not the selected input. Am I missing something?

Note that I'm running a Multiplus Compact so don't have a second AC input. It's not clear if a Quatro would have additional dBus parameters.

0 Likes 0 ·
bowpay avatar image bowpay Kevin Windrem commented ·

I asked the question about that. I wanted to see voltage information when the generator was running but the Quattro was not set to AC2 (Generator). I was told that nothing was available to read if the Quaatro is not pointed to that input.

0 Likes 0 ·
mvader (Victron Energy) avatar image mvader (Victron Energy) ♦♦ bowpay commented ·

For most marine& rv use we recommend to wire the generator on AC in 1. The priority input.

0 Likes 0 ·
bowpay avatar image bowpay mvader (Victron Energy) ♦♦ commented ·

Thank you @mvader (Victron Energy) but Victron's logic for RVs is flawed. You have a setting labeled "Do not run generator when AC1 is in use." Because of this setting you always make the Generator priority. When I drive to a place, that has shore power, I plug in and my motorhome should automatically transfer over to shore power and stop using my generator. Shore power is always priority since it provides the most amount of power. You don't offer "Do not run generator when AC2 is in use" therefor you force me to place the generator on AC2. At the end of the day my system works exactly how it should work. When I am not plugged in, AC2 (generator), is always being used. Because there is no power source for AC1 I never have to worry about it. You should change your documentation to support putting generator on AC2 OR make it so that I can choose to not run generator when AC2 is in use. I think the best solution is to just change your documentation. AC1 in my mind should be shore power and always priority. Why would I use my solar system and batteries when I can use shore power?


BTW this is coming from someone that lives in a motorhome fulltime. We also are not stationary. We travel all over the US.

0 Likes 0 ·
mvader (Victron Energy) avatar image mvader (Victron Energy) ♦♦ bowpay commented ·

Hi. I understand - but let me explain the limitations:


At the moment, in our Quattros, its by hardware impossible to read “The other AC input”. Also, its in hardware defined that AC in 1 is the priority one.

For a newer generation devices we have this on the whishlist, to make it more flexible. But for now its just a given.

In many yachts & (and I assume) RVs, the reason to have the generator as the priority one is to be able to easily overrule the existing shore and run on the generator on purpose - mainly in situations with so limited shore supply that also PowerAssist can’t help enough.

But indeed, in that configuration the “Stop generator when AC in 1 is in use“ setting then won’t work.

Ofcourse its up to you which input to wire where.

Hope this helps to understand why things are the way they are.

0 Likes 0 ·
bowpay avatar image bowpay mvader (Victron Energy) ♦♦ commented ·

I guess maybe if you had 3rd world living conditions with dirty power. The most logical way I can see what your describing working would be to handle AC1 and AC2 is if you need 2 sources at the same time. Maybe trying to combine power but I don't think it works that way right? Otherwise I can't imagine the actual use case as your power would continually bounce on and off as it switches between power. In my case I have a 50amp cord and a 30amp cord with a Auto Transformer that steps up voltage on the 30amp side with an auto switch between the 30amp and generator. If I hookup to a 15amp house plug on AC2 then I can limit amperage on the control to 15amps. I just don't understand how anyone in the US would want something different. At the end of they day I believe more people would be using the Quattro the way I describe vs Victron's use case.

The Quattro won't allow 2 sources at the same time right? It's either AC1 or AC2 right?

0 Likes 0 ·
mvader (Victron Energy) avatar image mvader (Victron Energy) ♦♦ bowpay commented ·

Yes only one at a t. In Europe we have (Sometimes) 8 amp shore supplies. Perhaps that explain the difference.

But, as said: you can use either. Up to user/installer to choose the least worse option ;o).


I’ll try find some time to check the Quattro manual to see of we can better explain it there!

0 Likes 0 ·
bowpay avatar image bowpay mvader (Victron Energy) ♦♦ commented ·

Ok. I went back and forth with the guy that was helping me on installing my system. We had the generator wired in AC1 at first but when I was running my generator for maintenance my motorhome would kick over to the generator side and disrupt my router, devices, etc. This was extremely annoying. Generators need to be ran once or twice a month to keep them in good shape. Also when I pulled into an RV spot and plugged the 50amp the Quattro would not kick over. I had to kill the generator then the whole motorhome loses power while it kicks over. Just so many reasons why not to wire generators on AC1. Anyways I think adding some more information about this in the documentation will help people make the right decision. Thank you!

0 Likes 0 ·
bowpay avatar image bowpay bowpay commented ·

One more note. When I plug in to AC1 power the setting to not run generator while AC1 is in use will kick the generator off. I haven't tested this yet but in theory it should work. Hopefully I don't find a bug lol

0 Likes 0 ·
Kevin Windrem avatar image Kevin Windrem bowpay commented ·

Thanks for the enlightening discussion. I now know there's a choice between generator and grid priority and why. I also know what parameters I have to work with.

The system knows if the ACTIVE AC input is valid or not and whether the source is the generator or not.

I could use that existing information to update /GeneratorRunningState like I am doing with the generator digital input. This would trickle down to setting/clearing /ManualStart and updating /ExternalOverride.

But I'd have to set /GeneratorRunningState unknown if the current source is not the generator resulting in no generator control or running/stopped indications.

A quick glance at the code suggests startstop.py already has the parameter values so.

I would give a generator digital input priority over AC input since it has a more persistent value if present.

Based on the system's capability, is there anything more I should do or wrap up this project and move on?


0 Likes 0 ·
bowpay avatar image bowpay Kevin Windrem commented ·

"I would give a generator digital input priority over AC input since it has a more persistent value if present." I think that just about sums it up. The digital inputs are more valuable for a lot of situations because if I provide the data Venus should use that for its programming instructions. Thank you SOOOOO much for doing this! I know others will benefit from this as its going to be a wanted feature when more US RVers use the Cerbo. Can I donate to you for the great work? Let me know your preference for receiving money.

0 Likes 0 ·
Kevin Windrem avatar image Kevin Windrem bowpay commented ·

I hope you were able to get the latest software installed and that it's working for you.

What I was able to do with the digital input feels like a good solution for those that have another generator control system and are looking to integrate them. It gets you true running status on the Venus display and allows the "three way switch" manual start stop to work reasonably well. Thanks for helping define behavior.

A lot of people who bought into Victron before Cerbo came out are stuck without digital inputs. I'm not sure that what can be done with the current AC input handles is a workable partial step. What do you think?

0 Likes 0 ·
Kevin Windrem avatar image Kevin Windrem Kevin Windrem commented ·

I looked again at integrating the AC input to the generator's running state. However, there is insufficient information to provide stable and useful "running" display let alone hooking that up to Manual Start, etc.

So unless you have a GX device that has digital inputs, Positive "generator is running" feedback is not possible.

I think was is required is an external device to provide digital inputs for CCGX.

Another enhancement would be to use a digital input to indicate the current source (grid or generator) when the Multi only has one input and external transfer switch is fitted ahead of the Multi.

0 Likes 0 ·
bowpay avatar image
bowpay answered ·

Hello, I've been pretty busy lately and finally have some time to work on this again. I did the latest update and tried to reinstall but getting a warning with the latest code. "Warning no files for Venus v2.60". It says I need to hand edit the qml files. The fileSets folder shows a v2.60 in it. Any ideas?

14 comments
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Kevin Windrem avatar image Kevin Windrem commented ·

You got to v2.60 before I had a chance to edit the setup files, which I just did.

Get a fresh copy from GitHub and it'll work now.

0 Likes 0 ·
bowpay avatar image bowpay Kevin Windrem commented ·

Yep that worked. I did notice that when the generator starts based on AC load condition the status shows "Running by AC load condition" but the start/stop just says start. Shouldn't the button go to Stop when the Cerbo runs based on AC load condition?

0 Likes 0 ·
Kevin Windrem avatar image Kevin Windrem bowpay commented ·

Well that seems logical at first, however the button that toggles between START and STOP is a MANUAL START. You can't stop the generator if it is running due to an automatic condition without disabling automatic control.

That's the way Victron coded it and I haven't made changes in that area.

I would need to code an override to the automatic run logic. The lower right section would change from MANUAL START to a MANUAL MODE with values of RUN/AUTO/STOP.


0 Likes 0 ·
bowpay avatar image bowpay Kevin Windrem commented ·

First off I think what you have done this far is awesome! We ran into another snag. We lost power this morning so the generator kicked on due to AC load conditions (Voltage Condition). I decided to override the generator seeing that we have enough power in the batteries to run longer and we weren't consuming that many watts at the time. I hit the button next to my bed so I can stop the generator from kicking on so we don't smoke out our neighbors at this RV park. After I stopped it about 5 minutes later the generator kicks on again. This happened every 5 minutes or so. I wish that I could simply override the generator conditions or stop them for X amount of time without manually changing the settings. Almost like a bypass condition button for X amount of minutes/hours on the generator screen. If we did have that then the Cerbo could send Alerts in the UI until this feature is disabled (Manual Bypass mode! All conditions are currently paused. To allow the GX device to process rules again please disable the manual override mode.).

I don't expect you to build it but I think this is something Victron should provide.

BTW what you have done this far should be included into the main build. I don't see your changes breaking anything. How do we go about advocating for getting this built directly into the build?

0 Likes 0 ·
Kevin Windrem avatar image Kevin Windrem bowpay commented ·

I don't believe Cerbo is initiating the restart. The automatic logic has no knowledge of the generator running or not and the code I added only interfaces the incoming "generator is running" digital input with the MANUAL run.

Is it possible the external generator control is triggering the restart based on the Cerbo run signal and the generator not running?

If Cerbo is causing the generator to run under conditions you had this morning, maybe you conditions could be tweaked in order to be more tolerant. Maybe just starting/stopping the generator based on SOC?? Just an idea.


What I've done so far is a band-aid to real generator integration. I think true integration would incorporate both run override and stop override inputs to Cerbo. That way, the generator run relay can open when automatic run has been overridden from either the user interface or the stop digital input. The "generator is running" digital input then becomes a warning/error. There's still the "two bosses" conflict between Cerbo and an external generator control system and I'm not sure there's a good way to deal with that from within Cerbo.


You and I have both suggested that Victron integrate my changes in their code. MVader has strong feelings that this is a major testing undertaking and wants to proceed with caution. He hasn't said no but needs to prioritize the effort so Victron can feel good about supporting it.


0 Likes 0 ·
bowpay avatar image bowpay Kevin Windrem commented ·

I only have the SOC condition enabled now. I believe I will start running into the same issue once we hit 60% soc but for now I can just disable it all together if need be. Just makes it nice for my wife to be able to go to the generator screen and place the conditions on pause.

I would think that the generator external override would warrant the testing effort. Seems like a logical solution for Victron integration with preexisting RV systems. Anyways, thanks again for the help. I'll be finalizing my system this week and will get back to you on the main screen UI changes for showing direction using shunts. I just picked up 2 more smart shunts just for this purpose.

Any ideas on how to get a second and potentially 3rd display working with the Cerbo? The web interface is just too slow and trying to dedicate a tablet is cumbersome when wanting to quickly view the system. I was told that 2 displays working would not work when it comes down to the touch interface.

0 Likes 0 ·
Kevin Windrem avatar image Kevin Windrem Kevin Windrem commented ·

I looked at the code for the generator page thinking it would be relatively easy to add an "automation on/off" selection like the AC MODE selection on the Mobile/Boat page. The existing MANUAL START logic makes adding other buttons extremely difficult. A major rewrite would be needed. Sorry.

0 Likes 0 ·
bowpay avatar image bowpay Kevin Windrem commented ·

Not a problem. It's not a huge deal. I think I would rather figure out a second and third display. Any ideas on that? I thought maybe a Raspberry pi might help here?

"Any ideas on how to get a second and potentially 3rd display working with the Cerbo? The web interface is just too slow and trying to dedicate a tablet is cumbersome when wanting to quickly view the system. I was told that 2 displays working would not work when it comes down to the touch interface."

0 Likes 0 ·
Kevin Windrem avatar image Kevin Windrem bowpay commented ·

I assume you are connecting to Cerbo directly on your LAN (not via VRM). It is a bit slow on a CCGX but thought Cerbo would be faster.

You should be able to mirror the HDMI output to multiple displays but the touch is embedded in the I2C HDMI interface and isn't a standard interface. Some HDMI splitters will block this connection so even the main display wouldn't work.

I don't know if you can hook up a standard touch surface to a USB port on Cerbo or not. Worth a shot but don't have Cerbo.

Even if you got this working, all displays would be on an identical page.

There's an HTML 5 interface: venus.local/app (or use the IP address of Cerbo instead of venus.local/app if that doesn't work. Very limited and even less control but supports multiple displays.

A 18 month old comment from MVader regarding a new VNC server that supports multiple connections MAY be coming:

https://community.victronenergy.com/questions/11222/feature-request-remote-console-on-multiple-display.html

Other possible options there as well.

No personal experience beyond that. Sorry.

0 Likes 0 ·
Kevin Windrem avatar image Kevin Windrem bowpay commented ·

Note: the HTML5 app DOES have the generator auto start/stop on/off you were looking for.

0 Likes 0 ·
Jimmy Bergetun avatar image Jimmy Bergetun Kevin Windrem commented ·

Hi, I am trying to install your script, but are getting errors that i dont understand.

Can you help me understand what i am doing wrong?


root@einstein:/data/GeneratorForward# su root ./setup install

running on Venus - version v2.60

existing OverviewGenerator.qml saved as OverviewGenerator.qml.orig

startstop.py.orig exists - not changed

diff: can't stat '/data/GeneratorConnector/fileSets/v2.60/OverviewGenerator.qml': No such file or directory

diff: can't stat '/data/GeneratorConnector/fileSets/v2.60/OverviewGenerator.qml.orig': No such file or directory

OverviewGenerator.qml.orig content DIFFERENT - can't replace with package version

HAND EDITING required

diff: can't stat '/data/GeneratorConnector/fileSets/v2.60/startstop.py': No such file or directory

diff: can't stat '/data/GeneratorConnector/fileSets/v2.60/startstop.py.orig': No such file or directory

startstop.py.orig content DIFFERENT - can't replace with package version

HAND EDITING required

root@einstein:/data/GeneratorForward#

0 Likes 0 ·
Kevin Windrem avatar image Kevin Windrem Jimmy Bergetun commented ·

This may be due to an old version of the package or an incomplete copy.

Try getting a fresh copy from:

https://github.com/kwindrem/GeneratorConnector

and trying again.



1 Like 1 ·
Kevin Windrem avatar image Kevin Windrem Jimmy Bergetun commented ·

For clarity, the script makes backup copies of the files it replaces. These are the ...orig files. If these backups exist (for example from a previous run of the script), you'll see the ... exists - not changed message. This is just an FYI and the script continues.

Next the script compares the copy with a stock version of the file. Replacement fails with the "hand edit" message if they aren't the same. This prevents changes manually made to the file from being lost.

I'm here to help so let me know if you continue to have problems.

1 Like 1 ·
Jimmy Bergetun avatar image Jimmy Bergetun Kevin Windrem commented ·

It was my own fault. I created the folder GeneratorForward and not the correct one . It works perfectly now. Your script should absolutely be part of the stock image.


thanks for the great work :)

0 Likes 0 ·
bowpay avatar image
bowpay answered ·

I like to bring this thread back up to the Victron dev team. I can't tell you how many times we use this. Sometimes we kick the generator on via manual buttons and when I am laying in bed I can quickly access and shut down the generator via my phone. PLEASE PLEASE PLEASE include this into your next build. I don't mind running this script everytime I update but it would be nice if this was supported and tested by Victron.

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

bowpay avatar image
bowpay answered ·

Hi @Kevin Windrem, the generator start/stop is working awesome! Wish Victron would include your update in their build. I wanted to forward over this other request. Is this something you could do? https://community.victronenergy.com/questions/51486/has-dc-system-how-to-setup-alt-chargers.html?childToView=103310#comment-103310

1 comment
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Kevin Windrem avatar image Kevin Windrem commented ·
Because I display tank and temperature information at the bottom of this screen, there really isn't room for info for a second battery.
0 Likes 0 ·
xavier-64 avatar image
xavier-64 answered ·

Hello,
Today I'm encountering some trouble with the enerator start stop function.
I also use the externaltransfertswitch feature all updated to the larest version.

I can start the generator manualy, all detections are OK (Input and digital).
But If I ask to power off it manualy, the relay is not disactivated (no sound of switching)

The generator still run, but the status on the screen is OFF !!!

Any tips on that ?

Xavier

3 comments
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Kevin Windrem avatar image Kevin Windrem commented ·
Are you using GUIMODS and ExtTransferSwitch packages? If so are you using the Generator digital input or detecting generator running via the AC input?
0 Likes 0 ·
xavier-64 avatar image xavier-64 Kevin Windrem commented ·

Hello,


I'm not using Guimods, Only ExtTransferSwitch and SetupHelper.
1695277734353.png

And it seems to be running OK. (switching the input statut from Gen to Grid and vice versa.

i've restored Venus GX 3.01 and all works.
Switching back to 3.10, I can start the genset (manualy) but istopping it, the command is like not executed and there is a message saying, "If all conditions are not meet, the generator will run untill"... (something like that)
I have set the periodic run condition ones every 10 days for 6min

and the minimum running time is set to 6 min too.


Xavier



0 Likes 0 ·
1695277734353.png (33.0 KiB)
xavier-64 avatar image xavier-64 Kevin Windrem commented ·

"If so are you using the Generator digital input or detecting generator running via the AC input?"
No I'm not using the Generator digital input.
The digital input of the (contact loop) generator is given by the transfertswitch to digital input 2 as exttransferswitch

After the update to 3.10 this is real that I receive a VRM alarm about Genset dig input not detected.

BTW. Now when the Genset is startd, it is correctly detected and the AV input swtich to Genset. But If I want to stop the genset... the command is not operational ! I need to change the relay setup to manualy change his state !!

I've left the genset running thinking OK, it is not running for 6 min (one of the condition).. but either after 10 min it didn't stop !

I'will try to annd an other Dig input as generator, copy of the exttranferswitch input to see if it helps !

Xavier

0 Likes 0 ·
Kevin Windrem avatar image
Kevin Windrem answered ·

If you do not define a digital input as "Generator", the AC input is used to detect the presence of the generator. BUT if you have an external transfer switch connected to a digital input set to "External transfer switch", then the generator run logic can not determine if the generator is running because the transfer switch will change the AC input to grid. At that point, the generator running logic falls back on the Victron default of using the manual or auto start logic to determine the running state of the generator. So the GX device will continue to think the generator is running even though it is stopped manually via external means.

You must use the "Generator" digital input to tell the GX device is or is not running.

1 comment
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

xavier-64 avatar image xavier-64 commented ·
OK, That's what I've done this morning.

I have 1 input for the Generator and 1 input for the ext transfer and one is the copy of the other.

The digital inputs are working perfectly, the detection of Grid or Genset too. (inputs simulation)
But If I use the Genset panel, pressing start, the genset start and I can hear the relay switching noise. and all the inputs switch in correct way. (Genset ON, AC on Generator)
If A ask to power the genset off, on the panel the status of the genset change to not running but that's all. No sound on switching relay !! So meanwhile the relay 1 of the GX device is not changing his status, the input will not too as they are given by the running genset !!

I do not use Stop generator when AC-input is available as the ext transfer switch change AC input type. that's correct ?

I also use, stop genset on lost of communication. (If Digital input change status) the Gx must switch off the genset.... this feature seems to do not works as if I remove the digital input signals, the status change on screen but the GX do not send the stop order to genset !

Why it works with 3.01 but with 3.10 Venus GX OS versions ?

0 Likes 0 ·
Kevin Windrem avatar image
Kevin Windrem answered ·

I can not reproduce your problem. I just tried this (simulations by changing digital input invert translation) and it seems to work fine. This is with v3.10, GuiMods v8.9 and ExtTransferSwitch v2.32 both just released a few minutes ago. It did not matter which order I switched the digital input states. In all tests, the generator registered stopped and the relay on the GX device opened.

I recommend you use Stop Generator if AC input available since ExtTransferSwitch turns this off when switching to generator then back to the programmed state for grid/shore. I've tried it both ways and it works fine in both.

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.