question

mvader (Victron Energy) avatar image
mvader (Victron Energy) asked

Venus OS: modifying gui-v2

Hi all, this post is for two things:
1. to announce that gui-v2 source code is now public: https://github.com/victronenergy/gui-v2.
2. to start discussion/get feedback on how to allow modifications again.

In case you have not seen it yet, we're in the final stages of replacing the current GUI in Venus OS with a new one, called gui-v2. For more details, see https://bit.ly/gui-v2.

Modifying the UI is different with gui-v2. While gui-v1 in itself was not open source as a repo on for example Github, all the visible elements were taken care of in QML and those are non-compiled files that could be edited after obtaining root access to the GX device. This allowed for modifications. Small ones, but also large projects like Kevin Windrem's GuiMods.

In gui-v2, the QML files are still on the root fs and can be edited, but doing so only changes the version you see on screen. It won't change the version used remotely in a browser, ie. the WebAssembly version. That version is a compiled single binary, which is built at the time of the Venus OS release and cannot be rebuilt on the GX itself.

The WebAssembly version is hosted on the GX and served to a browsers over LAN and remotely over VRM. The browser downloads the precompiled binary (WASM file) and the runs it locally. Note that for VRM there is a caching mechanism in place; but done in such way that changing the WASM build on the GX will also make its way over VRM to be access remotely.

Building the WASM requires lots of tooling installed (Qt6, emscriptem), and then takes a while. To learn more, see the gui-v2 automated build, https://github.com/victronenergy/gui-v2/blob/main/.github/workflows/build-wasm.yml, a Github Action workflow as well as the how to build instructions in the gui-v2 Wiki: https://github.com/victronenergy/gui-v2/wiki/How-to-build-venus-gui-v2.

  1. The level of modifications done on our current UI varies a lot:
    Some commercial integrators install a quite different UI with a USB stick, which requires them to maintain a build process.
  2. UI enhancements, like Kevin Windrem's GuiMods.
  3. Add-ons that come together with installing other functionality onto Venus OS; like dbus-serialbattery, https://github.com/Louisvdw/dbus-serialbattery for example.

Victron is committed to make modifications possible again. But I have not yet seen a clear winning solution for how to do that. The team working on gui-v2 as well as myself are primarily busy with getting gui-v2 ready for prime time.

As a first step we've made gui-v2 open source: https://github.com/victronenergy/gui-v2/.

