OpenEVSE / openevse_esp32_firmware

OpenEVSE V4 WiFi gateway using ESP32
176 stars 117 forks source link

New GUI #401

Closed jeremypoulter closed 1 year ago

jeremypoulter commented 2 years ago

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.

fhteagle commented 2 years ago

@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).

@jeremypoulter -

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.

KipK commented 2 years ago

@fhteagle , I'm testing on my live unit too. Anyway that's just a gui there's no risk of messing up. It's compatible with concurrent commands coming from original gui. You can also replace the files in /stores/ bu the one in /stores-simu , but it will lack of features

jeremypoulter commented 2 years ago

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

KipK commented 2 years ago

So I've finished the WiFi & time settings part.

I've encountered a bug with /settime as referenced here: https://github.com/OpenEVSE/ESP32_WiFi_V4.x/issues/467 But it's already the case with current UI too.

Tell me what you think on how it's presented.

I've also reworked a bit the whole responsivity.

KipK commented 2 years ago

Hi guys

For those who can't test live;, here is a video of the WIP UI working live on Desktop.

https://watch.screencastify.com/v/EP73NnuERNFHosoQAR92

KipK commented 2 years ago

Also mobile version here: https://photos.app.goo.gl/obkFe4wxKtFSMcNUA

fhteagle commented 2 years ago

Tracking some issues here with actual development, code, useability, clarity here as well:

https://github.com/KipK/openevse-gui-v2/issues

KipK commented 2 years ago

Hey

so I've made lot of improvment on UI2, but it needs my "testing" branch for wifi module until the pull requests are merged. Here is a testing build for openevsewifi_v1 if needed:

firmware.zip

Forget about the demo page, there's too many change to make it works on the github page. Just set .env file and 'npm install & npm run dev' to test the UI on http://localhost:5173

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 . I have started to work on a DataManager component, to centralise all the fetch request. I got some problem with concurrent requests crashing the wifi firmware so now every action is queued in the Datamanager queue and will be executed one at a time.

jeremypoulter commented 2 years ago

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.

KipK commented 2 years ago

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. Just spotted it with some HTTP time out , and saw the UI triggered 2 GET and 1 POST few ticks interval. Spacing them solved it, then I've decided to code this async queue engine ( works really good btw, I'll use it for other projects now :) )

KipK commented 2 years ago

btw, I've changed something that makes the whole Auto thing more clear for end user. Scheduler use same Robot icon than other services in the top tag, and Auto button just display this icon too., with tooltip displaying "Let OpenEVSE decide" ( or whatever )

image

Now, we know that Auto is not for scheduler only but any service that can control EVSE state Simple & quiet clear

TommySharpNZ commented 1 year ago

This all looks exciting and I'd be keen to be some kind of beta tester if that would help?

KipK commented 1 year ago

the new User Interface is mostly ready now and is ready for testing there: https://github.com/KipK/openevse-gui-v2/releases/tag/1.0.0-rc2

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. 2 - #467 : /settime endpoint is wrong and can confuse users. 3 - #450 , #452 #481 #388 : Major security issue, OpenEVSE is always starting full amps when switching from disabled to active whatever the claim is. ( This is unrelated to new UI but it's a major issuse that need to be solved asaap ). Apparently this is a bug in OpenEVSE firmware not ESP32, but we could mitigate it on Wifi firmware side. 4 - #502 : OTA: modify Moongoose library to follow 302 HTTP redirects for OTA over github release

@jeremypoulter can we priorize those issues and timeframe them ?

kallisti5 commented 1 year ago

@KipK any chance of dark modes via css? I was playing around with them for the current UI.

openevse_dark_mode

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/

KipK commented 1 year ago

It should be possible to use darkmode I use bulma css frameworj that should handle it. there's a bit of work on the css part