Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Config UI: add missing config sections / partial yaml inputs (BC) #13319

Merged
merged 187 commits into from
Jun 8, 2024

Conversation

naltatis
Copy link
Member

@naltatis naltatis commented Apr 6, 2024

Replaces #11739

Goal

  • 🐭 make smaller config chunks (tariff, messages, mqtt, ...) editable via UI instead of complete evcc.yaml.
  • πŸš΄β€β™€οΈ create UI and API (endpoints, persistance and initialization) for all missing config areas in a fast and pragmatic way.

Later steps (seperate PRs)

  • 🎩 Improve UX where necessary (tariff template UI Add tariffs configurationΒ #10042, ...)
  • πŸ“Ÿ Allow yaml-snippets as an alternative UI config option for vehicles, meters, chargers (e.g. to allow plugins)

BC

  • all /api/state durations are now in seconds instead of nanoseconds

Todos

Out of scope:

  • move dirty api to web socket
  • move site meters to global config, identified by type (grid, pv, battery, aux)
  • show/update meter configuration when device fails during startup
  • allow saving broken devices (RCT)

β†’ moved out-of-scope tasks to epic #6029

@naltatis naltatis added enhancement New feature or request ux User experience/ interface labels Apr 6, 2024
server/http.go Outdated Show resolved Hide resolved
@naltatis naltatis changed the title Config UI: partial yaml inputs Config UI: add missing config sections / partial yaml inputs Apr 7, 2024
@andig
Copy link
Member

andig commented Apr 8, 2024

@naltatis ich brauche mal eine Idee. ModbusProxy ist eine Liste. Wie wollen wir hier mit Updates umgehen:

  • per Element (ΓΌber Index? ΓΌber Port?) (json je Element)
  • ganze Liste am StΓΌck (json)?
  • andere Ideen?
    WΓ€re super einen Ansatz zu finden, der auch mit anderen Integrationen, z.B. den Push Service funktionieren kann.

Meine Tendenz wΓ€re per Element ΓΌber numerischen Index. Passt das?

@naltatis
Copy link
Member Author

naltatis commented Apr 8, 2024

@andig Im ersten Schritt (dieser PR) würde ich dir nur einen Yaml Block geben und keine Rücksicht auf die innere Struktur nehmen. Heißt, ein Update hat immer ein komplettes Neu-initialisieren zur Folge. Nichts auf Item-Ebene. Gleiches gilt für Messaging. Da ist die Struktur ja noch komplizierter, weil Messages und Services (Liste).

Das ist natΓΌrlich nicht schΓΆn und wir mΓΌssen das frΓΌher oder spΓ€ter sauber als Struktur/Liste ausmodellieren. Aber ich sehe das hier erstmal als einen pragmatischen Zwischenschritt.

@andig
Copy link
Member

andig commented Apr 8, 2024

Passt, das ist hΓ€sslich aber einfach.

@andig andig mentioned this pull request Apr 12, 2024
21 tasks
@andig
Copy link
Member

andig commented Apr 12, 2024

@naltatis die existierenden Site APIs, z.B: buffersoc haben alle keine Getter. Brauchen wir trotzdem GETAPIs fΓΌr die unstrukturierten Werte wie interval? Das erscheint inkonsistent.
Ebenso nutzen die existierenden "einfachen" Handler POST statt PUT. Wir sollten es konsistent machen, nach MΓΆglichkeit mit wenigen Γ„nderungen.

Vorschlag:

  • alles POST (solange wir nicht PUT/POST fΓΌr Einzelteile differenzieren)
  • GET ersetzen wir durch die Daten in /api/state (um das Coding zu vereinfachen fΓ€nde ich es im UI auch sinnvoll die dafΓΌr ΓΌber die Hierarchie einzusammeln statt einzeln zum durchreichen zu deklarieren, aber das ist nur ein "SchΓΆnheitsthema").
  • bei POST wird sofort die YAML Struktur ΓΌberprΓΌft, das erspart Überraschungen beim Neustart.

Wenn das passt mΓΌssen wir noch die Settings initial migrieren und dann nur noch aus der DB lesen.

@andig andig added the prio Priority label Apr 14, 2024
@andig andig changed the title Config UI: add missing config sections / partial yaml inputs Config UI: add missing config sections / partial yaml inputs (BC) Apr 14, 2024
@naltatis
Copy link
Member Author

naltatis commented Jun 5, 2024

@andig die --reset Γ„nderung funktioniert bei mir noch nicht. Ich bekomme folgendes:

go run main.go --config cmd/demo.yaml migrate --reset

[main  ] INFO 2024/06/05 09:09:10 evcc 0.0.0
[main  ] INFO 2024/06/05 09:09:10 using config file: cmd/demo.yaml
[db    ] INFO 2024/06/05 09:09:10 using sqlite database: /Users/michael/.evcc/evcc.db
[main  ] WARN 2024/06/05 09:09:10 resetting:
[main  ] DEBUG 2024/06/05 09:09:10 - global settings
panic: runtime error: slice bounds out of range [15:1:]

goroutine 1 [running]:
slices.Delete[...](...)
	/opt/homebrew/Cellar/go/1.22.1/libexec/src/slices/slices.go:219
github.com/evcc-io/evcc/server/db/settings.Delete({0x102b30b09, 0x8})
	/Users/michael/lab/evcc/server/db/settings/setting.go:81 +0x324
github.com/evcc-io/evcc/cmd.runMigrate(0x1067a3900, {0x14000a8bdd0?, 0x4?, 0x102b207e9?})
	/Users/michael/lab/evcc/cmd/migrate.go:44 +0x1f0
github.com/spf13/cobra.(*Command).execute(0x1067a3900, {0x1400112f780, 0x3, 0x4})
	/Users/michael/go/pkg/mod/github.com/spf13/cobra@v1.8.0/command.go:987 +0x828
github.com/spf13/cobra.(*Command).ExecuteC(0x1067a52e0)
	/Users/michael/go/pkg/mod/github.com/spf13/cobra@v1.8.0/command.go:1115 +0x344
github.com/spf13/cobra.(*Command).Execute(...)
	/Users/michael/go/pkg/mod/github.com/spf13/cobra@v1.8.0/command.go:1039
github.com/evcc-io/evcc/cmd.Execute()
	/Users/michael/lab/evcc/cmd/root.go:103 +0x24
main.main()
	/Users/michael/lab/evcc/main.go:44 +0x38
exit status 2

Korrektur: Sie funktioniert, wenn es nichts zu lΓΆschen gibt, aber das ist ja nicht der Anwendungsfall hier. πŸ˜„

@naltatis
Copy link
Member Author

naltatis commented Jun 5, 2024

Ich hab dirty via Websocket mal auf "later" verschoben. Das ist ein Thema was wir schΓΆn isoliert angehen kΓΆnnen und der jetzige Stand funktioniert ja.

@naltatis
Copy link
Member Author

naltatis commented Jun 7, 2024

"Startup Error" Nachrichtauf Hauptscreen + Red Badge in Navigation

Bildschirmfoto 2024-06-07 um 09 45 19

@naltatis
Copy link
Member Author

naltatis commented Jun 7, 2024

@andig meine Todoliste hier ist jetzt leer. Wenn die Fehler aus dem Migrationscommand behoben sind kΓΆnnen wir den mMn. reinnehmen.

@andig
Copy link
Member

andig commented Jun 7, 2024

Panic auch behoben. Man muss es halt auch richtig machen :) Wir kΓΆnnten das jetzt als :testing Docker releasen?

@naltatis
Copy link
Member Author

naltatis commented Jun 7, 2024

... oder mutig zu nem Nightly machen. Wir haben die Γ„nderungen ja so umgebaut, dass eigentlich nichts Breaking sein sollt

@naltatis
Copy link
Member Author

naltatis commented Jun 7, 2024

Panic auch behoben.

Confirm. LΓΆschen klappt jetzt wie erwartet.

@andig andig marked this pull request as ready for review June 8, 2024 12:32
@andig andig merged commit 554ce1d into master Jun 8, 2024
8 checks passed
@andig andig deleted the feature/config_partial_yaml branch June 8, 2024 12:35
@naltatis
Copy link
Member Author

naltatis commented Jun 8, 2024

🎊

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request prio Priority ux User experience/ interface
Projects
Status: No status
Development

Successfully merging this pull request may close these issues.

None yet

8 participants