Some ideas that came up so far are:

  1. Add a web browser component to gui-v2 (that part is easy, it exists in Qt); and make it show a webpage hosted on Venus OS, or possibly also web page on other devices in the system. Same can (relatively easily) be made available remotely just like we do with the Node-RED dashboard for example. First step would be a simple test, also to see how feasible it is wrt CPU and memory resources. Involved building Venus OS including the web component for Qt6 and then making small proof of concept.
  2. Make gui-v2 dynamically load components: You can load QML and JavaScript resources from URLs (see https://doc.qt.io/qt-6/qtqml-documents-networktransparency.html) and for QML components, you can even build strings dynamically and then compile and instantiate them (see https://doc.qt.io/qt-6/qml-qtqml-qt.html#createQmlObject-method).
  3. Do a full build of gui-v2, both the ARM as well as WASM build; and to get that mod, users need to install those (or script on GX downloads those). The disadvantage of this approach is that you cannot combine different modifications.


I am looking forward to hear your thoughts. I invite the community to share details of what you modify, and whether you have idea and skill to help us find a solution.


Venus OSgui-v2
2 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.

Mark Maritz avatar image Mark Maritz commented Ā·

On Brief, can battery and fresh water decrease from top (clockwise) than the left? I would find that more intuitive.

0 Likes 0 Ā·
andrii-podanenko avatar image andrii-podanenko commented Ā·

Thank you for making all of this work opensource



One small nitpick - to ensure MuseoSans font is used with full Unicode table in order for languages, like Ukrainian - fully supported

https://www.myfonts.com/collections/museo-sans-cyrillic-font-exljbris?gclid=CjwKCAiAg9urBhB_EiwAgw88mRx85P8W9z7NeCNu11YZ7J2rxqFxiEr-8RAnyR1AzAbPxgqqkGa1MBoCEbUQAvD_BwE

0 Likes 0 Ā·
24 Answers
kurtinge avatar image
kurtinge answered Ā·

Will this new gui have any impact on the MFD integration? I have B&G Zeus2 and needed to do some modifications to make it work with newer version of Venus (I rather do not want to destroy this functionality). Here's what I did to make it work in my old MFD:

Download version 1.7.0 (v2.x.y is not working with Zeus2), unzip the venus-html5-app.tar.gz, create a www folder and rename the dist folder to app and move the app folder to www, so it look like attached picture. Then zip the www folder to venus-data.zip and put the file on a SD card or USB stick and reboot.

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.

mvader (Victron Energy) avatar image mvader (Victron Energy) ā™¦ā™¦ commented Ā·
Hi, no effect on that. Totally different app. We are making some changes to mqtt, but with a bit of luck (fingers crossed), those wonā€™t break that older version of the html5 app.
1 Like 1 Ā·
Kevin Windrem avatar image
Kevin Windrem answered Ā·

Just some random thoughts (no answers though):

The least amount effort for porting GuiMods, etc to gui-v2 would be to have a way to dynamically add QML pages to the compiled builds. Some of my mods actually add to an existing menu, for example, adding a new digital input type, or adding a switch to enable one of GuiMods functions (select a flow page from a list, enable/disable showing temps on the bottom of the flow page, etc.) In some cases, like adding a digital input type would require modifying an existing menu, not just linking to a new one. The additional selection could be added in a new menu somewhere, but then the stock digital input type selection menu would show (unknown) when the new type is selected.

I have not looked at all at Node-red but this may be a way to add functionality such as PackageManger that essentially has a set of menus unrelated to the stock user interface. It would require a custom dashboard and access to it via VRM would be essential since many system integrators manage systems remotely for their clients. I don't think Node-red would provide access on the local display of the GX device.

The web page approach would not be able to modify existing menus but would allow access to functions like PackageManager. Matthjis suggested the web page approach could possibly appear on the local display.

Regardless of the approach, supporting multiple packages all modifying or adding to the user interface is important. I can see any of these approaches providing one placeholder, but what happens when two or more modifications are incorporated in the same system and both want to hook into that placeholder?

A similar problem occurs when a modification package wishes to automatically reinstall itself following a firmware update. The suggested way is to create a /data/rc.local file. However doing so, removes any reinstall hooks created for other packages. My SetupHelper MODIFIES the existing rc.local file rather than replacing the existing one of its own. SetupHelper's scripts then manage reinstall of other packages it knows about. To make this easiest for everyone, maybe a directory somewhere in /data could be a drop box for reinstall scripts, QML hooks, etc that the OS scans during startup. Making the mechanism based on a file system would minimize interactions between multiple packages.

2 |3000

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

dansonamission avatar image
dansonamission answered Ā·

The ability to include a node-red dashboard would probably suffice for most. It must be easy to access, such as a button from one of the main pages or an extra button along the bottom. Victron (and others) could release some visual nodes that could be used on the dashboard to keep it looking similar.

2 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 Ā·
As it stands right now, the node-red dashboard does not appear on the local or remote GUI. It's accessed via a web browser and also appears on VRM separate from Remote Console.


0 Likes 0 Ā·
dansonamission avatar image dansonamission Kevin Windrem commented Ā·
Yep, that's why it would be great to be able to include this as an option.
2 Likes 2 Ā·
iainsommerville avatar image
iainsommerville answered Ā·

Our main requirement (for use on our electric boats) is to be able add one or more custom screens to the built-in display so having a mechanism to do this that is stable across releases (with some level of documentation) is the highest priority.

Having said that, remote access will be needed for support/debug so I think that options 1 or 2 would be of most interest to us since the remote access is going to be relatively infrequent, i.e. performance is less critical (for us).

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.

iainsommerville avatar image iainsommerville commented Ā·
Thinking about it, I do worry that option 3 would make modifications even more fragile, i.e. more susceptable to internal changes. I have seen how much work Kevin has to put into maintaining gui-mods today; I am not sure if maintaining modifications across all releases would be practical if it was any more complex (even for Kevin!)
0 Likes 0 Ā·
dereppsteiner avatar image
dereppsteiner answered Ā·

Hello Kevin,

how can i install your vers.2 ?

Your link ( https://bit.ly/gui-beta ) not working.

2 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.

mvader (Victron Energy) avatar image mvader (Victron Energy) ā™¦ā™¦ dansonamission commented Ā·
Hi, the correct link to the slide deck is https://bit.ly/gui-v2
0 Likes 0 Ā·
eappel avatar image
eappel answered Ā·

Hi,

This runs quite well. I added 1-wire devices after the initial load.

While I can see the devices in the "Levels" pane can they be added to the "Brief" overview?


Eric

2 |3000

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

schollex avatar image
schollex answered Ā·

Hi,

I would appreciate to be able to disable the startup-animation => waiting for the animation to end really waste my lifetime.

I hope it's still possible to operate the web-GUI (Settings-page) via keyboard/cursors, this is much faster than using the mouse. So far, I didn't find out how.

Can Overview-page be set as startpage instead of Brief-page?

The clickable section within the Overview-page are very nice!

What are the bubbles for within the battery? Sorry, I don't like animation which want to pimp a view, but don't have objective indications.

It would be very nice to see power transmitted by Multiplus (Inverter/Charger within Overview-page) from AC to DC respectivly from DC to AC.

I really like the toggle-icons in the left-upper corner, leading to the summarized setup-page. Would you please add ESS-target to this page.

I'm missing Multiplus-submenus within the device-list.

Bye, Alex

2 |3000

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

fenix avatar image
fenix answered Ā·

two things i would like to see


1- the solar is the status "bulk" "abs" "off" etc...

2 - the possibility to switch the invertor "On" Off" "Eco"

3 -Solar yield in A


? - in the brief screen on the right side what is that value? in my case i see 226.4 A but i cannot understand that value

2 |3000

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

beat avatar image
beat answered Ā·

Hi @mvader (Victron Energy)

First of all, I do really really highly appreciate your openess with your community and open-sourcing important parts of your software. Few companies outside of the 100%-open-source world have such open and constructive discussions. Kudos! And kudos for the design of GUIv2, as well as Kudos for GUIv1 extremely well-thought main information screen, as well as Kudos to @Kevin Windrem for GuiMods!

I'm still wondering why you guys at Victron chose Qt+non-ssl MQTT for GUI v2 over a lightweight web-based browser-javascript (+json-data-server backend) open-source GUI widgets library, similar to how VRM runs. This choice makes you have two build-chains, makes GUI mods hard, or impossible, and the remote GUI needs lots of code to even startup (and doesn't run on Firefox, on Linux at least, only on Chomium). Additionally, you can't leverage work on VRM GUI for embedded GUI. You can't have just one HTML+CSS+Javascript code for all platforms (embedded screen, remote browser, VRM-remote). You can't have a consistent styling, while you can style an open-source GUI browser widgets with just CSS.

Qt was designed for portable desktop applications, and is a heavy beast, as well for embedded as for remote web-based GUIs...

There must certainly have been a good reason to make this surprising choice, v.s. embedding a web-browser as display into the GXes with display ?

There are several great javascript widget libraries, and also the one you use for VRM that could have done the job easily, and a lightweight embedded browser with javascript would have been easier too ?

This is not to question your choice (the GUI has a great and modern look, and a few great usability enhancements) but to better understand the choice and the advantages you guys see in Qt GUIv2 over e.g. your VRM GUI or other more leightweight browser-based GUIs. Understanding the Why helps understanding the What and the How, and may help finding solutions for porting GuiMods and other GUI extensions we would love to be able to add to customize the GUI.. ;-)

