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

UI Config: add aux meters, improve reference handling #19939

Merged
merged 12 commits into from
Mar 23, 2025

Conversation

naltatis
Copy link
Member

@naltatis naltatis commented Mar 19, 2025

fixes #19889

@andig I've added a failing test case for #19889. It UI-creates a shelly device talking to a simulator. Simulator is stopped and evcc restarted. Expectation is, that evcc starts (maybe in fatal mode) but the shelly should be visible and deletable. Currently the broken meter isn't shown at all.

Todos:

  • allow broken site to be updated @andig
  • cleanup references when deleting meters @andig
  • add ext/aux meters @andig
  • add aux meters to ui @naltatis
  • add aux e2e tests @naltatis
  • broken meter should show in config ui (example unplugged shelly) @naltatis
  • ensure site meter refs are cleaned up in fatal mode
  • fix broken GET /config/site endpoint in fatal @andig
Bildschirmfoto 2025-03-23 um 12 44 38 Bildschirmfoto 2025-03-23 um 12 42 17 Bildschirmfoto 2025-03-23 um 12 45 11 Bildschirmfoto 2025-03-23 um 12 43 05

Out of scope

  • add ext meters to ui

Sorry, something went wrong.

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
@naltatis naltatis added the experimental Experimental feature label Mar 19, 2025
@andig andig force-pushed the feature/ui_config_broken_meter branch from 612f433 to 4569aa3 Compare March 21, 2025 08:38
@andig
Copy link
Member

andig commented Mar 21, 2025

@naltatis schau mal bitte ob dir Schritt eins schon hilft.

andig added 2 commits March 21, 2025 09:58
@naltatis naltatis changed the title UI Config: make broken meters deletable UI Config: add ext/aux meters, improve reference handling Mar 21, 2025
@naltatis
Copy link
Member Author

@andig warum würdest du aux meter in-scope und ext meter out-of-scope sehen?

Bei aux/ext meter haben wir keine Usage-Begrenzung, richtig? Heißt wir bieten hier jedes Meter an und der Nutzer muss zusätzlich eine Usage auswählen.

@andig
Copy link
Member

andig commented Mar 21, 2025

Aux ist für die Funktionalität wichtig, ext generiert einfach nur Messwerte für externe Zwecke. Und die APIs wären jetzt da. ist aber kein absolutes Muss.

Heißt wir bieten hier jedes Meter an und der Nutzer muss zusätzlich eine Usage auswählen.

Denke ja.

  • Ext: denke ja
  • Aux: gibt es ein paar. Darüber hinaus sollte egtl (tm) jeden Zähler möglich sein. Keine Ahnung wie wir das abfangen (@premultiply ?)

@premultiply
Copy link
Member

Ggf. müssen wir dazu nochmal das aktuelle Usage-Modell modifizieren/erweitern.
Hier passt momentan bei ext/aux-Metern eigentlich nur das charge-Modell (wenn im Template implementiert).

@andig
Copy link
Member

andig commented Mar 21, 2025

Wir könnten für aux alles erlauben was aux, grid, charge hat. Echte "fertig" konfigurierte Geräte gibts nur mit aux, z.B. für die Thors.

@naltatis
Copy link
Member Author

Wir können auch erst einmal nur mit den expliziten "aux" Geräten anfangen und die Templates bei Bedarf entsprechend erweitern. Das hier sind die aktuellen Templates die dann verfügbar wären.

Bildschirmfoto 2025-03-22 um 15 53 58

Gibt bei ext einen Grund nicht alle verfügbaren meter (usage egal) anzubieten? Nutzer muss natürlich die Usage angeben.

@naltatis
Copy link
Member Author

@andig der aktuelle Stand führt beim Starten mit einem kaputten Meter (hier Shelly) zu dem hier:

[main  ] FATAL 2025/03/22 16:02:20 meter [db:3] cannot create meter 'db:3': cannot create meter type 'template': cannot create meter type 'shelly': Get "http://localhost:7072/shelly": dial tcp [::1]:7072: connect: connection refused
[main  ] FATAL 2025/03/22 16:02:20 will attempt restart in: 15m0s
[server] ERROR 2025/03/22 16:02:21 http: panic serving [::1]:49893: runtime error: invalid memory address or nil pointer dereference
goroutine 100 [running]:
net/http.(*conn).serve.func1()
	/opt/homebrew/Cellar/go/1.24.0/libexec/src/net/http/server.go:1947 +0xb0
panic({0x107bb5520?, 0x10a71b260?})
	/opt/homebrew/Cellar/go/1.24.0/libexec/src/runtime/panic.go:787 +0x124
github.com/evcc-io/evcc/core.(*Site).GetTitle(0x1400160cc60?)
	/Users/michael/lab/evcc/core/site_api.go:40 +0x24
