diff --git a/source/HomeAssistantApp.mc b/source/HomeAssistantApp.mc index 2cc8675..de7a700 100644 --- a/source/HomeAssistantApp.mc +++ b/source/HomeAssistantApp.mc @@ -39,6 +39,7 @@ class HomeAssistantApp extends Application.AppBase { private var mIsGlance as Lang.Boolean = false; private var mIsApp as Lang.Boolean = false; // Or Widget private var mIsInitUpdateCompl as Lang.Boolean = false; + private var mUpdating as Lang.Boolean = false; // Don't start a second chain of updates function initialize() { AppBase.initialize(); @@ -262,11 +263,12 @@ class HomeAssistantApp extends Application.AppBase { } function startUpdates() { - if (mHaMenu != null) { + if (mHaMenu != null and !mUpdating) { mItemsToUpdate = mHaMenu.getItemsToUpdate(); // Start the continuous update process that continues for as long as the application is running. // The chain of functions from 'updateNextMenuItem()' calls 'updateNextMenuItem()' on completion. if (mItemsToUpdate.size() > 0) { + mUpdating = true; updateNextMenuItemInternal(); } } diff --git a/source/HomeAssistantTemplateMenuItem.mc b/source/HomeAssistantTemplateMenuItem.mc index 3fd1ba8..be667f1 100644 --- a/source/HomeAssistantTemplateMenuItem.mc +++ b/source/HomeAssistantTemplateMenuItem.mc @@ -137,7 +137,7 @@ class HomeAssistantTemplateMenuItem extends WatchUi.IconMenuItem { } else if(label instanceof Lang.String) { setSubLabel(label); } else if(label instanceof Lang.Dictionary) { - System.println("HomeAssistantTemplateMenuItem onReturnGetState() label = " + label); + // System.println("HomeAssistantTemplateMenuItem onReturnGetState() label = " + label); if (label.get("error") != null) { setSubLabel($.Rez.Strings.TemplateError); } else { @@ -165,8 +165,6 @@ class HomeAssistantTemplateMenuItem extends WatchUi.IconMenuItem { // System.println("HomeAssistantTemplateMenuItem getState(): No Internet connection, skipping API call."); ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoInternet) as Lang.String + "."); getApp().setApiStatus(WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String); - } else if (Settings.getWebhookId().equals("")) { - getApp().updateNextMenuItem(); } else { // https://developers.home-assistant.io/docs/api/native-app-integration/sending-data/#render-templates var url = Settings.getApiUrl() + "/webhook/" + Settings.getWebhookId(); diff --git a/source/Settings.mc b/source/Settings.mc index 111cc34..8a598d4 100644 --- a/source/Settings.mc +++ b/source/Settings.mc @@ -79,16 +79,16 @@ class Settings { // We already have a Webhook ID, so just enable or disable the sensor in Home Assistant. // Its a multiple step process, hence starting at step 0. mWebhookManager.registerWebhookSensor({ - "device_class" => "battery", - "name" => "Battery Level", - "state" => System.getSystemStats().battery, - "type" => "sensor", - "unique_id" => "battery_level", - "unit_of_measurement" => "%", - "state_class" => "measurement", - "entity_category" => "diagnostic", - "disabled" => !Settings.isSensorsLevelEnabled() - }, 0); + "device_class" => "battery", + "name" => "Battery Level", + "state" => System.getSystemStats().battery, + "type" => "sensor", + "unique_id" => "battery_level", + "unit_of_measurement" => "%", + "state_class" => "measurement", + "entity_category" => "diagnostic", + "disabled" => !Settings.isSensorsLevelEnabled() + }, 0); } if (mIsSensorsLevelEnabled) { // Create the timed activity