I'm not sure if this thread is the right one to ask, didn't want to mix it with feedbacks on https://community.victronenergy.com/questions/249509/venus-os-v32034-available-for-testing.html , please feel free to move it where you think it's best.

5 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.

Hey @beat , thank you for your kind words! And no problem asking such questions. There might not always be the time to figure out or write the answer, but in this case there is, at least for a short one.


We tested running a UI in an embedded webbrowser, and it performed far far worse than a Qt solution, in this case gui-v2. That is the simple answer.


Myself I'm quite happy with the result. Its really fast, both when running locally as well as when in a browser.


But there are indeed some disadvantages; although I've not given up on those yet, especially when it concerns making modifications. And, gui-v1 is not totally going away, we'll need to keep it for the CCGX.


With regards to non-SSL MQTT: that is on the list to look into further.

0 Likes 0 Ā·
aaronsb avatar image aaronsb mvader (Victron Energy) ā™¦ā™¦ commented Ā·
I appreciate this perspective. I'm just blue sky thinking here - what if VRM eventually aligned with the webassembly UI, and instead effort was put into the assembly toolchain, widgets, and experience there?


This could mean that you're not establishing a vnc session to view the remote gui for example. This could also align widget and graph development in vrm - someone who develops special graphs or interfaces for local UI could be loaded as a combination wasm wasi runtime modules.

