From ac08a53e0e4cf81026744d07874e8ea60e90b657 Mon Sep 17 00:00:00 2001 From: Michael Geers Date: Fri, 10 Jul 2026 18:40:21 +0200 Subject: [PATCH] Remote Access: user agent and status display fixes (#31667) --- assets/js/components/Config/DeviceTags.vue | 1 + assets/js/components/Config/Remote/RemoteModal.vue | 2 +- assets/js/views/Config.vue | 9 ++++++--- i18n/de.json | 1 + i18n/en.json | 1 + server/remote/tunnel.go | 1 + 6 files changed, 11 insertions(+), 4 deletions(-) diff --git a/assets/js/components/Config/DeviceTags.vue b/assets/js/components/Config/DeviceTags.vue index 40f6b09ba..8038c8de4 100644 --- a/assets/js/components/Config/DeviceTags.vue +++ b/assets/js/components/Config/DeviceTags.vue @@ -243,6 +243,7 @@ export default { case "dimmed": case "curtailed": case "loginBlocked": + case "remoteEnabled": return value ? this.$t("config.deviceValue.yes") : this.$t("config.deviceValue.no"); diff --git a/assets/js/components/Config/Remote/RemoteModal.vue b/assets/js/components/Config/Remote/RemoteModal.vue index e2b29e8d2..e398d667c 100644 --- a/assets/js/components/Config/Remote/RemoteModal.vue +++ b/assets/js/components/Config/Remote/RemoteModal.vue @@ -31,7 +31,7 @@ {{ $t("config.remote.connected") }} - + {{ $t("config.remote.disconnected") }} diff --git a/assets/js/views/Config.vue b/assets/js/views/Config.vue index 31d2be66f..aef6949d1 100644 --- a/assets/js/views/Config.vue +++ b/assets/js/views/Config.vue @@ -868,13 +868,16 @@ export default defineComponent({ return { configured: { value: false } }; } const tags: DeviceTags = { - enabled: { value: remote.config?.enabled }, - connected: { value: remote.status?.connected }, + remoteEnabled: { value: remote.config?.enabled }, + connected: { + value: remote.status?.connected, + error: remote.config?.enabled && !remote.status?.connected, + }, }; if (remote.status?.loginBlocked) { tags["loginBlocked"] = { value: true, error: true }; } - if (remote.status?.connected) { + if (remote.config?.enabled) { const lastSeen = remote.status?.lastSeen; const count = lastSeen ? Object.keys(lastSeen).filter((u) => isRemoteClientActive(lastSeen, u)).length diff --git a/i18n/de.json b/i18n/de.json index 62dca9ae4..174dc711e 100644 --- a/i18n/de.json +++ b/i18n/de.json @@ -235,6 +235,7 @@ "price": "Preis", "productionLimited": "Erzeugung begrenzt", "range": "Reichweite", + "remoteEnabled": "Aktiviert", "returnEnergy": "Energie (rückwärts)", "singlePhase": "Einphasig", "soc": "Ladestand", diff --git a/i18n/en.json b/i18n/en.json index 4a7b4d110..478b6a62f 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -235,6 +235,7 @@ "price": "Price", "productionLimited": "Production limited", "range": "Range", + "remoteEnabled": "Enabled", "returnEnergy": "Energy (reverse)", "singlePhase": "Single phase", "soc": "Charge", diff --git a/server/remote/tunnel.go b/server/remote/tunnel.go index 40945cb38..c452db84e 100644 --- a/server/remote/tunnel.go +++ b/server/remote/tunnel.go @@ -91,6 +91,7 @@ func (t *Tunnel) connect(ctx context.Context) (bool, error) { HTTPHeader: http.Header{ "Authorization": []string{"Bearer " + t.token}, "X-Sponsor-Token": []string{sponsor.Token}, + "User-Agent": []string{"evcc/" + util.FormattedVersion()}, }, }) if err != nil {