Compare commits

...

26 Commits
v3.10 ... v3.11

Author SHA1 Message Date
Philip Abbey
2f76d68f1b 342 allow two user supplied http headers (#346)
This should enable enough headers for username and password type
situations.
2026-03-03 21:06:36 +00:00
Philip Abbey
53ed5083ce Merge branch 'main' into 342-allow-two-user-supplied-http-headers 2026-03-03 20:12:21 +00:00
Philip Abbey
124d949faa Changed the Glance behaviour and design to avoid out of memory errors (#344)
Store the smaller "glance" subsection of the JSON menu in Storage under
a new key (scStorageKeyGlance) and read the glance template from that
cache to prevent out-of-memory errors from large menus. Removed menu
status field from the Glance UI and simplified the status view to a
single API status line when no custom template is present. Documentation
and images updated to reflect changes.

Don't merge yet, I will test on my watch first.
2026-03-03 19:47:38 +00:00
Philip Abbey
ca854cab75 Create Venu2_Glance_good.png
Actually a replacement for the one deleted that is used in the App Store.
2026-03-01 15:22:07 +00:00
Philip Abbey
68e7761684 Merge branch 'main' into 343-glance-text-not-visible-on-venu-33s-works-on-one-out-8f-3-devices 2026-03-01 08:39:01 +00:00
Philip Abbey
00649653bb Update HISTORY.md 2026-03-01 08:35:31 +00:00
Philip Abbey
8893e596ec Update HomeAssistantNumericPicker.mc
Code tidy
2026-03-01 08:29:39 +00:00
Philip Abbey
e9bce71748 Refactor HomeAssistantNumericPicker for improved value parsing (#345)
ref
https://github.com/house-of-abbey/GarminHomeAssistant/issues/238#issuecomment-3941469731

fix numberpicker issue
refactored with Amazon Q
tested on Vivoactive 5 (simulator and device)
tested on Venu2 (simulator only)
2026-03-01 08:24:58 +00:00
poaudet
adc04ea9a2 Refactor HomeAssistantNumericPicker to improve value parsing and initialization 2026-02-28 16:50:28 -05:00
Philip Abbey
fdf73563a3 Update HTTP_Headers.md 2026-02-28 19:56:18 +00:00
Philip Abbey
600656b90c Settings screen captures 2026-02-28 19:33:21 +00:00
poaudet
7daa07f52f first commit 2026-02-28 14:15:09 -05:00
Philip Abbey
6721a13e99 Update HomeAssistantApp.mc
Faster custom Glance update.
2026-02-28 18:51:42 +00:00
Philip Abbey
ea145424ee Revise Cloudflare Access example
Signed-off-by: Philip Abbey <philipabbey@users.noreply.github.com>
2026-02-28 18:50:20 +00:00
Philip Abbey
79ede44ea1 Update HTTP_Headers.md
Added new example for two user supplied HTTP headers, subject to checking by the author of the issue. (Missed off the previous commit this this file.)
2026-02-28 18:21:34 +00:00
Philip Abbey
b6cec5a6d4 Update Glance.md
Fixed typo.
2026-02-28 18:10:49 +00:00
Philip Abbey
75ccf7dc01 Merge branch 'main' into 343-glance-text-not-visible-on-venu-33s-works-on-one-out-8f-3-devices 2026-02-28 18:09:43 +00:00
Philip Abbey
3386077e6f Merge branch 'main' into 342-allow-two-user-supplied-http-headers 2026-02-28 18:02:47 +00:00
Philip Abbey
6596b5fa5d Markdown documentation linting 2026-02-28 18:01:50 +00:00
Philip Abbey
1568aded26 Update HTTP_Headers.md
Added new example for two user supplied HTTP headers, subject to checking by the author of the issue.
2026-02-28 18:00:45 +00:00
Philip Abbey
651c9462e0 Added second HTTP Header field
NB. Need to update the translations in Github actions again.
2026-02-28 17:46:13 +00:00
Philip Abbey
b94343de4f Revise troubleshooting guide for API and SSL issues
Updated troubleshooting documentation for API testing and SSL certificate issues, including clearer instructions and formatting improvements.

Signed-off-by: Philip Abbey <philipabbey@users.noreply.github.com>
2026-02-28 16:47:20 +00:00
philipabbey
3e85b695ec Apply automatic changes 2026-02-28 16:26:58 +00:00
Philip Abbey
b29ee457ca Update strings.xml
Need to run translation on Github actions as I can't get the script to run locally.
2026-02-28 16:23:53 +00:00
Philip Abbey
cc2fc27532 Changed the Glance behaviour and design to avoid out of memory errors
Store the smaller "glance" subsection of the JSON menu in Storage under a new key (scStorageKeyGlance) and read the glance template from that cache to prevent out-of-memory errors from large menus. Removed menu status field from the Glance UI and simplified the status view to a single API status line when no custom template is present. Documentation and images updated to reflect changes.
2026-02-27 18:44:54 +00:00
Philip Abbey
188fb8feff Update Actions.md
Additional example and amended example.
2026-02-06 10:15:39 +00:00
60 changed files with 329 additions and 353 deletions

1
.gitignore vendored
View File

@@ -7,3 +7,4 @@ Thumbs.db
source/ClientId.mc
# Gemini API key for automated translations
gemini_api_key.txt
developer_key

View File

@@ -22,7 +22,7 @@ Thank you to all those who have provided positive feedback, code and language tr
> [!IMPORTANT]
> **The intended audience for this application are those comfortable with configuring a HomeAssistant** (e.g. editing the YAML configuration files) and debugging why URLs don't work. It does not require programming skills, but the menu is configured via JSON which feels like "coding" (more like "describing"). If you are not comfortable with this relatively low level of configuration, you may like to try other Garmin applications instead.
>
> [!IMPORTANT]
> Remember, you are expecting to define a customised menu making use of several options using your Home Assistant's custom entities on a small (portable) device. **There is no "_simple_" way to configure the menu with the ever increasing options demanded by the user community.** Was your Home Assistant trivial to setup? No!
>
@@ -392,9 +392,8 @@ Two words. Perhaps too lazy to consider why others gave rave reviews and ponder
<img src="images/etiquette/2026-01-21 GHA_Bad_Review.png" width="70%" title="Two words">
<hr>
---
Blaming the wrong application. Just rude. Please get your facts straight. And it was such a simple workaround for the Garmin Connect IQ app bug.
<img src="images/etiquette/2025-11-19%20GHA_Bad_Review.png" width="85%" title="Misplaced blame">
s

View File

@@ -42,7 +42,7 @@
| 2.27 | Trivial bug fix for the glance view to prevent the "Unconfigured" result being erroneously displayed because the settings were not yet pulled from persistent storage. |
| 2.28 | Added support for Vivoactive 6 device which also required an SDK update to 8.1.0. |
| 2.29 | Added support for three new devices, Forerunners 570 42mm & 47mm and 970. |
| 2.30 | <img src="images/Venu2_glance_default.png" width="200" title="Default Glance"/><br/>Extensive re-work of the [Glance](examples/Glance.md) view, including the ability to customise it with a user supplied template. |
| 2.30 | <img src="images/Venu2_glance2.png" width="200" title="Default Glance"/><br/>Extensive re-work of the [Glance](examples/Glance.md) view, including the ability to customise it with a user supplied template. |
| 2.31 | Adding [two new options](./examples/Actions.md#exit-on-tap) to the menu items: 1) The ability to disable a menu item, e.g. temporarily for seasonal changes, 2) The option to exit after a menu item has been select. |
| 2.32 | Bug fix for a breaking change extracting options caused by the need to rearrange function parameters for an [annoying compiler error](https://github.com/house-of-abbey/GarminHomeAssistant/issues/253). |
| 3.0 | First version with the ability to use [Wi-Fi or LTE](Wi-Fi.md) instead of Bluetooth but with limited functionality, thanks to [@vincentezw](https://github.com/vincentezw). |
@@ -55,4 +55,5 @@
| 3.7 | Bug fix for `numeric` menu items not working over Wi-Fi & LTE. |
| 3.8 | Added icon for `numeric` menu items and revised icons in general. |
| 3.9 | Small update to warn users with empty menu definitions to read the instructions! |
| 3.10 | Bug avoidance for a fatal "out of memory error" in the glance when caching the menu to [`Storage`](https://developer.garmin.com/connect-iq/api-docs/Toybox/Application/Storage.html). This is now delayed until the main application is opened. Added support for two new devices, D2 Mach 2 and eTrex Touch. |
| 3.10 | Bug avoidance for a fatal _"Error: Out Of Memory Error"_ in the glance when caching the menu to [`Storage`](https://developer.garmin.com/connect-iq/api-docs/Toybox/Application/Storage.html). This is now delayed until the main application is opened. Added support for two new devices, D2 Mach 2 and eTrex Touch. |
| 3.11 | <img src="images/Venu2_glance_default.png" width="200" title="Default Glance"/><br/>Better handling of menus larger than the Glance view can handle. As a result the Glance can no longer verify the availability of the JSON menu as fetching it might cause an _"Error: Out Of Memory Error"_. Provide two user supplied HTTP Headers. Bug fix for the numeric picker. |

View File

@@ -20,6 +20,12 @@ If you don't know why you need these, leave them empty and ignore.
Make the key strong enough!
### Cloudflare Access
[Cloudflare Access](https://www.cloudflare.com/en-gb/sase/products/access/) is an authentication mechanism Cloudflare presents to HTTP requests before allowing access to the resources behind the requested URL. As a brief and incomplete guide, if you protect your HomeAssistant instance with their Zero Trust Suite then under _Access Controls_ you can create a _service token_. Note down the `Client-Id` and a `Client-Secret` which can be used as HTTP headers (e.g. `cf-access-client-id` and `cf-access-client-secret` respectively). Both of these HTTP headers must be presented by the GarminHomeAssistant application for API calls to reach your HomeAssistant instance hosted by Cloudflare, hence the pair of settings for HTTP Headers shown above. To secure a specific domain in Cloudflare you will need to add a _Self-hosted application_ and create a new _Access policy_ with the _Selector_ set to _Service Token_ (the newly create token name), and the _Action_ set to _Service Auth_ (not _Allow_).
Please note that the GarminHomeAssistant settings do not attempt to hide your password value with '*' characters, it should be private enough on your personal phone Connect IQ app.
## Support
**None!**
@@ -30,7 +36,6 @@ The authors of the Garmin HomeAssistant application do not use, and hence do not
With thanks to Lars Pöpperl ([@tispokes](https://github.com/tispokes)) for contributing to this solution.
## References
* [Using Cloudflare ZeroTrust and mTLS to securely access HomeAssistant via the internet](https://kcore.org/2024/06/28/using-cloudflare-zerotrust-and-mtls-with-home-assistant-via-the-internet/)

View File

@@ -11,6 +11,7 @@ The application is designed around a simple scrollable menu where menu items hav
**The intended audience for this application are those comfortable with configuring a HomeAssistant** (e.g. editing the YAML configuration files) and debugging why URLs don't work. It does not require programming skills, but the menu is configured via JSON which feels like "coding" (more like "describing"). If you are not comfortable with this relatively low level of configuration, you may like to try other Garmin applications instead.
**If you are struggling with getting the application to work, please consult the [troubleshooting guide](TroubleShooting.md) first.** Please also be aware of the [etiquette](Etiquette.md) the developers expect before:
1. Reaching out for help, in short read the instructions.
2. Reviewing the application publicly, in short be sure of your claims.
@@ -33,7 +34,7 @@ As of version 2.0, there are now two installable versions. For older devices bef
| Version | Explanation |
|------------------------|-------------|
| Application (original) | For newer devices that allow glance views in their applications, e.g. Venu 2, the GarminHomeAssistant application can be started either from a glance or from the list of applications and activities. Head over to the [GarminHomeAssistant](https://apps.garmin.com/en-US/apps/61c91d28-ec5e-438d-9f83-39e9f45b199d) application page on the [Connect IQ application store](https://apps.garmin.com/en-US/) to download the application. The application can be started two different ways, either from the glance in the carousel, or as an application from the list of applications & activities. With the latter, it is worth marking the application as a favourite.<br/><img src="images/Venu2_app_start.png" width="200" title="Venu 2" style="margin:5px"/><img src="images/Vivoactive3_app_start.jpg" width="200" title="Vivoactive 3" style="margin:5px"/><br/>If you place the application on your list of favourites, and rearrange it to appear near the top, then the item is just one button press away from the watch face. This second picture here shows the application menu on a Vivoactive 3 watch.<br/><img src="images/Venu2_glance_default.png" width="200" title="Venu 2" style="margin:5px"/><br/>On newer watches, you can also start the application from the glance carousel. The glance view here typically displays some trackable status, so ours provides some early indication of availability. Older watches will still allow you to start this application from the list of applications and activities. |
| Application (original) | For newer devices that allow glance views in their applications, e.g. Venu 2, the GarminHomeAssistant application can be started either from a glance or from the list of applications and activities. Head over to the [GarminHomeAssistant](https://apps.garmin.com/en-US/apps/61c91d28-ec5e-438d-9f83-39e9f45b199d) application page on the [Connect IQ application store](https://apps.garmin.com/en-US/) to download the application. The application can be started two different ways, either from the glance in the carousel, or as an application from the list of applications & activities. With the latter, it is worth marking the application as a favourite.<br/><img src="images/Venu2_app_start.png" width="200" title="Venu 2" style="margin:5px"/><img src="images/Vivoactive3_app_start.jpg" width="200" title="Vivoactive 3" style="margin:5px"/><br/>If you place the application on your list of favourites, and rearrange it to appear near the top, then the item is just one button press away from the watch face. This second picture here shows the application menu on a Vivoactive 3 watch.<br/><img src="./images/Venu2_glance_custom.png" width="200" title="Venu 2" style="margin:5px"/><br/>On newer watches, you can also start the application from the glance carousel. The glance view here typically displays some trackable status, so ours provides some early indication of API availability or something custom as shown here. Older watches will still allow you to start this application from the list of applications and activities. |
| Widget | **"Maintenance only mode"** so no new features will be added to this version.<br>For older devices that use widgets, e.g. Venu (1) as opposed to applications with "glances", the GarminHomeAssistant application can instead be started from the widget carousel. This is a separate item in the Connect IQ AppStore and with this installation, the application will no longer appear in the list of applications and activities. Head over to the [GarminHomeAssistant](https://apps.garmin.com/en-US/apps/) widget page on the [Connect IQ application store](https://apps.garmin.com/en-US/) to download the widget.<br/><img src="images/Venu_Widget_sim.png" width="200" title="Venu 2" style="margin:5px"/><br/>Typically the widget view implements something similar to the glance view, e.g. status, and exists in a widget carousel to allow you to select an application to launch.<br>**Please note that memory in widgets is more limited than applications. This means a large menu definition can crash the widget without the code catching the error.**<br> This version was born out of the application version and from Ver 2.0 shared the same source code repository until Ver 2.8 when they were [separated](https://github.com/house-of-abbey/GarminHomeAssistantWidget) to allow the application version to take advantage of its increase memory availability. |
### Features
@@ -62,6 +63,7 @@ The following table lists the differences in functionality between the two. The
> Remember, you are expecting to define a customised menu making use of several options using your Home Assistant's custom entities on a small (portable) device. **There is no "_simple_" way to configure the menu with the ever increasing options demanded by the user community.** Was your Home Assistant trivial to setup? No!
>
> Therefore as developers we have two options:
>
> 1. Assistance via menu driven configuration with nested menus on a small screen whose implementation would expand the code beyond the capacity of smaller devices, or
> 2. As we have opted here, for assistance via some external configuration that is driven by code and can be authored using a more fully functional desktop or laptop PC.
>
@@ -314,6 +316,7 @@ A future move to v3.x will remove support for all deprecated JSON elements to si
## Editing the JSON file
You have options. The first is what we use.
1. **Best!** Use the GarminHomeAssistant [Web-based Editor](https://house-of-abbey.github.io/GarminHomeAssistant/web/) which includes `entity` and `action` name completion and validation by fetching data from your own HomeAssistant instance. _Pretty nifty eh?_ The other method listed below do not add this convenience and checking. NB. This has been tested in Microsoft Edge, Chrome and Firefox.
2. Use the [Studio Code Server](https://community.home-assistant.io/t/home-assistant-community-add-on-visual-studio-code/107863) addon for HomeAssistant. You can then edit your JSON file in place.
3. Locally installed VSCode, or if not installed, try
@@ -369,6 +372,7 @@ You may choose to cache your menu definition on your device in order to reduce t
**Summary:** The two cache options are therefore distinct, the **first is a manual** forced refresh (the old way). The menu is refreshed on start up and no restart is required. The **second enables automatic checking** after starting and after presenting a usable menu with no extra delay but then any detected changes require a restart.
Whilst it would be a smoother experience, there are no plans to make the menu definition update dynamically recreate the rendered menu items without a restart because:
1. Re-rendering the menu could change the selected item just as you action it.
2. V3.3 proved that older devices are now reaching their memory limits. If you have an old device with limited memory to spare you will probably find the App disables the automatic method for you. If your device crashes with this option turned on, best turn it off manually and let me know via a [Github issue](https://github.com/house-of-abbey/GarminHomeAssistant/issues). This will allow us to fine tune the conditions for insufficient memory. We will then ask you to perform a [small task to retrieve the debug information](https://developer.garmin.com/connect-iq/core-topics/debugging/) we need about memory usage.
3. Restarting is simple for the user and simpler for the code.

View File

@@ -117,6 +117,7 @@ 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. 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.
@@ -125,13 +126,10 @@ There's an online way of testing the API URL too, thanks to [REQBIN](https://req
#### SSL Certificate Chain
With thanks to [@ziceva](https://github.com/ziceva) for solving this problem. The symptoms are:
1. Using an API URL with SSL (HTTPS), the [web-based editor](https://house-of-abbey.github.io/GarminHomeAssistant/web/) running in a browser on the same phone running Garmin Connect works well.
2. The exact same configuration is set in the Garmin HomeAssistant application.
3. The Garmin HomeAssistant application reports:
```
API: not available
Menu: not available
```
3. The Garmin HomeAssistant application reports neither the API nor the menu are available.
**Solution: Make sure you use a _full chain_ certificate in your HTTPS proxy as some watches might be unable to validate the site certificate alone.**
@@ -147,7 +145,6 @@ To verify if you have this issue you can use a tool like [SSL Shoppers's SSL Che
![Full Chain Certificate](images/HTTPS_full_chain.png)
### Top Problems
1. Failure to copy & paste keys and URLs leading to minor and hard to see errors in strings, even with protestations they are the same! (No they weren't...)
@@ -158,17 +155,11 @@ To verify if you have this issue you can use a tool like [SSL Shoppers's SSL Che
The [editor](https://house-of-abbey.github.io/GarminHomeAssistant/web/) provides the following functions:
1. Syntax highlighting
2. Schema checking
![Schema checking](images/editor/schema_check.png)
3. Entity name completion
![Entity name completion](images/editor/entity_name_completion.png)
4. Rendering previews, to aid HA 'template' creation
![Syntax highlightingL](images/editor/template_preview1.png)
![Syntax highlightingL](images/editor/template_preview2.png)
@@ -185,6 +176,7 @@ On (1) you will initially be presented with the following message. Please do not
<div style="margin:30px;padding:20px;background-color:lightgrey;border:1px solid black;border-radius: 10px;">
# GarminHomeAssistant Web Editor
This is the web editor for the GarminHomeAssistant watch app, it offers enhanced schema checking and validation over the original JSON schema by using the HomeAssistant API to create a schema based on your HomeAssistant configuration.
This editor makes use of the same credentials as the watch app (these can be pasted in the top bar of this page). However in order for this editor to work, you will need to amend the CORS settings of your HomeAssistant instance. Add this to your configuration.yaml file:
@@ -215,7 +207,7 @@ For directions on how to write your menu.json file, please see the README in the
For this you will need to have already got the main application or widget working with a menu in order to prove that the API calls are successful. We have proven this works with both our home brew infrastructure as well as Nabu Casa. Now with a script similar to one of the following two, you should be able to fake the watch API call and verify receipt by HomeAssistant.
#### Battery: Linux, MacOS, UNIX, Cygwin etc
### Battery: Linux, MacOS, UNIX, Cygwin etc
Assume a file called: `send_battery.bash`
@@ -248,13 +240,13 @@ curl -s -X POST \
Execute:
```
```text
$ ./send_battery.bash 45 1
```
The output looks like this:
```
```text
Battery Level = 45
Battery Charging? = true
@@ -315,13 +307,13 @@ pause
Execute:
```
```text
> home_assistant_battery_level.cmd 41 1
```
The output looks like this:
```
```text
"Battery Level = 41"
"Battery Charging? = true"
@@ -345,7 +337,7 @@ There's an online way of testing the API URL too, thanks to [REQBIN](https://req
URL for copy & paste:
```
```text
https://<Your Domain>/api/webhook/<Your Webhook ID>
```
@@ -399,7 +391,7 @@ As a desperate measure to assist with debugging the HomeAssistant Application, y
The figure above shows how to find the file on Windows by attaching your watch by USB cable. Inside the `CIQ_LOG.YML` file there are often multiple entries, each looking like this:
```
```text
Error: Unexpected Type Error
Details: 'Failed invoking <symbol>'
Time: 2024-08-30T12:00:25Z

View File

@@ -18,7 +18,7 @@ With version 3.0 onwards the application now includes the ability to temporarily
5. On some Garmin devices, the HTTPS handshake is performed using **TLS 1.2**. If your server or proxy enforces a higher minimum (e.g., TLS 1.3), you will encounter an SSL handshake error with the message:
```
```text
HTTP request returned error code = 0
```

View File

@@ -1,9 +1,8 @@
[Home](../README.md) | [Switches](Switches.md) | [Actions](Actions.md) | [Templates](Templates.md) | [Numeric](Numeric.md) | [Glance](Glance.md) | [Background Service](../BackgroundService.md) | [Wi-Fi](../Wi-Fi.md) | [HTTP Headers](../HTTP_Headers.md) | [Trouble Shooting](../TroubleShooting.md) | [Version History](../HISTORY.md)
# Actions
A simple example using a scene as a `tap` menu item.
Two simple examples using a scene and a cover as `tap` menu items.
```json
{
@@ -14,6 +13,16 @@ A simple example using a scene as a `tap` menu item.
"action": "scene.turn_on"
}
},
{
"entity":"cover.patio_shutter",
"name":"Patio Door Shutter",
"type":"tap",
"content":"{{state_translated('cover.patio_shutter')}} - {{state_attr('cover.patio_shutter', 'current_position')}}",
"tap_action":{
"action":"cover.toggle",
"confirm":true
}
}
```
Any menu item with an action (`tap`, `template`, or `toggle`), may have a confirmation view added. For consistency this is always done via the `tap_action` JSON object, even though for a `toggle` menu item there will only ever be a single field inside. For the `toggle` menu item, the confirmation is presented on both `on` and `off` directions. There is no option for asymmetry, i.e. only in one direction.
@@ -30,15 +39,15 @@ For example:
```json
{
"entity": "switch.garage_door",
"name": "Garage Door",
"entity": "switch.flood_lights",
"name": "Flood Lights",
"type": "toggle",
"tap_action": {
"confirm": true
}
}
```
The `confirm` field may contain a string instead of a Boolean in order to provide a custom message to display instead of the default "Sure?" text.
```json

View File

@@ -2,17 +2,15 @@
# Glance
Since [version 2.30](../History.md), it is possible to ovverride the text displayed on the Glance view. This page explains how to customise the text.
Since [version 2.30](../History.md), it is possible to override the text displayed on the Glance view. This page explains how to customise the text.
## Status View
## Default View
The default view has always been to display the status of the menu and API availability to indicate if there's a problem. This view has now been updated to be more colourful.
The status view displays the accessibility of HomeAssistant API to indicate if there's a problem.
<img src="../images/Venu2_glance_default.png" width="200" title="Venu 2 Default Glance"/>
When either the API or the menu file is inaccessible, the fields will turn red.
When API is inaccessible the field will turn red.
## Customised View
@@ -45,9 +43,9 @@ For example:
}
```
You may make this as complicated as you like! But you have limited space and only ASCII text characters. **It is best to turn on menu caching in order to speed up the display of the template**. The display is then nearly instantaneous.
The 'status' view will persist showing until the API becomes available as without the API the custom template cannot be evaluated.
The default view will persist showing until the errors are resolved. In order to extract the custom glance template both the menu and the API are required. So it is logical that the two tests must pass first. The exception here is if the menu is cached, in which case only the API needs to pass.
You may make this as complicated as you like! But you have limited space and only ASCII text characters. **It is essential to turn on menu caching in order to display of the template**. This is a change in v3.11 where multiple users are now making larger JSON menus than was originally envisaged for this watch application. As a result the Glance view would fail with an untrapable (fatal) _"Error: Out Of Memory Error"_. A work around is to pull out the glance subsection of the menu and cache that separately during execution of the full application, but that means any changes to the customised Glance view do not show until after the full application has been run.
> [!IMPORTANT]
> Sadly what you cannot do is use special characters like: 🌞🔋⛅🪫. Whilst these do display in menu items, they do not seem to work on the Glance view. We really like them, so have tried but failed. Only ASCII text appears to be supported by the Garmin Connect IQ SDK's Glance View. This is not something we have any control over, please do not request this to be "fixed".
@@ -68,13 +66,12 @@ It is possible to revert to the default glance content without deleting the temp
So the glance view object has a `type` field with two possible values: `info` and `status`. When the type is `status` the `content` field is not required.
## Displayed Errors
The following shows the default glance when the menu file is not available at the specified URL.
The following shows the status Glance view when the API not available at the specified URL.
<img src="../images/Venu2_glance_no_menu.png" width="200" title="Venu 2 Glance showing errors"/>
<img src="../images/Venu2_glance_no_api.png" width="200" title="Venu 2 Glance showing errors"/>
Once the custom glance template has been retrieved and evaluated the display will change. Should the connectivity to your HomeAssistant then be lost, e.g. you move out of range of your phone, the glance reflects this in the colour of the residual two rectangles. The top one remains an indicator for the API, and the bottom rectangle remains an indicator for the menu availability, reflecting the original placement in the default glance view that has now been replaced.
It is possible to loose connectivity with your HomeAssistant API after connecting and evaluating the Glance template. When the API connection is re-established, the Glance view will update.
<img src="../images/Venu2_glance_no_bt.png" width="200" title="Venu 2 Glance showing lost connectivity"/>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 720 KiB

After

Width:  |  Height:  |  Size: 718 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 15 KiB

BIN
images/Venu2_glance2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 94 KiB

View File

@@ -15,7 +15,7 @@
<!--
Generated by Google Translate and gemini-2.5-flash from English to Arabic
تم الإنشاء بواسطة ترجمة Google وgemini-2.5-flash من الإنجليزية إلى العربية
تم الإنشاء بواسطة ترجمة Google و gemini-2.5-flash من الإنجليزية إلى العربية
-->
<strings>
@@ -84,8 +84,6 @@
<string id="SettingsTextAlign">محاذاة القائمة: لليسار (إيقاف) أو لليمين (تشغيل).</string>
<string id="SettingsLeftToRight">من اليسار إلى اليمين</string>
<string id="SettingsRightToLeft">من اليمين إلى اليسار</string>
<string id="SettingsWidgetStart">(عنصر واجهة المستخدم فقط) ابدأ التطبيق تلقائيًا من عنصر واجهة
المستخدم دون انتظار النقر.</string>
<string id="SettingsEnableBatteryLevel">تمكين خدمة الخلفية لإرسال مستوى بطارية الجهاز والموقع
وبيانات النشاط (إذا كانت مدعومة) إلى Home Assistant.</string>
<string id="SettingsBatteryLevelRefreshRate">معدل التحديث (بالدقائق) الذي يجب أن تكرر فيه خدمة
@@ -93,8 +91,10 @@
<string id="SettingsUserHttpHeader">رأس HTTP مقدم من المستخدم</string>
<string id="SettingsUserHttpHeaderDescription">تتطلب بعض عمليات تثبيت Home Assistant تحديد رأس
HTTP مخصص لكي تعمل.</string>
<string id="SettingsUserHttpHeaderName">رأس HTTP مقدم من المستخدم: الاسم</string>
<string id="SettingsUserHttpHeaderValue">رأس HTTP مقدم من المستخدم: القيمة</string>
<string id="SettingsUserHttpHeader1Name">رأس HTTP مقدم من المستخدم 1: الاسم</string>
<string id="SettingsUserHttpHeader1Value">رأس HTTP مقدم من المستخدم 1: القيمة</string>
<string id="SettingsUserHttpHeader2Name">رأس HTTP مقدم من المستخدم 2: الاسم</string>
<string id="SettingsUserHttpHeader2Value">رأس HTTP مقدم من المستخدم 2: القيمة</string>
<string id="SettingsClearWebhookId">أعد الاتصال بـ Home Assistant (مسح معرف Webhook، انظر دليل
استكشاف الأخطاء وإصلاحها).</string>
<string id="SettingsWebhookId">(للقراءة فقط) معرف Webhook الذي تم إنشاؤه بواسطة الجهاز لتحديثات

View File

@@ -76,13 +76,14 @@
<string id="SettingsTextAlign">Наляво (изключено) или вдясно (включено) изравняване на менюто.</string>
<string id="SettingsLeftToRight">Отляво надясно</string>
<string id="SettingsRightToLeft">Отдясно наляво</string>
<string id="SettingsWidgetStart">(Само при джаджа) Приложението се стартира автоматично от джаджата, без да се чака докосване.</string>
<string id="SettingsEnableBatteryLevel">Активиране на фоновата услуга за изпращане на нивото на батерията на устройството, местоположението и (ако се поддържа) данни за активност към Home Assistant.</string>
<string id="SettingsBatteryLevelRefreshRate">Скоростта на опресняване (в минути), при която фоновата услуга трябва да повтаря изпращането на данни.</string>
<string id="SettingsUserHttpHeader">Потребителска HTTP заглавка</string>
<string id="SettingsUserHttpHeaderDescription">Някои инсталации на Home Assistant изискват специфицирането на персонализирана HTTP заглавка, за да функционират.</string>
<string id="SettingsUserHttpHeaderName">Потребителска HTTP заглавка: Име</string>
<string id="SettingsUserHttpHeaderValue">Потребителска HTTP заглавка: Стойност</string>
<string id="SettingsUserHttpHeader1Name">Потребителска HTTP заглавка 1: Име</string>
<string id="SettingsUserHttpHeader1Value">Потребителска HTTP заглавка 1: Стойност</string>
<string id="SettingsUserHttpHeader2Name">Потребителска HTTP заглавка 2: Име</string>
<string id="SettingsUserHttpHeader2Value">Потребителска HTTP заглавка 2: Стойност</string>
<string id="SettingsClearWebhookId">Свържете се отново с Home Assistant (изчистване на Webhook ID, вижте ръководството за отстраняване на неизправности).</string>
<string id="SettingsWebhookId">(Само за четене) Webhook ID, създаден от устройството за актуализации на фоновите услуги. Може да ви е необходим за отстраняване на грешки.</string>
</strings>

View File

@@ -76,13 +76,14 @@
<string id="SettingsTextAlign">Vlevo (vypnuto) nebo vpravo (zapnuto) zarovnání nabídky.</string>
<string id="SettingsLeftToRight">Zleva doprava</string>
<string id="SettingsRightToLeft">Vpravo doleva</string>
<string id="SettingsWidgetStart">(Pouze widget) Automatické spuštění aplikace z widgetu bez čekání na klepnutí.</string>
<string id="SettingsEnableBatteryLevel">Povolit službě na pozadí odesílat úroveň baterie zařízení, jeho polohu a (pokud je podporováno) údaje o aktivitě do Home Assistant.</string>
<string id="SettingsBatteryLevelRefreshRate">Frekvence aktualizace (v minutách), s jakou má služba na pozadí opakovaně odesílat data.</string>
<string id="SettingsUserHttpHeader">Uživatelská hlavička HTTP</string>
<string id="SettingsUserHttpHeaderDescription">Některé instalace Home Assistant vyžadují specifikaci vlastní hlavičky HTTP pro správnou funkci.</string>
<string id="SettingsUserHttpHeaderName">Uživatelská hlavička HTTP: Název</string>
<string id="SettingsUserHttpHeaderValue">Uživatelská hlavička HTTP: Hodnota</string>
<string id="SettingsUserHttpHeader1Name">Uživatelská hlavička HTTP 1: Název</string>
<string id="SettingsUserHttpHeader1Value">Uživatelská hlavička HTTP 1: Hodnota</string>
<string id="SettingsUserHttpHeader2Name">Uživatelská hlavička HTTP 2: Název</string>
<string id="SettingsUserHttpHeader2Value">Uživatelská hlavička HTTP 2: Hodnota</string>
<string id="SettingsClearWebhookId">Znovu se připojte k Home Assistant (vymazat ID Webhooku, viz příručka pro odstraňování problémů).</string>
<string id="SettingsWebhookId">(Pouze pro čtení) ID Webhooku vytvořené zařízením pro aktualizace služby na pozadí. Možná to budete potřebovat pro ladění.</string>
</strings>

View File

@@ -15,7 +15,7 @@
<!--
Generated by Google Translate and gemini-2.5-flash from English to Danish
Genereret af Google Translate og gemini-2.5-flash fra engelsk til dansk
Genereret af Google Oversæt og gemini-2.5-flash fra engelsk til dansk
-->
<strings>
@@ -76,13 +76,14 @@
<string id="SettingsTextAlign">Venstre (fra) eller højre (til) menujustering.</string>
<string id="SettingsLeftToRight">Venstre til højre</string>
<string id="SettingsRightToLeft">Højre til venstre</string>
<string id="SettingsWidgetStart">(Kun widget) Start automatisk applikationen fra widgetten uden at vente på et tryk.</string>
<string id="SettingsEnableBatteryLevel">Aktivér baggrundstjenesten til at sende enhedens batteriniveau, lokation og (hvis understøttet) aktivitetsdata til Home Assistant.</string>
<string id="SettingsBatteryLevelRefreshRate">Opdateringshastigheden (i minutter), hvormed baggrundstjenesten skal gentage afsendelse af data.</string>
<string id="SettingsUserHttpHeader">Brugerdefineret HTTP-header</string>
<string id="SettingsUserHttpHeaderDescription">Nogle Home Assistant-installationer kræver angivelse af en brugerdefineret HTTP-header for at fungere.</string>
<string id="SettingsUserHttpHeaderName">Brugerdefineret HTTP-header: Navn</string>
<string id="SettingsUserHttpHeaderValue">Brugerdefineret HTTP-header: Værdi</string>
<string id="SettingsUserHttpHeader1Name">Brugerdefineret HTTP-header 1: Navn</string>
<string id="SettingsUserHttpHeader1Value">Brugerdefineret HTTP-header 1: Værdi</string>
<string id="SettingsUserHttpHeader2Name">Brugerdefineret HTTP-header 2: Navn</string>
<string id="SettingsUserHttpHeader2Value">Brugerdefineret HTTP-header 2: Værdi</string>
<string id="SettingsClearWebhookId">Opret forbindelse igen til Home Assistant (ryd Webhook-ID, se fejlfindingsguide).</string>
<string id="SettingsWebhookId">(Kun læsning) Webhook-ID'et oprettet af enheden til opdateringer fra baggrundstjenesten. Du kan få brug for dette til fejlfinding.</string>
</strings>

View File

@@ -69,12 +69,13 @@
<string id="SettingsTextAlign">Menüausrichtung: Links (aus) oder Rechts (ein).</string>
<string id="SettingsRightToLeft">Von rechts nach links</string>
<string id="SettingsWidgetStart">(Nur Widget) App automatisch aus dem Widget starten, ohne auf Tippen zu warten.</string>
<string id="SettingsEnableBatteryLevel">Hintergrunddienst aktivieren, um Akkustand, Standort und (falls unterstützt) Aktivitätsdaten an Home Assistant zu senden.</string>
<string id="SettingsBatteryLevelRefreshRate">Intervall (in Minuten), in dem der Hintergrunddienst die Daten erneut senden soll.</string>
<string id="SettingsUserHttpHeader">Zusätzlicher HTTP-Header</string>
<string id="SettingsUserHttpHeaderDescription">Einige Home Assistant-Installationen erfordern die Angabe eines benutzerdefinierten HTTP-Headers, um zu funktionieren.</string>
<string id="SettingsUserHttpHeaderName">Zusätzlicher HTTP-Header: Name</string>
<string id="SettingsUserHttpHeaderValue">Zusätzlicher HTTP-Header: Value</string>
<string id="SettingsUserHttpHeader1Name">Zusätzlicher HTTP-Header 1: Name</string>
<string id="SettingsUserHttpHeader1Value">Zusätzlicher HTTP-Header 1: Value</string>
<string id="SettingsUserHttpHeader2Name">Zusätzlicher HTTP-Header 2: Name</string>
<string id="SettingsUserHttpHeader2Value">Zusätzlicher HTTP-Header 2: Value</string>
<string id="SettingsWebhookId">(Nur lesen) Die vom Gerät erstellte Webhook-ID für Hintergrund-Updates. Kann zum Debuggen benötigt werden.</string>
</strings>

View File

@@ -76,13 +76,14 @@
<string id="SettingsTextAlign">Menüausrichtung: Links (aus) oder Rechts (ein).</string>
<string id="SettingsLeftToRight">Von links nach rechts</string>
<string id="SettingsRightToLeft">Von rechts nach links</string>
<string id="SettingsWidgetStart">(Nur Widget) App automatisch aus dem Widget starten, ohne auf Tippen zu warten.</string>
<string id="SettingsEnableBatteryLevel">Hintergrunddienst aktivieren, um Akkustand, Standort und (falls unterstützt) Aktivitätsdaten an Home Assistant zu senden.</string>
<string id="SettingsBatteryLevelRefreshRate">Intervall (in Minuten), in dem der Hintergrunddienst die Daten erneut senden soll.</string>
<string id="SettingsUserHttpHeader">Zusätzlicher HTTP-Header</string>
<string id="SettingsUserHttpHeaderDescription">Einige Home Assistant-Installationen erfordern die Angabe eines benutzerdefinierten HTTP-Headers, um zu funktionieren.</string>
<string id="SettingsUserHttpHeaderName">Zusätzlicher HTTP-Header: Name</string>
<string id="SettingsUserHttpHeaderValue">Zusätzlicher HTTP-Header: Value</string>
<string id="SettingsUserHttpHeader1Name">Zusätzlicher HTTP-Header 1: Name</string>
<string id="SettingsUserHttpHeader1Value">Zusätzlicher HTTP-Header 1: Wert</string>
<string id="SettingsUserHttpHeader2Name">Zusätzlicher HTTP-Header 2: Name</string>
<string id="SettingsUserHttpHeader2Value">Zusätzlicher HTTP-Header 2: Wert</string>
<string id="SettingsClearWebhookId">Neu mit Home Assistant verbinden (Webhook-ID löschen, siehe Fehlerbehebungshandbuch).</string>
<string id="SettingsWebhookId">(Nur lesen) Die vom Gerät erstellte Webhook-ID für Hintergrund-Updates. Kann zum Debuggen benötigt werden.</string>
</strings>

View File

@@ -84,8 +84,6 @@
<string id="SettingsTextAlign">Links (uit) of rechts (aan) menu-uitlijning.</string>
<string id="SettingsLeftToRight">Van links naar rechts</string>
<string id="SettingsRightToLeft">Van rechts naar links</string>
<string id="SettingsWidgetStart">(Alleen widget) Start de toepassing automatisch vanuit de widget
zonder te wachten op een tik.</string>
<string id="SettingsEnableBatteryLevel">Schakel de achtergrondservice in om het batterijniveau van
het apparaat, de locatie en (indien ondersteund) activiteitsgegevens naar Home Assistant te
verzenden.</string>
@@ -94,8 +92,10 @@
<string id="SettingsUserHttpHeader">Door gebruiker opgegeven HTTP-header</string>
<string id="SettingsUserHttpHeaderDescription">Sommige Home Assistant-installaties vereisen de
specificatie van een aangepaste HTTP-header om te functioneren.</string>
<string id="SettingsUserHttpHeaderName">Door gebruiker opgegeven HTTP-header: Naam</string>
<string id="SettingsUserHttpHeaderValue">Door gebruiker opgegeven HTTP-header: Waarde</string>
<string id="SettingsUserHttpHeader1Name">Door gebruiker opgegeven HTTP-header 1: Naam</string>
<string id="SettingsUserHttpHeader1Value">Door gebruiker opgegeven HTTP-header 1: Waarde</string>
<string id="SettingsUserHttpHeader2Name">Door gebruiker opgegeven HTTP-header 2: Naam</string>
<string id="SettingsUserHttpHeader2Value">Door gebruiker opgegeven HTTP-header 2: Waarde</string>
<string id="SettingsClearWebhookId">Opnieuw verbinden met Home Assistant (Webhook-ID wissen, zie
Gids voor probleemoplossing).</string>
<string id="SettingsWebhookId">(Alleen lezen) De Webhook-ID die door het apparaat is gemaakt voor

View File

@@ -15,7 +15,7 @@
<!--
Generated by Google Translate and gemini-2.5-flash from English to Estonian
Tõlgitud Google Translate'i ja gemini-2.5-flashiga inglise keelest eesti keelde
Tõlgitud Google Translate'i ja gemini-2.5-flashi abil inglise keelest eesti keelde
-->
<strings>
@@ -82,8 +82,6 @@
<string id="SettingsTextAlign">Vasak (väljas) või parem (sees) menüü joondus.</string>
<string id="SettingsLeftToRight">Vasakult paremale</string>
<string id="SettingsRightToLeft">Paremale vasakule</string>
<string id="SettingsWidgetStart">(Ainult vidin) Käivitage rakendus vidinast automaatselt, ilma
puudutust ootamata.</string>
<string id="SettingsEnableBatteryLevel">Luba taustateenusel saata seadme aku tase, asukoht ja (kui
toetatud) tegevusandmed Home Assistantile.</string>
<string id="SettingsBatteryLevelRefreshRate">Värskendussagedus (minutites), millega taustateenus
@@ -91,8 +89,10 @@
<string id="SettingsUserHttpHeader">Kasutaja määratud HTTP päis</string>
<string id="SettingsUserHttpHeaderDescription">Mõned Home Assistanti installatsioonid vajavad
toimimiseks kohandatud HTTP päise määramist.</string>
<string id="SettingsUserHttpHeaderName">Kasutaja määratud HTTP päis: Nimi</string>
<string id="SettingsUserHttpHeaderValue">Kasutaja määratud HTTP päis: Väärtus</string>
<string id="SettingsUserHttpHeader1Name">Kasutaja määratud HTTP-päis 1: Nimi</string>
<string id="SettingsUserHttpHeader1Value">Kasutaja määratud HTTP-päis 1: Väärtus</string>
<string id="SettingsUserHttpHeader2Name">Kasutaja määratud HTTP-päis 2: Nimi</string>
<string id="SettingsUserHttpHeader2Value">Kasutaja määratud HTTP-päis 2: Väärtus</string>
<string id="SettingsClearWebhookId">Ühenda uuesti Home Assistantiga (tühjenda Webhooki ID, vt
tõrkeotsingu juhendit).</string>
<string id="SettingsWebhookId">(Ainult lugemiseks) Seadme loodud Webhooki ID taustateenuse

View File

@@ -85,8 +85,6 @@
<string id="SettingsTextAlign">Vasen (pois päältä) tai oikea (on) valikon kohdistus.</string>
<string id="SettingsLeftToRight">Vasemmalta oikealle</string>
<string id="SettingsRightToLeft">Oikealta vasemmalle</string>
<string id="SettingsWidgetStart">(Vain widget) Käynnistä sovellus automaattisesti widgetistä
odottamatta napautusta.</string>
<string id="SettingsEnableBatteryLevel">Ota taustapalvelu käyttöön laitteen akkutason, sijainnin
ja (jos tuettu) aktiivisuustietojen lähettämiseksi Home Assistantille.</string>
<string id="SettingsBatteryLevelRefreshRate">Päivitysnopeus (minuuteissa), jolla taustapalvelun
@@ -94,8 +92,10 @@
<string id="SettingsUserHttpHeader">Käyttäjän määrittämä HTTP-otsake</string>
<string id="SettingsUserHttpHeaderDescription">Jotkut Home Assistant -asennukset vaativat
mukautetun HTTP-otsakkeen määrittelyn toimiakseen.</string>
<string id="SettingsUserHttpHeaderName">Käyttäjän määrittämä HTTP-otsake: Nimi</string>
<string id="SettingsUserHttpHeaderValue">Käyttäjän määrittämä HTTP-otsake: Arvo</string>
<string id="SettingsUserHttpHeader1Name">Käyttäjän määrittämä HTTP-otsake 1: Nimi</string>
<string id="SettingsUserHttpHeader1Value">Käyttäjän määrittämä HTTP-otsake 1: Arvo</string>
<string id="SettingsUserHttpHeader2Name">Käyttäjän määrittämä HTTP-otsake 2: Nimi</string>
<string id="SettingsUserHttpHeader2Value">Käyttäjän määrittämä HTTP-otsake 2: Arvo</string>
<string id="SettingsClearWebhookId">Yhdistä uudelleen Home Assistantiin (tyhjennä Webhook ID,
katso vianetsintäopas).</string>
<string id="SettingsWebhookId">(Vain luku) Laitteen luoma Webhook ID taustapalvelun päivityksiä

View File

@@ -88,8 +88,6 @@
<string id="SettingsTextAlign">Alignement du menu : Gauche (désactivé) ou Droit (activé).</string>
<string id="SettingsLeftToRight">De gauche à droite</string>
<string id="SettingsRightToLeft">De droite à gauche</string>
<string id="SettingsWidgetStart">(Widget uniquement) Démarre automatiquement l'application depuis
le widget sans attendre une pression.</string>
<string id="SettingsEnableBatteryLevel">Activer le service d'arrière-plan pour envoyer le niveau
de la batterie de l'appareil, l'emplacement et (le cas échéant) les données d'activité à Home
Assistant.</string>
@@ -98,8 +96,10 @@
<string id="SettingsUserHttpHeader">En-tête HTTP fourni par l'utilisateur</string>
<string id="SettingsUserHttpHeaderDescription">Certaines installations Home Assistant nécessitent
la spécification d'un en-tête HTTP personnalisé pour fonctionner.</string>
<string id="SettingsUserHttpHeaderName">En-tête HTTP fourni par l'utilisateur : Nom</string>
<string id="SettingsUserHttpHeaderValue">En-tête HTTP fourni par l'utilisateur : Valeur</string>
<string id="SettingsUserHttpHeader1Name">En-tête HTTP fourni par l'utilisateur 1 : Nom</string>
<string id="SettingsUserHttpHeader1Value">En-tête HTTP fourni par l'utilisateur 1 : Valeur</string>
<string id="SettingsUserHttpHeader2Name">En-tête HTTP fourni par l'utilisateur 2 : Nom</string>
<string id="SettingsUserHttpHeader2Value">En-tête HTTP fourni par l'utilisateur 2 : Valeur</string>
<string id="SettingsClearWebhookId">Se reconnecter à Home Assistant (effacer l'ID du Webhook, voir
le guide de dépannage).</string>
<string id="SettingsWebhookId">(Lecture seule) L'ID Webhook créé par l'appareil pour les mises à

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>
@@ -86,8 +86,6 @@
<string id="SettingsTextAlign">Ευθυγράμμιση μενού: Αριστερά (απενεργοποιημένο) ή Δεξιά (ενεργό).</string>
<string id="SettingsLeftToRight">Από αριστερά προς τα δεξιά</string>
<string id="SettingsRightToLeft">Δεξιά προς τα αριστερά</string>
<string id="SettingsWidgetStart">(Μόνο widget) Αυτόματη εκκίνηση της εφαρμογής από το widget χωρίς
να περιμένετε άγγιγμα.</string>
<string id="SettingsEnableBatteryLevel">Ενεργοποιήστε την υπηρεσία παρασκηνίου για την αποστολή
της στάθμης μπαταρίας της συσκευής, της τοποθεσίας και (αν υποστηρίζονται) δεδομένων
δραστηριότητας στο Home Assistant.</string>
@@ -96,8 +94,10 @@
<string id="SettingsUserHttpHeader">Κεφαλίδα HTTP που παρέχεται από τον χρήστη</string>
<string id="SettingsUserHttpHeaderDescription">Ορισμένες εγκαταστάσεις Home Assistant απαιτούν την
προδιαγραφή μιας προσαρμοσμένης κεφαλίδας HTTP για να λειτουργήσουν.</string>
<string id="SettingsUserHttpHeaderName">Κεφαλίδα HTTP που παρέχεται από τον χρήστη: Όνομα</string>
<string id="SettingsUserHttpHeaderValue">Κεφαλίδα HTTP που παρέχεται από τον χρήστη: Τιμή</string>
<string id="SettingsUserHttpHeader1Name">Κεφαλίδα HTTP 1 που παρέχεται από τον χρήστη: Όνομα</string>
<string id="SettingsUserHttpHeader1Value">Κεφαλίδα HTTP 1 που παρέχεται από τον χρήστη: Τιμή</string>
<string id="SettingsUserHttpHeader2Name">Κεφαλίδα HTTP 2 που παρέχεται από τον χρήστη: Όνομα</string>
<string id="SettingsUserHttpHeader2Value">Κεφαλίδα HTTP 2 που παρέχεται από τον χρήστη: Τιμή</string>
<string id="SettingsClearWebhookId">Επανασύνδεση στο Home Assistant (εκκαθάριση Webhook ID, δείτε
τον οδηγό αντιμετώπισης προβλημάτων).</string>
<string id="SettingsWebhookId">(Μόνο για ανάγνωση) Το Webhook ID που δημιουργήθηκε από τη συσκευή

View File

@@ -79,8 +79,6 @@
<string id="SettingsTextAlign">יישור תפריט: שמאל (כבוי) או ימין (מופעל).</string>
<string id="SettingsLeftToRight">משמאל לימין</string>
<string id="SettingsRightToLeft">מימין לשמאל</string>
<string id="SettingsWidgetStart">(ווידג'ט בלבד) הפעל אוטומטית את היישום מהווידג'ט מבלי לחכות
להקשה.</string>
<string id="SettingsEnableBatteryLevel">אפשר לשירות הרקע לשלוח את רמת סוללת המכשיר, מיקום ו(אם
נתמך) נתוני פעילות אל Home Assistant.</string>
<string id="SettingsBatteryLevelRefreshRate">קצב הרענון (בדקות) שבו שירות הרקע ישלח נתונים באופן
@@ -88,8 +86,10 @@
<string id="SettingsUserHttpHeader">כותרת HTTP שסופקה על ידי המשתמש</string>
<string id="SettingsUserHttpHeaderDescription">חלק מהתקנות Home Assistant דורשות הגדרה של כותרת
HTTP מותאמת אישית כדי לתפקד.</string>
<string id="SettingsUserHttpHeaderName">כותרת HTTP שסופקה על ידי המשתמש: שם</string>
<string id="SettingsUserHttpHeaderValue">כותרת HTTP שסופקה על ידי המשתמש: ערך</string>
<string id="SettingsUserHttpHeader1Name">כותרת HTTP שסופקה על ידי המשתמש 1: שם</string>
<string id="SettingsUserHttpHeader1Value">כותרת HTTP שסופקה על ידי המשתמש 1: ערך</string>
<string id="SettingsUserHttpHeader2Name">כותרת HTTP שסופקה על ידי המשתמש 2: שם</string>
<string id="SettingsUserHttpHeader2Value">כותרת HTTP שסופקה על ידי המשתמש 2: ערך</string>
<string id="SettingsClearWebhookId">התחבר מחדש אל Home Assistant (נקה מזהה Webhook, ראה מדריך
לפתרון בעיות).</string>
<string id="SettingsWebhookId">(קריאה בלבד) מזהה Webhook שנוצר על ידי המכשיר לעדכוני שירות רקע.

View File

@@ -84,8 +84,6 @@
<string id="SettingsTextAlign">Poravnanje izbornika: lijevo (isključeno) ili desno (uključeno).</string>
<string id="SettingsLeftToRight">Slijeva na desno</string>
<string id="SettingsRightToLeft">Zdesna nalijevo</string>
<string id="SettingsWidgetStart">(Samo widget) Automatski pokrenite aplikaciju iz widgeta bez
čekanja na dodir.</string>
<string id="SettingsEnableBatteryLevel">Omogućite pozadinsku uslugu za slanje razine baterije
uređaja, lokacije i (ako je podržano) podataka o aktivnosti u Home Assistant.</string>
<string id="SettingsBatteryLevelRefreshRate">Brzina osvježavanja (u minutama) u kojoj bi
@@ -93,8 +91,10 @@
<string id="SettingsUserHttpHeader">Korisnički HTTP zaglavlje</string>
<string id="SettingsUserHttpHeaderDescription">Neke instalacije Home Assistanta zahtijevaju
specifikaciju prilagođenog HTTP zaglavlja za funkcioniranje.</string>
<string id="SettingsUserHttpHeaderName">Korisnički HTTP zaglavlje: Naziv</string>
<string id="SettingsUserHttpHeaderValue">Korisnički HTTP zaglavlje: Vrijednost</string>
<string id="SettingsUserHttpHeader1Name">Korisnički HTTP zaglavlje 1: Naziv</string>
<string id="SettingsUserHttpHeader1Value">Korisnički HTTP zaglavlje 1: Vrijednost</string>
<string id="SettingsUserHttpHeader2Name">Korisnički HTTP zaglavlje 2: Naziv</string>
<string id="SettingsUserHttpHeader2Value">Korisnički HTTP zaglavlje 2: Vrijednost</string>
<string id="SettingsClearWebhookId">Ponovno se povežite s Home Assistantom (očisti ID Webhooka,
pogledajte vodič za rješavanje problema).</string>
<string id="SettingsWebhookId">(Samo za čitanje) ID Webhooka koji je uređaj stvorio za ažuriranja

View File

@@ -15,7 +15,7 @@
<!--
Generated by Google Translate and gemini-2.5-flash from English to Hungarian
Generálta a Google Fordító és a gemini-2.5-flash angolról magyarra
Fordította: Google Translate és gemini-2.5-flash, angolról magyarra
-->
<strings>
@@ -85,8 +85,6 @@
<string id="SettingsTextAlign">Menü igazítása: Balra (ki) vagy Jobbra (be).</string>
<string id="SettingsLeftToRight">Balról jobbra</string>
<string id="SettingsRightToLeft">Jobbról balra</string>
<string id="SettingsWidgetStart">(Csak widget) Az alkalmazás automatikus indítása a widgetről,
érintés nélkül.</string>
<string id="SettingsEnableBatteryLevel">Engedélyezze a háttérszolgáltatásnak, hogy elküldje az
eszköz akkumulátorának töltöttségi szintjét, helyét és (ha támogatott) tevékenységi adatait a
Home Assistantnek.</string>
@@ -95,8 +93,10 @@
<string id="SettingsUserHttpHeader">Felhasználó által megadott HTTP fejléc</string>
<string id="SettingsUserHttpHeaderDescription">Néhány Home Assistant telepítéshez egyéni HTTP
fejléc megadása szükséges a működéshez.</string>
<string id="SettingsUserHttpHeaderName">Felhasználó által megadott HTTP-fejléc: Név</string>
<string id="SettingsUserHttpHeaderValue">Felhasználó által megadott HTTP-fejléc: Érték</string>
<string id="SettingsUserHttpHeader1Name">Felhasználó által megadott HTTP-fejléc 1: Név</string>
<string id="SettingsUserHttpHeader1Value">Felhasználó által megadott HTTP-fejléc 1: Érték</string>
<string id="SettingsUserHttpHeader2Name">Felhasználó által megadott HTTP-fejléc 2: Név</string>
<string id="SettingsUserHttpHeader2Value">Felhasználó által megadott HTTP-fejléc 2: Érték</string>
<string id="SettingsClearWebhookId">Csatlakozás újra a Home Assistanthez (webhook azonosító
törlése, lásd a hibaelhárítási útmutatót).</string>
<string id="SettingsWebhookId">(Csak olvasható) Az eszköz által létrehozott webhook azonosító a

View File

@@ -85,8 +85,6 @@
<string id="SettingsTextAlign">Penjajaran Menu Kiri (mati) atau Kanan (hidup).</string>
<string id="SettingsLeftToRight">Kiri ke kanan</string>
<string id="SettingsRightToLeft">Kanan ke kiri</string>
<string id="SettingsWidgetStart">(Hanya widget) Secara otomatis memulai aplikasi dari widget tanpa
menunggu ketukan.</string>
<string id="SettingsEnableBatteryLevel">Aktifkan layanan latar belakang untuk mengirim tingkat
baterai perangkat, lokasi, dan (jika didukung) data aktivitas ke Home Assistant.</string>
<string id="SettingsBatteryLevelRefreshRate">Tingkat refresh (dalam menit) di mana layanan latar
@@ -94,8 +92,10 @@
<string id="SettingsUserHttpHeader">Header HTTP yang disediakan pengguna</string>
<string id="SettingsUserHttpHeaderDescription">Beberapa instalasi Home Assistant memerlukan
spesifikasi header HTTP kustom agar berfungsi.</string>
<string id="SettingsUserHttpHeaderName">Header HTTP yang disediakan pengguna: Nama</string>
<string id="SettingsUserHttpHeaderValue">Header HTTP yang disediakan pengguna: Nilai</string>
<string id="SettingsUserHttpHeader1Name">Header HTTP yang disediakan pengguna 1: Nama</string>
<string id="SettingsUserHttpHeader1Value">Header HTTP yang disediakan pengguna 1: Nilai</string>
<string id="SettingsUserHttpHeader2Name">Header HTTP yang disediakan pengguna 2: Nama</string>
<string id="SettingsUserHttpHeader2Value">Header HTTP yang disediakan pengguna 2: Nilai</string>
<string id="SettingsClearWebhookId">Sambungkan kembali ke Home Assistant (hapus ID Webhook, lihat
Panduan Pemecahan Masalah).</string>
<string id="SettingsWebhookId">(Baca saja) ID Webhook yang dibuat oleh perangkat untuk pembaruan

View File

@@ -90,8 +90,6 @@
<string id="SettingsTextAlign">Allineamento del menu a sinistra (OFF) o a destra (ON).</string>
<string id="SettingsLeftToRight">Da sinistra a destra</string>
<string id="SettingsRightToLeft">Da destra a sinistra</string>
<string id="SettingsWidgetStart">(Solo widget) Avvia automaticamente l'applicazione dal widget
senza attendere un tocco.</string>
<string id="SettingsEnableBatteryLevel">Abilita il servizio in background per inviare il livello
della batteria del dispositivo, la posizione e (se supportati) i dati di attività a Home
Assistant.</string>
@@ -100,8 +98,10 @@
<string id="SettingsUserHttpHeader">Intestazione HTTP fornita dall'utente</string>
<string id="SettingsUserHttpHeaderDescription">Alcune installazioni di Home Assistant richiedono
la specifica di un'intestazione HTTP personalizzata per funzionare.</string>
<string id="SettingsUserHttpHeaderName">Intestazione HTTP fornita dall'utente: Nome</string>
<string id="SettingsUserHttpHeaderValue">Intestazione HTTP fornita dall'utente: Valore</string>
<string id="SettingsUserHttpHeader1Name">Intestazione HTTP 1 fornita dall'utente: Nome</string>
<string id="SettingsUserHttpHeader1Value">Intestazione HTTP 1 fornita dall'utente: Valore</string>
<string id="SettingsUserHttpHeader2Name">Intestazione HTTP 2 fornita dall'utente: Nome</string>
<string id="SettingsUserHttpHeader2Value">Intestazione HTTP 2 fornita dall'utente: Valore</string>
<string id="SettingsClearWebhookId">Riconnettiti a Home Assistant (cancella ID Webhook, vedi Guida
alla risoluzione dei problemi).</string>
<string id="SettingsWebhookId">(Solo lettura) L'ID WebHook creato dal dispositivo per gli

View File

@@ -15,7 +15,7 @@
<!--
Generated by Google Translate and gemini-2.5-flash from English to Japanese
Google Translateとgemini-2.5-flashによって英語から日本語に生成されました
Google翻訳とgemini-2.5-flashによって英語から日本語に生成されました
-->
<strings>
@@ -77,15 +77,16 @@
<string id="SettingsTextAlign">メニューの配置:左(オフ)または右(オン)。</string>
<string id="SettingsLeftToRight">左から右</string>
<string id="SettingsRightToLeft">右から左</string>
<string id="SettingsWidgetStart">(ウィジェットのみ)タップを待たずにウィジェットからアプリケーションを自動起動します。</string>
<string id="SettingsEnableBatteryLevel">バックグラウンドサービスによるデバイスのバッテリーレベル、位置情報、およびサポートされている場合アクティビティデータのHome
Assistantへの送信を有効にする。</string>
<string id="SettingsBatteryLevelRefreshRate">バックグラウンドサービスがデータを送信するリフレッシュレート(分)。</string>
<string id="SettingsUserHttpHeader">ユーザーが提供したHTTPヘッダー</string>
<string id="SettingsUserHttpHeaderDescription">一部のHome
Assistantのインストールでは、機能するためにカスタムHTTPヘッダーの指定が必要です。</string>
<string id="SettingsUserHttpHeaderName">ユーザーが提供したHTTPヘッダー名前</string>
<string id="SettingsUserHttpHeaderValue">ユーザーが提供したHTTPヘッダー</string>
<string id="SettingsUserHttpHeader1Name">ユーザーが提供したHTTPヘッダー 1: 名前</string>
<string id="SettingsUserHttpHeader1Value">ユーザーが提供したHTTPヘッダー 1: </string>
<string id="SettingsUserHttpHeader2Name">ユーザーが提供したHTTPヘッダー 2: 名前</string>
<string id="SettingsUserHttpHeader2Value">ユーザーが提供したHTTPヘッダー 2: 値</string>
<string id="SettingsClearWebhookId">Home Assistantに再接続Webhook IDをクリア、トラブルシューティングガイドを参照</string>
<string id="SettingsWebhookId">読み取り専用バックグラウンドサービスの更新のためにデバイスによって作成されたWebhook
ID。デバッグにこれが必要になる場合があります。</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>
@@ -77,15 +77,16 @@
<string id="SettingsTextAlign">왼쪽(꺼짐) 또는 오른쪽(켜짐) 메뉴 정렬.</string>
<string id="SettingsLeftToRight">왼쪽에서 오른쪽</string>
<string id="SettingsRightToLeft">오른쪽에서 왼쪽</string>
<string id="SettingsWidgetStart">(위젯 전용) 탭을 기다리지 않고 위젯에서 앱을 자동으로 시작합니다.</string>
<string id="SettingsEnableBatteryLevel">백그라운드 서비스가 기기 배터리 잔량, 위치 및 (지원되는 경우) 활동 데이터를 Home
Assistant로 전송하도록 활성화합니다.</string>
<string id="SettingsBatteryLevelRefreshRate">백그라운드 서비스가 데이터를 반복 전송할 새로 고침 빈도(분).</string>
<string id="SettingsUserHttpHeader">사용자 제공 HTTP 헤더</string>
<string id="SettingsUserHttpHeaderDescription">일부 Home Assistant 설치에서는 작동을 위해 사용자 지정 HTTP 헤더를 지정해야
합니다.</string>
<string id="SettingsUserHttpHeaderName">사용자 제공 HTTP 헤더: 이름</string>
<string id="SettingsUserHttpHeaderValue">사용자 제공 HTTP 헤더: 값</string>
<string id="SettingsUserHttpHeader1Name">사용자 제공 HTTP 헤더 1: 이름</string>
<string id="SettingsUserHttpHeader1Value">사용자 제공 HTTP 헤더 1: 값</string>
<string id="SettingsUserHttpHeader2Name">사용자 제공 HTTP 헤더 2: 이름</string>
<string id="SettingsUserHttpHeader2Value">사용자 제공 HTTP 헤더 2: 값</string>
<string id="SettingsClearWebhookId">Home Assistant에 다시 연결 (Webhook ID 지우기, 문제 해결 가이드 참조).</string>
<string id="SettingsWebhookId">(읽기 전용) 백그라운드 서비스 업데이트를 위해 기기에서 생성한 Webhook ID. 디버깅에 필요할 수 있습니다.</string>
</strings>

View File

@@ -84,8 +84,6 @@
<string id="SettingsTextAlign">Kreisā (izslēgta) vai labā (ieslēgta) izvēlnes izlīdzināšana.</string>
<string id="SettingsLeftToRight">No kreisās uz labo pusi</string>
<string id="SettingsRightToLeft">No labās uz kreiso pusi</string>
<string id="SettingsWidgetStart">(Tikai logrīks) Automātiski startēt lietojumprogrammu no logrīka,
negaidot pieskārienu.</string>
<string id="SettingsEnableBatteryLevel">Iespējojiet fona pakalpojumu, lai nosūtītu ierīces
akumulatora līmeni, atrašanās vietu un (ja tiek atbalstīti) aktivitātes datus uz Home Assistant.</string>
<string id="SettingsBatteryLevelRefreshRate">Atsvaidzināšanas ātrums (minūtēs), kurā fona
@@ -93,8 +91,10 @@
<string id="SettingsUserHttpHeader">Lietotāja norādītā HTTP galvene</string>
<string id="SettingsUserHttpHeaderDescription">Dažām Home Assistant instalācijām ir nepieciešama
pielāgotas HTTP galvenes norādīšana, lai tās darbotos.</string>
<string id="SettingsUserHttpHeaderName">Lietotāja norādītā HTTP galvene: Nosaukums</string>
<string id="SettingsUserHttpHeaderValue">Lietotāja norādītā HTTP galvene: Vērtība</string>
<string id="SettingsUserHttpHeader1Name">Lietotāja norādītā HTTP galvene 1: Nosaukums</string>
<string id="SettingsUserHttpHeader1Value">Lietotāja norādītā HTTP galvene 1: Vērtība</string>
<string id="SettingsUserHttpHeader2Name">Lietotāja norādītā HTTP galvene 2: Nosaukums</string>
<string id="SettingsUserHttpHeader2Value">Lietotāja norādītā HTTP galvene 2: Vērtība</string>
<string id="SettingsClearWebhookId">Atkārtoti savienoties ar Home Assistant (notīrīt Webhook ID,
skatīt problēmu novēršanas ceļvedi).</string>
<string id="SettingsWebhookId">(Tikai lasīšanai) Webhook ID, ko ierīce izveidoja fona pakalpojumu

View File

@@ -15,7 +15,7 @@
<!--
Generated by Google Translate and gemini-2.5-flash from English to Lithuanian
Sugeneruota naudojant Google Translate ir gemini-2.5-flash iš anglų į lietuvių kalbą
Sugeneruota naudojant Google Translate ir gemini-2.5-flash iš anglų į lietuvių kalbą
-->
<strings>
@@ -82,8 +82,6 @@
<string id="SettingsTextAlign">Meniu lygiavimas: kairė (išjungta) arba dešinė (įjungta).</string>
<string id="SettingsLeftToRight">Iš kairės į dešinę</string>
<string id="SettingsRightToLeft">Iš dešinės į kairę</string>
<string id="SettingsWidgetStart">(Tik valdiklis) Automatiškai paleiskite programą iš valdiklio,
nelaukiant palietimo.</string>
<string id="SettingsEnableBatteryLevel">Įgalinti fono paslaugą siųsti įrenginio baterijos lygį,
vietą ir (jei palaikoma) veiklos duomenis į Home Assistant.</string>
<string id="SettingsBatteryLevelRefreshRate">Atnaujinimo dažnis (minutėmis), kuriuo fono paslauga
@@ -91,8 +89,10 @@
<string id="SettingsUserHttpHeader">Vartotojo pateikta HTTP antraštė</string>
<string id="SettingsUserHttpHeaderDescription">Kai kuriems Home Assistant diegimams reikia
nurodyti pasirinktinę HTTP antraštę, kad jie veiktų.</string>
<string id="SettingsUserHttpHeaderName">Vartotojo pateikta HTTP antraštė: Pavadinimas</string>
<string id="SettingsUserHttpHeaderValue">Vartotojo pateikta HTTP antraštė: Reikšmė</string>
<string id="SettingsUserHttpHeader1Name">Vartotojo pateikta HTTP antraštė 1: Pavadinimas</string>
<string id="SettingsUserHttpHeader1Value">Vartotojo pateikta HTTP antraštė 1: Reikšmė</string>
<string id="SettingsUserHttpHeader2Name">Vartotojo pateikta HTTP antraštė 2: Pavadinimas</string>
<string id="SettingsUserHttpHeader2Value">Vartotojo pateikta HTTP antraštė 2: Reikšmė</string>
<string id="SettingsClearWebhookId">Prisijungti iš naujo prie Home Assistant (išvalyti Webhook ID,
žr. Trikčių šalinimo vadovą).</string>
<string id="SettingsWebhookId">(Tik skaitymui) Webhook ID, kurį įrenginys sukūrė fono paslaugų

View File

@@ -84,8 +84,6 @@
<string id="SettingsTextAlign">Venstre (av) eller høyre (på) menyjustering.</string>
<string id="SettingsLeftToRight">Fra venstre til høyre</string>
<string id="SettingsRightToLeft">Høyre til venstre</string>
<string id="SettingsWidgetStart">(Bare widget) Start automatisk applikasjonen fra widgeten uten å
vente på et trykk.</string>
<string id="SettingsEnableBatteryLevel">Aktiver bakgrunnstjenesten til å sende enhetens
batterinivå, posisjon og (hvis støttet) aktivitetsdata til Home Assistant.</string>
<string id="SettingsBatteryLevelRefreshRate">Oppdateringsfrekvensen (i minutter) som
@@ -93,8 +91,10 @@
<string id="SettingsUserHttpHeader">Brukerdefinert HTTP-header</string>
<string id="SettingsUserHttpHeaderDescription">Noen Home Assistant-installasjoner krever
spesifikasjon av en tilpasset HTTP-header for å fungere.</string>
<string id="SettingsUserHttpHeaderName">Brukerdefinert HTTP-header: Navn</string>
<string id="SettingsUserHttpHeaderValue">Brukerdefinert HTTP-header: Verdi</string>
<string id="SettingsUserHttpHeader1Name">Brukerdefinert HTTP-header 1: Navn</string>
<string id="SettingsUserHttpHeader1Value">Brukerdefinert HTTP-header 1: Verdi</string>
<string id="SettingsUserHttpHeader2Name">Brukerdefinert HTTP-header 2: Navn</string>
<string id="SettingsUserHttpHeader2Value">Brukerdefinert HTTP-header 2: Verdi</string>
<string id="SettingsClearWebhookId">Koble til Home Assistant på nytt (tøm Webhook-ID, se
feilsøkingsveiledningen).</string>
<string id="SettingsWebhookId">(Bare les) Webhook-ID-en som er opprettet av enheten for

View File

@@ -87,8 +87,6 @@
<string id="SettingsTextAlign">Wyrównanie menu: lewe (wył.) lub prawe (wł.).</string>
<string id="SettingsLeftToRight">Od lewej do prawej</string>
<string id="SettingsRightToLeft">Od prawej do lewej</string>
<string id="SettingsWidgetStart">(Tylko widżet) Automatyczne uruchamianie aplikacji z widżetu bez
oczekiwania na dotknięcie.</string>
<string id="SettingsEnableBatteryLevel">Włącz usługę w tle, aby wysyłać poziom baterii urządzenia,
lokalizację i (jeśli obsługiwane) dane o aktywności do Home Assistant.</string>
<string id="SettingsBatteryLevelRefreshRate">Częstotliwość odświeżania (w minutach), z jaką usługa
@@ -96,8 +94,10 @@
<string id="SettingsUserHttpHeader">Dostarczony przez użytkownika nagłówek HTTP</string>
<string id="SettingsUserHttpHeaderDescription">Niektóre instalacje Home Assistant wymagają
określenia niestandardowego nagłówka HTTP w celu prawidłowego działania.</string>
<string id="SettingsUserHttpHeaderName">Dostarczony przez użytkownika nagłówek HTTP: Nazwa</string>
<string id="SettingsUserHttpHeaderValue">Dostarczony przez użytkownika nagłówek HTTP: Wartość</string>
<string id="SettingsUserHttpHeader1Name">Dostarczony przez użytkownika nagłówek HTTP 1: Nazwa</string>
<string id="SettingsUserHttpHeader1Value">Dostarczony przez użytkownika nagłówek HTTP 1: Wartość</string>
<string id="SettingsUserHttpHeader2Name">Dostarczony przez użytkownika nagłówek HTTP 2: Nazwa</string>
<string id="SettingsUserHttpHeader2Value">Dostarczony przez użytkownika nagłówek HTTP 2: Wartość</string>
<string id="SettingsClearWebhookId">Połącz ponownie z Home Assistant (wyczyść ID webhooka, patrz
przewodnik rozwiązywania problemów).</string>
<string id="SettingsWebhookId">(Tylko do odczytu) Identyfikator webhooka utworzony przez

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 de inglês para português
Gerado por Google Translate e gemini-2.5-flash do inglês para o português
-->
<strings>
@@ -86,8 +86,6 @@
<string id="SettingsTextAlign">Alinhamento do menu: Esquerda (desativado) ou Direita (ativado).</string>
<string id="SettingsLeftToRight">Da esquerda para a direita</string>
<string id="SettingsRightToLeft">Direita para a esquerda</string>
<string id="SettingsWidgetStart">(Somente widget) Inicie automaticamente o aplicativo do widget
sem esperar por um toque.</string>
<string id="SettingsEnableBatteryLevel">Ativar o serviço em segundo plano para enviar o nível da
bateria do dispositivo, localização e (se suportado) dados de atividade para Home Assistant.</string>
<string id="SettingsBatteryLevelRefreshRate">A taxa de atualização (em minutos) na qual o serviço
@@ -95,8 +93,10 @@
<string id="SettingsUserHttpHeader">Cabeçalho HTTP fornecido pelo usuário</string>
<string id="SettingsUserHttpHeaderDescription">Algumas instalações do Home Assistant exigem a
especificação de um cabeçalho HTTP personalizado para funcionar.</string>
<string id="SettingsUserHttpHeaderName">Cabeçalho HTTP fornecido pelo usuário: Nome</string>
<string id="SettingsUserHttpHeaderValue">Cabeçalho HTTP fornecido pelo usuário: Valor</string>
<string id="SettingsUserHttpHeader1Name">Cabeçalho HTTP fornecido pelo usuário 1: Nome</string>
<string id="SettingsUserHttpHeader1Value">Cabeçalho HTTP fornecido pelo usuário 1: Valor</string>
<string id="SettingsUserHttpHeader2Name">Cabeçalho HTTP fornecido pelo usuário 2: Nome</string>
<string id="SettingsUserHttpHeader2Value">Cabeçalho HTTP fornecido pelo usuário 2: Valor</string>
<string id="SettingsClearWebhookId">Reconectar ao Home Assistant (limpar ID do Webhook, consulte o
Guia de Solução de Problemas).</string>
<string id="SettingsWebhookId">(Somente leitura) O ID do Webhook criado pelo dispositivo para

View File

@@ -84,8 +84,6 @@
<string id="SettingsTextAlign">Alinierea meniului: Stânga (dezactivat) sau Dreapta (activat).</string>
<string id="SettingsLeftToRight">De la stânga la dreapta</string>
<string id="SettingsRightToLeft">De la dreapta la stânga</string>
<string id="SettingsWidgetStart">(Doar widget) Porniți automat aplicația din widget fără a aștepta
o atingere.</string>
<string id="SettingsEnableBatteryLevel">Activați serviciul de fundal pentru a trimite nivelul
bateriei dispozitivului, locația și (dacă este acceptat) datele de activitate către Home
Assistant.</string>
@@ -94,8 +92,10 @@
<string id="SettingsUserHttpHeader">Antetul HTTP furnizat de utilizator</string>
<string id="SettingsUserHttpHeaderDescription">Unele instalații Home Assistant necesită
specificarea unui antet HTTP personalizat pentru a funcționa.</string>
<string id="SettingsUserHttpHeaderName">Antet HTTP furnizat de utilizator: Nume</string>
<string id="SettingsUserHttpHeaderValue">Antet HTTP furnizat de utilizator: Valoare</string>
<string id="SettingsUserHttpHeader1Name">Antet HTTP furnizat de utilizator 1: Nume</string>
<string id="SettingsUserHttpHeader1Value">Antet HTTP furnizat de utilizator 1: Valoare</string>
<string id="SettingsUserHttpHeader2Name">Antet HTTP furnizat de utilizator 2: Nume</string>
<string id="SettingsUserHttpHeader2Value">Antet HTTP furnizat de utilizator 2: Valoare</string>
<string id="SettingsClearWebhookId">Reconectați-vă la Home Assistant (ștergeți ID-ul Webhook,
consultați ghidul de depanare).</string>
<string id="SettingsWebhookId">(Doar citire) ID-ul Webhook creat de dispozitiv pentru actualizări

View File

@@ -82,16 +82,16 @@
<string id="SettingsTextAlign">Zarovnanie menu vľavo (vypnuté) alebo vpravo (zapnuté).</string>
<string id="SettingsLeftToRight">Zľava doprava</string>
<string id="SettingsRightToLeft">Sprava doľava</string>
<string id="SettingsWidgetStart">(Iba widget) Automaticky spustí aplikáciu z miniaplikácie bez
čakania na ťuknutie.</string>
<string id="SettingsEnableBatteryLevel">Povoľte službu na pozadí, ktorá bude do Home Assistenta odosielať údaje o stave batérie zariadenia, polohe a (ak je podporované) o aktivite.</string>
<string id="SettingsBatteryLevelRefreshRate">Frekvencia obnovenia (v minútach), pri ktorej by
služba na pozadí mala opakovať odosielanie údajov.</string>
<string id="SettingsUserHttpHeader">Hlavička HTTP dodaná používateľom</string>
<string id="SettingsUserHttpHeaderDescription">Niektoré inštalácie Home Assistant vyžadujú
špecifikáciu vlastnej hlavičky HTTP pre správne fungovanie.</string>
<string id="SettingsUserHttpHeaderName">Používateľom dodaná HTTP hlavička: Názov</string>
<string id="SettingsUserHttpHeaderValue">Používateľom dodaná HTTP hlavička: Hodnota</string>
<string id="SettingsUserHttpHeader1Name">Používateľom dodaná HTTP hlavička 1: Názov</string>
<string id="SettingsUserHttpHeader1Value">Používateľom dodaná HTTP hlavička 1: Hodnota</string>
<string id="SettingsUserHttpHeader2Name">Používateľom dodaná HTTP hlavička 2: Názov</string>
<string id="SettingsUserHttpHeader2Value">Používateľom dodaná HTTP hlavička 2: Hodnota</string>
<string id="SettingsClearWebhookId">Znova sa pripojiť k Home Assistant (vymazať ID Webhooku, pozri
Sprievodcu riešením problémov).</string>
<string id="SettingsWebhookId">(Iba na čítanie) ID Webhooku vytvorené zariadením pre aktualizácie

View File

@@ -15,7 +15,7 @@
<!--
Generated by Google Translate and gemini-2.5-flash from English to Slovenian
Prevedel Google Prevajalnik in gemini-2.5-flash iz angleščine v slovenščino
Prevedeno z Google Prevajalnikom in gemini-2.5-flash iz angleščine v slovenščino
-->
<strings>
@@ -81,8 +81,6 @@
<string id="SettingsTextAlign">Leva (izklopljeno) ali desna (vklopljeno) poravnava menija.</string>
<string id="SettingsLeftToRight">Levo proti desni</string>
<string id="SettingsRightToLeft">Desno na levo</string>
<string id="SettingsWidgetStart">(Samo pripomoček) Samodejno zaženite aplikacijo iz pripomočka, ne
da bi čakali na dotik.</string>
<string id="SettingsEnableBatteryLevel">Omogočite storitev v ozadju za pošiljanje ravni baterije
naprave, lokacije in (če so podprti) podatkov o dejavnosti v Home Assistant.</string>
<string id="SettingsBatteryLevelRefreshRate">Frekvenca osveževanja (v minutah), pri kateri naj
@@ -90,8 +88,10 @@
<string id="SettingsUserHttpHeader">Uporabniško določena glava HTTP</string>
<string id="SettingsUserHttpHeaderDescription">Nekatere namestitve Home Assistant zahtevajo
določitev glave HTTP po meri za delovanje.</string>
<string id="SettingsUserHttpHeaderName">Uporabniško določena glava HTTP: Ime</string>
<string id="SettingsUserHttpHeaderValue">Uporabniško določena glava HTTP: Vrednost</string>
<string id="SettingsUserHttpHeader1Name">Uporabniško določena glava HTTP 1: Ime</string>
<string id="SettingsUserHttpHeader1Value">Uporabniško določena glava HTTP 1: Vrednost</string>
<string id="SettingsUserHttpHeader2Name">Uporabniško določena glava HTTP 2: Ime</string>
<string id="SettingsUserHttpHeader2Value">Uporabniško določena glava HTTP 2: Vrednost</string>
<string id="SettingsClearWebhookId">Ponovna povezava z Home Assistant (počisti ID Webhooka, glejte
Vodnik za odpravljanje težav).</string>
<string id="SettingsWebhookId">(Samo za branje) ID Webhooka, ki ga je ustvarila naprava za

View File

@@ -89,8 +89,6 @@
<string id="SettingsTextAlign">Alineación del menú: izquierda (desactivado) o derecha (activado).</string>
<string id="SettingsLeftToRight">De izquierda a derecha</string>
<string id="SettingsRightToLeft">De derecha a izquierda</string>
<string id="SettingsWidgetStart">(Solo widget) Iniciar automáticamente la aplicación desde el
widget sin esperar un toque.</string>
<string id="SettingsEnableBatteryLevel">Habilitar el servicio en segundo plano para enviar el
nivel de batería del dispositivo, la ubicación y (si es compatible) los datos de actividad a
Home Assistant.</string>
@@ -99,8 +97,10 @@
<string id="SettingsUserHttpHeader">Encabezado HTTP suministrado por el usuario</string>
<string id="SettingsUserHttpHeaderDescription">Algunas instalaciones de Home Assistant requieren
la especificación de un encabezado HTTP personalizado para funcionar.</string>
<string id="SettingsUserHttpHeaderName">Encabezado HTTP suministrado por el usuario: Nombre</string>
<string id="SettingsUserHttpHeaderValue">Encabezado HTTP suministrado por el usuario: Valor</string>
<string id="SettingsUserHttpHeader1Name">Encabezado HTTP suministrado por el usuario 1: Nombre</string>
<string id="SettingsUserHttpHeader1Value">Encabezado HTTP suministrado por el usuario 1: Valor</string>
<string id="SettingsUserHttpHeader2Name">Encabezado HTTP suministrado por el usuario 2: Nombre</string>
<string id="SettingsUserHttpHeader2Value">Encabezado HTTP suministrado por el usuario 2: Valor</string>
<string id="SettingsClearWebhookId">Volver a conectar a Home Assistant (borrar ID de Webhook,
consulte la guía de solución de problemas).</string>
<string id="SettingsWebhookId">(Solo lectura) El ID de Webhook creado por el dispositivo para las

View File

@@ -83,8 +83,6 @@
<string id="SettingsTextAlign">Vänster (av) eller höger (på) menyinriktning.</string>
<string id="SettingsLeftToRight">Vänster till höger</string>
<string id="SettingsRightToLeft">Höger till vänster</string>
<string id="SettingsWidgetStart">(Endast widget) Starta applikationen automatiskt från widgeten
utan att vänta på ett tryck.</string>
<string id="SettingsEnableBatteryLevel">Aktivera bakgrundstjänsten att skicka enhetens
batterinivå, plats och (om det stöds) aktivitetsdata till Home Assistant.</string>
<string id="SettingsBatteryLevelRefreshRate">Uppdateringsfrekvensen (i minuter) med vilken
@@ -92,8 +90,10 @@
<string id="SettingsUserHttpHeader">Användardefinierat HTTP-huvud</string>
<string id="SettingsUserHttpHeaderDescription">Vissa Home Assistant-installationer kräver att ett
anpassat HTTP-huvud anges för att fungera.</string>
<string id="SettingsUserHttpHeaderName">Användardefinierat HTTP-huvud: Namn</string>
<string id="SettingsUserHttpHeaderValue">Användardefinierat HTTP-huvud: Värde</string>
<string id="SettingsUserHttpHeader1Name">Användardefinierat HTTP-huvud 1: Namn</string>
<string id="SettingsUserHttpHeader1Value">Användardefinierat HTTP-huvud 1: Värde</string>
<string id="SettingsUserHttpHeader2Name">Användardefinierat HTTP-huvud 2: Namn</string>
<string id="SettingsUserHttpHeader2Value">Användardefinierat HTTP-huvud 2: Värde</string>
<string id="SettingsClearWebhookId">Återanslut till Home Assistant (rensa Webhook-ID, se
Felsökningsguide).</string>
<string id="SettingsWebhookId">(Skrivskyddad) Webhook-ID som skapats av enheten för

View File

@@ -81,8 +81,6 @@
<string id="SettingsTextAlign">การจัดตำแหน่งเมนูซ้าย (ปิด) หรือขวา (เปิด)</string>
<string id="SettingsLeftToRight">จากซ้ายไปขวา</string>
<string id="SettingsRightToLeft">ขวาไปซ้าย</string>
<string id="SettingsWidgetStart">(วิดเจ็ตเท่านั้น)
เริ่มแอปพลิเคชันจากวิดเจ็ตโดยอัตโนมัติโดยไม่ต้องรอแตะ</string>
<string id="SettingsEnableBatteryLevel">เปิดใช้งานบริการพื้นหลังเพื่อส่งระดับแบตเตอรี่ของอุปกรณ์
ตำแหน่ง และข้อมูลกิจกรรม (ถ้ารองรับ) ไปยัง Home Assistant</string>
<string id="SettingsBatteryLevelRefreshRate">อัตราการรีเฟรช (นาที)
@@ -90,8 +88,10 @@
<string id="SettingsUserHttpHeader">ส่วนหัว HTTP ที่ผู้ใช้จัดหา</string>
<string id="SettingsUserHttpHeaderDescription">การติดตั้ง Home Assistant
บางรายการต้องการการระบุส่วนหัว HTTP ที่กำหนดเองเพื่อให้สามารถทำงานได้</string>
<string id="SettingsUserHttpHeaderName">ส่วนหัว HTTP ที่ผู้ใช้ระบุ: ชื่อ</string>
<string id="SettingsUserHttpHeaderValue">ส่วนหัว HTTP ที่ผู้ใช้ระบุ: ค่า</string>
<string id="SettingsUserHttpHeader1Name">ส่วนหัว HTTP ที่ผู้ใช้จัดหา 1: ชื่อ</string>
<string id="SettingsUserHttpHeader1Value">ส่วนหัว HTTP ที่ผู้ใช้จัดหา 1: ค่า</string>
<string id="SettingsUserHttpHeader2Name">ส่วนหัว HTTP ที่ผู้ใช้จัดหา 2: ชื่อ</string>
<string id="SettingsUserHttpHeader2Value">ส่วนหัว HTTP ที่ผู้ใช้จัดหา 2: ค่า</string>
<string id="SettingsClearWebhookId">เชื่อมต่อกับ Home Assistant (ล้าง Webhook ID
ดูคู่มือการแก้ไขปัญหา)</string>
<string id="SettingsWebhookId">(อ่านเท่านั้น) Webhook ID

View File

@@ -15,7 +15,7 @@
<!--
Generated by Google Translate and gemini-2.5-flash from English to Turkish
Google Translate 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 çevrildi
-->
<strings>
@@ -83,8 +83,6 @@
<string id="SettingsTextAlign">Sol (kapalı) veya sağ (açık) menü hizalaması.</string>
<string id="SettingsLeftToRight">Soldan sağa</string>
<string id="SettingsRightToLeft">Sağdan sola</string>
<string id="SettingsWidgetStart">(Yalnızca widget) Dokunmayı beklemeden uygulamayı widget'tan
otomatik olarak başlatın.</string>
<string id="SettingsEnableBatteryLevel">Arka plan hizmetinin cihaz pil seviyesini, konumunu ve
(destekleniyorsa) etkinlik verilerini Home Assistant'a göndermesini etkinleştirin.</string>
<string id="SettingsBatteryLevelRefreshRate">Arka plan hizmetinin veri göndermeyi tekrarlayacağı
@@ -92,8 +90,10 @@
<string id="SettingsUserHttpHeader">Kullanıcı tarafından sağlanan HTTP başlığı</string>
<string id="SettingsUserHttpHeaderDescription">Bazı Home Assistant kurulumları, çalışabilmek için
özel bir HTTP başlığının belirtilmesini gerektirir.</string>
<string id="SettingsUserHttpHeaderName">Kullanıcı tarafından sağlanan HTTP-Header: Ad</string>
<string id="SettingsUserHttpHeaderValue">Kullanıcı tarafından sağlanan HTTP-Header: Değer</string>
<string id="SettingsUserHttpHeader1Name">Kullanıcı tarafından sağlanan HTTP Başlığı 1: Ad</string>
<string id="SettingsUserHttpHeader1Value">Kullanıcı tarafından sağlanan HTTP Başlığı 1: Değer</string>
<string id="SettingsUserHttpHeader2Name">Kullanıcı tarafından sağlanan HTTP Başlığı 2: Ad</string>
<string id="SettingsUserHttpHeader2Value">Kullanıcı tarafından sağlanan HTTP Başlığı 2: Değer</string>
<string id="SettingsClearWebhookId">Home Assistant'a yeniden bağlanın (Webhook Kimliğini
temizleyin, bkz. Sorun Giderme Kılavuzu).</string>
<string id="SettingsWebhookId">(Yalnızca okuyun) Arka plan hizmeti güncellemeleri için cihaz

View File

@@ -85,8 +85,6 @@
<string id="SettingsTextAlign">Зліва (вимкнено) або праворуч (увімкнено) вирівнювання меню.</string>
<string id="SettingsLeftToRight">Зліва направо</string>
<string id="SettingsRightToLeft">Справа наліво</string>
<string id="SettingsWidgetStart">(Тільки віджет) Автоматично запускати програму з віджета, не
чекаючи натискання.</string>
<string id="SettingsEnableBatteryLevel">Увімкнути фонову службу для надсилання рівня заряду
батареї пристрою, місцезнаходження та (якщо підтримується) даних активності до Home Assistant.</string>
<string id="SettingsBatteryLevelRefreshRate">Частота оновлення (у хвилинах), з якою фонова служба
@@ -94,8 +92,10 @@
<string id="SettingsUserHttpHeader">Наданий користувачем HTTP-заголовок</string>
<string id="SettingsUserHttpHeaderDescription">Деякі інсталяції Home Assistant вимагають
зазначення спеціального HTTP-заголовка для функціонування.</string>
<string id="SettingsUserHttpHeaderName">Наданий користувачем HTTP-заголовок: Ім'я</string>
<string id="SettingsUserHttpHeaderValue">Наданий користувачем HTTP-заголовок: Значення</string>
<string id="SettingsUserHttpHeader1Name">Наданий користувачем HTTP-заголовок 1: Ім'я</string>
<string id="SettingsUserHttpHeader1Value">Наданий користувачем HTTP-заголовок 1: Значення</string>
<string id="SettingsUserHttpHeader2Name">Наданий користувачем HTTP-заголовок 2: Ім'я</string>
<string id="SettingsUserHttpHeader2Value">Наданий користувачем HTTP-заголовок 2: Значення</string>
<string id="SettingsClearWebhookId">Повторне підключення до Home Assistant (очистити ID вебхука,
див. Посібник з усунення несправностей).</string>
<string id="SettingsWebhookId">(Тільки для читання) ID вебхука, створений пристроєм для оновлень

View File

@@ -83,8 +83,6 @@
<string id="SettingsTextAlign">Căn chỉnh menu: Trái (tắt) hoặc Phải (bật).</string>
<string id="SettingsLeftToRight">Trái sang phải</string>
<string id="SettingsRightToLeft">Phải sang trái</string>
<string id="SettingsWidgetStart">(Chỉ Widget) Tự động khởi động ứng dụng từ tiện ích mà không cần
chờ chạm.</string>
<string id="SettingsEnableBatteryLevel">Cho phép dịch vụ nền gửi mức pin của thiết bị, vị trí và
dữ liệu hoạt động (nếu được hỗ trợ) đến Home Assistant.</string>
<string id="SettingsBatteryLevelRefreshRate">Tốc độ làm mới (tính bằng phút) mà dịch vụ nền sẽ
@@ -92,8 +90,10 @@
<string id="SettingsUserHttpHeader">Tiêu đề HTTP do người dùng cung cấp</string>
<string id="SettingsUserHttpHeaderDescription">Một số cài đặt Home Assistant yêu cầu chỉ định tiêu
đề HTTP tùy chỉnh để hoạt động.</string>
<string id="SettingsUserHttpHeaderName">Tiêu đề HTTP do người dùng cung cấp: Tên</string>
<string id="SettingsUserHttpHeaderValue">Tiêu đề HTTP do người dùng cung cấp: Giá trị</string>
<string id="SettingsUserHttpHeader1Name">Tiêu đề HTTP do người dùng cung cấp 1: Tên</string>
<string id="SettingsUserHttpHeader1Value">Tiêu đề HTTP do người dùng cung cấp 1: Giá trị</string>
<string id="SettingsUserHttpHeader2Name">Tiêu đề HTTP do người dùng cung cấp 2: Tên</string>
<string id="SettingsUserHttpHeader2Value">Tiêu đề HTTP do người dùng cung cấp 2: Giá trị</string>
<string id="SettingsClearWebhookId">Kết nối lại với Home Assistant (Xóa ID Webhook, xem Hướng dẫn
khắc phục sự cố).</string>
<string id="SettingsWebhookId">(Chỉ đọc) ID webhook được tạo bởi thiết bị để cập nhật dịch vụ nền.

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>
@@ -76,13 +76,14 @@
<string id="SettingsTextAlign">菜单对齐:左对齐(关闭)或右对齐(开启)。</string>
<string id="SettingsLeftToRight">从左到右</string>
<string id="SettingsRightToLeft">从右到左</string>
<string id="SettingsWidgetStart">(仅小部件)自动从小部件启动应用程序,而无需等待点击。</string>
<string id="SettingsEnableBatteryLevel">启用后台服务以将设备电池电量、位置以及(如果支持)活动数据发送到 Home Assistant。</string>
<string id="SettingsBatteryLevelRefreshRate">后台服务应重复发送数据的刷新率(分钟)。</string>
<string id="SettingsUserHttpHeader">用户提供的 HTTP 标头</string>
<string id="SettingsUserHttpHeaderDescription">某些 Home Assistant 安装需要指定自定义 HTTP 标头才能正常运行。</string>
<string id="SettingsUserHttpHeaderName">用户提供的 HTTP 标头:名称</string>
<string id="SettingsUserHttpHeaderValue">用户提供的 HTTP 标头:值</string>
<string id="SettingsUserHttpHeader1Name">用户提供的 HTTP 标头 1:名称</string>
<string id="SettingsUserHttpHeader1Value">用户提供的 HTTP 标头 1:值</string>
<string id="SettingsUserHttpHeader2Name">用户提供的 HTTP 标头 2名称</string>
<string id="SettingsUserHttpHeader2Value">用户提供的 HTTP 标头 2</string>
<string id="SettingsClearWebhookId">重新连接到 Home Assistant清除 Webhook ID请参阅故障排除指南</string>
<string id="SettingsWebhookId">(只读)设备为后台服务更新创建的 Webhook ID。您可能需要此 ID 进行调试。</string>
</strings>

View File

@@ -76,13 +76,14 @@
<string id="SettingsTextAlign">選單對齊:靠左 (關閉) 或 靠右 (開啟)。</string>
<string id="SettingsLeftToRight">從左到右</string>
<string id="SettingsRightToLeft">從右到左</string>
<string id="SettingsWidgetStart">(僅限小工具)自動從小工具啟動應用程式,無需等待輕觸。</string>
<string id="SettingsEnableBatteryLevel">啟用背景服務以傳送裝置電池電量、位置以及 (如果支援) 活動資料至 Home Assistant。</string>
<string id="SettingsBatteryLevelRefreshRate">背景服務應重複傳送資料的更新頻率(分鐘)。</string>
<string id="SettingsUserHttpHeader">使用者提供的 HTTP 標頭</string>
<string id="SettingsUserHttpHeaderDescription">部分 Home Assistant 安裝需要指定自訂 HTTP 標頭才能運作。</string>
<string id="SettingsUserHttpHeaderName">使用者提供的 HTTP 標頭:名稱</string>
<string id="SettingsUserHttpHeaderValue">使用者提供的 HTTP 標頭:值</string>
<string id="SettingsUserHttpHeader1Name">使用者提供的 HTTP 標頭 1:名稱</string>
<string id="SettingsUserHttpHeader1Value">使用者提供的 HTTP 標頭 1:值</string>
<string id="SettingsUserHttpHeader2Name">使用者提供的 HTTP 標頭 2名稱</string>
<string id="SettingsUserHttpHeader2Value">使用者提供的 HTTP 標頭 2</string>
<string id="SettingsClearWebhookId">重新連線至 Home Assistant (清除 Webhook ID請參閱疑難排解指南)。</string>
<string id="SettingsWebhookId">(唯讀)裝置為背景服務更新建立的 Webhook ID。您可能需要此 ID 進行偵錯。</string>
</strings>

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).
Dihasilkan oleh Google Translate dan gemini-2.5-flash dari Bahasa Inggeris ke Bahasa Melayu Standard (Bahasa)
-->
<strings>
@@ -76,13 +76,14 @@
<string id="SettingsTextAlign">Penjajaran Menu Kiri (mati) atau Kanan (hidup).</string>
<string id="SettingsLeftToRight">Kiri ke kanan</string>
<string id="SettingsRightToLeft">Kanan ke kiri</string>
<string id="SettingsWidgetStart">(Widget sahaja) Secara automatik memulakan aplikasi dari widget tanpa menunggu ketukan.</string>
<string id="SettingsEnableBatteryLevel">Dayakan perkhidmatan latar belakang untuk menghantar aras bateri peranti, lokasi dan (jika disokong) data aktiviti ke Home Assistant.</string>
<string id="SettingsBatteryLevelRefreshRate">Kadar penyegaran (dalam minit) di mana perkhidmatan latar belakang harus mengulang penghantaran data.</string>
<string id="SettingsUserHttpHeader">Pengepala HTTP dibekalkan pengguna</string>
<string id="SettingsUserHttpHeaderDescription">Sesetengah pemasangan Home Assistant memerlukan spesifikasi pengepala HTTP tersuai untuk berfungsi.</string>
<string id="SettingsUserHttpHeaderName">Pengepala HTTP dibekalkan pengguna: Nama</string>
<string id="SettingsUserHttpHeaderValue">Pengepala HTTP dibekalkan pengguna: Nilai</string>
<string id="SettingsUserHttpHeader1Name">Pengepala HTTP dibekalkan pengguna 1: Nama</string>
<string id="SettingsUserHttpHeader1Value">Pengepala HTTP dibekalkan pengguna 1: Nilai</string>
<string id="SettingsUserHttpHeader2Name">Pengepala HTTP dibekalkan pengguna 2: Nama</string>
<string id="SettingsUserHttpHeader2Value">Pengepala HTTP dibekalkan pengguna 2: Nilai</string>
<string id="SettingsClearWebhookId">Sambung semula ke Home Assistant (kosongkan ID Webhook, lihat panduan penyelesaian masalah).</string>
<string id="SettingsWebhookId">(Baca sahaja) ID Webhook yang dibuat oleh peranti untuk kemas kini perkhidmatan latar belakang. Anda mungkin memerlukan ini untuk penyahpepijatan.</string>
</strings>

View File

@@ -111,18 +111,36 @@
<property id="battery_level_refresh_rate" type="number">15</property>
<!--
Header 1:
A user specified HTTP header name to be used in all HTTP requests.
This is useful for some Home Assistant installations that require a
custom HTTP header.
-->
<property id="user_http_header_name" type="string"></property>
<property id="user_http_header1_name" type="string"></property>
<!--
Header 1:
A user specified HTTP header value to be used in all HTTP requests.
This is useful for some Home Assistant installations that require a
custom HTTP header.
-->
<property id="user_http_header_value" type="string"></property>
<property id="user_http_header1_value" type="string"></property>
<!--
Header 2:
A user specified HTTP header name to be used in all HTTP requests.
This is useful for some Home Assistant installations that require a
custom HTTP header.
-->
<property id="user_http_header2_name" type="string"></property>
<!--
Header 2:
A user specified HTTP header value to be used in all HTTP requests.
This is useful for some Home Assistant installations that require a
custom HTTP header.
-->
<property id="user_http_header2_value" type="string"></property>
<!--
Clear the Webhook ID on next application start, and reauthenticate,

View File

@@ -124,18 +124,37 @@
<settingConfig type="numeric" min="5" />
</setting>
<setting
propertyKey="@Properties.user_http_header_name"
title="@Strings.SettingsUserHttpHeaderName"
<group
id="HttpHeader"
title="@Strings.SettingsUserHttpHeader"
description="@Strings.SettingsUserHttpHeaderDescription"
>
<settingConfig type="alphaNumeric" />
</setting>
<setting
propertyKey="@Properties.user_http_header_value"
title="@Strings.SettingsUserHttpHeaderValue"
>
<settingConfig type="alphaNumeric" />
</setting>
<setting
propertyKey="@Properties.user_http_header1_name"
title="@Strings.SettingsUserHttpHeader1Name"
>
<settingConfig type="alphaNumeric" />
</setting>
<setting
propertyKey="@Properties.user_http_header1_value"
title="@Strings.SettingsUserHttpHeader1Value"
>
<settingConfig type="alphaNumeric" />
</setting>
<setting
propertyKey="@Properties.user_http_header2_name"
title="@Strings.SettingsUserHttpHeader2Name"
>
<settingConfig type="alphaNumeric" />
</setting>
<setting
propertyKey="@Properties.user_http_header2_value"
title="@Strings.SettingsUserHttpHeader2Value"
>
<settingConfig type="alphaNumeric" />
</setting>
</group>
<setting
propertyKey="@Properties.clear_webhook_id"

View File

@@ -71,13 +71,14 @@
<string id="SettingsTextAlign">Left (off) or Right (on) Menu Alignment.</string>
<string id="SettingsLeftToRight">Left to right</string>
<string id="SettingsRightToLeft">Right to Left</string>
<string id="SettingsWidgetStart">(Widget only) Automatically start the application from the widget without waiting for a tap.</string>
<string id="SettingsEnableBatteryLevel">Enable the background service to send the device battery level, location and (if supported) activity data to HomeAssistant.</string>
<string id="SettingsBatteryLevelRefreshRate">The refresh rate (in minutes) at which the background service should repeat sending data.</string>
<string id="SettingsUserHttpHeader">User supplied HTTP header</string>
<string id="SettingsUserHttpHeaderDescription">Some HomeAssistant installations require the specification of a custom HTTP header in order to function.</string>
<string id="SettingsUserHttpHeaderName">User supplied HTTP-Header: Name</string>
<string id="SettingsUserHttpHeaderValue">User supplied HTTP-Header: Value</string>
<string id="SettingsUserHttpHeader">User supplied HTTP headers</string>
<string id="SettingsUserHttpHeaderDescription">Some HomeAssistant installations require the specification of custom HTTP headers in order to function.</string>
<string id="SettingsUserHttpHeader1Name">User supplied HTTP-Header 1: Name</string>
<string id="SettingsUserHttpHeader1Value">User supplied HTTP-Header 1: Value</string>
<string id="SettingsUserHttpHeader2Name">User supplied HTTP-Header 2: Name</string>
<string id="SettingsUserHttpHeader2Value">User supplied HTTP-Header 2: Value</string>
<string id="SettingsClearWebhookId">Reconnect to HomeAssistant (clear Webhook ID, see Troubleshooting guide).</string>
<string id="SettingsWebhookId">(Read only) The Webhook ID created by the device for background service updates. You might require this for debugging.</string>
</strings>

View File

@@ -27,11 +27,11 @@ using Toybox.Timer;
//
(:glance, :background)
class HomeAssistantApp extends Application.AppBase {
static const scStorageKeyMenu as Lang.String = "menu";
static const scStorageKeyMenu as Lang.String = "menu";
static const scStorageKeyGlance as Lang.String = "glance";
private var mHasToast as Lang.Boolean = false;
private var mApiStatus as Lang.String?;
private var mMenuStatus as Lang.String?;
private var mHaMenu as HomeAssistantView?;
private var mGlanceTemplate as Lang.String? = null;
private var mGlanceText as Lang.String? = null;
@@ -111,7 +111,6 @@ class HomeAssistantApp extends Application.AppBase {
mQuitTimer = new QuitTimer();
mUpdateTimer = new Timer.Timer();
mApiStatus = WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String;
mMenuStatus = WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String;
mHasToast = WatchUi has :showToast;
Settings.update();
@@ -166,7 +165,6 @@ class HomeAssistantApp extends Application.AppBase {
// System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: " + responseCode);
// System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Data: " + data);
mMenuStatus = WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String;
switch (responseCode) {
case Communications.BLE_HOST_TIMEOUT:
case Communications.BLE_CONNECTION_UNAVAILABLE:
@@ -205,12 +203,8 @@ class HomeAssistantApp extends Application.AppBase {
break;
case 200:
if (data == null) {
mMenuStatus = WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String;
} else {
if (hasCachedMenu()) {
mMenuStatus = WatchUi.loadResource($.Rez.Strings.Cached) as Lang.String;
} else if (mIsApp) {
if (data != null) {
if (mIsApp) {
// var stats = System.getSystemStats(); // stats.* values in bytes
// System.println("HomeAssistantApp onReturnFetchMenuConfig() Memory: total=" + stats.totalMemory + ", used=" + stats.usedMemory + ", free=" + stats.freeMemory);
@@ -219,14 +213,14 @@ class HomeAssistantApp extends Application.AppBase {
// "Keys and values are limited to 8 KB each, and a total of 128 KB of storage is available."
// "Storage.setValue() fails with an uncatchable out-of-memory error."
Storage.setValue(scStorageKeyMenu, data as Lang.Dictionary);
mMenuStatus = WatchUi.loadResource($.Rez.Strings.Cached) as Lang.String;
} else {
mMenuStatus = WatchUi.loadResource($.Rez.Strings.Available) as Lang.String;
// Store the smaller glance section of the menu separately so the Glance view can retrieve it within memory limits.
var glance = (data as Lang.Dictionary)["glance"];
if (glance != null) {
Storage.setValue(scStorageKeyGlance, glance as Lang.Dictionary);
}
}
}
if (!mIsApp) {
glanceTemplate(data);
} else {
if (mIsApp) {
if (data == null) {
ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson) as Lang.String);
} else if (data.size() == 0) {
@@ -268,13 +262,13 @@ class HomeAssistantApp extends Application.AppBase {
function fetchMenuConfig() as Lang.Boolean {
// System.println("Menu URL = " + Settings.getConfigUrl());
if (Settings.getConfigUrl().equals("")) {
mMenuStatus = WatchUi.loadResource($.Rez.Strings.Unconfigured) as Lang.String;
WatchUi.requestUpdate();
} else {
var menu = Storage.getValue(scStorageKeyMenu) as Lang.Dictionary;
if (menu != null and (Settings.getClearCache() || !Settings.getCacheConfig())) {
// System.println("HomeAssistantApp fetchMenuConfig(): Clearing cached menu on user request.");
Storage.deleteValue(scStorageKeyMenu);
Storage.deleteValue(scStorageKeyGlance);
menu = null;
Settings.unsetClearCache();
}
@@ -282,13 +276,8 @@ class HomeAssistantApp extends Application.AppBase {
// System.println("HomeAssistantApp fetchMenuConfig(): Menu not cached, fetching.");
fetchMenuConfigBasic(method(:onReturnFetchMenuConfig));
} else {
mMenuStatus = WatchUi.loadResource($.Rez.Strings.Cached) as Lang.String;
WatchUi.requestUpdate();
if (!mIsApp) {
glanceTemplate(menu);
} else {
buildMenu(menu);
}
buildMenu(menu);
return true;
}
}
@@ -329,7 +318,6 @@ class HomeAssistantApp extends Application.AppBase {
} else {
ErrorView.show(WatchUi.loadResource(errorRez) as Lang.String);
}
mMenuStatus = WatchUi.loadResource(errorRez) as Lang.String;
} else {
Communications.makeWebRequest(
Settings.getConfigUrl(),
@@ -368,19 +356,17 @@ class HomeAssistantApp extends Application.AppBase {
//! Extract the optional template to override the default glance view.
//
function glanceTemplate(menu as Lang.Dictionary) {
if (menu != null) {
if (menu["glance"] != null) {
var glance = menu["glance"] as Lang.Dictionary;
if (glance["type"].equals("info")) {
mGlanceTemplate = glance["content"] as Lang.String;
// System.println("HomeAssistantApp glanceTemplate() " + mGlanceTemplate);
} else { // if glance["type"].equals("status")
mGlanceTemplate = null;
}
function glanceTemplate() {
var glance = Storage.getValue(scStorageKeyGlance) as Lang.Dictionary;
if ((glance != null) && (glance["type"] != null)) {
if (glance["type"].equals("info")) {
mGlanceTemplate = glance["content"] as Lang.String;
// System.println("HomeAssistantApp glanceTemplate() " + mGlanceTemplate);
} else { // if glance["type"].equals("status")
mGlanceTemplate = null;
}
}
}
}
//! Test if two dictionaries are structurally equal. Used to see if the JSON menu has been
//! amended but yet to be updated in the application cache.
@@ -539,6 +525,11 @@ class HomeAssistantApp extends Application.AppBase {
if (menu == null || !structuralEquals(data, menu)) {
// System.println("HomeAssistantApp onReturnCheckMenuConfig() New menu found.");
Storage.setValue(scStorageKeyMenu, data as Lang.Dictionary);
// Store the smaller glance section of the menu separately so the Glance view can retrieve it within memory limits.
var glance = (data as Lang.Dictionary)["glance"];
if (glance != null) {
Storage.setValue(scStorageKeyGlance, glance as Lang.Dictionary);
}
if (menu != null) {
// Notify the the user we have just got a newer menu file
var toast = WatchUi.loadResource($.Rez.Strings.MenuUpdated) as Lang.String;
@@ -897,51 +888,18 @@ class HomeAssistantApp extends Application.AppBase {
switch (responseCode) {
case Communications.BLE_HOST_TIMEOUT:
case Communications.BLE_CONNECTION_UNAVAILABLE:
// System.println("HomeAssistantApp onReturnFetchGlanceContent() Response Code: BLE_HOST_TIMEOUT or BLE_CONNECTION_UNAVAILABLE, Bluetooth connection severed.");
if (mIsApp) {
ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoPhone) as Lang.String);
}
break;
case Communications.BLE_QUEUE_FULL:
// System.println("HomeAssistantApp onReturnFetchGlanceContent() Response Code: BLE_QUEUE_FULL, API calls too rapid.");
if (mIsApp) {
ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiFlood) as Lang.String);
}
break;
case Communications.NETWORK_REQUEST_TIMED_OUT:
// System.println("HomeAssistantApp onReturnFetchGlanceContent() Response Code: NETWORK_REQUEST_TIMED_OUT, check Internet connection.");
if (mIsApp) {
ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoResponse) as Lang.String);
}
break;
case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE:
// System.println("HomeAssistantApp onReturnFetchGlanceContent() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned.");
if (mIsApp) {
ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson) as Lang.String);
}
break;
case 404:
// System.println("HomeAssistantApp onReturnFetchGlanceContent() Response Code: 404, page not found. Check Configuration URL setting.");
if (mIsApp) {
ErrorView.show(WatchUi.loadResource($.Rez.Strings.ConfigUrlNotFound) as Lang.String);
}
break;
case 200:
if ((data != null) && (data instanceof Lang.Dictionary)) {
mGlanceText = data["glanceTemplate"];
}
WatchUi.requestUpdate();
break;
default:
// System.println("HomeAssistantApp onReturnFetchGlanceContent(): Unhandled HTTP response code = " + responseCode);
if (mIsApp) {
ErrorView.show(WatchUi.loadResource($.Rez.Strings.UnhandledHttpErr) as Lang.String + responseCode);
}
}
WatchUi.requestUpdate();
}
@@ -989,14 +947,6 @@ class HomeAssistantApp extends Application.AppBase {
return mApiStatus;
}
//! Return the Menu status result.
//!
//! @return A string describing the Menu status
//
function getMenuStatus() as Lang.String {
return mMenuStatus;
}
//! Return the optional glance text that overrides the default glance content. This
//! is derived from the glance template.
//!
@@ -1047,11 +997,12 @@ class HomeAssistantApp extends Application.AppBase {
function getGlanceView() as [ WatchUi.GlanceView ] or [ WatchUi.GlanceView, WatchUi.GlanceViewDelegate ] or Null {
mIsApp = false; // A bit unnecessary given the default
mApiStatus = WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String;
mMenuStatus = WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String;
Settings.update();
glanceTemplate();
updateStatus();
mGlanceTimer = new Timer.Timer();
mGlanceTimer.start(method(:updateStatus), Globals.scApiBackoffMs, true);
// Although this is now known immediately, wait before displaying so the status can be seen first.
return [new HomeAssistantGlanceView(self)];
}
@@ -1066,8 +1017,6 @@ class HomeAssistantApp extends Application.AppBase {
//! Update the menu and API statuses. Required for the Glance update timer.
//
function updateStatus() as Void {
mGlanceTimer = null;
fetchMenuConfig();
fetchApiStatus();
if (!Settings.getWebhookId().equals("") && !Settings.getClearWebhookId()) {
fetchGlanceContent();

View File

@@ -47,8 +47,6 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView {
private var mTitle as WatchUi.Text?;
private var mApiText as WatchUi.Text?;
private var mApiStatus as WatchUi.Text?;
private var mMenuText as WatchUi.Text?;
private var mMenuStatus as WatchUi.Text?;
private var mGlanceContent as WatchUi.TextArea?;
private var mAntiAlias as Lang.Boolean = false;
@@ -69,7 +67,7 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView {
function onLayout(dc as Graphics.Dc) as Void {
var h = dc.getHeight();
mTextWidth = dc.getTextWidthInPixels(WatchUi.loadResource($.Rez.Strings.GlanceMenu) as Lang.String + ":", Graphics.FONT_XTINY);
mTextWidth = dc.getTextWidthInPixels("API:", Graphics.FONT_XTINY);
mTitle = new WatchUi.Text({
:text => WatchUi.loadResource($.Rez.Strings.AppName) as Lang.String,
@@ -86,7 +84,7 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView {
:font => Graphics.FONT_XTINY,
:justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
:locX => scLeftRectMargin + scRectWidth + scRightRectMargin,
:locY => 3 * h / 6
:locY => 4 * h / 6
});
mApiStatus = new WatchUi.Text({
:text => WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String,
@@ -94,28 +92,11 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView {
:font => Graphics.FONT_XTINY,
:justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
:locX => scLeftRectMargin + scRectWidth + scRightRectMargin + scMidSep + mTextWidth,
:locY => 3 * h / 6
});
mMenuText = new WatchUi.Text({
:text => WatchUi.loadResource($.Rez.Strings.GlanceMenu) as Lang.String + ":",
:color => Graphics.COLOR_WHITE,
:font => Graphics.FONT_XTINY,
:justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
:locX => scLeftRectMargin + scRectWidth + scRightRectMargin,
:locY => 5 * h / 6
});
mMenuStatus = new WatchUi.Text({
:text => WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String,
:color => Graphics.COLOR_WHITE,
:font => Graphics.FONT_XTINY,
:justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
:locX => scLeftRectMargin + scRectWidth + scRightRectMargin + scMidSep + mTextWidth,
:locY => 5 * h / 6
:locY => 4 * h / 6
});
mGlanceContent = new WatchUi.TextArea({
:text => "A longer piece of text to wrap.",
:text => "",
:color => Graphics.COLOR_WHITE,
:font => Graphics.FONT_XTINY,
:justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
@@ -134,10 +115,8 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView {
var h = dc.getHeight();
var w = dc.getWidth() - scLeftRectMargin - scRightGlanceMargin;
var apiStatus = mApp.getApiStatus();
var menuStatus = mApp.getMenuStatus();
var glanceText = mApp.getGlanceText();
var apiCol;
var menuCol;
// System.println("HomeAssistantGlanceView onUpdate() glanceText=" + glanceText);
GlanceView.onUpdate(dc);
@@ -160,33 +139,15 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView {
apiCol = Graphics.COLOR_RED;
}
if (menuStatus.equals(WatchUi.loadResource($.Rez.Strings.Checking))) {
menuCol = Graphics.COLOR_YELLOW;
} else if (menuStatus.equals(WatchUi.loadResource($.Rez.Strings.Available))) {
menuCol = Graphics.COLOR_GREEN;
} else if (menuStatus.equals(WatchUi.loadResource($.Rez.Strings.Cached))) {
menuCol = Graphics.COLOR_GREEN;
} else {
menuCol = Graphics.COLOR_RED;
}
if (glanceText == null) {
// Default Glance View
// Status Glance View
mApiText.draw(dc);
mApiStatus.setText(apiStatus);
mApiStatus.setColor(apiCol);
dc.setColor(apiCol, apiCol);
dc.drawRoundedRectangle(scLeftRectMargin, 2 * h / 6 + scVertMargin, w, 2 * h / 6 - (2 * scVertMargin), scRectRadius);
dc.fillRoundedRectangle(scLeftRectMargin, 2 * h / 6 + scVertMargin, scRectWidth, 2 * h / 6 - (2 * scVertMargin), scRectRadius);
dc.drawRoundedRectangle(scLeftRectMargin, 2 * h / 6 + scVertMargin, w, 4 * h / 6 - (2 * scVertMargin), scRectRadius);
dc.fillRoundedRectangle(scLeftRectMargin, 2 * h / 6 + scVertMargin, scRectWidth, 4 * h / 6 - (2 * scVertMargin), scRectRadius);
mApiStatus.draw(dc);
mMenuText.draw(dc);
mMenuStatus.setText(menuStatus);
mMenuStatus.setColor(menuCol);
dc.setColor(menuCol, menuCol);
dc.drawRoundedRectangle(scLeftRectMargin, 4 * h / 6 + scVertMargin, w, 2 * h / 6 - (2 * scVertMargin), scRectRadius);
dc.fillRoundedRectangle(scLeftRectMargin, 4 * h / 6 + scVertMargin, scRectWidth, 2 * h / 6 - (2 * scVertMargin), scRectRadius);
mMenuStatus.draw(dc);
} else {
// Customised Glance View
dc.setColor(Graphics.COLOR_BLUE, Graphics.COLOR_BLUE);
@@ -198,9 +159,7 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView {
scRectRadius
);
dc.setColor(apiCol, apiCol);
dc.fillRoundedRectangle(scLeftRectMargin, 2 * h / 6 + scVertMargin, scRectWidth, 2 * h / 6 - (2 * scVertMargin), scRectRadius);
dc.setColor(menuCol, menuCol);
dc.fillRoundedRectangle(scLeftRectMargin, 4 * h / 6 + scVertMargin, scRectWidth, 2 * h / 6 - (2 * scVertMargin), scRectRadius);
dc.fillRoundedRectangle(scLeftRectMargin, 2 * h / 6 + scVertMargin, scRectWidth, 4 * h / 6 - (2 * scVertMargin), scRectRadius);
mGlanceContent.setText(glanceText);
mGlanceContent.draw(dc);
}

View File

@@ -30,17 +30,20 @@ class HomeAssistantNumericPicker extends WatchUi.Picker {
factory as HomeAssistantNumericFactory,
haItem as HomeAssistantNumericMenuItem
) {
mItem = haItem;
var picker = mItem.getPicker();
var min = (picker.get("min") as Lang.String).toFloat();
var step = (picker.get("step") as Lang.String).toFloat();
var val = haItem.getValue();
if (min == null) {
min = 0.0;
mItem = haItem;
var picker = mItem.getPicker();
var minStr = picker.get("min");
var stepStr = picker.get("step");
var val = haItem.getValue();
var min = 0.0;
var step = 1.0;
if (minStr != null) {
min = (minStr as Lang.String).toFloat();
}
if (step == null) {
step = 1.0;
if (stepStr != null) {
step = (stepStr as Lang.String).toFloat();
}
WatchUi.Picker.initialize({
@@ -95,4 +98,4 @@ class HomeAssistantNumericPickerDelegate extends WatchUi.PickerDelegate {
mPicker.onConfirm(values[0]);
return true;
}
}
}

View File

@@ -51,10 +51,14 @@ class Settings {
private static var mIsSensorsEnabled as Lang.Boolean = false;
//! minutes
private static var mBatteryRefreshRate as Lang.Number = 15;
//! Additional user configurable HTTP header key
private static var mUserHeaderName as Lang.String? = null;
//! Additional user configurable HTTP header value
private static var mUserHeaderValue as Lang.String? = null;
//! Additional user configurable HTTP header 1 key
private static var mUserHeader1Name as Lang.String? = null;
//! Additional user configurable HTTP header 1 value
private static var mUserHeader1Value as Lang.String? = null;
//! Additional user configurable HTTP header 2 key
private static var mUserHeader2Name as Lang.String? = null;
//! Additional user configurable HTTP header 2 value
private static var mUserHeader2Value as Lang.String? = null;
private static var mClearWebhookId as Lang.Boolean = false;
private static var mIsApp as Lang.Boolean = false;
private static var mHasService as Lang.Boolean = false;
@@ -81,8 +85,10 @@ class Settings {
mMenuAlignment = Properties.getValue("menu_alignment");
mIsSensorsEnabled = Properties.getValue("enable_battery_level");
mBatteryRefreshRate = Properties.getValue("battery_level_refresh_rate");
mUserHeaderName = Properties.getValue("user_http_header_name");
mUserHeaderValue = Properties.getValue("user_http_header_value");
mUserHeader1Name = Properties.getValue("user_http_header1_name");
mUserHeader1Value = Properties.getValue("user_http_header1_value");
mUserHeader2Name = Properties.getValue("user_http_header2_name");
mUserHeader2Value = Properties.getValue("user_http_header2_value");
mClearWebhookId = Properties.getValue("clear_webhook_id");
if (mIsApp && mMenuCheck && !mCacheConfig) {
@@ -356,8 +362,11 @@ class Settings {
//
static function augmentHttpHeaders(options as Lang.Dictionary) {
// Use 'm.length() > 0' here in preference to 'm != ""' or '.equals("")'. They make the App crash on device but not in simulation.
if (mUserHeaderName != null && mUserHeaderName.length() > 0 && mUserHeaderValue != null && mUserHeaderValue.length() > 0) {
options[mUserHeaderName] = mUserHeaderValue;
if (mUserHeader1Name != null && mUserHeader1Name.length() > 0 && mUserHeader1Value != null && mUserHeader1Value.length() > 0) {
options[mUserHeader1Name] = mUserHeader1Value;
}
if (mUserHeader2Name != null && mUserHeader2Name.length() > 0 && mUserHeader2Value != null && mUserHeader2Value.length() > 0) {
options[mUserHeader2Name] = mUserHeader2Value;
}
return options;
}