Finally, taking this approach could give rise to a "marketplace" type of system for VRM. I don't even know if there would be value in this, but I could imagine a situation where open source/free/closed source/paid wasm/wasi runtimes could be distributed and managed here.

If it became possible to "simply" download a runtime from a managed configuration, or even from vrm and commanded to load locally, this would be a very nice addition to pushing updates to venus clients for example.

I know I'm basically saying, app store, with more words, but something to think about.

0 Likes 0 Ā·
aaronsb avatar image aaronsb aaronsb commented Ā·

Just to sketch on a napkin, imagine VRM with this sort of approach: https://www.qt.io/web-assembly-example-industrial-panel

0 Likes 0 Ā·
aaronsb avatar image aaronsb aaronsb commented Ā·
I would further point out that there is a possible encouragement for both open source and commercial model development, and a WASM qt runtime extension would help keep clear isolation between "products" from a qt licensing standpoint.


  • If VRM qt wasm is open source, the cost of toolchain and development is under open source principles.
  • If you are distributing enhancements free of charge, then that contributor can do so as well.
  • If you are commercially distributing an enhancement, you are supporting QT (a good thing!) with licensing, as well as selling your product.

This meshing of commercial and open source gives "both sides of the aisle" a chance to support each other.

0 Likes 0 Ā·
Kevin Windrem avatar image Kevin Windrem aaronsb commented Ā·
There are actually FIVE GUIs (maybe more that I do not know of):
  • GUI V1
  • local gui v2
  • wasm gui v2
  • vrm
  • marine app

all requiring separate development efforts.

While the local and wasm gui v2 development has the same code base, each require a separate build and testing effort.

Combining some/all of the remote GUIs seems like a good thing to consider.

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

In my option the most critical numbers in the system are the power the inverter is providing. This is important because it represents the number at which the inverter will enter overload.

The inverter drill-down only shows AC input and AC output power and current. The inverter numbers are easily calculated by subtracting out from in.

In GuiMods, the inverter's gauge is based on the out - in value, and the details page shows the actual power provided by the inverter.

2 |3000

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

andres Hs1 avatar image
andres Hs1 answered Ā·

Hi @mvader (Victron Energy)
Thank you for the details and the good looking new GUI

Will it be possible to add additional items into the brief page?

and remove existing ones?

for example, it is nice to have the weather forecast, yet, this is far from correct, today the weather in HK was 23 C with a forecast of 19~22C, yet, the Cerbo was displaying a forecast of 10 C.

I would also like to be able to see some of the boat temp sensors displayed in the Brief. This was something extremely useful from the GuiMods from Kevin.

Thus, enabling the customization of the feeds to be displayed in the Brief page should be added to release roadmap.


Cheers

2 |3000

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

kylebrockmann avatar image
kylebrockmann answered Ā·

Hi @mvader (Victron Energy) ;


Any idea why tanks aren't working yet in spite of being in all the screenshots? I have seamless native Mopeka integration on the old gui and they are within the MQTT topics however the feature appears notably absent in qui v2.

Is this because you are developing your own tank sensor hardware and have shelved and frozen changes until such as time as an abstraction is available in venus core?

Are you open to pull requests on the core repository?

Kind Regards,
Kyle Hans Brockmann

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.

kylebrockmann avatar image kylebrockmann commented Ā·
Please excuse me; v0.2.10 appears to be working just fine.


Forget I said anything.

2 Likes 2 Ā·
Jeremy avatar image
Jeremy answered Ā·

Hello @mvader (Victron Energy). New GUI is looking awesome!

Quick question regarding embedded web browser... Do you think plausible that we could display node-red dashboards in the GX Touch or Ekrano (i.e. as another view)? That would be a great feature, since this devices could control many other things via Node-Red.

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.

Hi @Jeremy , perhaps - and then most likely on the Ekrano since more CPUs; we have on the backlog to trial this.
0 Likes 0 Ā·
dpritt avatar image
dpritt answered Ā·

Love the new GUI, but I do have one small request, would it be possible to show the device name on the main screen at least. I have several systems and I have to check the IP address to see which I am in, live, test or boat's 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.

dune7 avatar image
dune7 answered Ā·