github.com/evcc-io/evcc/server.(*HTTPd).RegisterSystemHandler.siteHandler.func26({0x10816eec0, 0x140016804e0}, 0x40?)
	/Users/michael/lab/evcc/server/http_config_site_handler.go:19 +0x3c
net/http.HandlerFunc.ServeHTTP(0x1400080d400?, {0x10816eec0?, 0x140016804e0?}, 0x1?)
	/opt/homebrew/Cellar/go/1.24.0/libexec/src/net/http/server.go:2294 +0x38
github.com/evcc-io/evcc/server.(*HTTPd).RegisterSystemHandler.ensureAuthHandler.func17.1({0x10816eec0, 0x140016804e0}, 0x1400080d400)
	/Users/michael/lab/evcc/server/http_auth.go:151 +0xa0
net/http.HandlerFunc.ServeHTTP(0x1400160cae0?, {0x10816eec0?, 0x140016804e0?}, 0x12?)
	/opt/homebrew/Cellar/go/1.24.0/libexec/src/net/http/server.go:2294 +0x38
github.com/gorilla/handlers.(*cors).ServeHTTP(0x14001610870, {0x10816eec0, 0x140016804e0}, 0x1400080d400)
	/Users/michael/go/pkg/mod/github.com/gorilla/[email protected]/cors.go:54 +0x2d0
github.com/gorilla/handlers.CompressHandler.CompressHandlerLevel.func1({0x1081694d8, 0x140009fb340}, 0x1400080d400)
	/Users/michael/go/pkg/mod/github.com/gorilla/[email protected]/compress.go:141 +0x4dc
net/http.HandlerFunc.ServeHTTP(0x107e32260?, {0x1081694d8?, 0x140009fb340?}, 0xc?)
	/opt/homebrew/Cellar/go/1.24.0/libexec/src/net/http/server.go:2294 +0x38
github.com/evcc-io/evcc/server.jsonHandler.func1({0x1081694d8, 0x140009fb340}, 0x1400080d400)
	/Users/michael/lab/evcc/server/http_site_handler.go:73 +0xf0
net/http.HandlerFunc.ServeHTTP(0x1400080d2c0?, {0x1081694d8?, 0x140009fb340?}, 0x10a77b720?)
	/opt/homebrew/Cellar/go/1.24.0/libexec/src/net/http/server.go:2294 +0x38
github.com/gorilla/mux.(*Router).ServeHTTP(0x1400055f500, {0x1081694d8, 0x140009fb340}, 0x1400080d180)
	/Users/michael/go/pkg/mod/github.com/gorilla/[email protected]/mux.go:212 +0x194
net/http.serverHandler.ServeHTTP({0x1400160cab0?}, {0x1081694d8?, 0x140009fb340?}, 0x6?)
	/opt/homebrew/Cellar/go/1.24.0/libexec/src/net/http/server.go:3301 +0xbc
net/http.(*conn).serve(0x14001610750, {0x1081718e0, 0x1400160c090})
	/opt/homebrew/Cellar/go/1.24.0/libexec/src/net/http/server.go:2102 +0x52c
created by net/http.(*Server).Serve in goroutine 1
	/opt/homebrew/Cellar/go/1.24.0/libexec/src/net/http/server.go:3454 +0x3d8

@naltatis
Copy link
Member Author

Konkreter: der Stacktrace tritt beim API-Call nach dem Starten auf: GET /api/config/site

@andig
Copy link
Member

andig commented Mar 23, 2025

Wir können auch erst einmal nur mit den expliziten "aux" Geräten anfangen und die Templates bei Bedarf entsprechend erweitern.

Gerne!

@andig
Copy link
Member

andig commented Mar 23, 2025

Der wunderbare nil Check bei Interfaces- sollte jetzt gehen!

@andig andig changed the title UI Config: add ext/aux meters, improve reference handling UI Config: add aux meters, improve reference handling Mar 23, 2025
@naltatis
Copy link
Member Author

added screenshots in description

can go in once I've added e2e tests for this

@andig
Copy link
Member

andig commented Mar 23, 2025

Super gut 👍🏻

@naltatis naltatis marked this pull request as ready for review March 23, 2025 15:07
@naltatis naltatis mentioned this pull request Feb 14, 2025
26 tasks
@andig
Copy link
Member

andig commented Mar 23, 2025

Test ist in master gefixed

@naltatis naltatis merged commit 2ea6c70 into master Mar 23, 2025
6 checks passed
@naltatis naltatis deleted the feature/ui_config_broken_meter branch March 23, 2025 15:36
@ve2k
Copy link

ve2k commented Mar 27, 2025

@naltatis @andig "Aux" ist leider unter Windows ein reservierter/geschützter Dateiname. Daher schlägt ein checkout/clone unter Windows fehl.
p.s.: scheint nur vor Windows 11 ein Problem zu sein. Unter Windows 11 darf man eine Datei mit Namen "Aux.vue" erstellen.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
experimental Experimental feature
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Config UI: handle site references when deleting
4 participants