,
+ telemetry: Boolean,
},
computed: {
batteryConfigured() {
@@ -216,6 +217,7 @@ export default defineComponent({
co2Configured: this.tariffCo2 !== undefined,
priceConfigured: this.tariffGrid !== undefined,
currency: this.currency,
+ telemetry: this.telemetry,
},
};
},
diff --git a/assets/js/components/TelemetrySettings.vue b/assets/js/components/TelemetrySettings.vue
index 1888cc37a..ad21a9af3 100644
--- a/assets/js/components/TelemetrySettings.vue
+++ b/assets/js/components/TelemetrySettings.vue
@@ -3,7 +3,7 @@
;
if (e.response) {
this.error = parseMarkdown("**Error:** " + e.response.data.error);
- settings.telemetry = false;
}
}
},
- async update() {
- if (settings.telemetry !== null) {
- return;
- }
- try {
- const response = await api.get("settings/telemetry", {
- validateStatus: () => true,
- });
- if (response.status === 200) {
- settings.telemetry = response.data.result;
- }
- } catch (err) {
- console.error(err);
- }
- },
},
});
diff --git a/assets/js/settings.ts b/assets/js/settings.ts
index 6c4acea6b..22b30eb82 100644
--- a/assets/js/settings.ts
+++ b/assets/js/settings.ts
@@ -58,7 +58,6 @@ function saveArray(key: string) {
}
export interface Settings {
- telemetry: boolean | null; // status is unknown on start
locale: keyof typeof LOCALES | null;
theme: THEME | null;
unit: string;
@@ -78,7 +77,6 @@ export interface Settings {
}
const settings: Settings = reactive({
- telemetry: null,
locale: read(SETTINGS_LOCALE),
theme: read(SETTINGS_THEME),
unit: read(SETTINGS_UNIT),
diff --git a/cmd/root.go b/cmd/root.go
index 625dffea6..ab9379b55 100644
--- a/cmd/root.go
+++ b/cmd/root.go
@@ -189,7 +189,7 @@ func runRoot(cmd *cobra.Command, args []string) {
// setup telemetry
if err == nil {
- telemetry.Create(conf.Plant)
+ telemetry.Create(conf.Plant, valueChan)
if conf.Telemetry {
err = telemetry.Enable(true)
}
diff --git a/server/http.go b/server/http.go
index 7816d5e0d..327246f1a 100644
--- a/server/http.go
+++ b/server/http.go
@@ -154,7 +154,6 @@ func (s *HTTPd) RegisterSiteHandlers(site site.API, valueChan chan<- util.Param)
"sessions": {"GET", "/sessions", sessionHandler},
"updatesession": {"PUT", "/session/{id:[0-9]+}", updateSessionHandler},
"deletesession": {"DELETE", "/session/{id:[0-9]+}", deleteSessionHandler},
- "telemetry": {"GET", "/settings/telemetry", getHandler(telemetry.Enabled)},
"telemetry2": {"POST", "/settings/telemetry/{value:[01truefalse]+}", boolHandler(telemetry.Enable, telemetry.Enabled)},
}
diff --git a/util/telemetry/charge.go b/util/telemetry/charge.go
index 86cd4b27a..4bab9194e 100644
--- a/util/telemetry/charge.go
+++ b/util/telemetry/charge.go
@@ -22,6 +22,7 @@ const (
var (
instanceID string
+ publisher chan<- util.Param
mu sync.Mutex
updated time.Time
@@ -33,6 +34,13 @@ func Enabled() bool {
return enabled && sponsor.IsAuthorizedForApi() && instanceID != ""
}
+// publish publishes the current telemetry enabled state
+func publish() {
+ if publisher != nil {
+ publisher <- util.Param{Key: keys.Telemetry, Val: Enabled()}
+ }
+}
+
func Enable(enable bool) error {
if enable {
if !sponsor.IsAuthorized() {
@@ -44,16 +52,20 @@ func Enable(enable bool) error {
}
settings.SetBool(keys.Telemetry, enable)
+ publish()
return nil
}
-func Create(machineID string) {
+func Create(machineID string, valueChan chan<- util.Param) {
instanceID = machineID
+ publisher = valueChan
if machineID == "" {
instanceID = machine.ProtectedID("evcc-api")
}
+
+ publish()
}
// UpdateChargeProgress uploads power and energy data every 30 seconds