Hi @mvader (Victron Energy) ;

The new GUI is looking great.


Portrait remote console:

Will the new GUI be able to be viewed in portrait mode like the dashboard? This seems a fundamental question, but if more and more people live their lives on phones in portrait mode, turning off auto rotate lock and ā€œrotate your phone to view the remote consoleā€ seems like two steps each time that could be eliminated for regular viewers of this valuable asset.

Thanks for all your hard work making our systems robust and feature rich.


2 |3000

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

fguiot avatar image
fguiot answered Ā·

@mvader (Victron Energy) Could you include in the GUI a way to control all the switches/relays available at d-Bus level?

I see the page triggered by top left icon could be a good place to control all the relays.

That would be nice to have as even RemoteGPIO is currently not able to display it's own menus in Gui-V2, we could imagine users to configure it in the legacy GUI, and when all set use GuiV2.

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.

yes definitely, coming!

0 Likes 0 Ā·
chrichri avatar image
chrichri answered Ā·

Hi,

when will the relay control for example (Tank pump) be added to the new GUI as it was build in to the Boat and Moterhome view?


2 |3000

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

viccomhr avatar image
viccomhr answered Ā·

Hello to all I simply can not install. All is installed but not possible to open .

Some help

2 |3000

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

Karl Linne avatar image
Karl Linne answered Ā·

Hello,

I installed the latest beta on my cerbo gx and it rebooted all right.

I don't get the "use gui beta" entry in "display and language" and so can't get the new design.

Anything I misser?

Any help much appreciated

Karl

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.

derrick thomas avatar image derrick thomas commented Ā·
Gui v2 is not included in beta 3.31-xx release. This is an interim release addressing bug fixes. Once victron resumes 3.40-xx beta testing, gui v2 will be back.
1 Like 1 Ā·
mvader (Victron Energy) avatar image
mvader (Victron Energy) answered Ā·

Hey all, we had a brainstorm meeting just now on possible avenues. Its rather rough and unfinished, but I'm putting my notes here in public so you can share your thoughts on them and also know what we're doing.

We see three options:

1. Editing the existing QML. Since very recently, this is possible again, see /opt/victronenergy/gui-v2/qml or a similar folder. What I really like about this is that its super low threshold for someone to get into modding the GX device. There is a downside, since we can gain performance by pre-compiling the QML of gui-v2. This makes for startup-time and also run time performance improvements.

#   cmake -DNO_CACHEGEN=true -DLOAD_QML_FROM_FILESYSTEM=true /path/to/CMakeLists.txt 

Next step: we've put an issue on our gui-v2 backlog for this to explore it further, ie what are the performance improvements; and if big enough, how to handle this well. Also we have an idea on how to modify the webassembly build as well; really quite smoothly.

For those going to look at this: note that Main.qml cannot be modified, and input..qml needs something special, see comment on the top, but probably no-one will want to modify those anyway.


2. Make an option where gui-v2 can load a custom QML file or files. We can probably even make this work when using gui-v2 remotely (ie in browser on local LAN or via VRM), by having a pipe over which those QML files are made available to the browser (over MQTT).

So basically where we're getting here is that Venus OS accepts apps (json config file, qml files, some service written in python or C or whatever) and it checks on a predefined place on the data partition if there are one or multiple of such apps and load them. Installing can be done by usb stick or possibly even more fancy.

Next step: gui-v2 dev team to proceed with loading a QML file from disk and making proof of concept around that. Its on the backlog / will be picked up.

This would not allow to change existing content, but does allow to add content, ie. (1) add a new page to nav bar bottom or (2) add new control card to control pane, (3) add entry into the settings menu, and - probably - (4) make it load your QML code for a specific D-Bus service into the Device List. Or possibly (5) add items to the bottom of a menu.


3. Add webbrowser to gui-v2 to load webpage. also nice, some performance concerns; needs someone with open embedded knowledge; we're trialling this but will have to stop if it gets complicated.

13 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.

mr-manuel avatar image mr-manuel commented Ā·
How would option 1 look like when the user opens the GUIv2 in the browser? Currently the wasm build is loaded. Would in this case the GUIv2 also be loaded from the qml files?


If there is a big performance difference between pre-compiled and uncompiled, then a possibility would be that per default the pre-compiled version is loaded and only for the users who want to modify the GUI the uncompiled version is loaded accepting the worse performance. This could be achieved with a option in the GUI itself of maybe more convenient by checking if a empty file ".uncompiled" or something like that exists. This would prevent irritate users that have nothing to do with this.


