Compare commits

..

12 Commits

Author SHA1 Message Date
philipabbey
c1f6ecbd2c Apply automatic changes 2025-12-13 16:33:49 +00:00
Philip Abbey
66bae3ac57 Add error handling for empty menu data
New string resource for menu definition errors and updates HomeAssistantApp to show an error message when the menu data is empty.
2025-12-13 16:29:18 +00:00
Philip Abbey
fd373e9dbb Enhance REQBIN API testing section with notes
Added important notes about using REQBIN for API testing, including URL formatting and request limits.

Signed-off-by: Philip Abbey <philipabbey@users.noreply.github.com>
2025-12-03 18:59:47 +00:00
Philip Abbey
b86f54496f Add credits for additional activity reporting features
Added credits section acknowledging contributions.

Signed-off-by: Philip Abbey <philipabbey@users.noreply.github.com>
2025-11-16 17:52:46 +00:00
Philip Abbey
fffe0fc1e9 Update contributor mentions to use '@' syntax
Signed-off-by: Philip Abbey <philipabbey@users.noreply.github.com>
2025-11-16 17:49:55 +00:00
Philip Abbey
a3de208073 Add credits section for PIN feature contributor
Added credits section acknowledging Matthias Oesterheld for the PIN feature contribution.

Signed-off-by: Philip Abbey <philipabbey@users.noreply.github.com>
2025-11-16 17:45:53 +00:00
Philip Abbey
fe9b7c9780 Add credits for Tom Michel's contribution
Added credits section acknowledging Tom Michel's contribution.

Signed-off-by: Philip Abbey <philipabbey@users.noreply.github.com>
2025-11-16 17:43:26 +00:00
Philip Abbey
2df83f86f1 Change cover image in README.md
Updated the cover image in the README file.

