diff --git a/compile_sim.cmd b/compile_sim.cmd index 1005efb..5708341 100644 --- a/compile_sim.cmd +++ b/compile_sim.cmd @@ -21,7 +21,7 @@ rem rem ----------------------------------------------------------------------------------- rem Check this path is correct for your Java installation -set JAVA_PATH=C:\Program Files\Java\jdk-22\bin +set JAVA_PATH=C:\Program Files\Java\jdk-21\bin\ rem SDK_PATH should work for all users set /p SDK_PATH=<"%USERPROFILE%\AppData\Roaming\Garmin\ConnectIQ\current-sdk.cfg" set SDK_PATH=%SDK_PATH:~0,-1%\bin @@ -100,7 +100,7 @@ rem Compile PRG for a single device for side loading -jar %SDK_PATH%\monkeybrains.jar ^ --output %SRC%\bin\HomeAssistant.prg ^ --jungles %SRC%\%JUNGLE% ^ - --private-key %SRC%\..\developer_key ^ + --private-key "C:\Users\josep\AppData\Roaming\Garmin\ConnectIQ\Key\developer_key" ^ --device %DEVICE%_sim ^ --warn ^ --release diff --git a/source/HomeAssistantGroupMenuItem.mc b/source/HomeAssistantGroupMenuItem.mc index 2ba7152..7d44f4d 100644 --- a/source/HomeAssistantGroupMenuItem.mc +++ b/source/HomeAssistantGroupMenuItem.mc @@ -51,8 +51,22 @@ class HomeAssistantGroupMenuItem extends WatchUi.IconMenuItem { return mTemplate; } - function updateState(data as Lang.String or Null) as Void { - setSubLabel(data); + function updateState(data as Lang.String or Lang.Dictionary or Null) as Void { + if (data == null) { + setSubLabel($.Rez.Strings.Empty); + } else if(data instanceof Lang.String) { + setSubLabel(data); + } else if(data instanceof Lang.Dictionary) { + // System.println("HomeAsistantGroupMenuItem updateState() data = " + data); + if (data.get("error") != null) { + setSubLabel($.Rez.Strings.TemplateError); + } else { + setSubLabel($.Rez.Strings.PotentialError); + } + } else { + // The template must return a Lang.String, a number can be either integer or float and hence cannot be formatted locally without error. + setSubLabel(WatchUi.loadResource($.Rez.Strings.TemplateError) as Lang.String); + } WatchUi.requestUpdate(); } diff --git a/source/HomeAssistantTemplateMenuItem.mc b/source/HomeAssistantTemplateMenuItem.mc index 78adce1..adfa0d8 100644 --- a/source/HomeAssistantTemplateMenuItem.mc +++ b/source/HomeAssistantTemplateMenuItem.mc @@ -64,8 +64,22 @@ class HomeAssistantTemplateMenuItem extends WatchUi.IconMenuItem { return mTemplate; } - function updateState(data as Lang.String or Null) as Void { - setSubLabel(data); + function updateState(data as Lang.String or Lang.Dictionary or Null) as Void { + if (data == null) { + setSubLabel($.Rez.Strings.Empty); + } else if(data instanceof Lang.String) { + setSubLabel(data); + } else if(data instanceof Lang.Dictionary) { + // System.println("HomeAsistantTemplateMenuItem updateState() data = " + data); + if (data.get("error") != null) { + setSubLabel($.Rez.Strings.TemplateError); + } else { + setSubLabel($.Rez.Strings.PotentialError); + } + } else { + // The template must return a Lang.String, a number can be either integer or float and hence cannot be formatted locally without error. + setSubLabel(WatchUi.loadResource($.Rez.Strings.TemplateError) as Lang.String); + } WatchUi.requestUpdate(); } diff --git a/source/HomeAssistantToggleMenuItem.mc b/source/HomeAssistantToggleMenuItem.mc index e3687ea..07e7b64 100644 --- a/source/HomeAssistantToggleMenuItem.mc +++ b/source/HomeAssistantToggleMenuItem.mc @@ -49,10 +49,8 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { if (state != null) { if (state.equals("on") && !isEnabled()) { setEnabled(true); - WatchUi.requestUpdate(); } else if (state.equals("off") && isEnabled()) { setEnabled(false); - WatchUi.requestUpdate(); } } } @@ -64,19 +62,29 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { return "{{states('" + mData.get("entity_id") + "')}}," + mTemplate; } - function updateState(data as Lang.String or Null) as Void { + function updateState(data as Lang.String or Lang.Dictionary or Null) as Void { if (data == null) { - setSubLabel(null); - WatchUi.requestUpdate(); - return; + setSubLabel($.Rez.Strings.Empty); + } else if(data instanceof Lang.String) { + if (mTemplate == null) { + setUiToggle(data); + } else { + var split = data.find(","); + setSubLabel(data.substring(split + 1, data.length())); + setUiToggle(data.substring(0, split)); + } + } else if(data instanceof Lang.Dictionary) { + // System.println("HomeAsistantToggleMenuItem updateState() data = " + data); + if (data.get("error") != null) { + setSubLabel($.Rez.Strings.TemplateError); + } else { + setSubLabel($.Rez.Strings.PotentialError); + } + } else { + // The template must return a Lang.String, a number can be either integer or float and hence cannot be formatted locally without error. + setSubLabel(WatchUi.loadResource($.Rez.Strings.TemplateError) as Lang.String); } - if (mTemplate == null) { - setUiToggle(data); - return; - } - var split = data.find(","); - setSubLabel(data.substring(split + 1, data.length())); - setUiToggle(data.substring(0, split)); + WatchUi.requestUpdate(); } // Callback function after completing the POST request to set the status. @@ -123,6 +131,7 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem { state = d[i].get("state") as Lang.String; // System.println((d[i].get("attributes") as Lang.Dictionary).get("friendly_name") + " State=" + state); setUiToggle(state); + WatchUi.requestUpdate(); } } status = WatchUi.loadResource($.Rez.Strings.Available) as Lang.String;