0 Likes 0 Ā·
mvader (Victron Energy) avatar image mvader (Victron Energy) ā™¦ā™¦ mr-manuel commented Ā·
for option 1, we have an idea to have a script that commits the changes someone makes to git, push to github, have CI pipeline build the webassembly, and pull that back onto the GX device; from which point the rest is already taken care of: when opening webassembly remotely over VRM there already is mechanism that normally loads its from online cache except when it sees that shasum is different/
0 Likes 0 Ā·
mr-manuel avatar image mr-manuel mvader (Victron Energy) ā™¦ā™¦ commented Ā·
Wouldn't this cause a lot of computing costs for Victron? If a lot of users are changing QML files, trying and testing then a lot of tasks will probably overload the servers?
0 Likes 0 Ā·
mvader (Victron Energy) avatar image mvader (Victron Energy) ā™¦ā™¦ mr-manuel commented Ā·
maybe, maybe not - I'm not immediately concerned. Anyway its Github Actions, not our servers.
0 Likes 0 Ā·
Kevin Windrem avatar image Kevin Windrem commented Ā·
Most of my mods DO change existing pages, for example to add items to an existing menu, or to change one or two items within the menu. For example, TailscaleGX adds a new menu to PageSettingsGeneral. So I'm not sure option 2 is the right solution.


I'd thought about the idea of having GitHub recompile the executables but this would require knowledge of GutHub and many people using GuiMods and my other packages need an automatic solution. SetupHelper allows unskilled users to install/uninstall packages with little knowledge of what's going on under the hood.

For single packages or even a collection authored by the same person could include precompiled GUI executables that include the mods. Maintaining these with changes to the package and for multiple versions of Venus OS get pretty complicated and require significant storage. Maybe just the latest Venus OS would be supported in this case.

Any precompliling solution gets complicated when combining packages from several authors. All the modified GUI files would need to be collected for each package then that collection checked into GitHub for compiling. Maybe this is simpler than I'm thinking it is?

0 Likes 0 Ā·
mvader (Victron Energy) avatar image mvader (Victron Energy) ā™¦ā™¦ Kevin Windrem commented Ā·

Hi both, thank you for the feedback!

> TailscaleGX adds a new menu to PageSettingsGeneral

such mods will be possible

> Most of my mods DO change existing pages, for example to add items to an existing menu, or to change one or two items within the menu

do you have more examples? I'm actually getting quite enthusiastic about option 2.

0 Likes 0 Ā·
Kevin Windrem avatar image Kevin Windrem mvader (Victron Energy) ā™¦ā™¦ commented Ā·

SetupHelper adds a new menu to PageSettings.qml

GuiMods adds a digital input type to PageDigitalInputs.qml and MbItemDigitalInput.qml

GuiMods adds additional relays as well as custom names to PageSettingsRelays. This may be handled by changes Victron has planned.

GuiMods makes lots of changes to PageSettingsDisplay.qml to add the GuiMods menus but these will probably go away unless I need to make a GuiModsForGuiV2.

There are many other changes related to GuiMods but most won't be migrated to gui-v2 unless I get a huge amount of interest to modify the gui-v2 pages.

0 Likes 0 Ā·
mvader (Victron Energy) avatar image mvader (Victron Energy) ā™¦ā™¦ Kevin Windrem commented Ā·

Hey Kevin, thanks for the reply, that helps to make it more tangible.

> SetupHelper adds a new menu to PageSettings.qml

Adding new menus would be possible in the "app" solution.


> GuiMods adds a digital input type to PageDigitalInputs.qml and MbItemDigitalInput.qml

Can you remind me what type of input that is?


> GuiMods adds additional relays as well as custom names to PageSettingsRelays. This may be handled by changes Victron has planned.

yes, will most likely be handled.


0 Likes 0 Ā·
Kevin Windrem avatar image Kevin Windrem mvader (Victron Energy) ā™¦ā™¦ commented Ā·
GuiMods adds a digital input for external transfer switch.

GuiMods uses the "generator" digital input to inform the rest of the system that the generator is running. A change updates the manual start state so that if the generator is started from some external source, the GX device will also reflect that the generator is running. The logic is more complicated and includes the state of a run from an automatic condition.

