-
Notifications
You must be signed in to change notification settings - Fork 117
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New GUI #401
Comments
If you like the React way, Preact is a good candidate with a light footprint. |
I like it, but that is a question for @chris1howell |
On the framework front, I am not too fussed. I do want something that is mobile/adaptive focussed as that is the primary use case short of doing a native app (#237) |
Seems Svelte should be the best fitted for booth world then, now Svelte-Native starts to be mature enough, should be easy to tweak a mobile app from it. For the layout, mostly all modern CSS framework now are mobile/responsive oriented, so it's a matter of taste, and depend of the requiered design. Best with minimal footprint. |
I have started to play with Svelte.js, using Bulma as css framework. It could be a good opportunity to start rethinking the UX. While copy/pasting old UI , I feel some actual choices could be improved:
|
That is excellent. Generally I would say let's get something basic done on a branch and we can try a few things to see how they work.
Yes, this is a layer on top of the claims, is a higher priority, integrates with the front panel button, etc.
With the way it works there are some edge cases where just start/stop become challenges. Mostly around the state changing while the override is active, eg you have a timer set and the EVSE is sleeping waiting for the start, you activate the override starting the charge and later while the override is still active the timer start time passes. Now if the override is cleared, the actual charge state will not change, so obviously if it was labelled stop that would be wrong. This is not to say that I object to changing to a simple start/stop just that there are lots of edge cases that need considering, this is also another very good reason to keep the manual override module so this logic can be implemented on the ESP and shared with the front panel button, what probably needs doing is the state needs monitoring the the override gets automatically cleared if another module changes the state to match the manual override.
This sounds like a good idea
Sounds good, generally the stuff that is shown by default, minus any settings as described above should give you a nice clean status page.
In principle the logs should be ok for charts. All the data is exposed as JSON objects so you shouldn't have to parse text or anything like that. We may want to add some APIs to better search/filter the logs. |
@jeremypoulter I've pushed the templates here if you want to give a look to the svelte dev environment. https://github.com/KipK/openevse-gui-v2 Don't bother on the logo, it's temporary, but old one will really needs some makeup. ^^ |
It may very well do, the scheduler has not been well tested outside of the basic use case (one on, one off, repeated every day) but was designed to allow for many timers and they can repeat on different days. What you are not showing there is the days on which those timers repeat. That would for example be ok if the timer was active on Monday at 00:00 and disabled at 00:00 on Tuesday. That being said the API should probably reject any clashing times. FYI the end goal is something like #6 |
Demo build is automatically deployed here if you want to try: https://kipk.github.io/openevse-gui-v2/ Days are displayed by rolling over the calendar icon. |
Best way to simplify this would be to have start day/time - end day/time on the same timer instead of separate ones and prevent overflown ones either on gui or evse-wifi. |
Looking good! I've just tried to load the demo build, but I get an error: |
The backend system was designed to handle more than just on/off so you could do things like set different pilot levels at different times of the day, eg so you can have a lower charge rate at peek times if you didn't want to completely disable the charge. So in that case there are not strict on/off pairs. |
Wops, sorry didn't mean to close this |
Yes I was working on implementing a fake backend now it connects to evse api. Should be good now. |
There is already a Node JS version of OpenEVSE, https://github.com/OpenEVSE/openevse_wifi_server, that can act as a simulator, although that has not need updated in a while so missing a lot of the v4 stuff. Also you should be able to generate a mock server from the API spec or use the one StopLight provide |
Actually it's just some dummy promised functions loading local data. In dev env mode there's a proxy to the openevse server like for the current gui. |
Sounds like great work and looking good too, really starting to take shape. |
I just found this issue, have not been here in awhile. https://kipk.github.io/openevse-gui-v2/ gets stuck on "Loading Status", so I cannot see your work so far. If I were to redesign the GUI, I would like to see three options arranged as ON, AUTO, OFF, with the options under AUTO that are and are not "enabled", and what the amp limit that each auto feature would be trying to guide the output to right now (i.e. "why are the amps what they are"?). Enabled, active, etc could be communicated with icons and/or colors to help non-English speakers. Drag and drop to rearrange limiter items, remove and edit buttons or links per item. The terms "Sleeping", "override", etc are all done away with, as one would simply schedule 0 or temporary limit to 0 amps for sleeping, which would be shown in this display that way. O OFF (no pilot / current offered to EVSE even if plugged in) Hope this is clear enough what my idea is suggesting. I can sketch it up more if need be. Thanks, looking forward to seeing the next gen GUI. |
https://kipk.github.io/openevse-gui-v2/ Loaded for me this morning. First commentary is something on this demo site pushes both my laptop and phone to high CPU utilization. Using Vivaldi browser (Chrome derivative) on both. I can troubleshoot whenever we are far enough out of "demo" and into "development" on this to be worth it. The demo has a pretty appealing look to my eye, all of the controls seem to work using a mouse, a keyboard only, and on phone touchscreen. The "current limiter" slider does not seem to highlight well / obviously when tabbing to focus it, but other than that accessibility looks reasonable to me. Minor typo on the schedule settings modal, between "Wed" and "Fri" comes "Thu", not "Thi" . Other than the CPU utilization, I would be perfectly happy for the UI to be built in the framework of the demo. Let me know what you all think of my controls concept in my previous post. Thanks.
|
@fhteagle It's only a beginning of tryouts integration, depending of when you've tryied the "demo", there could have some wip changes messing it out. I was also thinking of 3 states button for manual, it's what I use already for my mqtt based widgets controlling the Evse and it's quiet clear. Auto: no state override I've added it to the demo. |
@KipK - Yeah no worries on the CPU usage, we can work on troubleshooting if high usage still exists after prototyping mockup phases are done. I like the 3 buttons added to the demo. Some ideas:
|
Time Limit | Charge limit can be set when forced to ON , it will stop the charge when time limit | charge limit expire but keep the evse state Active for another session. |
Some answers to @KipK questions and ideas in his last comment: " Agreed, but what would be Auto mode when there's no timers then ? " From "Following your way..." to "Does it cover..." , are you describing a software web GUI emulation of the hardware button? "Don't we also need to have permanent Limits on configuration side ?" The mobile UI would have fewer columns and more vertical scrolling, but would still show all the same information and options as the desktop version of the page, right? A more compact arrangement makes sense to me, having information, options, features that are only available on desktop mode / over a certain pixel width of screen does NOT make sense to me. Plugshare's trip planner web page is set up this way, and it makes it unusable on both portrait orientation (due to script lockout) and landscape (UI elements too tall to be displayed correctly) on my mobile. Having to get a laptop to configure the OpenEVSE seems like hassle we would like to avoid to me. |
Third thought: Should the max amperage safety limit configuration be locked by password, a pin, a warning, a EULA, something like that? There is an administrator username and password option in V4.1.4, which locks all GUI operations. But I am thinking of the use case of hotel employees, airbnb guests, etc, where an untrained and unprivileged user should be allowed to put the unit into ON mode at the very least, but should not be allowed to change "installation configuration", such as boot up defaults, max amperage safety limits, etc. I am not sure what the right balance of security vs hassle is for the two levels of privilege. I am just thinking out loud while the whole GUI is being re-thought out. |
Yeah, I plan for later to let access to configuration with authentication only. By limits I was talking about the time/charge limit as it was the context. About the UI button I'm talking of the user experience to plan then. I kinda like it btw. The max current displayed on my demo is just a claim that don't override the overall limits of the config ( max_current_soft and shaper ) , it allows for the current charge to set a lower max_current, but not higher. I repost the wip Demo link here: I 'd like to make configurable the data you want to display and position. Undone yet. You just have to get the repo, |
@KipK , @jeremypoulter - I am thinking of a list of tasks (aka unskilled user manually run unit tests), that the new GUI should be able to accomplish. Like use case scenarios that would require a realistic series of do something, until this, then that goals. Example : User arrives, wants 5kWh dispensed right now (to bring the battery off of dangerously low SOC), then resume previously configured solar divert. Does such a list already exist? Would it be helpful to generate such a scenario list, task list, etc to test in progress and final GUI against? Thoughts? |
I did start on a test list, not specifically targeted at the UI, I will see if I can dig it out. |
@fhteagle yes having User Stories is a must |
Great, happy to work on adding a few more use case, stories, and associated task tests to the list. @jeremypoulter - did you happen to find your work in progress list? What is the best way to collaboratively author, track, and publish the list? Issue in the queue here? Document in the source code? Wiki page? |
TL;DR / crosspost from #452 , if claim priority is the basis for the programming logic as to what should be the controlling value for amperage offered on pilot signal, then the GUI should arrange the Mode: AUTO line items for each of enabled AUTO functions in descending priority order. Drag and drop might not be the best thing then, so ignore my request/idea for that above. Should claim priority be editable via GUI? |
Further thought: If OpenEVSE keeps a priority value wins logic for claims, then should we use two different vocabulary terms in the GUI? Example:
That makes it far more clear to me, but let me know what you all think as well. |
This doc is mostly focused on the EVSE module functionality, for a half finished project to build a test rig for automatically testing the EVSE module https://docs.google.com/spreadsheets/d/1oeSjhI8OZH8ERV8obR7IN7Mzzzdc4y3Vi_dU9Ph0w5w/edit?usp=sharing and this doc is from when I originally put together the 'design' for the EVSE manager https://docs.google.com/document/d/1BbouYdWmD07ta1kKgMkW86JgcNjxoDtb_hFPSM180JU/edit?usp=sharing
I would like to start working towards something that can be automated, so using a tool like Cucumber would be good, but a document on the Wiki would also work |
@KipK - I did clone your openevse-gui-v2 repo just to try some things out. It will load if I set VITE_OPENEVSEHOST to my actual OpenEVSE IP, but I am not willing to do dev against a hardware unit that is actually in use. If I set that env variable to any other value, it gets stuck on the "Loading Schedule" splash screen step. Is there already a good guide I can follow for setting up a dummy API server? I looked around for a bit for such a thing but did not stumble upon it (I blame lack of coffee yet this morning lol). I looked at the docs and issues you linked. First Google doc is way above my pay grade, but I definitely liked the flow chart at the right. Second Google doc is much closer to what I am contemplating. Thinking about it a bit more, I think three separate Wiki pages at descending levels of abstraction would be useful:
Thoughts? I am not sure I can help you achieve your automated testing goal, beyond my skill set at the moment. But the first two lists I can help edit for awhile if that makes sense and would be useful to you all. |
@fhteagle , I'm testing on my live unit too. Anyway that's just a gui there's no risk of messing up. |
It would also be good to implement the current API in the Node JS version, that should provid a bit better backend for development @fhteagle Yeah that would work, lets create a new ticket for that as not specifically related to the new GUI |
So I've finished the WiFi & time settings part. I've encountered a bug with /settime as referenced here: #467 Tell me what you think on how it's presented. I've also reworked a bit the whole responsivity. |
Hi guys For those who can't test live;, here is a video of the WIP UI working live on Desktop. |
Also mobile version here: |
Tracking some issues here with actual development, code, useability, clarity here as well: |
Hey so I've made lot of improvment on UI2, but it needs my Forget about the demo page, there's too many change to make it works on the github page. It uses a lot the /claims/target endpoint, and will display on the status bar the current controlling service It doesn't show yet the Divert data, still wondering where & how to display this Another thing, we're back to /override endpoint instead of /claim . |
Great to see all the work and comms on your repo. Interesting that you see issues with multiple requests, not sure we have seen that before. |
This is difficult to spot as it reboot fast most of the time and you don't notice it. |
btw, I've changed something that makes the whole Auto thing more clear for end user. Now, we know that Auto is not for scheduler only but any service that can control EVSE state |
This all looks exciting and I'd be keen to be some kind of beta tester if that would help? |
the new User Interface is mostly ready now and is ready for testing there: Before final integration in the firmware, there's some issues that needs to be solved first on the current firmware 1 - #414 : as scheduler crash the firmware if there's only one timer, UI can't be released before this is solved. @jeremypoulter can we priorize those issues and timeframe them ? |
@KipK any chance of dark modes via css? I was playing around with them for the current UI. However, if there is a real / viable new UI in progress it feels like wasted effort. Reading for anyone not familiar with dark mode sites: https://css-tricks.com/dark-modes-with-css/ |
It should be possible to use darkmode I use bulma css frameworj that should handle it. |
The existing GUI has served us well but it is becoming harder to maintain. We should start again from scratch, building with a modern framework.
The text was updated successfully, but these errors were encountered: