From ef096a236f12d8523f12c37c0dcb6992c6eacc5d Mon Sep 17 00:00:00 2001 From: andig Date: Sun, 23 Nov 2025 10:49:39 +0100 Subject: [PATCH] HomeAssistant: add auto-discovery (#25141) --- api/globalconfig/types.go | 8 +- assets/css/app.css | 30 +++++++ .../Config/DeviceModal/DeviceModalBase.vue | 38 ++++++++- .../Config/DeviceModal/index.test.ts | 54 +++++++++++++ .../js/components/Config/DeviceModal/index.ts | 71 ++++++++++++++++ assets/js/components/Config/PropertyEntry.vue | 2 + assets/js/components/Config/PropertyField.vue | 52 +++++++++--- assets/js/utils/placeholder.test.ts | 26 ++++++ assets/js/utils/placeholder.ts | 20 +++++ charger/homeassistant-switch.go | 15 ++-- charger/homeassistant.go | 11 ++- cmd/root.go | 7 ++ meter/homeassistant.go | 8 +- package-lock.json | 2 +- package.json | 2 +- push/hub.go | 10 +-- server/http.go | 4 + server/network/registry.go | 33 ++++++++ server/service/registry.go | 36 +++++++++ .../charger/homeassistant-switch.yaml | 26 +++--- templates/definition/meter/homeassistant.yaml | 32 +++++--- .../definition/vehicle/homeassistant.yaml | 41 +++++----- util/homeassistant/connection.go | 42 +++++----- util/homeassistant/instance.go | 23 ++++++ util/homeassistant/oauth2.go | 54 +++++++++++++ util/homeassistant/proxy.go | 44 ++++++++++ util/homeassistant/service.go | 81 +++++++++++++++++++ util/homeassistant/types.go | 11 +++ util/homeassistant/zeroconf.go | 73 +++++++++++++++++ util/templates/types.go | 1 + vehicle/homeassistant.go | 26 +++--- 31 files changed, 764 insertions(+), 119 deletions(-) create mode 100644 assets/js/components/Config/DeviceModal/index.test.ts create mode 100644 assets/js/utils/placeholder.test.ts create mode 100644 assets/js/utils/placeholder.ts create mode 100644 server/network/registry.go create mode 100644 server/service/registry.go create mode 100644 util/homeassistant/instance.go create mode 100644 util/homeassistant/oauth2.go create mode 100644 util/homeassistant/proxy.go create mode 100644 util/homeassistant/service.go create mode 100644 util/homeassistant/types.go create mode 100644 util/homeassistant/zeroconf.go diff --git a/api/globalconfig/types.go b/api/globalconfig/types.go index 81f230bcc..e45ea26b3 100644 --- a/api/globalconfig/types.go +++ b/api/globalconfig/types.go @@ -11,7 +11,6 @@ import ( "github.com/evcc-io/evcc/api" "github.com/evcc-io/evcc/hems/shm" "github.com/evcc-io/evcc/plugin/mqtt" - "github.com/evcc-io/evcc/push" "github.com/evcc-io/evcc/server/eebus" "github.com/evcc-io/evcc/util" "github.com/evcc-io/evcc/util/config" @@ -137,10 +136,15 @@ type DB struct { } type Messaging struct { - Events map[string]push.EventTemplateConfig + Events map[string]MessagingEventTemplate Services []config.Typed } +// MessagingEventTemplate is the push message configuration for an event +type MessagingEventTemplate struct { + Title, Msg string +} + func (c Messaging) Configured() bool { return len(c.Services) > 0 || len(c.Events) > 0 } diff --git a/assets/css/app.css b/assets/css/app.css index fa1d2ed02..510d802aa 100644 --- a/assets/css/app.css +++ b/assets/css/app.css @@ -584,6 +584,36 @@ input[type="time"]::-webkit-calendar-picker-indicator { display: none; } +input[list]::-webkit-list-button { + display: none !important; + appearance: none !important; +} + +.form-control-clear { + position: absolute; + right: 0.75rem; + top: 0; + bottom: 0; + justify-content: center; + display: flex; + align-items: center; + justify-self: center; + width: 1.1rem; + font-size: 1.5rem; + font-weight: normal; + color: var(--evcc-default-text); + border: none; + background-color: transparent; + padding: 0; + margin: 0; + cursor: pointer; +} + +/* hide dropdown arrow if clear is visible */ +.form-select.has-clear-button { + background-image: none; +} + .table { --bs-table-bg: transparent; } diff --git a/assets/js/components/Config/DeviceModal/DeviceModalBase.vue b/assets/js/components/Config/DeviceModal/DeviceModalBase.vue index 2f216e07d..b094d016b 100644 --- a/assets/js/components/Config/DeviceModal/DeviceModalBase.vue +++ b/assets/js/components/Config/DeviceModal/DeviceModalBase.vue @@ -52,6 +52,7 @@ :key="param.Name" v-bind="param" v-model="values[param.Name]" + :service-values="serviceValues[param.Name]" />

{{ authError }}

@@ -109,6 +110,7 @@ :key="param.Name" v-bind="param" v-model="values[param.Name]" + :service-values="serviceValues[param.Name]" /> @@ -119,6 +121,7 @@ :key="param.Name" v-bind="param" v-model="values[param.Name]" + :service-values="serviceValues[param.Name]" />