The external transfer switch digital input switches the AC input type, AC input current limit and a few other parameters. This allows the same input to be used for shore power and generator and system behaves like the Multi has two AC inputs like Quattro.

0 Likes 0 Ā·
mr-manuel avatar image mr-manuel Kevin Windrem commented Ā·

@Kevin Windrem if you can add new items at the end of every page and hide existing items of the GUIv2 "core" would that solve all your concerns?

What if with option 2 you can use templates without writing the whole QML code, but using only a JSON settings file? This would it make much easier to maintain for the plugin developer.

Example:

{
    "add": {
        "settings/display-and-language": [
            {
                "title": "CustomSwitch",
                "type": "switch",
                "dbus-path": "com.victronenergy.settings/Custom/Path/Switch"
            },
            {
                "title": "CustomInput",
                "type": "textbox",
                "dbus-path": "com.victronenergy.settings/Custom/Path/Text"
            },
            {
                "title": "CustomSelect",
                "type": "select",
                "dbus-path": "com.victronenergy.settings/Custom/Path/Select",
                "options": [
                    {
                        "value": "1",
                        "text": "Option 1"
                    },
                    {
                        "value": "2",
                        "text": "Option 2"
                    }
                ]
            },
            {
                "title": "CustomPage",
                "type": "page",
                "content": [
                    {
                        "title": "CustomSwitch",
                        "type": "switch",
                        "dbus-path": "com.victronenergy.settings/Custom/Path/Switch"
                    }
                ]
            },
            {
                "title": "CustomPage",
                "type": "page",
                "qml": "path-to-qml-file.qml"  // requires more maintenance of the plugin developer
            }
        ]
    },
    "remove": [
        "settings/relay/relay-1-on",
        "settings/some-other-item-or-page"
    ]
}
0 Likes 0 Ā·
Kevin Windrem avatar image Kevin Windrem mr-manuel commented Ā·
Adding new items at the end isn't the best approach but an acceptable compromise.

The relay pages have significant changes that might not work with that approach but might work by replacing the call to the page from it's parent to a new "enhanced" page.

I'm assuming that we'd be able to add new pages and these would not have limitations. Yes?/no?

0 Likes 0 Ā·
mvader (Victron Energy) avatar image mvader (Victron Energy) ā™¦ā™¦ Kevin Windrem commented Ā·
Its a bit early to be super definitive in answering that, but yes.


New page just means you can code anything you want in qml in that new page.

0 Likes 0 Ā·
iainsommerville avatar image iainsommerville mvader (Victron Energy) ā™¦ā™¦ commented Ā·
This all looks good to us. We use a similar customization mechanism to Kevin (though not as elegant or flexible) to install and re-install our customizations for GUI v1. An entry is inserted at the end of PageSettings.qml for our custom parameter page and we replace the long suffering OverviewTiles.qml with our boat display.


We don't need to remove any existing parameters so the JSON file mechanism is fine with us.

btw it would be nice if gui v2 allowed the distance units to be set (for GPS speed), ie km/miles/nm to save us adding that parameter.

Thanks for taking so much interest in allowing the customization options.

0 Likes 0 Ā·
Anders avatar image
Anders answered Ā·

I have currently gone back to the regular release software to try to stabilize Node Red - Not really successfully but I haven't given up - so I could be I am asking for something already there

My Node red stability issue lead me to request to display CPU and Memory usage to help understand if the Venus OS device is operating healthy

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.

derrick thomas avatar image derrick thomas commented Ā·

You can log in to SSH and use top

0 Likes 0 Ā·
bowpay avatar image
bowpay answered Ā·

I really wish that you would look into Maui Blazor (Web Assembly) or Blazor Hybrid. Or at least offer an API/sdk and let the community decide the direction. Every integration I have done has some sort of .net SDK (Zebra, Impinj, Intermec). Also multiple screens should be a requirement for v2.

2 |3000

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

ace-ventura avatar image
ace-ventura answered Ā·

For GUI-v2, please, please allow two battery banks (via 2 x Victron smart shunts ve.direct) to be displayed on the main screen, as icons coming from the charger (inverter). Many of us have more than one house bank.

2 |3000

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

gluteusmaxus avatar image
gluteusmaxus answered Ā·

A Web browser page would be useful to access node-red dashboard and other controllers.

2 |3000

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

Related Resources

Victron Venus OS Open Source intro page

Venus OS GitHub (please do not post to this)

Additional resources still need to be added for this topic