Signed-off-by: Philip Abbey <philipabbey@users.noreply.github.com>
2025-11-16 17:36:37 +00:00
Philip Abbey
20d41dbb2e New images (#325)
Merging without review, its just documentation.
2025-11-16 17:34:27 +00:00
Philip Abbey
c5eb15112b New images 2025-11-16 17:32:06 +00:00
Philip Abbey
ce7ea4d519 Update config.schema.json (#324)
Removed the need to specify any menu titles. The code works with a
`Null` as-is. I'm not convinced the lack of a title saves screen space
as desired, but the code works without a title, there's no real reason
to specify one as its not essential, so perhaps we just relax the
schema?

There is one user requesting this. They can work with a schema warning
for now and this can be rolled into the next release, when there's more
changes.
2025-11-15 11:34:26 +00:00
Philip Abbey
0ce95fa58a Update config.schema.json
Removed the need to specify any menu titles. The code works with a `Null` as-is.
2025-11-14 17:05:30 +00:00
75 changed files with 92 additions and 36 deletions

View File

@@ -170,3 +170,7 @@ You should remove your old template sensors before migrating to the new integrat
While all of the entries have the same name, you can identify which to delete by clicking through to its device which should have a changed name from when it was set up.
![Battery Device Deletion](images/Battery_Device_Deletion.png)
## Credits
With thanks to Klaas Whiver, [@KPWhiver](https://github.com/KPWhiver) for contributing additional activity reporting features: steps, heart rate, floors climbed and descended, and respiration rate.

View File

@@ -8,11 +8,11 @@
| 1.1 | Updated for 54 more devices, 80 in total. Scene support. Added vibrate acknowledgement for tap-based menu items. Falls back to a custom visual confirmation in the absence of 'toast' and vibrate support. Bug fix for large menus needing status updates. |
| 1.2 | Do not crash on zero items to update. Report unreachable URLs. Verify API URL does not have a trailing slash '/'. Increased HTTP response diagnosis. Reduced minimum API Level required from 3.3.0 to 3.1.0 to allow more device "part numbers" to be satisfied. |
| 1.3 | Tap for scripts was working in emulation but not on some phones. Decision is to make the 'service' field in the JSON compulsory for 'tap' menu items. This is a breaking change, but for many might be a fix for something not working correctly. Improve language support, we can now accept language corrections and prevent the automated translation of strings from clobbering manually refined entries. Thank you to two new contributors. |
| 1.4 | New lean user Interface with thanks to [Someone0nEarth](https://github.com/Someone0nEarth) for their contribution which is now the default. If you prefer the old style you can still select it in the settings. The provision of a 'service' tag is now not just heavily suggested by the JSON schema, it is enforced in code. With apologies to anyone suffering a breakage as a result. |
| 1.4 | New lean user Interface with thanks to [@Someone0nEarth](https://github.com/Someone0nEarth) for their contribution which is now the default. If you prefer the old style you can still select it in the settings. The provision of a 'service' tag is now not just heavily suggested by the JSON schema, it is enforced in code. With apologies to anyone suffering a breakage as a result. |
| 1.5 | <img src="images/confirmation_view.png" width="200" title="Confirmation View"/><br/>Added an optional confirmation dialogue view to prevent accidental execution of actions on mistaken tap. This also brings a change in the JSON schema to allow an optional field to specify that the confirmation should be used for a menu item. As we are now maturing and adding features we have decided to mitigate breaking changes to the JSON schema by being more careful to adopt the HomeAssistant schema (noting there is a 1:1 mapping between YAML and JSON). This change does deprecate the top level `service` tag in favour of `tag_action` containing multiple fields including `service` & `confirm`. Users should migrate to the new format for the new functionality, but the timescale for actual deprecation are long and undecided. |
| 1.6 | Added a user configurable 'timeout' in seconds so that when no action is taken the application automatically closes, stopping the continuous polling for changes of status and hence saving the drain on the battery. This can be disabled with timeout=0. |
| 1.7 | Added timeout to confirmation views so that when used for security devices it does not linger when left unconfirmed. Thanks to [Jan Schneider](https://github.com/j-a-n) for the contribution. Known bug for devices not supporting [`WatchUi.getCurrentView()`](https://developer.garmin.com/connect-iq/api-docs/Toybox/WatchUi.html#getCurrentView-instance_function) API call which is only available on API Level 3.4.0, e.g. Vivoactive 4S. |
| 2.0 | A significant code base change to enable both a 'widget' version for older devices, e.g. Venu (1), and an application with a glance, e.g. Venu2. These two versions must now be distributed under separate application IDs, but they have the same code base. A further 20 more devices are now supported, the settings have been internationalised, and there's a bug fix for older devices when trying to display a helpful error message but instead the application crashed. This version has come from a significant collaboration with [Someone0nEarth](https://github.com/Someone0nEarth). |
| 1.7 | Added timeout to confirmation views so that when used for security devices it does not linger when left unconfirmed. Thanks to [@Jan Schneider](https://github.com/j-a-n) for the contribution. Known bug for devices not supporting [`WatchUi.getCurrentView()`](https://developer.garmin.com/connect-iq/api-docs/Toybox/WatchUi.html#getCurrentView-instance_function) API call which is only available on API Level 3.4.0, e.g. Vivoactive 4S. |
| 2.0 | A significant code base change to enable both a 'widget' version for older devices, e.g. Venu (1), and an application with a glance, e.g. Venu2. These two versions must now be distributed under separate application IDs, but they have the same code base. A further 20 more devices are now supported, the settings have been internationalised, and there's a bug fix for older devices when trying to display a helpful error message but instead the application crashed. This version has come from a significant collaboration with [@Someone0nEarth](https://github.com/Someone0nEarth). |
| 2.1 | Deployment of an idea to provide HomeAssistant with access to the watch battery level. Using this requires [significant setup](BackgroundService.md) on the HomeAssistant configuration and hence is detailed separately. Due to this, the default state for this battery option is _off_. Changed the application settings user interface to be more intuitive, and hence amended the way settings are managed in the background. |
| 2.2 | Adds a feature to cache the menu configuration and save the time taken for an HTTP request to fetch it. You as the user are responsible for managing the cache by clearing it when you update your configuration. Improvement to widget root display updates. Bug fix for battery level reporting when in the glance carousel. Fixed an uninternationalised string, "Execute". Unfixed issue with battery level updates when the user is not an administrator. |
| 2.3 | Fix for battery level updates where previously the function only worked for administrator accounts. The new solution is based on Webhooks and is simpler to implement on HomeAssistant. Language support fix where an automatic translation produced an inappropriate word, possibly in more than one language. |
@@ -28,13 +28,13 @@
| 2.13 | Moved the template status queries to Webhooks in order to fix the situation where an account is a non-privileged user. Added telemetry update on activity completion to make automations more timely at the end of an activity. When using a polling delay, there is no longer a startup delay for status updates and an action will trigger an immediate round of updates. |
| 2.14 | Cautionary bug fix for the background service code where refactorisation spoilt some API level guard clauses. |
| 2.15 | Better support for templates by isolating erroneous returns and marking the menu item. |
| 2.16 | Bug fix for lack of phone connection when starting the application. Includes new activity reporting features from [KPWhiver](https://github.com/KPWhiver) covering steps, heart rate, floors climbed and descended, and respiration rate. |
| 2.16 | Bug fix for lack of phone connection when starting the application. Includes new activity reporting features from [@KPWhiver](https://github.com/KPWhiver) covering steps, heart rate, floors climbed and descended, and respiration rate. |
| 2.17 | Bug fix for reporting activity metrics that are not found on some devices. |
| 2.18 | Bug fix for reporting activity metrics that might be `null` sometimes. This is unsimulatable situation, so this version is a change based on an informed guess. |
| 2.19 | A template to evaluate is now optionally allowed on both `group` and `toggle` menu items. The template to evaluate is non-optional on a `template` menu item. All updates are performed in a single HTTP GET request for efficiency. Bug fix for negative heading values. Vibration now (optionally) confirms toggle menu items being tapped. |
| 2.20 | Simplified the code base now that templates have been requested in all menu items. This means the `template` menu item became a superset of `tap`. Therefore the `tap` code has been has been upgraded to include `template` and the latter deprecated. JSON menu definitions continue to support `template` items by instantiating a `tap` menu item, but the schema marks them as deprecated and users should migrate their menu definitions now. Use the [web editor](https://house-of-abbey.github.io/GarminHomeAssistant/web/) for assistance with changes. |
| 2.21 | Added 7 new devices (`edge1050`, `enduro3`, `fenix843mm`, `fenix847mm`, `fenix8solar47mm`, `fenix8solar51mm`, `fenixe`) and upgraded the SDK to 7.3.0. Fix for a bug on Edge devices introduced by v2.16 activity reporting improvements. |
| 2.22 | <img src="images/pin_view.png" width="200" title="PIN Entry View"/><br/>Major feature release adding an optional PIN to menu items. This significant new feature has been provided by [moesterheld](https://github.com/moesterheld). Please do not rely on this application for security. Use at your own risk! |
| 2.22 | <img src="images/pin_view.png" width="200" title="PIN Entry View"/><br/>Major feature release adding an optional PIN to menu items. This significant new feature has been provided by [@moesterheld](https://github.com/moesterheld). Please do not rely on this application for security. Use at your own risk! |
| 2.23 | Added "info" menu item for displaying information via a template without a tap or toggle. Essentially like the old 'template' type that was deprecated when all items were amended to display evaluated templates. That action removed the display only items too hastily. Added 5 new devices in the model range Instinct 3 and Instinct E. |
| 2.24 | Experiment to prevent new Webhook IDs being created unnecessarily. Reduced the latency for the first menu update. Added 4 new devices: approachs50, descentg2, descentmk1, and gpsmap66. |
| 2.25 | 2 Bug fixes. First time startup issues caused by v2.24 change and a fix for pure numbers in returned templates. |

View File

@@ -2,7 +2,7 @@
# GarminHomeAssistant
<img src="images/Actual_Venu2_Theme.jpg" width="200" title="Venu 2"/>
<img src="images/cover_image_500px.png" width="250" title="Venu 2"/>
A Garmin application to provide a "dashboard" to control your devices via [HomeAssistant](https://www.home-assistant.io/). The application will never be as fully fledged as a HomeAssistant dashboard, so it is designed to be good enough for the simple and essential things. Those things that can be activated via an on/off toggle or a tap. That should cover lights, switches, and anything requiring a single press such as an automation. For anything more complicated, e.g. thermostat, it would always be quicker and simpler to reach for your phone or tablet... or the device's own remote control!
@@ -166,15 +166,22 @@ Example schema:
NB. Entity names are not real in case anyone's a hacker ;-).
<style>
img.icon {
width: 20px;
vertical-align: middle;
}
</style>
The example above illustrates how to configure:
* Lights or switches (`toggle`), <img src="images/toggle_icon.png" height="20">
* Enables for automations (`toggle`), <img src="images/toggle_icon.png" height="20">
* Script invocation (`tap`)
* Action invocation, e.g. Scene setting, (`tap`)
* A sub-menu to open (`group`)
* A numeric item (`numeric`), which allows you to set a numeric value e.g. for heating or a dimmer. This is [explained more fully](examples/Numeric.md) in its own examples page.
* You can also display the status of devices (`info`) which is essentially a `tap` with no action
* <img class="icon" src="images/toggle_icon.png"> Lights or switches, `toggle` menu item.
* <img class="icon" src="images/toggle_icon.png"> Enables for automations, `toggle` menu item.
* <img class="icon" src="images/tap_icon.png"> Script invocation, `tap` menu item.
* <img class="icon" src="images/tap_icon.png"> Action invocation, e.g. Scene setting, `tap` menu item.
* <img class="icon" src="images/group_icon.png"> A sub-menu to open, `group` menu item.
* <img class="icon" src="images/numeric_icon.png"> A `numeric` menu item, which allows you to set a value e.g. for heating or a dimmer. This is [explained more fully](examples/Numeric.md) in its own examples page.
* <img class="icon" src="images/info_icon.png"> You can also display the status of devices with an `info` menu item.
* All menu items can display the results of evaluating [templates](examples/Templates.md).
The following table indicates how HomeAssistant entity types can map to the Garmin applications menu types. Presently, an automation is the only one that can be either a `tap` or a `toggle`.

View File

@@ -116,7 +116,9 @@ pause
#### API: On-line
There's an online way of testing the API URL too, thanks to [REQBIN](https://reqbin.com/post-online). This has less setup and it can be saved if you log into the web site.
There's an online way of testing the API URL too, thanks to [REQBIN](https://reqbin.com/post-online). This has less setup and it can be saved if you log into the web site. Please note two things:
1. The URL entere below must include a trailing '/' unlike the URL entered into the watch settings.
2. The service imposes a limit on the number requests you can submit without a subscription, so click with purpose! NB. Changing browser buys you a few more clicks.
![API Test REQBIN](images/api_test_online.png)

View File

@@ -18,7 +18,6 @@
}
},
"required": [
"title",
"items"
],
"additionalProperties": false,
@@ -231,7 +230,6 @@
},
"required": [
"name",
"title",
"type",
"items"
],

View File

@@ -177,3 +177,7 @@ Here is an example of how to make a light effect selector:
```
The same pattern works for any selector (`input_select.*`, `select.*`, `climate.*` mode).
## Credits
With thanks to Matthias Oesterheld, [moesterheld](https://github.com/moesterheld) for contributing the PIN feature.

View File

@@ -165,3 +165,7 @@ The JSON menu definition can now use dB with the new template number as follows.
Specific to this menu item:
1. If the number picker does not initialise with the correct value, amend the `attribute` field. Just because your template renders does not mean the application has extracted the numeric value as the `content` template is rendered on the HomeAssistant server.
## Credits
With thanks to Tom Michel, [@thmichel](https://github.com/thmichel) for contributing this solution.

View File

@@ -63,7 +63,7 @@ Where your device supports unicode characters these example may work.
{
"name": "Charge",
"type": "info",
"content": "☎ {{ states('sensor.my_phone_battery_level') }}%{% if is_state('binary_sensor.my_phone_is_charging', 'on') %}⚡{% endif %}, ⏳ {{ '%.0f'|format(states('sensor.my_watch_battery_level') | float) }}%{% if is_state('binary_binary_sensor.my_watch_battery_is_charging', 'on') %}⚡{% endif %}"
"content": "☎ {{ states('sensor.my_phone_battery_level') }}%{% if is_state('binary_sensor.my_phone_is_charging', 'on') %}⚡{% endif %}, ⏳ {{ '%.0f'|format(states('sensor.my_watch_battery_level') | float) }}%{% if is_state('binary_sensor.my_watch_battery_is_charging', 'on') %}⚡{% endif %}"
},
{
"name": "Hallway",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 435 KiB

After

Width:  |  Height:  |  Size: 426 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 219 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

BIN
images/AutomationItem.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
images/HomeMenu.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
images/NumericItem.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

After

Width:  |  Height:  |  Size: 265 KiB

BIN
images/SubMenuItem.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
images/Submenu.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 KiB

BIN
images/group_icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 B

BIN
images/info_icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 532 B

BIN
images/numeric_icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 481 B

BIN
images/source/Diagrams.pptx Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 643 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 293 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 603 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 600 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 603 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 608 KiB

BIN
images/tap_icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 510 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -15,7 +15,7 @@
<!--
Generated by Google Translate and gemini-2.5-flash from English to Arabic
تم الإنشاء بواسطة ترجمة جوجل و gemini-2.5-flash من الإنجليزية إلى العربية
تم الإنشاء بواسطة ترجمة Google وgemini-2.5-flash من الإنجليزية إلى العربية
-->
<strings>
@@ -40,6 +40,7 @@
<string id="NoConfigUrl" scope="glance">لا يوجد عنوان URL للتكوين في إعدادات التطبيق.</string>
<string id="NoInternet">لا يوجد اتصال بالإنترنت.</string>
<string id="NoJson">لم يتم إرجاع أي JSON من طلب HTTP.</string>
<string id="NoMenu">خطأ في تعريف القائمة، تحقق من التعليمات.</string>
<string id="NoPhone" scope="glance">لا يوجد اتصال هاتفي.</string>
<string id="NoPhoneNoCache" scope="glance">لا يوجد اتصال بالهاتف، لا توجد قائمة مخزنة مؤقتًا.</string>
<string id="NoResponse">لا توجد استجابة، تحقق من اتصال الإنترنت.</string>

View File

@@ -38,6 +38,7 @@
<string id="NoConfigUrl" scope="glance">Няма URL адрес за конфигурация в настройките на приложението.</string>
<string id="NoInternet">Няма интернет връзка.</string>
<string id="NoJson">Не е върнат JSON от HTTP заявка.</string>
<string id="NoMenu">Грешка в дефиницията на менюто, проверете инструкциите.</string>
<string id="NoPhone" scope="glance">Няма телефонна връзка.</string>
<string id="NoPhoneNoCache" scope="glance">Няма телефонна връзка, няма кеширано меню.</string>
<string id="NoResponse">Няма отговор, проверете интернет връзката.</string>

View File

@@ -38,6 +38,7 @@
<string id="NoConfigUrl" scope="glance">Žádná konfigurační URL v nastavení aplikace.</string>
<string id="NoInternet">Žádné připojení k internetu.</string>
<string id="NoJson">Žádný JSON se nevrátil z požadavku HTTP.</string>
<string id="NoMenu">Chyba definice menu, zkontrolujte pokyny.</string>
<string id="NoPhone" scope="glance">Žádné telefonní připojení.</string>
<string id="NoPhoneNoCache" scope="glance">Žádné připojení telefonu, žádné menu v mezipaměti.</string>
<string id="NoResponse">Žádná odpověď, zkontrolujte připojení k internetu.</string>

View File

@@ -38,6 +38,7 @@
<string id="NoConfigUrl" scope="glance">Ingen konfigurations-URL i applikationsindstillingerne.</string>
<string id="NoInternet">Ingen internetforbindelse.</string>
<string id="NoJson">Ingen JSON modtaget fra HTTP-anmodning.</string>
<string id="NoMenu">Menudefinitionsfejl, tjek instruktionerne.</string>
<string id="NoPhone" scope="glance">Ingen telefonforbindelse.</string>
<string id="NoPhoneNoCache" scope="glance">Ingen telefonforbindelse, ingen cachelagret menu.</string>
<string id="NoResponse">Intet svar, tjek internetforbindelsen.</string>

View File

@@ -38,6 +38,7 @@
<string id="NoConfigUrl" scope="glance">Keine Menükonfigurations-URL (JSON) in den App-Einstellungen hinterlegt.</string>
<string id="NoInternet">Keine Internetverbindung.</string>
<string id="NoJson">Keine JSON-Datei aus der HTTP-Anfrage zurückbekommen.</string>
<string id="NoMenu">Fehler in der Menüdefinition, Anweisungen prüfen.</string>
<string id="NoPhone" scope="glance">Keine Telefonverbindung.</string>
<string id="NoPhoneNoCache" scope="glance">Keine Telefonverbindung und kein gecachtes Menü.</string>
<string id="NoResponse">Keine Antwort, bitte Internetverbindung prüfen.</string>

View File

@@ -15,7 +15,7 @@
<!--
Generated by Google Translate and gemini-2.5-flash from English to Dutch
Gegenereerd door Google Translate en gemini-2.5-flash van Engels naar Nederlands
Vertaald door Google Translate en gemini-2.5-flash van Engels naar Nederlands
-->
<strings>
@@ -39,6 +39,7 @@
<string id="NoConfigUrl" scope="glance">Geen configuratie-URL in de toepassingsinstellingen.</string>
<string id="NoInternet">Geen internetverbinding.</string>
<string id="NoJson">Geen JSON ontvangen van het HTTP-verzoek.</string>
<string id="NoMenu">Menudefinitiefout, controleer de instructies.</string>
<string id="NoPhone" scope="glance">Geen telefoonverbinding.</string>
<string id="NoPhoneNoCache" scope="glance">Geen telefoonverbinding, geen menu in de cache.</string>
<string id="NoResponse">Geen antwoord, controleer internetverbinding</string>

View File

@@ -15,7 +15,7 @@
<!--
Generated by Google Translate and gemini-2.5-flash from English to Estonian
Genereeritud Google Translate'i ja gemini-2.5-flashi poolt inglise keelest eesti keelde
Tõlgitud Google Translate'i ja gemini-2.5-flashiga inglise keelest eesti keelde
-->
<strings>
@@ -38,6 +38,7 @@
<string id="NoConfigUrl" scope="glance">Rakenduse seadetes pole konfiguratsiooni URL-i.</string>
<string id="NoInternet">Interneti-ühendust pole.</string>
<string id="NoJson">HTTP päring ei tagastanud JSON-i.</string>
<string id="NoMenu">Menüü määratluse viga, kontrollige juhiseid.</string>
<string id="NoPhone" scope="glance">Telefoniühendust pole.</string>
<string id="NoPhoneNoCache" scope="glance">Pole telefoniühendust ega vahemällu salvestatud menüüd.</string>
<string id="NoResponse">Vastust pole, kontrollige Interneti-ühendust</string>

View File

@@ -38,6 +38,7 @@
<string id="NoConfigUrl" scope="glance">Ei määritys-URL-osoitetta sovellusasetuksissa.</string>
<string id="NoInternet">Ei Internet-yhteyttä.</string>
<string id="NoJson">HTTP-pyynnöstä ei palautettu JSONia.</string>
<string id="NoMenu">Valikon määritysvirhe, tarkista ohjeet.</string>
<string id="NoPhone" scope="glance">Ei puhelinyhteyttä.</string>
<string id="NoPhoneNoCache" scope="glance">Ei puhelinyhteyttä, ei välimuistissa olevaa valikkoa.</string>
<string id="NoResponse">Ei vastausta, tarkista Internet-yhteys</string>

View File

@@ -41,6 +41,7 @@
l'application.</string>
<string id="NoInternet">Pas de connexion Internet.</string>
<string id="NoJson">Aucun JSON n'est retourné par la requête HTTP.</string>
<string id="NoMenu">Erreur de définition du menu, vérifiez les instructions.</string>
<string id="NoPhone" scope="glance">Aucune connexion téléphonique.</string>
<string id="NoPhoneNoCache" scope="glance">Pas de connexion téléphonique, pas de menu en cache.</string>
<string id="NoResponse">Aucune réponse, vérifiez la connexion Internet</string>

View File

@@ -15,7 +15,7 @@
<!--
Generated by Google Translate and gemini-2.5-flash from English to Greek
Δημιουργήθηκε από το Google Translate και το gemini-2.5-flash από Αγγλικά σε Ελληνικά
Δημιουργήθηκε από Google Translate και gemini-2.5-flash από Αγγλικά σε Ελληνικά
-->
<strings>
@@ -40,6 +40,7 @@
εφαρμογής.</string>
<string id="NoInternet">Χωρίς σύνδεση στο Διαδίκτυο.</string>
<string id="NoJson">Κανένα JSON δεν επεστράφη από το αίτημα HTTP.</string>
<string id="NoMenu">Σφάλμα ορισμού μενού, ελέγξτε τις οδηγίες.</string>
<string id="NoPhone" scope="glance">Χωρίς σύνδεση τηλεφώνου.</string>
<string id="NoPhoneNoCache" scope="glance">Δεν υπάρχει σύνδεση τηλεφώνου, δεν υπάρχει αποθηκευμένο
μενού.</string>

View File

@@ -38,6 +38,7 @@
<string id="NoConfigUrl" scope="glance">אין כתובת URL לתצורה בהגדרות היישום.</string>
<string id="NoInternet">אין חיבור לאינטרנט.</string>
<string id="NoJson">לא התקבל JSON מבקשת HTTP.</string>
<string id="NoMenu">שגיאת הגדרת תפריט, בדוק את ההוראות.</string>
<string id="NoPhone" scope="glance">אין חיבור לטלפון.</string>
<string id="NoPhoneNoCache" scope="glance">אין חיבור לטלפון, אין תפריט במטמון.</string>
<string id="NoResponse">אין תגובה, בדוק את חיבור האינטרנט.</string>

View File

@@ -15,7 +15,7 @@
<!--
Generated by Google Translate and gemini-2.5-flash from English to Croatian
Generirano putem Google Prevoditelja i gemini-2.5-flash s engleskog na hrvatski
Generirano pomoću Google Prevoditelja i gemini-2.5-flash s engleskog na hrvatski
-->
<strings>
@@ -39,6 +39,7 @@
<string id="NoConfigUrl" scope="glance">Nema URL-a konfiguracije u postavkama aplikacije.</string>
<string id="NoInternet">Nema internetske veze.</string>
<string id="NoJson">Nije primljen JSON odgovor na HTTP zahtjev.</string>
<string id="NoMenu">Pogreška u definiciji izbornika, provjerite upute.</string>
<string id="NoPhone" scope="glance">Nema telefonske veze.</string>
<string id="NoPhoneNoCache" scope="glance">Nema telefonske veze, nema predmemoriranog izbornika.</string>
<string id="NoResponse">Nema odgovora, provjerite internetsku vezu</string>

View File

@@ -15,7 +15,7 @@
<!--
Generated by Google Translate and gemini-2.5-flash from English to Hungarian
Fordította: Google Translate és gemini-2.5-flash angolról magyarra
Generálta a Google Fordító és a gemini-2.5-flash angolról magyarra
-->
<strings>
@@ -39,6 +39,7 @@
<string id="NoConfigUrl" scope="glance">Nincs konfigurációs URL az alkalmazás beállításaiban.</string>
<string id="NoInternet">Nincs internetkapcsolat.</string>
<string id="NoJson">A HTTP kérés nem adott vissza JSON-t.</string>
<string id="NoMenu">Menüdefiníciós hiba, ellenőrizze az utasításokat.</string>
<string id="NoPhone" scope="glance">Nincs telefonkapcsolat.</string>
<string id="NoPhoneNoCache" scope="glance">Nincs telefonkapcsolat, nincs gyorsítótárazott menü.</string>
<string id="NoResponse">Nincs válasz, ellenőrizze az internetkapcsolatot</string>

View File

@@ -15,7 +15,7 @@
<!--
Generated by Google Translate and gemini-2.5-flash from English to Indonesian
Dihasilkan oleh Google Translate dan gemini-2.5-flash dari bahasa Inggris ke bahasa Indonesia
Dibuat oleh Google Translate dan gemini-2.5-flash dari bahasa Inggris ke bahasa Indonesia
-->
<strings>
@@ -39,6 +39,7 @@
<string id="NoConfigUrl" scope="glance">Tidak ada URL konfigurasi di pengaturan aplikasi.</string>
<string id="NoInternet">Tidak ada koneksi internet.</string>
<string id="NoJson">Tidak ada JSON yang diterima dari permintaan HTTP.</string>
<string id="NoMenu">Kesalahan definisi menu, periksa instruksi.</string>
<string id="NoPhone" scope="glance">Tidak ada koneksi telepon.</string>
<string id="NoPhoneNoCache" scope="glance">Tidak ada koneksi telepon, tidak ada menu yang
di-cache.</string>

View File

@@ -40,6 +40,7 @@
dell'applicazione.</string>
<string id="NoInternet">Nessuna connessione Internet.</string>
<string id="NoJson">Nessun JSON ricevuto dalla richiesta HTTP.</string>
<string id="NoMenu">Errore di definizione del menu, controlla le istruzioni.</string>
<string id="NoPhone" scope="glance">Nessuna connessione telefonica.</string>
<string id="NoPhoneNoCache" scope="glance">Nessuna connessione telefonica, nessun menu memorizzato
nella cache.</string>
@@ -105,4 +106,4 @@
alla risoluzione dei problemi).</string>
<string id="SettingsWebhookId">(Solo lettura) L'ID WebHook creato dal dispositivo per gli
aggiornamenti del servizio in background. Potresti richiederlo per il debug.</string>
</strings>
</strings>

View File

@@ -15,7 +15,7 @@
<!--
Generated by Google Translate and gemini-2.5-flash from English to Japanese
Google翻訳とgemini-2.5-flashによって英語から日本語に生成されました
Google Translateとgemini-2.5-flashによって英語から日本語に生成されました
-->
<strings>
@@ -38,6 +38,7 @@
<string id="NoConfigUrl" scope="glance">アプリケーション設定に構成URLはありません。</string>
<string id="NoInternet">インターネット接続はありません。</string>
<string id="NoJson">JSONはHTTPリクエストから返されませんでした。</string>
<string id="NoMenu">メニュー定義エラー、手順を確認してください。</string>
<string id="NoPhone" scope="glance">電話接続はありません。</string>
<string id="NoPhoneNoCache" scope="glance">電話接続なし、キャッシュ済みメニューなし。</string>
<string id="NoResponse">応答なし、インターネット接続を確認してください</string>
@@ -56,7 +57,7 @@
<string id="WifiLtePrompt">Wi-Fi/LTE経由で実行しますか</string>
<string id="WifiLteExecutionTitle">Home Assistantに送信中。</string>
<string id="WifiLteExecutionDataError">受信したデータはありません。</string>
<!-- 設定GUIの場合、文字列は使用される順序である必要があります。 -->
<!--設定GUIの場合、文字列は使用される順序である必要があります。-->
<string id="SettingsSelect">選択...</string>
<string id="SettingsApiKey">Home AssistantのAPIキー。</string>
<string id="SettingsApiKeyPrompt">長寿命のアクセストークン。</string>

View File

@@ -15,7 +15,7 @@
<!--
Generated by Google Translate and gemini-2.5-flash from English to Korean
Google 번역 및 gemini-2.5-flash에 의해 영어에서 한국어로 생성됨
Google 번역 및 gemini-2.5-flash를 사용하여 영어에서 한국어로 생성됨
-->
<strings>
@@ -38,6 +38,7 @@
<string id="NoConfigUrl" scope="glance">앱 설정에 구성 URL이 없습니다.</string>
<string id="NoInternet">인터넷 연결 없음.</string>
<string id="NoJson">HTTP 요청에서 JSON이 반환되지 않았습니다.</string>
<string id="NoMenu">메뉴 정의 오류, 지침을 확인하세요.</string>
<string id="NoPhone" scope="glance">휴대폰 연결 없음.</string>
<string id="NoPhoneNoCache" scope="glance">휴대폰 연결 없음, 캐시된 메뉴 없음.</string>
<string id="NoResponse">응답 없음, 인터넷 연결 확인.</string>

View File

@@ -15,7 +15,7 @@
<!--
Generated by Google Translate and gemini-2.5-flash from English to Latvian
Tulkojis Google Translate un gemini-2.5-flash no angļu valodas uz latviešu valodu
Ģenerēts ar Google Translate un gemini-2.5-flash no angļu valodas uz latviešu valodu
-->
<strings>
@@ -38,6 +38,7 @@
<string id="NoConfigUrl" scope="glance">Lietojumprogrammas iestatījumos nav konfigurācijas URL.</string>
<string id="NoInternet">Nav interneta savienojuma.</string>
<string id="NoJson">HTTP pieprasījums neatgrieza JSON.</string>
<string id="NoMenu">Izvēlnes definīcijas kļūda, pārbaudiet instrukcijas.</string>
<string id="NoPhone" scope="glance">Nav tālruņa savienojuma.</string>
<string id="NoPhoneNoCache" scope="glance">Nav tālruņa savienojuma, nav kešotas izvēlnes.</string>
<string id="NoResponse">Nav atbildes, pārbaudiet interneta savienojumu</string>

View File

@@ -38,6 +38,7 @@
<string id="NoConfigUrl" scope="glance">Nėra konfigūracijos URL programos nustatymuose.</string>
<string id="NoInternet">Nėra interneto ryšio.</string>
<string id="NoJson">HTTP užklausa negrąžino JSON.</string>
<string id="NoMenu">Meniu apibrėžimo klaida, patikrinkite instrukcijas.</string>
<string id="NoPhone" scope="glance">Nėra telefono ryšio.</string>
<string id="NoPhoneNoCache" scope="glance">Nėra telefono ryšio, nėra meniu talpykloje.</string>
<string id="NoResponse">Jokio atsakymo, patikrinkite interneto ryšį</string>

View File

@@ -39,6 +39,7 @@
<string id="NoConfigUrl" scope="glance">Ingen konfigurasjons-URL i applikasjonsinnstillingene.</string>
<string id="NoInternet">Ingen internettforbindelse.</string>
<string id="NoJson">Ingen JSON returnert fra HTTP-forespørsel.</string>
<string id="NoMenu">Menydefinisjonsfeil, sjekk instruksjonene.</string>
<string id="NoPhone" scope="glance">Ingen telefonforbindelse.</string>
<string id="NoPhoneNoCache" scope="glance">Ingen telefonforbindelse, ingen hurtigbufret meny.</string>
<string id="NoResponse">Ingen svar, sjekk internettforbindelsen.</string>

View File

@@ -15,7 +15,7 @@
<!--
Generated by Google Translate and gemini-2.5-flash from English to Polish
Wygenerowano przez Tłumacza Google i gemini-2.5-flash z języka angielskiego na polski
Wygenerowano przez Google Translate i gemini-2.5-flash z angielskiego na polski
-->
<strings>
@@ -40,6 +40,7 @@
<string id="NoConfigUrl" scope="glance">Brak adresu URL konfiguracji w ustawieniach aplikacji.</string>
<string id="NoInternet">Brak połączenia internetowego.</string>
<string id="NoJson">Żądanie HTTP nie zwróciło danych JSON.</string>
<string id="NoMenu">Błąd definicji menu, sprawdź instrukcje.</string>
<string id="NoPhone" scope="glance">Brak połączenia telefonicznego.</string>
<string id="NoPhoneNoCache" scope="glance">Brak połączenia telefonicznego, brak buforowanego menu.</string>
<string id="NoResponse">Brak odpowiedzi, sprawdź połączenie internetowe</string>
@@ -101,4 +102,4 @@
przewodnik rozwiązywania problemów).</string>
<string id="SettingsWebhookId">(Tylko do odczytu) Identyfikator webhooka utworzony przez
urządzenie dla aktualizacji usługi w tle. Może być potrzebny do debugowania.</string>
</strings>
</strings>

View File

@@ -15,7 +15,7 @@
<!--
Generated by Google Translate and gemini-2.5-flash from English to Portuguese
Gerado por Google Translate e gemini-2.5-flash do inglês para o português
Gerado por Google Translate e gemini-2.5-flash de inglês para português
-->
<strings>
@@ -41,6 +41,7 @@
aplicativo.</string>
<string id="NoInternet">Sem conexão com a Internet.</string>
<string id="NoJson">Nenhum JSON retornado da solicitação HTTP.</string>
<string id="NoMenu">Erro de definição do menu, verifique as instruções.</string>
<string id="NoPhone" scope="glance">Sem conexão telefônica.</string>
<string id="NoPhoneNoCache" scope="glance">Sem conexão com o telefone, sem menu em cache.</string>
<string id="NoResponse">Sem resposta, verifique a conexão com a Internet</string>

View File

@@ -39,6 +39,7 @@
<string id="NoConfigUrl" scope="glance">Niciun URL de configurare în setările aplicației.</string>
<string id="NoInternet">Nicio conexiune la internet.</string>
<string id="NoJson">Niciun JSON nu a fost returnat de la cererea HTTP.</string>
<string id="NoMenu">Eroare de definire a meniului, verificați instrucțiunile.</string>
<string id="NoPhone" scope="glance">Nicio conexiune telefonică.</string>
<string id="NoPhoneNoCache" scope="glance">Nicio conexiune la telefon, niciun meniu în cache.</string>
<string id="NoResponse">Niciun răspuns, verificați conexiunea la internet.</string>

View File

@@ -38,6 +38,7 @@
<string id="NoConfigUrl" scope="glance">V nastaveniach aplikácie chýba konfiguračná adresa URL</string>
<string id="NoInternet">Žiadne pripojenie na internet.</string>
<string id="NoJson">Z požiadavky HTTP sa nevrátil žiadny JSON.</string>
<string id="NoMenu">Chyba definície ponuky, skontrolujte pokyny.</string>
<string id="NoPhone" scope="glance">Žiadne telefónne pripojenie.</string>
<string id="NoPhoneNoCache" scope="glance">Žiadne telefónne pripojenie, žiadne uložené menu.</string>
<string id="NoResponse">Žiadna odpoveď, skontrolujte pripojenie na internet</string>

View File

@@ -15,7 +15,7 @@
<!--
Generated by Google Translate and gemini-2.5-flash from English to Slovenian
Prevedeno z Google Prevajalnikom in gemini-2.5-flash iz angleščine v slovenščino
Prevedel Google Prevajalnik in gemini-2.5-flash iz angleščine v slovenščino
-->
<strings>
@@ -38,6 +38,7 @@
<string id="NoConfigUrl" scope="glance">V nastavitvah aplikacije ni URL konfiguracije.</string>
<string id="NoInternet">Brez internetne povezave.</string>
<string id="NoJson">Zahteva HTTP ni vrnila JSON-a.</string>
<string id="NoMenu">Napaka pri definiciji menija, preverite navodila.</string>
<string id="NoPhone" scope="glance">Brez telefonske povezave.</string>
<string id="NoPhoneNoCache" scope="glance">Brez telefonske povezave, brez predpomnjenega menija.</string>
<string id="NoResponse">Brez odgovora, preverite internetno povezavo</string>

View File

@@ -41,6 +41,7 @@
aplicación.</string>
<string id="NoInternet">Sin conexión a Internet.</string>
<string id="NoJson">No se recibió JSON de la solicitud HTTP.</string>
<string id="NoMenu">Error en la definición del menú, verifique las instrucciones.</string>
<string id="NoPhone" scope="glance">Sin conexión telefónica.</string>
<string id="NoPhoneNoCache" scope="glance">Sin conexión telefónica, sin menú en caché.</string>
<string id="NoResponse">Sin respuesta, verifique la conexión a Internet</string>

View File

@@ -39,6 +39,7 @@
<string id="NoConfigUrl" scope="glance">Ingen konfigurations-URL i applikationsinställningarna.</string>
<string id="NoInternet">Ingen internetanslutning.</string>
<string id="NoJson">Ingen JSON returnerades från HTTP-begäran.</string>
<string id="NoMenu">Menydefinitionfel, kontrollera instruktionerna.</string>
<string id="NoPhone" scope="glance">Ingen telefonanslutning.</string>
<string id="NoPhoneNoCache" scope="glance">Ingen telefonanslutning, ingen cachad meny.</string>
<string id="NoResponse">Inget svar, kontrollera internetanslutningen.</string>

View File

@@ -38,6 +38,7 @@
<string id="NoConfigUrl" scope="glance">ไม่มี URL การกำหนดค่าในการตั้งค่าแอปพลิเคชัน</string>
<string id="NoInternet">ไม่มีการเชื่อมต่ออินเทอร์เน็ต</string>
<string id="NoJson">ไม่มี JSON ส่งคืนจากคำขอ HTTP</string>
<string id="NoMenu">ข้อผิดพลาดในการกำหนดเมนู โปรดตรวจสอบคำแนะนำ</string>
<string id="NoPhone" scope="glance">ไม่มีการเชื่อมต่อโทรศัพท์</string>
<string id="NoPhoneNoCache" scope="glance">ไม่มีการเชื่อมต่อโทรศัพท์ ไม่มีเมนูแคช</string>
<string id="NoResponse">ไม่มีการตอบกลับ ตรวจสอบการเชื่อมต่ออินเทอร์เน็ต</string>

View File

@@ -15,7 +15,7 @@
<!--
Generated by Google Translate and gemini-2.5-flash from English to Turkish
Google Çeviri ve gemini-2.5-flash tarafından İngilizceden Türkçeye çevrilmiştir
Google Translate ve gemini-2.5-flash tarafından İngilizceden Türkçeye çevrilmiştir
-->
<strings>
@@ -38,6 +38,7 @@
<string id="NoConfigUrl" scope="glance">Uygulama ayarlarında yapılandırma URL'si yok.</string>
<string id="NoInternet">İnternet bağlantısı yok.</string>
<string id="NoJson">HTTP isteğinden JSON dönmedi.</string>
<string id="NoMenu">Menü tanım hatası, talimatları kontrol edin.</string>
<string id="NoPhone" scope="glance">Telefon bağlantısı yok.</string>
<string id="NoPhoneNoCache" scope="glance">Telefon bağlantısı yok, önbelleğe alınmış menü yok.</string>
<string id="NoResponse">Yanıt yok, İnternet bağlantısını kontrol edin</string>

View File

@@ -40,6 +40,7 @@
<string id="NoConfigUrl" scope="glance">Немає URL-адреси конфігурації в налаштуваннях програми.</string>
<string id="NoInternet">Немає підключення до Інтернету.</string>
<string id="NoJson">HTTP-запит не повернув JSON.</string>
<string id="NoMenu">Помилка визначення меню, перевірте інструкції.</string>
<string id="NoPhone" scope="glance">Немає підключення до телефону.</string>
<string id="NoPhoneNoCache" scope="glance">Немає підключення до телефону, немає кешованого меню.</string>
<string id="NoResponse">Немає відповіді, перевірте підключення до Інтернету.</string>

View File

@@ -38,6 +38,7 @@
<string id="NoConfigUrl" scope="glance">Không có URL cấu hình trong cài đặt ứng dụng.</string>
<string id="NoInternet">Không có kết nối internet.</string>
<string id="NoJson">Không có JSON được trả về từ yêu cầu HTTP.</string>
<string id="NoMenu">Lỗi định nghĩa menu, kiểm tra hướng dẫn.</string>
<string id="NoPhone" scope="glance">Không có kết nối điện thoại.</string>
<string id="NoPhoneNoCache" scope="glance">Không kết nối điện thoại, không có menu được lưu trong
bộ nhớ cache.</string>

View File

@@ -15,7 +15,7 @@
<!--
Generated by Google Translate and gemini-2.5-flash from English to Chinese (Simplified)
由 Google 翻译和 gemini-2.5-flash 从英语生成到简体中文
由 Google 翻译和 gemini-2.5-flash 从英语翻译为简体中文
-->
<strings>
@@ -38,6 +38,7 @@
<string id="NoConfigUrl" scope="glance">应用程序设置中没有配置 URL。</string>
<string id="NoInternet">没有互联网连接。</string>
<string id="NoJson">HTTP 请求未返回 JSON。</string>
<string id="NoMenu">菜单定义错误,请检查说明。</string>
<string id="NoPhone" scope="glance">没有手机连接。</string>
<string id="NoPhoneNoCache" scope="glance">没有手机连接,没有缓存菜单。</string>
<string id="NoResponse">没有回应,检查互联网连接</string>

View File

@@ -38,6 +38,7 @@
<string id="NoConfigUrl" scope="glance">應用程式設定中沒有配置 URL。</string>
<string id="NoInternet">沒有互聯網連接。</string>
<string id="NoJson">HTTP 請求未返回 JSON。</string>
<string id="NoMenu">選單定義錯誤,請檢查說明。</string>
<string id="NoPhone" scope="glance">沒有電話連接。</string>
<string id="NoPhoneNoCache" scope="glance">沒有電話連接,沒有已快取的選單。</string>
<string id="NoResponse">沒有回應,請檢查互聯網連接。</string>

View File

@@ -15,7 +15,7 @@
<!--
Generated by Google Translate and gemini-2.5-flash from English to Standard (Bahasa) Malay
Dijana oleh Google Translate dan gemini-2.5-flash dari Bahasa Inggeris ke Bahasa Melayu Standard (Bahasa)
Dijana oleh Google Translate dan gemini-2.5-flash dari Bahasa Inggeris ke Bahasa Melayu Standard (Bahasa).
-->
<strings>
@@ -38,6 +38,7 @@
<string id="NoConfigUrl" scope="glance">Tiada URL konfigurasi dalam tetapan aplikasi.</string>
<string id="NoInternet">Tiada sambungan internet.</string>
<string id="NoJson">Tiada JSON dikembalikan daripada permintaan HTTP.</string>
<string id="NoMenu">Ralat definisi menu, semak arahan.</string>
<string id="NoPhone" scope="glance">Tiada sambungan telefon.</string>
<string id="NoPhoneNoCache" scope="glance">Tiada sambungan telefon, tiada menu dicache.</string>
<string id="NoResponse">Tiada respons, periksa sambungan Internet.</string>

View File

@@ -32,6 +32,7 @@
<string id="NoConfigUrl" scope="glance">No configuration URL in the application settings.</string>
<string id="NoInternet">No Internet connection.</string>
<string id="NoJson">No JSON returned from HTTP request.</string>
<string id="NoMenu">Menu definition error, check the instructions.</string>
<string id="NoPhone" scope="glance">No Phone connection.</string>
<string id="NoPhoneNoCache" scope="glance">No phone connection, no cached menu.</string>
<string id="NoResponse">No Response, check Internet connection</string>

View File

@@ -218,6 +218,8 @@ class HomeAssistantApp extends Application.AppBase {
} else {
if (data == null) {
ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson) as Lang.String);
} else if (data.size() == 0) {
ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoMenu) as Lang.String);
} else {
buildMenu(data);
WatchUi.switchToView(mHaMenu, new HomeAssistantViewDelegate(false), WatchUi.SLIDE_IMMEDIATE);