Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
367870ad34 | ||
|
|
6218df3acb | ||
|
|
14f1c3bec9 | ||
|
|
82e1fda135 | ||
|
|
58aac9a754 | ||
|
|
a543314f0b | ||
|
|
dcb5c788fb | ||
|
|
b9d7096d88 | ||
|
|
69ea7df5fc | ||
|
|
e38301ef1a | ||
|
|
e912c96734 | ||
|
|
802388aac8 | ||
|
|
f042b59932 | ||
|
|
e0b5c41888 | ||
|
|
41d6a8a5c1 | ||
|
|
f23216d821 | ||
|
|
e1a2ca7c2c | ||
|
|
02a9472ac1 | ||
|
|
e0b5978406 | ||
|
|
c48d74138a | ||
|
|
3404c7f679 | ||
|
|
8c5bdbc1f8 | ||
|
|
a97440b997 | ||
|
|
17690d4349 | ||
|
|
b1fb5d9417 | ||
|
|
2fb59d2a56 | ||
|
|
3e3f60c47c | ||
|
|
7c4a23866c | ||
|
|
dbd2b4a568 | ||
|
|
ed89d1da74 | ||
|
|
799288f36f | ||
|
|
2a68fcc95d | ||
|
|
b781c054d2 | ||
|
|
cc32abab28 | ||
|
|
c8953021e3 | ||
|
|
5ddcc14c54 | ||
|
|
6d0f449904 | ||
|
|
07f3be0d26 | ||
|
|
2f76d68f1b | ||
|
|
53ed5083ce | ||
|
|
124d949faa | ||
|
|
ca854cab75 | ||
|
|
68e7761684 | ||
|
|
00649653bb | ||
|
|
8893e596ec | ||
|
|
e9bce71748 | ||
|
|
adc04ea9a2 | ||
|
|
fdf73563a3 | ||
|
|
600656b90c | ||
|
|
7daa07f52f | ||
|
|
6721a13e99 | ||
|
|
ea145424ee | ||
|
|
79ede44ea1 | ||
|
|
b6cec5a6d4 | ||
|
|
75ccf7dc01 | ||
|
|
3386077e6f | ||
|
|
6596b5fa5d | ||
|
|
1568aded26 | ||
|
|
651c9462e0 | ||
|
|
b94343de4f | ||
|
|
3e85b695ec | ||
|
|
b29ee457ca | ||
|
|
cc2fc27532 | ||
|
|
188fb8feff |
@@ -2,13 +2,19 @@
|
|||||||
name: Bug report
|
name: Bug report
|
||||||
about: Create a report to help us improve
|
about: Create a report to help us improve
|
||||||
title: ''
|
title: ''
|
||||||
labels: bug
|
labels: question
|
||||||
assignees: ''
|
assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Describe the bug**
|
The majority of bug reports submitted are solved without changes to the Garmin application's code. This means that reporters are too often keen to attribute their issue to a problem with the application instead of:
|
||||||
A clear and concise description of what the bug is.
|
1. Their own lack of reading documentation
|
||||||
|
2. Their own infrastructure
|
||||||
|
|
||||||
|
Therefore in the first place make your report as if it were a **question** in order to establish if the authors agree there is really a bug!
|
||||||
|
|
||||||
|
**Describe your issue**
|
||||||
|
A clear and concise description of what the issue is.
|
||||||
|
|
||||||
**IMPORTANT!**
|
**IMPORTANT!**
|
||||||
I have:
|
I have:
|
||||||
@@ -17,8 +23,9 @@ I have:
|
|||||||
- [ ] Checked that my JSON Syntax is correct ([options 2, 3, or 4](https://github.com/house-of-abbey/GarminHomeAssistant#editing-the-json-file) or otherwise)
|
- [ ] Checked that my JSON Syntax is correct ([options 2, 3, or 4](https://github.com/house-of-abbey/GarminHomeAssistant#editing-the-json-file) or otherwise)
|
||||||
- [ ] Checked that my JSON follows the schema ([options 2, 3, or 4](https://github.com/house-of-abbey/GarminHomeAssistant#editing-the-json-file))
|
- [ ] Checked that my JSON follows the schema ([options 2, 3, or 4](https://github.com/house-of-abbey/GarminHomeAssistant#editing-the-json-file))
|
||||||
- [ ] Used the online editor to check my JSON against HomeAssistant ([option 1](https://github.com/house-of-abbey/GarminHomeAssistant#editing-the-json-file))
|
- [ ] Used the online editor to check my JSON against HomeAssistant ([option 1](https://github.com/house-of-abbey/GarminHomeAssistant#editing-the-json-file))
|
||||||
- [ ] Checked the [Docs](https://github.com/house-of-abbey/GarminHomeAssistant)
|
- [ ] Read the [Documentation](https://github.com/house-of-abbey/GarminHomeAssistant)
|
||||||
- [ ] Checked the [Troubleshooting Guide](https://github.com/house-of-abbey/GarminHomeAssistant/blob/main/TroubleShooting.md)
|
- [ ] Run through the [Troubleshooting Guide](https://github.com/house-of-abbey/GarminHomeAssistant/blob/main/TroubleShooting.md)
|
||||||
|
- [ ] Checked the [Known Issues](https://github.com/house-of-abbey/GarminHomeAssistant?tab=readme-ov-file#known-issues), i.e. the problems beyond the control of this Garmin application and must therefore be tolerated!
|
||||||
|
|
||||||
**To Reproduce**
|
**To Reproduce**
|
||||||
Steps to reproduce the behavior:
|
Steps to reproduce the behavior:
|
||||||
|
|||||||
@@ -7,3 +7,4 @@ Thumbs.db
|
|||||||
source/ClientId.mc
|
source/ClientId.mc
|
||||||
# Gemini API key for automated translations
|
# Gemini API key for automated translations
|
||||||
gemini_api_key.txt
|
gemini_api_key.txt
|
||||||
|
developer_key
|
||||||
@@ -33,11 +33,13 @@ From version 2.6 the application includes reporting your location. The location
|
|||||||
You get whatever your device provides at the moment, i.e. at the accuracy the device currently provides. If your watch is not calibrated you get poor data. It might mean that you get more accurate location data when you are in a location tracking activity (i.e. not swimming pool lengths). The device [indicates an accuracy](https://developer.garmin.com/connect-iq/api-docs/Toybox/Position.html#Quality-module) in units of:
|
You get whatever your device provides at the moment, i.e. at the accuracy the device currently provides. If your watch is not calibrated you get poor data. It might mean that you get more accurate location data when you are in a location tracking activity (i.e. not swimming pool lengths). The device [indicates an accuracy](https://developer.garmin.com/connect-iq/api-docs/Toybox/Position.html#Quality-module) in units of:
|
||||||
|
|
||||||
- `Position.QUALITY_NOT_AVAILABLE` - No update provided
|
- `Position.QUALITY_NOT_AVAILABLE` - No update provided
|
||||||
- `Position.QUALITY_LAST_KNOWN` - No update provided
|
- `Position.QUALITY_LAST_KNOWN` - We translate that to 200 m arbitrarily
|
||||||
- `Position.QUALITY_POOR` - We translate that to 500 m arbitrarily
|
- `Position.QUALITY_POOR` - We translate that to 100 m arbitrarily
|
||||||
- `Position.QUALITY_USABLE` - We translate that to 100 m arbitrarily
|
- `Position.QUALITY_USABLE` - We translate that to 50 m arbitrarily
|
||||||
- `Position.QUALITY_GOOD` - We translate that to 10 m arbitrarily
|
- `Position.QUALITY_GOOD` - We translate that to 10 m arbitrarily
|
||||||
|
|
||||||
|
NB. These values have been revised as of Ver 3.12.
|
||||||
|
|
||||||
**You cannot rely on the radius of the circle of accuracy in any resulting maps as any meaningful indication of error.**
|
**You cannot rely on the radius of the circle of accuracy in any resulting maps as any meaningful indication of error.**
|
||||||
|
|
||||||
## Activity Reporting
|
## Activity Reporting
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ A user has reported a maximum of 26 items with Ver 3.5. This measurement has sho
|
|||||||
As a worked example, for Ver 3.6 working on an `instinct2x` device:
|
As a worked example, for Ver 3.6 working on an `instinct2x` device:
|
||||||
|
|
||||||
| Feature | Memory (bytes) | Cost (bytes) |
|
| Feature | Memory (bytes) | Cost (bytes) |
|
||||||
|--------------------------------------|---------------:|-------------:|
|
|:-------------------------------------|---------------:|-------------:|
|
||||||
| Declared available to application | 98,304 | |
|
| Declared available to application | 98,304 | |
|
||||||
| Measured available to application | 94,112 | (4,192 less) |
|
| Measured available to application | 94,112 | (4,192 less) |
|
||||||
| Application used | 65,696 | |
|
| Application used | 65,696 | |
|
||||||
@@ -28,167 +28,188 @@ As a worked example, for Ver 3.6 working on an `instinct2x` device:
|
|||||||
|
|
||||||
Our test menu presently contains a mix of 28 items, consisting of nested group, toggle, tap, info and numeric items with templates. So each item requires (12,624 + 14,856) / 28 = 982 bytes.
|
Our test menu presently contains a mix of 28 items, consisting of nested group, toggle, tap, info and numeric items with templates. So each item requires (12,624 + 14,856) / 28 = 982 bytes.
|
||||||
|
|
||||||
|
## Glance Memory Usage
|
||||||
|
|
||||||
|
Using a `venu2` device the Glance view memory statistics are:
|
||||||
|
|
||||||
|
| Measure | Memory (bytes) |
|
||||||
|
|:----------|----------------:|
|
||||||
|
| Total | 61,344 |
|
||||||
|
| Peak Used | 32,224 |
|
||||||
|
| Free | 29,120 |
|
||||||
|
|
||||||
|
This means that for older devices listed below, with only 32 kB of Glance memory, the Glance view crashes with an "_Out Of Memory Error_". There is no opportunity in the code to intervene and no way to catch this fatal error. Nor is there any way to disable the Glance view on a device by device basis. Therefore, the only answer at present is to allow the Glance view to crash. It may display "HomeAssistant" as the Glance view text before crashing.
|
||||||
|
|
||||||
|
This problem has been explored via a [Github issue](https://github.com/house-of-abbey/GarminHomeAssistant/issues/347). This is now listed as a [known issue](./README.md#known-issues).
|
||||||
|
|
||||||
## Garmin Devices
|
## Garmin Devices
|
||||||
|
|
||||||
The following table details all the devices as at 1 October 2025 and whether they are supported by Garmin HomeAssistant. The available application memory is also detailed so that it can be compared to an application version listed above. Of particular concern are the 'Instinct' range of devices, being the smallest we currently support. New feature requests are now being vetted against how they might affect our ability to support the 'Instinct' range of devices. At some point support may have to be withdrawn in order to allow the Garmin HomeAssistant application to grow further.
|
The following table details all the devices as at March 2026 and whether they are supported by Garmin HomeAssistant. The available application and glance memory is also detailed so that it can be compared to an application version listed above. Of particular concern are the 'Instinct' range of devices, being the smallest we currently support. New feature requests are now being vetted against how they might affect our ability to support the 'Instinct' range of devices. At some point support may have to be withdrawn in order to allow the Garmin HomeAssistant application to grow further.
|
||||||
|
|
||||||
| Device | Supported | Application Memory |
|
| Device | Supported | Application Memory | Glance Memory |
|
||||||
|----------------------------|:---------:|--------------------:|
|
|:---------------------------|:---------:|-------------------:|---------------:|
|
||||||
| d2bravo | N | 65,536 |
|
| approachs50 | Y | 786,432 | 65,536 |
|
||||||
| d2bravo_titanium | N | 65,536 |
|
| approachs60 | N | 131,072 | |
|
||||||
| fenix3 | N | 65,536 |
|
| approachs62 | N | 1,048,576 | |
|
||||||
| fenix3_hr | N | 65,536 |
|
| approachs7042mm | Y | 786,432 | 65,536 |
|
||||||
| fr230 | N | 65,536 |
|
| approachs7047mm | Y | 786,432 | 65,536 |
|
||||||
| fr235 | N | 65,536 |
|
| d2air | Y | 1,048,576 | |
|
||||||
| fr630 | N | 65,536 |
|
| d2airx10 | Y | 786,432 | 65,536 |
|
||||||
| fr920xt | N | 65,536 |
|
| d2bravo | N | 65,536 | |
|
||||||
| vivoactive | N | 65,536 |
|
| d2bravo_titanium | N | 65,536 | |
|
||||||
| descentg1 | Y | 98,304 |
|
| d2charlie | N | 1,310,720 | |
|
||||||
| instinct2 | Y | 98,304 |
|
| d2delta | Y | 1,310,720 | |
|
||||||
| instinct2s | Y | 98,304 |
|
| d2deltapx | Y | 1,310,720 | |
|
||||||
| instinct2x | Y | 98,304 |
|
| d2deltas | Y | 1,310,720 | |
|
||||||
| instinctcrossover | Y | 98,304 |
|
| d2mach1 | Y | 786,432 | 65,536 |
|
||||||
| approachs60 | N | 131,072 |
|
| d2mach2 | Y | 786,432 | 65,536 |
|
||||||
| enduro | Y | 131,072 |
|
| descentg1 | Y | 98,304 | 32,768 |
|
||||||
| fenix5 | Y | 131,072 |
|
| descentg2 | Y | 786,432 | 65,536 |
|
||||||
| fenix5s | Y | 131,072 |
|
| descentmk1 | N | 1,310,720 | |
|
||||||
| fenix6 | Y | 131,072 |
|
| descentmk2 | Y | 1,310,720 | 32,768 |
|
||||||
| fenix6s | Y | 131,072 |
|
| descentmk2s | Y | 1,310,720 | 32,768 |
|
||||||
| fenixchronos | Y | 131,072 |
|
| descentmk343mm | Y | 786,432 | 65,536 |
|
||||||
| fr245 | Y | 131,072 |
|
| descentmk351mm | Y | 786,432 | 65,536 |
|
||||||
| fr55 | Y | 131,072 |
|
| edge1030 | Y | 1,048,576 | |
|
||||||
| fr645 | Y | 131,072 |
|
| edge1030bontrager | Y | 1,048,576 | |
|
||||||
| fr735xt | N | 131,072 |
|
| edge1030plus | Y | 1,048,576 | |
|
||||||
| fr935 | Y | 131,072 |
|
| edge1040 | Y | 1,048,576 | 65,536 |
|
||||||
| instinct3solar45mm | Y | 131,072 |
|
| edge1050 | Y | 1,048,576 | 65,536 |
|
||||||
| instincte40mm | Y | 131,072 |
|
| edge130 | N | | |
|
||||||
| instincte45mm | Y | 131,072 |
|
| edge130plus | N | | |
|
||||||
| venusq | Y | 131,072 |
|
| edge520plus | Y | 1,048,576 | |
|
||||||
| vivoactive3 | Y | 131,072 |
|
| edge530 | Y | 1,048,576 | |
|
||||||
| vivoactive3d | N | 131,072 |
|
| edge540 | Y | 1,048,576 | 65,536 |
|
||||||
| vivoactive_hr | N | 131,072 |
|
| edge550 | Y | 1,048,576 | 65,536 |
|
||||||
| edge_520 | N | 262,144 |
|
| edge820 | Y | 1,048,576 | |
|
||||||
| fr255 | Y | 524,288 |
|
| edge830 | Y | 1,048,576 | |
|
||||||
| fr255s | Y | 524,288 |
|
| edge840 | Y | 1,048,576 | 65,536 |
|
||||||
| approachs50 | Y | 786,432 |
|
| edge850 | Y | 1,048,576 | 65,536 |
|
||||||
| approachs7042mm | Y | 786,432 |
|
| edgeexplore | Y | 1,048,576 | |
|
||||||
| approachs7047mm | Y | 786,432 |
|
| edgeexplore2 | Y | 1,048,576 | 65,536 |
|
||||||
| d2airx10 | Y | 786,432 |
|
| edgemtb | Y | 1,048,576 | 65,536 |
|
||||||
| d2mach1 | Y | 786,432 |
|
| edge_1000 | N | 1,048,576 | |
|
||||||
| descentg2 | Y | 786,432 |
|
| edge_520 | N | 262,144 | |
|
||||||
| descentmk343mm | Y | 786,432 |
|
| enduro | Y | 131,072 | 32,768 |
|
||||||
| descentmk351mm | Y | 786,432 |
|
| enduro3 | Y | 786,432 | 65,536 |
|
||||||
| enduro3 | Y | 786,432 |
|
| epix | N | 1,048,576 | |
|
||||||
| epix2 | Y | 786,432 |
|
| epix2 | Y | 786,432 | 65,536 |
|
||||||
| epix2pro42mm | Y | 786,432 |
|
| epix2pro42mm | Y | 786,432 | 65,536 |
|
||||||
| epix2pro47mm | Y | 786,432 |
|
| epix2pro47mm | Y | 786,432 | 65,536 |
|
||||||
| epix2pro47mmsystem7preview | Y | 786,432 |
|
| epix2pro47mmsystem7preview | Y | 786,432 | 65,536 |
|
||||||
| epix2pro51mm | Y | 786,432 |
|
| epix2pro51mm | Y | 786,432 | 65,536 |
|
||||||
| fenix7 | Y | 786,432 |
|
| etrextouch | Y | 2,359,296 | |
|
||||||
| fenix7pro | Y | 786,432 |
|
| fenix3 | N | 65,536 | |
|
||||||
| fenix7pronowifi | Y | 786,432 |
|
| fenix3_hr | N | 65,536 | |
|
||||||
| fenix7s | Y | 786,432 |
|
| fenix5 | Y | 131,072 | |
|
||||||
| fenix7spro | Y | 786,432 |
|
| fenix5plus | Y | 1,310,720 | |
|
||||||
| fenix7x | Y | 786,432 |
|
| fenix5s | Y | 131,072 | |
|
||||||
| fenix7xpro | Y | 786,432 |
|
| fenix5splus | Y | 1,310,720 | |
|
||||||
| fenix7xpronowifi | Y | 786,432 |
|
| fenix5x | Y | 1,310,720 | |
|
||||||
| fenix843mm | Y | 786,432 |
|
| fenix5xplus | Y | 1,310,720 | |
|
||||||
| fenix847mm | Y | 786,432 |
|
| fenix6 | Y | 131,072 | 32,768 |
|
||||||
| fenix8pro47mm | Y | 786,432 |
|
| fenix6pro | Y | 1,310,720 | 32,768 |
|
||||||
| fenix8solar47mm | Y | 786,432 |
|
| fenix6s | Y | 131,072 | 32,768 |
|
||||||
| fenix8solar51mm | Y | 786,432 |
|
| fenix6spro | Y | 1,310,720 | 32,768 |
|
||||||
| fenixe | Y | 786,432 |
|
| fenix6xpro | Y | 1,310,720 | 32,768 |
|
||||||
| fr165 | Y | 786,432 |
|
| fenix7 | Y | 786,432 | 65,536 |
|
||||||
| fr165m | Y | 786,432 |
|
| fenix7pro | Y | 786,432 | 65,536 |
|
||||||
| fr255m | Y | 786,432 |
|
| fenix7pronowifi | Y | 786,432 | 65,536 |
|
||||||
| fr255sm | Y | 786,432 |
|
| fenix7s | Y | 786,432 | 65,536 |
|
||||||
| fr265 | Y | 786,432 |
|
| fenix7spro | Y | 786,432 | 65,536 |
|
||||||
| fr265s | Y | 786,432 |
|
| fenix7x | Y | 786,432 | 65,536 |
|
||||||
| fr57042mm | Y | 786,432 |
|
| fenix7xpro | Y | 786,432 | 65,536 |
|
||||||
| fr57047mm | Y | 786,432 |
|
| fenix7xpronowifi | Y | 786,432 | 65,536 |
|
||||||
| fr955 | Y | 786,432 |
|
| fenix843mm | Y | 786,432 | 65,536 |
|
||||||
| fr965 | Y | 786,432 |
|
| fenix847mm | Y | 786,432 | 65,536 |
|
||||||
| fr970 | Y | 786,432 |
|
| fenix8pro47mm | Y | 786,432 | 65,536 |
|
||||||
| instinct3amoled45mm | Y | 786,432 |
|
| fenix8solar47mm | Y | 786,432 | 65,536 |
|
||||||
| instinct3amoled50mm | Y | 786,432 |
|
| fenix8solar51mm | Y | 786,432 | 65,536 |
|
||||||
| instinctcrossoveramoled | Y | 786,432 |
|
| fenixchronos | Y | 131,072 | |
|
||||||
| marq2 | Y | 786,432 |
|
| fenixe | Y | 786,432 | 65,536 |
|
||||||
| marq2aviator | Y | 786,432 |
|
| fr165 | Y | 786,432 | 65,536 |
|
||||||
| system8preview | N | 786,432 |
|
| fr165m | Y | 786,432 | 65,536 |
|
||||||
| venu2 | Y | 786,432 |
|
| fr230 | N | 65,536 | |
|
||||||
| venu2plus | Y | 786,432 |
|
| fr235 | N | 65,536 | |
|
||||||
| venu2s | Y | 786,432 |
|
| fr245 | Y | 131,072 | 32,768 |
|
||||||
| venu3 | Y | 786,432 |
|
| fr245m | Y | 1,310,720 | 32,768 |
|
||||||
| venu3s | Y | 786,432 |
|
| fr255 | Y | 524,288 | 65,536 |
|
||||||
| venu441mm | Y | 786,432 |
|
| fr255m | Y | 786,432 | 65,536 |
|
||||||
| venu445mm | Y | 786,432 |
|
| fr255s | Y | 524,288 | 65,536 |
|
||||||
| venusq2 | Y | 786,432 |
|
| fr255sm | Y | 786,432 | 65,536 |
|
||||||
| venusq2m | Y | 786,432 |
|
| fr265 | Y | 786,432 | 65,536 |
|
||||||
| venux1 | Y | 786,432 |
|
| fr265s | Y | 786,432 | 65,536 |
|
||||||
| vivoactive5 | Y | 786,432 |
|
| fr45 | N | | |
|
||||||
| vivoactive6 | Y | 786,432 |
|
| fr55 | Y | 131,072 | 32,768 |
|
||||||
| approachs62 | N | 1,048,576 |
|
| fr57042mm | Y | 786,432 | 65,536 |
|
||||||
| d2air | Y | 1,048,576 |
|
| fr57047mm | Y | 786,432 | 65,536 |
|
||||||
| edge1030 | Y | 1,048,576 |
|
| fr630 | N | 65,536 | |
|
||||||
| edge1030bontrager | Y | 1,048,576 |
|
| fr645 | Y | 131,072 | |
|
||||||
| edge1030plus | Y | 1,048,576 |
|
| fr645m | Y | 1,048,576 | |
|
||||||
| edge1040 | Y | 1,048,576 |
|
| fr735xt | N | 131,072 | |
|
||||||
| edge1050 | Y | 1,048,576 |
|
| fr745 | Y | 1,310,720 | 32,768 |
|
||||||
| edge520plus | Y | 1,048,576 |
|
| fr920xt | N | 65,536 | |
|
||||||
| edge530 | Y | 1,048,576 |
|
| fr935 | Y | 131,072 | |
|
||||||
| edge540 | Y | 1,048,576 |
|
| fr945 | Y | 1,310,720 | 32,768 |
|
||||||
| edge550 | Y | 1,048,576 |
|
| fr945lte | Y | 1,310,720 | 32,768 |
|
||||||
| edge820 | Y | 1,048,576 |
|
| fr955 | Y | 786,432 | 65,536 |
|
||||||
| edge830 | Y | 1,048,576 |
|
| fr965 | Y | 786,432 | 65,536 |
|
||||||
| edge840 | Y | 1,048,576 |
|
| fr970 | Y | 786,432 | 65,536 |
|
||||||
| edge850 | Y | 1,048,576 |
|
| garminswim2 | N | | |
|
||||||
| edgeexplore | Y | 1,048,576 |
|
| gpsmap66 | Y | 2,359,296 | |
|
||||||
| edgeexplore2 | Y | 1,048,576 |
|
| gpsmap67 | Y | 2,359,296 | |
|
||||||
| edgemtb | Y | 1,048,576 |
|
| gpsmap86 | N | 2,359,296 | |
|
||||||
| edge_1000 | N | 1,048,576 |
|
| gpsmaph1 | Y | 2,359,296 | |
|
||||||
| epix | N | 1,048,576 |
|
| instinct2 | Y | 98,304 | 32,768 |
|
||||||
| fr645m | Y | 1,048,576 |
|
| instinct2s | Y | 98,304 | 32,768 |
|
||||||
| legacyherocaptainmarvel | Y | 1,048,576 |
|
| instinct2x | Y | 98,304 | 32,768 |
|
||||||
| legacyherofirstavenger | Y | 1,048,576 |
|
| instinct3amoled45mm | Y | 786,432 | 65,536 |
|
||||||
| legacysagadarthvader | Y | 1,048,576 |
|
| instinct3amoled50mm | Y | 786,432 | 65,536 |
|
||||||
| legacysagarey | Y | 1,048,576 |
|
| instinct3solar45mm | Y | 131,072 | 32,768 |
|
||||||
| venu | Y | 1,048,576 |
|
| instinctcrossover | Y | 98,304 | 32,768 |
|
||||||
| venud | Y | 1,048,576 |
|
| instinctcrossoveramoled | Y | 786,432 | 65,536 |
|
||||||
| venusqm | Y | 1,048,576 |
|
| instincte40mm | Y | 131,072 | 32,768 |
|
||||||
| vivoactive3m | Y | 1,048,576 |
|
| instincte45mm | Y | 131,072 | 32,768 |
|
||||||
| vivoactive3mlte | Y | 1,048,576 |
|
| legacyherocaptainmarvel | Y | 1,048,576 | |
|
||||||
| vivoactive4 | Y | 1,048,576 |
|
| legacyherofirstavenger | Y | 1,048,576 | |
|
||||||
| vivoactive4s | Y | 1,048,576 |
|
| legacysagadarthvader | Y | 1,048,576 | |
|
||||||
| d2charlie | N | 1,310,720 |
|
| legacysagarey | Y | 1,048,576 | |
|
||||||
| d2delta | Y | 1,310,720 |
|
| marq2 | Y | 786,432 | 65,536 |
|
||||||
| d2deltapx | Y | 1,310,720 |
|
| marq2aviator | Y | 786,432 | 65,536 |
|
||||||
| d2deltas | Y | 1,310,720 |
|
| marqadventurer | Y | 1,310,720 | 32,768 |
|
||||||
| descentmk1 | N | 1,310,720 |
|
| marqathlete | Y | 1,310,720 | 32,768 |
|
||||||
| descentmk2 | Y | 1,310,720 |
|
| marqaviator | Y | 1,310,720 | 32,768 |
|
||||||
| descentmk2s | Y | 1,310,720 |
|
| marqcaptain | Y | 1,310,720 | 32,768 |
|
||||||
| fenix5plus | Y | 1,310,720 |
|
| marqcommander | Y | 1,310,720 | 32,768 |
|
||||||
| fenix5splus | Y | 1,310,720 |
|
| marqdriver | Y | 1,310,720 | 32,768 |
|
||||||
| fenix5x | Y | 1,310,720 |
|
| marqexpedition | Y | 1,310,720 | 32,768 |
|
||||||
| fenix5xplus | Y | 1,310,720 |
|
| marqgolfer | Y | 1,310,720 | 32,768 |
|
||||||
| fenix6pro | Y | 1,310,720 |
|
| montana7xx | Y | 2,359,296 | |
|
||||||
| fenix6spro | Y | 1,310,720 |
|
| oregon7xx | N | 2,359,296 | |
|
||||||
| fenix6xpro | Y | 1,310,720 |
|
| rino7xx | N | 2,359,296 | |
|
||||||
| fr245m | Y | 1,310,720 |
|
| system8preview | N | 786,432 | 65,536 |
|
||||||
| fr745 | Y | 1,310,720 |
|
| venu | Y | 1,048,576 | |
|
||||||
| fr945 | Y | 1,310,720 |
|
| venu2 | Y | 786,432 | 65,536 |
|
||||||
| fr945lte | Y | 1,310,720 |
|
| venu2plus | Y | 786,432 | 65,536 |
|
||||||
| marqadventurer | Y | 1,310,720 |
|
| venu2s | Y | 786,432 | 65,536 |
|
||||||
| marqathlete | Y | 1,310,720 |
|
| venu3 | Y | 786,432 | 65,536 |
|
||||||
| marqaviator | Y | 1,310,720 |
|
| venu3s | Y | 786,432 | 65,536 |
|
||||||
| marqcaptain | Y | 1,310,720 |
|
| venu441mm | Y | 786,432 | 65,536 |
|
||||||
| marqcommander | Y | 1,310,720 |
|
| venu445mm | Y | 786,432 | 65,536 |
|
||||||
| marqdriver | Y | 1,310,720 |
|
| venud | Y | 1,048,576 | |
|
||||||
| marqexpedition | Y | 1,310,720 |
|
| venusq | Y | 131,072 | |
|
||||||
| marqgolfer | Y | 1,310,720 |
|
| venusq2 | Y | 786,432 | 65,536 |
|
||||||
| gpsmap66 | Y | 2,359,296 |
|
| venusq2m | Y | 786,432 | 65,536 |
|
||||||
| gpsmap67 | Y | 2,359,296 |
|
| venusqm | Y | 1,048,576 | |
|
||||||
| gpsmap86 | N | 2,359,296 |
|
| venux1 | Y | 786,432 | 65,536 |
|
||||||
| gpsmaph1 | Y | 2,359,296 |
|
| vivoactive | N | 65,536 | |
|
||||||
| montana7xx | Y | 2,359,296 |
|
| vivoactive3 | Y | 131,072 | |
|
||||||
| oregon7xx | N | 2,359,296 |
|
| vivoactive3d | N | 131,072 | |
|
||||||
| rino7xx | N | 2,359,296 |
|
| vivoactive3m | Y | 1,048,576 | |
|
||||||
|
| vivoactive3mlte | Y | 1,048,576 | |
|
||||||
|
| vivoactive4 | Y | 1,048,576 | |
|
||||||
|
| vivoactive4s | Y | 1,048,576 | |
|
||||||
|
| vivoactive5 | Y | 786,432 | 65,536 |
|
||||||
|
| vivoactive6 | Y | 786,432 | 65,536 |
|
||||||
|
| vivoactive_hr | N | 131,072 | |
|
||||||
|
| vivolife | N | | |
|
||||||
@@ -18,11 +18,11 @@
|
|||||||
|
|
||||||
# Etiquette
|
# Etiquette
|
||||||
|
|
||||||
Thank you to all those who have provided positive feedback, code and language translations, you have made the product better. The majority of users that contact us are grateful and we thank you for your courtesy. Sadly not everyone is as reasonable or polite. What follows is what the authors consider reasonable behaviour from users. We are getting a sufficient number of examples that it feels like something has to be called out! There are some users who feel "entitled" to be discourteous, as evidences by some of the Garmin application reviews.
|
Thank you to all those who have provided positive feedback, code and language translations, you have made the product better. The majority of users that contact us are grateful and we thank you for your courtesy. Sadly not everyone is as reasonable or polite. What follows is what the authors consider reasonable behaviour from users. We are getting a sufficient number of examples that it feels like something has to be called out! There are some users who feel "entitled" to be discourteous, as evidences by some of the Garmin application reviews. Its too easy to express an uninformed opinion publicaly these days without being held accountable and having to defend it as reasonable.
|
||||||
|
|
||||||
> [!IMPORTANT]
|
> [!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.
|
> **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]
|
> [!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!
|
> 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!
|
||||||
>
|
>
|
||||||
@@ -142,6 +142,8 @@ On Mon, 6 May 2024 at 09:01, <noreply@garmin.com> wrote:
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
<img src="images/etiquette/2026-04-02_GHA_Bad_Review.png" width="70%" title="Not working">
|
||||||
|
|
||||||
Answer: Make sure you meet the [minimum requirements for being a user](#etiquette) please! Provide more information on what the problem actually is. Clearly the support reply pointing to the documentation was either not read or not considered helpful, hence the point about meeting the minimum user requirements.
|
Answer: Make sure you meet the [minimum requirements for being a user](#etiquette) please! Provide more information on what the problem actually is. Clearly the support reply pointing to the documentation was either not read or not considered helpful, hence the point about meeting the minimum user requirements.
|
||||||
|
|
||||||
On Fri, 31 Oct 2025 at 11:45, <noreply@garmin.com> wrote:
|
On Fri, 31 Oct 2025 at 11:45, <noreply@garmin.com> wrote:
|
||||||
@@ -198,6 +200,25 @@ Answer: Make sure you meet the [minimum requirements for being a user](#etiquett
|
|||||||
|
|
||||||
(This last email trail does beg the question how this user ever expected to be able to work with their own Home Assistant server...)
|
(This last email trail does beg the question how this user ever expected to be able to work with their own Home Assistant server...)
|
||||||
|
|
||||||
|
**This one is interesting for a different reason.**
|
||||||
|
|
||||||
|
<img src="images/etiquette/2026-07-20_GHA_Opinionated_Italian.png" width="70%" title="Complicated for hobbyist">
|
||||||
|
|
||||||
|
> "I reverse malware for a living"
|
||||||
|
|
||||||
|
- Putting yourself on a pedestal?
|
||||||
|
- Are we supposed to credit you that you opinion carries additional weight?
|
||||||
|
|
||||||
|
> "this is complicated for a hobbyist"
|
||||||
|
|
||||||
|
Not for himself, but speaking on behalf of other users, how noble? Except the app is rated 4.7 in the store presently, so plenty of other users, including 'hobbyists', seem to disagree.
|
||||||
|
- Why did you feel you had to post an opinion on behalf of _any_ other users?
|
||||||
|
- Are hobbyists not as clever as you?
|
||||||
|
|
||||||
|
You're free to voice your opinion, but if you do it publicly, I have the freedom to reply and point out the flaws in your argument.
|
||||||
|
|
||||||
|
Do you not have a clue about writing significant applications in constrained space (i.e. including older devices), and therefore the limits that imposes on the application, e.g. menu building?
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### API Keys
|
### API Keys
|
||||||
@@ -390,11 +411,10 @@ Don't get an embarrassing retort, I call out those who "click & complain" withou
|
|||||||
|
|
||||||
Two words. Perhaps too lazy to consider why others gave rave reviews and ponder what he was doing wrong? Perhaps did not consider there might be some documentation to assist or support routes (subject to [getting a polite reply](getting-help-with-a-polite-reply))?
|
Two words. Perhaps too lazy to consider why others gave rave reviews and ponder what he was doing wrong? Perhaps did not consider there might be some documentation to assist or support routes (subject to [getting a polite reply](getting-help-with-a-polite-reply))?
|
||||||
|
|
||||||
<img src="images/etiquette/2026-01-21 GHA_Bad_Review.png" width="70%" title="Two words">
|
<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.
|
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">
|
<img src="images/etiquette/2025-11-19_GHA_Bad_Review.png" width="85%" title="Misplaced blame">
|
||||||
s
|
|
||||||
|
|||||||
@@ -36,13 +36,13 @@
|
|||||||
| 2.21 | Added 7 new devices (`edge1050`, `enduro3`, `fenix843mm`, `fenix847mm`, `fenix8solar47mm`, `fenix8solar51mm`, `fenixe`) and upgraded the SDK to 7.3.0. Fix for a bug on Edge devices introduced by v2.16 activity reporting improvements. |
|
| 2.21 | Added 7 new devices (`edge1050`, `enduro3`, `fenix843mm`, `fenix847mm`, `fenix8solar47mm`, `fenix8solar51mm`, `fenixe`) and upgraded the SDK to 7.3.0. Fix for a bug on Edge devices introduced by v2.16 activity reporting improvements. |
|
||||||
| 2.22 | <img src="images/pin_view.png" width="200" title="PIN Entry View"/><br/>Major feature release adding an optional PIN to menu items. This significant new feature has been provided by [@moesterheld](https://github.com/moesterheld). Please do not rely on this application for security. Use at your own risk! |
|
| 2.22 | <img src="images/pin_view.png" width="200" title="PIN Entry View"/><br/>Major feature release adding an optional PIN to menu items. This significant new feature has been provided by [@moesterheld](https://github.com/moesterheld). Please do not rely on this application for security. Use at your own risk! |
|
||||||
| 2.23 | Added "info" menu item for displaying information via a template without a tap or toggle. Essentially like the old 'template' type that was deprecated when all items were amended to display evaluated templates. That action removed the display only items too hastily. Added 5 new devices in the model range Instinct 3 and Instinct E. |
|
| 2.23 | Added "info" menu item for displaying information via a template without a tap or toggle. Essentially like the old 'template' type that was deprecated when all items were amended to display evaluated templates. That action removed the display only items too hastily. Added 5 new devices in the model range Instinct 3 and Instinct E. |
|
||||||
| 2.24 | Experiment to prevent new Webhook IDs being created unnecessarily. Reduced the latency for the first menu update. Added 4 new devices: approachs50, descentg2, descentmk1, and gpsmap66. |
|
| 2.24 | Experiment to prevent new Webhook IDs being created unnecessarily. Reduced the latency for the first menu update. Added 4 new devices: `approachs50`, `descentg2`, ~~`descentmk1`~~ (subsequently withdrawn in v3.6), and `gpsmap66`. |
|
||||||
| 2.25 | 2 Bug fixes. First time startup issues caused by v2.24 change and a fix for pure numbers in returned templates. |
|
| 2.25 | 2 Bug fixes. First time startup issues caused by v2.24 change and a fix for pure numbers in returned templates. |
|
||||||
| 2.26 | Retry responsive menu fix failed in v2.24. Cosmetic internal class changes. |
|
| 2.26 | Retry responsive menu fix failed in v2.24. Cosmetic internal class changes. |
|
||||||
| 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.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.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.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.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). |
|
| 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). |
|
| 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). |
|
||||||
@@ -51,8 +51,13 @@
|
|||||||
| 3.3 | Providing automatic detection for menu definition updates, but still requires an application restart. |
|
| 3.3 | Providing automatic detection for menu definition updates, but still requires an application restart. |
|
||||||
| 3.4 | Fixed a bug where templates failed to display in toggle menu items (at least on some devices). Fixed a bug where a menu item requesting to exit on completion appeared to indicate failure when using Wi-Fi or LTE. The fix uses a delay in exiting the application modelled as sufficient for a Venu 2 device, so this might need tweaking for other devices. Attempt to fixed an "Out of Memory" bug caused by v3.3 by making automatic checking for menu updates both optional and automatically turned off when insufficient memory is available. This last bug is device dependent and may require another attempt. Internationalisation improvements with thanks to [@krzys_h](https://github.com/krzys-h) for a new automated translations script. |
|
| 3.4 | Fixed a bug where templates failed to display in toggle menu items (at least on some devices). Fixed a bug where a menu item requesting to exit on completion appeared to indicate failure when using Wi-Fi or LTE. The fix uses a delay in exiting the application modelled as sufficient for a Venu 2 device, so this might need tweaking for other devices. Attempt to fixed an "Out of Memory" bug caused by v3.3 by making automatic checking for menu updates both optional and automatically turned off when insufficient memory is available. This last bug is device dependent and may require another attempt. Internationalisation improvements with thanks to [@krzys_h](https://github.com/krzys-h) for a new automated translations script. |
|
||||||
| 3.5 | Added support for Edge 550, 850 & MTB, Fenix 8 Pro 47mm, GPSMAP H1, Instinct Crossover AMOLED, Venu 4 41mm & 45mm, & Venu X1 devices which also required an SDK update to 8.3.0. The simulation of the Edge 850 device was off, as it failed to update the display and text was the wrong colour, but the buttons menu items operated HA correctly. The assumption is the simulation model is buggy until someone [reports](https://github.com/house-of-abbey/GarminHomeAssistant/issues) otherwise. |
|
| 3.5 | Added support for Edge 550, 850 & MTB, Fenix 8 Pro 47mm, GPSMAP H1, Instinct Crossover AMOLED, Venu 4 41mm & 45mm, & Venu X1 devices which also required an SDK update to 8.3.0. The simulation of the Edge 850 device was off, as it failed to update the display and text was the wrong colour, but the buttons menu items operated HA correctly. The assumption is the simulation model is buggy until someone [reports](https://github.com/house-of-abbey/GarminHomeAssistant/issues) otherwise. |
|
||||||
| 3.6 | Added `numeric` menu item type thanks to [@thmichel](https://github.com/thmichel). This allows you to select a numeric value to set for an entity. Confirmations can now display a user supplied message. [Schema update](README.md#old-deprecated-formats) to keep pace with HomeAssistant and correct a previous decision. Schema changes for consistency. |
|
| 3.6 | Added `numeric` menu item type thanks to [@thmichel](https://github.com/thmichel). This allows you to select a numeric value to set for an entity. Confirmations can now display a user supplied message. [Schema update](README.md#old-deprecated-formats) to keep pace with HomeAssistant and correct a previous decision. Schema changes for consistency. `descentmk1` device removed as the simulation does not read the settings and therefore we cannot support the device. |
|
||||||
| 3.7 | Bug fix for `numeric` menu items not working over Wi-Fi & LTE. |
|
| 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.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.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. |
|
||||||
|
| 3.12 | Amended GPS accuracy values used by the background service. |
|
||||||
|
| 3.13 | Added support for new devices: `d2mach2pro`, `fr170`, `fr170m`, `fr70`. |
|
||||||
|
| 3.14 | Numeric items now support `tap_action.data` fields so service call options like `transition` are catered for. See the documentation on [Additional Action Data](https://github.com/house-of-abbey/GarminHomeAssistant/blob/main/examples/Numeric.md#additional-action-data). This features has been provided by [@StumblingGamer](https://github.com/StumblingGamer). Now prevent PIN enabled menu items from being enabled on non-touch screen devices. The PIN must be removed for the menu item to function. Fix for initialising numeric pickers with no user defined template. |
|
||||||
|
| 3.15 | The prevention of PIN enabled menu items on non-touch screen devices was improperly implemented, this version provides a bug fix. Added an error message to catch empty responses with _insecure HTTP_ usage. |
|
||||||
|
|||||||
@@ -20,6 +20,12 @@ If you don't know why you need these, leave them empty and ignore.
|
|||||||
|
|
||||||
Make the key strong enough!
|
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
|
## Support
|
||||||
|
|
||||||
**None!**
|
**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.
|
With thanks to Lars Pöpperl ([@tispokes](https://github.com/tispokes)) for contributing to this solution.
|
||||||
|
|
||||||
|
|
||||||
## References
|
## 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/)
|
* [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/)
|
||||||
|
|||||||
@@ -8,9 +8,12 @@ A Garmin application to provide a "dashboard" to control your devices via [HomeA
|
|||||||
|
|
||||||
The application is designed around a simple scrollable menu where menu items have been extended to interface with the [HomeAssistant API](https://developers.home-assistant.io/docs/api/rest/), e.g. to get the status of switches or lights for display on the `toggle` menu item, or a text status for an entity (`info` item). It is possible to nest menus, so there is a menu item to open a sub-menu. This can be arbitrarily deep and nested in the format of a tree of items, although you need to consider if reaching for your phone becomes quicker to select the device what you want to control.
|
The application is designed around a simple scrollable menu where menu items have been extended to interface with the [HomeAssistant API](https://developers.home-assistant.io/docs/api/rest/), e.g. to get the status of switches or lights for display on the `toggle` menu item, or a text status for an entity (`info` item). It is possible to nest menus, so there is a menu item to open a sub-menu. This can be arbitrarily deep and nested in the format of a tree of items, although you need to consider if reaching for your phone becomes quicker to select the device what you want to control.
|
||||||
|
|
||||||
|
The menu is defined in JSON format and needs to be made available via a URL. Note this means the menu definition file is public, i.e anyone who knows or guesses your URL will be able to see entity names from your Home Assistant instance that you use. There is no security or protection provided when using this URL. To mitigate this, one user points out that once you have cached your menu on your watch of device, the menu file can be removed from public view. Any user trying to take advantage of the entity names learned would need secure API access.
|
||||||
|
|
||||||
**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.
|
**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:
|
**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.
|
1. Reaching out for help, in short read the instructions.
|
||||||
2. Reviewing the application publicly, in short be sure of your claims.
|
2. Reviewing the application publicly, in short be sure of your claims.
|
||||||
|
|
||||||
@@ -33,7 +36,7 @@ As of version 2.0, there are now two installable versions. For older devices bef
|
|||||||
|
|
||||||
| Version | Explanation |
|
| 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. |
|
| 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
|
### Features
|
||||||
@@ -62,6 +65,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!
|
> 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:
|
> 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
|
> 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.
|
> 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 +318,7 @@ A future move to v3.x will remove support for all deprecated JSON elements to si
|
|||||||
## Editing the JSON file
|
## Editing the JSON file
|
||||||
|
|
||||||
You have options. The first is what we use.
|
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.
|
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.
|
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
|
3. Locally installed VSCode, or if not installed, try
|
||||||
@@ -369,6 +374,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.
|
**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:
|
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.
|
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.
|
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.
|
3. Restarting is simple for the user and simpler for the code.
|
||||||
@@ -453,17 +459,19 @@ Check the latest unresolved [issues](https://github.com/house-of-abbey/GarminHom
|
|||||||
|
|
||||||
6. We are unable to support Edge 540, Edge 840 and Edge 1050 devices at this time. The simulation of these devices has two unexpected errors when toggling or executing taps. We get both `Communications.NETWORK_RESPONSE_OUT_OF_MEMORY` and `Communications.BLE_QUEUE_FULL` even though the memory usage is about 6% of the available RAM. Based on a lead from user @Petucky, both devices are being re-enabled as testing on a real Edge 840 device has proven successful, however we remain unable to support either devices until the simulator is fixed. The Edge 850 device has different display update issues but is functional. Again the assumption is the simulation model is buggy. Please [report](https://github.com/house-of-abbey/GarminHomeAssistant/issues) your experience on real devices to us so we can withdraw support or confirm they are working.
|
6. We are unable to support Edge 540, Edge 840 and Edge 1050 devices at this time. The simulation of these devices has two unexpected errors when toggling or executing taps. We get both `Communications.NETWORK_RESPONSE_OUT_OF_MEMORY` and `Communications.BLE_QUEUE_FULL` even though the memory usage is about 6% of the available RAM. Based on a lead from user @Petucky, both devices are being re-enabled as testing on a real Edge 840 device has proven successful, however we remain unable to support either devices until the simulator is fixed. The Edge 850 device has different display update issues but is functional. Again the assumption is the simulation model is buggy. Please [report](https://github.com/house-of-abbey/GarminHomeAssistant/issues) your experience on real devices to us so we can withdraw support or confirm they are working.
|
||||||
|
|
||||||
7. We are unable to support HTTP natively (without the workaround specified earlier). This is a limitation placed upon us by the Connect IQ API which for security reasons refuses to work with HTTP requests. There is nothing developers can do about this limitation. See the [Trouble Shooting](TroubleShooting.md#do-it-yourself-setup) guide for an example setup. We would appreciate it if users did not leave poor reviews for the lack of this feature which is beyond our control to fix.
|
7. We are unable to support HTTP natively (without the workaround specified earlier). This is a limitation placed upon us by the Connect IQ API which for security reasons refuses to work with insecure HTTP requests. There is nothing developers can do about this limitation. See the [Trouble Shooting](TroubleShooting.md#do-it-yourself-setup) guide for an example setup. We would appreciate it if users did not leave poor reviews for the lack of this feature which is beyond our control to fix.
|
||||||
|
|
||||||
8. There is a [bug in Garmin Express so that when you use that software to amend the application's settings](https://github.com/house-of-abbey/GarminHomeAssistant/issues/194), the page appears in a random language not of your choice. I would like to thank user [heviiguy](https://github.com/heviiguy) for his work researching the issue, leading to these references that indicate the authors of Garmin HomeAssistant cannot resolve this issue as its a bug in Garmin Express that Garmin are refusing to believe exists! See these pages for details:
|
8. There is a [bug in Garmin Express so that when you use that software to amend the application's settings](https://github.com/house-of-abbey/GarminHomeAssistant/issues/194), the page appears in a random language not of your choice. I would like to thank user [heviiguy](https://github.com/heviiguy) for his work researching the issue, leading to these references that indicate the authors of Garmin HomeAssistant cannot resolve this issue as its a bug in Garmin Express that Garmin are refusing to believe exists! See these pages for details:
|
||||||
- [Garmin Express - Wrong Language](https://forums.garmin.com/developer/connect-iq/i/bug-reports/garmin-express---wrong-language)
|
- [Garmin Express - Wrong Language](https://forums.garmin.com/developer/connect-iq/i/bug-reports/garmin-express---wrong-language)
|
||||||
- [Incorrect language displayed for custom data fields](https://forums.garmin.com/developer/connect-iq/f/discussion/388137/incorrect-language-displayed-for-custom-data-fields)
|
- [Incorrect language displayed for custom data fields](https://forums.garmin.com/developer/connect-iq/f/discussion/388137/incorrect-language-displayed-for-custom-data-fields)
|
||||||
|
|
||||||
9. When using Wi-Fi or LTE to toggle a light, the `toggle` will fail when the default or current state of the application's menu does not match the state of the light. The same applies to a cover or other thing that can be toggled. This is because the application is unable to initialise the menu with the current state without Bluetooth. Hence the Wi-Fi/LTE functionality is best used with `tap` items only.
|
9. Wi-Fi may refuse to work at all for some infrastructures or devices. This problem relates to the implementation of [TLS](https://en.wikipedia.org/wiki/Transport_Layer_Security) in the Garmin SDK and is beyond our control to fix. See [Wi-Fi "limits of use"](Wi-Fi.md#limits-of-use) for details.
|
||||||
|
|
||||||
10. There are memory limits, particularly for older devices. Please see the [explanation of the memory limits](Devices.md) and device support.
|
10. When using Wi-Fi or LTE to toggle a light, the `toggle` will fail when the default or current state of the application's menu does not match the state of the light. The same applies to a cover or other thing that can be toggled. This is because the application is unable to initialise the menu with the current state without Bluetooth. Hence the Wi-Fi/LTE functionality is best used with `tap` items only.
|
||||||
|
|
||||||
11. There is a 32 kB memory limit for any Glance views that mean too large a menu definition can cause the Glance view to crash. The symptom is that a previously 'Available' menu (green text) now appears as 'Unavailable' (red text) because the HTTP request to both retrieve the menu and convert it to `Dictionary` objects (from which the glance view can extract the `glance` field) ran out of memory. Out of memory exceptions are fatal and cannot be caught in order to code around them. Therefore the Glance status does not get updated to 'Available' as you would expect. The solution is to limit the size of your JSON menu definition by experimentation. For the same reason, the Glance view can no longer cache the menu to `Storage` ahead of the main application as the keys in that storage are limited to 8 kB. Remember its an app running on your watch not a desktop!
|
11. There are memory limits, particularly for older devices. Please see the [explanation of the memory limits](Devices.md) and device support.
|
||||||
|
|
||||||
|
12. There is a 32 kB memory limit for Glance views on some devices that mean the code and data for the Glance view is too large to load and the Glance view crashes before any code can intervene to prevent the fatal "Out Of Memory Error". Nor is it possible to disable the Glance view in the [application manifest](./manifest.xml) on a per device basis. The simple advice is, for older watches affected, do not try to use the Glance view. To see if your device is affected, please trawl the [devices page](./Devices.md).
|
||||||
|
|
||||||
# Authors & Contributors
|
# Authors & Contributors
|
||||||
|
|
||||||
|
|||||||
@@ -117,6 +117,7 @@ pause
|
|||||||
#### API: On-line
|
#### 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:
|
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.
|
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.
|
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
|
#### SSL Certificate Chain
|
||||||
|
|
||||||
With thanks to [@ziceva](https://github.com/ziceva) for solving this problem. The symptoms are:
|
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.
|
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.
|
2. The exact same configuration is set in the Garmin HomeAssistant application.
|
||||||
3. The Garmin HomeAssistant application reports:
|
3. The Garmin HomeAssistant application reports neither the API nor the menu are available.
|
||||||
```
|
|
||||||
API: not available
|
|
||||||
Menu: not 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.**
|
**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,28 +145,25 @@ To verify if you have this issue you can use a tool like [SSL Shoppers's SSL Che
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
### Top Problems
|
### 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...)
|
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...)
|
||||||
2. Accessibility of URLs, hence the above help guide.
|
2. Accessibility of URLs, hence the above help guide.
|
||||||
|
|
||||||
|
## Wi-Fi Not Working
|
||||||
|
|
||||||
|
This is probably a TLS issue associated with HTTPS. Please see [Wi-Fi "limits of use"](Wi-Fi.md#limits-of-use) section. You may be able to amend your server's TLS settings. As the application is dependent on the Garmin SDK, there is no application code that can be changed to fix the TLS version. The problem is external to this application and specific to your IT setup, therefore you are supporting yourself to resolve it.
|
||||||
|
|
||||||
## Online Web-based Editor
|
## Online Web-based Editor
|
||||||
|
|
||||||
The [editor](https://house-of-abbey.github.io/GarminHomeAssistant/web/) provides the following functions:
|
The [editor](https://house-of-abbey.github.io/GarminHomeAssistant/web/) provides the following functions:
|
||||||
|
|
||||||
1. Syntax highlighting
|
1. Syntax highlighting
|
||||||
|
|
||||||
2. Schema checking
|
2. Schema checking
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
3. Entity name completion
|
3. Entity name completion
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
4. Rendering previews, to aid HA 'template' creation
|
4. Rendering previews, to aid HA 'template' creation
|
||||||
|
|
||||||

|

|
||||||

|

|
||||||
|
|
||||||
@@ -185,6 +180,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;">
|
<div style="margin:30px;padding:20px;background-color:lightgrey;border:1px solid black;border-radius: 10px;">
|
||||||
|
|
||||||
# GarminHomeAssistant Web Editor
|
# 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 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:
|
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 +211,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.
|
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`
|
Assume a file called: `send_battery.bash`
|
||||||
|
|
||||||
@@ -248,13 +244,13 @@ curl -s -X POST \
|
|||||||
|
|
||||||
Execute:
|
Execute:
|
||||||
|
|
||||||
```
|
```text
|
||||||
$ ./send_battery.bash 45 1
|
$ ./send_battery.bash 45 1
|
||||||
```
|
```
|
||||||
|
|
||||||
The output looks like this:
|
The output looks like this:
|
||||||
|
|
||||||
```
|
```text
|
||||||
Battery Level = 45
|
Battery Level = 45
|
||||||
Battery Charging? = true
|
Battery Charging? = true
|
||||||
|
|
||||||
@@ -315,13 +311,13 @@ pause
|
|||||||
|
|
||||||
Execute:
|
Execute:
|
||||||
|
|
||||||
```
|
```text
|
||||||
> home_assistant_battery_level.cmd 41 1
|
> home_assistant_battery_level.cmd 41 1
|
||||||
```
|
```
|
||||||
|
|
||||||
The output looks like this:
|
The output looks like this:
|
||||||
|
|
||||||
```
|
```text
|
||||||
"Battery Level = 41"
|
"Battery Level = 41"
|
||||||
"Battery Charging? = true"
|
"Battery Charging? = true"
|
||||||
|
|
||||||
@@ -345,7 +341,7 @@ There's an online way of testing the API URL too, thanks to [REQBIN](https://req
|
|||||||
|
|
||||||
URL for copy & paste:
|
URL for copy & paste:
|
||||||
|
|
||||||
```
|
```text
|
||||||
https://<Your Domain>/api/webhook/<Your Webhook ID>
|
https://<Your Domain>/api/webhook/<Your Webhook ID>
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -399,7 +395,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:
|
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
|
Error: Unexpected Type Error
|
||||||
Details: 'Failed invoking <symbol>'
|
Details: 'Failed invoking <symbol>'
|
||||||
Time: 2024-08-30T12:00:25Z
|
Time: 2024-08-30T12:00:25Z
|
||||||
@@ -411,7 +407,7 @@ Store-Id: 61c91d28-ec5e-438d-9f83-39e9f45b199d
|
|||||||
Store-Version: 30
|
Store-Version: 30
|
||||||
Filename: DCRL0437
|
Filename: DCRL0437
|
||||||
Appname: HomeAssistant
|
Appname: HomeAssistant
|
||||||
Stack:
|
Stack:
|
||||||
- pc: 0x10003b5e
|
- pc: 0x10003b5e
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -16,17 +16,47 @@ With version 3.0 onwards the application now includes the ability to temporarily
|
|||||||
|
|
||||||
4. Remember that you need to be within range of your watch's configured Wi-Fi access point to utilize this functionality. If supported by your device, LTE offers a longer range, but network charges may apply.
|
4. Remember that you need to be within range of your watch's configured Wi-Fi access point to utilize this functionality. If supported by your device, LTE offers a longer range, but network charges may apply.
|
||||||
|
|
||||||
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:
|
5. **Transport Layer Security (TLS) settings.** The following insights have been submitted by App users. The authors cannot verify the details in anyway as we don't have the same infrastructure, but we are very grateful these users took the time to share their solutions for others to benefit from.
|
||||||
|
|
||||||
```
|
Ali Alaei ([@aalaei](https://github.com/aalaei)), [resolved a Cloudflare TLS issue](https://github.com/house-of-abbey/GarminHomeAssistant/pull/266) as follows:
|
||||||
|
|
||||||
|
<div style="margin:30px;padding:20px;background-color:lightgrey;border:1px solid black;border-radius: 10px;">
|
||||||
|
|
||||||
|
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
|
HTTP request returned error code = 0
|
||||||
```
|
```
|
||||||
|
|
||||||
This limitation only affects **Wi-Fi/LTE connections**. When connected over **Bluetooth**, the watch routes requests through the paired phone, which handles the TLS handshake and supports newer TLS versions (such as 1.3) without issue.
|
This limitation only affects **Wi-Fi/LTE connections**. When connected over **Bluetooth**, the watch routes requests through the paired phone, which handles the TLS handshake and supports newer TLS versions (such as 1.3) without issue.
|
||||||
|
|
||||||
To fix this, lower the minimum TLS setting to allow TLS 1.2. For example, if you are using **Cloudflare Tunneling**, go to:
|
To fix this, lower the minimum TLS setting to allow TLS 1.2. For example, if you are using **Cloudflare Tunneling**, go to:
|
||||||
`SSL/TLS → Edge Certificates → Minimum TLS Version`
|
`SSL/TLS → Edge Certificates → Minimum TLS Version`
|
||||||
and set it to **at most TLS 1.2**. _Reducing below TLS 1.2 is not recommended due to security risks._
|
and set it to **at most TLS 1.2**. _Reducing below TLS 1.2 is not recommended due to security risks._
|
||||||
|
</div>
|
||||||
|
|
||||||
|
Another user, [@xhemart](https://github.com/xhemart), [reports some research](https://github.com/house-of-abbey/GarminHomeAssistant/issues/292#issuecomment-5360598790) to further diagnose this issue:
|
||||||
|
|
||||||
|
<div style="margin:30px;padding:20px;background-color:lightgrey;border:1px solid black;border-radius: 10px;">
|
||||||
|
|
||||||
|
I ran a direct test against my own Nabu Casa endpoint with openssl s_client, forcing specific cipher suites, and it turns out **TLS version was never the actual constraint**. My server accepts TLS 1.2 just fine (confirmed with `ECDHE-RSA-AES128-GCM-SHA256`). What it does _not_ accept is any cipher suite using plain RSA key exchange (no forward secrecy) — regardless of whether the bulk cipher is a modern AEAD one or an old CBC/SHA1 one:
|
||||||
|
|
||||||
|
Test | Forced Configuration | Result
|
||||||
|
:-------------------------------------|:----------------------------------|:-----------------------------------
|
||||||
|
Default negotiation | — | ✅ TLS 1.3, TLS_AES_256_GCM_SHA384
|
||||||
|
TLS 1.2, RSA key exchange, CBC/SHA1 | e.g. `AES128-SHA` | ❌ Handshake failure
|
||||||
|
TLS 1.2, RSA key exchange, GCM (AEAD) | e.g. `AES256-GCM-SHA384` | ❌ Handshake failure
|
||||||
|
TLS 1.2, ECDHE, CBC/SHA1 | e.g. `ECDHE-RSA-AES128-SHA` | ❌ Handshake failure
|
||||||
|
TLS 1.2, ECDHE, GCM (AEAD) | e.g. `ECDHE-RSA-AES128-GCM-SHA256`| ✅ works
|
||||||
|
|
||||||
|
So the actual server-side requirement is **forward secrecy (ECDHE)** — it rejects any RSA-key-exchange `ClientHello` outright, independent of TLS version or bulk cipher.
|
||||||
|
|
||||||
|
This lines up with a bug Garmin itself has acknowledged for the Epix (Gen 2) / Fenix 7: [TLS Certificate issue with Fenix 7 and Epix (Gen 2)](https://forums.garmin.com/developer/connect-iq/i/bug-reports/tls-certificate-issue-with-fenix-7-and-epix-gen-2). Per that thread, when these watches negotiate TLS directly over Wi-Fi (i.e. without the phone relaying via Bluetooth), they only offer legacy RSA-key-exchange cipher suites with no forward secrecy — exactly the class of suite my server rejects. Over Bluetooth the phone performs the TLS handshake instead, which explains why it always works there. Garmin marked that report "Complete," but the thread has follow-up comments disputing that, and no new cipher suites appear to have shown up on affected devices since.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
So, it's a Garmin device side limitation (in some models) of the Connect IQ TLS stack when negotiating directly over Wi-Fi, that might be fixed by amending the TLS settings on the server if you are fortunate. Some Garmin devices only speak cipher suites without forward secrecy, which most modern TLS termination (Nabu Casa, Cloudflare, current nginx/Apache defaults, etc.) rejects by design for good security reasons. There's no app-side workaround available; it would need a firmware fix from Garmin. By "some models" we mean it is confirmed on Epix (Gen 2); likely related on Fenix 7 Pro and Forerunner 265; possibly related on Forerunner 970 (unconfirmed).
|
||||||
|
|
||||||
|
For anyone on the same models looking for a local-network route, of the options in the [README, only #2](https://github.com/house-of-abbey/GarminHomeAssistant#no-https) (local DNS override to `garmincdn.com` serving plain HTTP) sidesteps the cipher-suite issue entirely, since it avoids TLS altogether. You will still need to verify whether these watches actually honour a local DHCP-provided DNS server for that override, or alternatively hard code public resolvers.
|
||||||
|
|
||||||
## Video
|
## Video
|
||||||
|
|
||||||
@@ -40,4 +70,4 @@ We emphasize that the Wi-Fi/LTE functionality should be viewed as a 'last resort
|
|||||||
|
|
||||||
## Credits
|
## Credits
|
||||||
|
|
||||||
With thanks to Vincent, [@vincentezw](https://github.com/vincentezw) for contributing this solution, and to Ali Alaei, [@aalaei](https://github.com/aalaei) for the finer details on TLS.
|
With thanks to Vincent, [@vincentezw](https://github.com/vincentezw) for contributing this solution, and to Ali Alaei, [@aalaei](https://github.com/aalaei), and [@xhemart](https://github.com/xhemart) for the finer details on TLS and resolving issue [292](https://github.com/house-of-abbey/GarminHomeAssistant/issues/292).
|
||||||
|
|||||||
@@ -251,11 +251,17 @@
|
|||||||
"$ref": "#/$defs/content"
|
"$ref": "#/$defs/content"
|
||||||
},
|
},
|
||||||
"tap_action": {
|
"tap_action": {
|
||||||
"$ref": "#/$defs/tap_action",
|
"title": "Tap Action",
|
||||||
|
"description": "Numeric tap action definition to include the number picker. 'confirm', 'pin' and 'exit' fields are optional.",
|
||||||
"properties": {
|
"properties": {
|
||||||
"action": {
|
"action": {
|
||||||
"$ref": "#/$defs/action"
|
"$ref": "#/$defs/action"
|
||||||
},
|
},
|
||||||
|
"data": {
|
||||||
|
"type": "object",
|
||||||
|
"title": "Additional action data",
|
||||||
|
"description": "Fixed Home Assistant service data. The selected picker value is merged into this object using the picker's data_attribute. Service-specific fields cannot be schema checked here."
|
||||||
|
},
|
||||||
"picker": {
|
"picker": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"title": "Number picker configuration",
|
"title": "Number picker configuration",
|
||||||
@@ -289,13 +295,24 @@
|
|||||||
"max",
|
"max",
|
||||||
"step",
|
"step",
|
||||||
"data_attribute"
|
"data_attribute"
|
||||||
]
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"confirm": {
|
||||||
|
"$ref": "#/$defs/confirm"
|
||||||
|
},
|
||||||
|
"pin": {
|
||||||
|
"$ref": "#/$defs/pin"
|
||||||
|
},
|
||||||
|
"exit": {
|
||||||
|
"$ref": "#/$defs/exit"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": [
|
"required": [
|
||||||
"action",
|
"action",
|
||||||
"picker"
|
"picker"
|
||||||
]
|
],
|
||||||
|
"additionalProperties": false
|
||||||
},
|
},
|
||||||
"enabled": {
|
"enabled": {
|
||||||
"$ref": "#/$defs/enabled"
|
"$ref": "#/$defs/enabled"
|
||||||
@@ -982,7 +999,7 @@
|
|||||||
"tap_action": {
|
"tap_action": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"title": "Tap Action",
|
"title": "Tap Action",
|
||||||
"description": "'confirm' and 'pin' fields are optional.",
|
"description": "'confirm', 'pin' and 'exit' fields are optional.",
|
||||||
"properties": {
|
"properties": {
|
||||||
"confirm": {
|
"confirm": {
|
||||||
"$ref": "#/$defs/confirm"
|
"$ref": "#/$defs/confirm"
|
||||||
|
|||||||
@@ -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)
|
[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
|
# 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
|
```json
|
||||||
{
|
{
|
||||||
@@ -14,8 +13,20 @@ A simple example using a scene as a `tap` menu item.
|
|||||||
"action": "scene.turn_on"
|
"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
|
||||||
|
}
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Confirmation
|
||||||
|
|
||||||
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.
|
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.
|
||||||
|
|
||||||
```json
|
```json
|
||||||
@@ -30,15 +41,15 @@ For example:
|
|||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"entity": "switch.garage_door",
|
"entity": "switch.flood_lights",
|
||||||
"name": "Garage Door",
|
"name": "Flood Lights",
|
||||||
"type": "toggle",
|
"type": "toggle",
|
||||||
"tap_action": {
|
"tap_action": {
|
||||||
"confirm": true
|
"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.
|
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
|
```json
|
||||||
@@ -47,6 +58,8 @@ The `confirm` field may contain a string instead of a Boolean in order to provid
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Personal Identification Number (PIN)
|
||||||
|
|
||||||
**The authors do not advise the use of this application for security sensitive devices. But we suspect users are taking that risk anyway, hence a PIN confirmation is provided that can be used for additional menu item security.**
|
**The authors do not advise the use of this application for security sensitive devices. But we suspect users are taking that risk anyway, hence a PIN confirmation is provided that can be used for additional menu item security.**
|
||||||
|
|
||||||
This can be enabled by setting the `pin` field in the `tap_action`. The `pin` field overrides `confirm`. Explicitly setting `confirm` is not necessary.
|
This can be enabled by setting the `pin` field in the `tap_action`. The `pin` field overrides `confirm`. Explicitly setting `confirm` is not necessary.
|
||||||
@@ -61,9 +74,14 @@ The 4-digit PIN is set globally for all actions in the app settings in Connect I
|
|||||||
|
|
||||||
When entering an invalid PIN for the fifth time within 2 minutes, the PIN dialog will be locked for all actions for the next 10 minutes. Entering a valid PIN will always reset the failure counter.
|
When entering an invalid PIN for the fifth time within 2 minutes, the PIN dialog will be locked for all actions for the next 10 minutes. Entering a valid PIN will always reset the failure counter.
|
||||||
|
|
||||||
<img src="../images/pin_view.png" width="200" title="Confirmation View"/>
|
<img src="../images/pin_view.png" width="200" title="PIN View"/>
|
||||||
|
|
||||||
Note that for notify events, you _must_ not supply an `entity_id` or the API call will fail. There are other examples too.
|
> [!IMPORTANT]
|
||||||
|
> The PIN entry requires a touch screen enabled device.
|
||||||
|
|
||||||
|
## Additional Data
|
||||||
|
|
||||||
|
Some `action`s require additional `data` to be supplied. The following example shows how we handle this scenario. Note that for notify events, you _must not_ supply an `entity_id` or the API call will fail. There are other examples too.
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,17 +2,15 @@
|
|||||||
|
|
||||||
# Glance
|
# 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 status view displays the accessibility of HomeAssistant API to indicate if there's a problem.
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
<img src="../images/Venu2_glance_default.png" width="200" title="Venu 2 Default Glance"/>
|
<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
|
## Customised View
|
||||||
|
|
||||||
@@ -45,12 +43,12 @@ 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]
|
> [!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".
|
> Sadly support for special characters like 🌞🔋⛅🪫 in the glance view is device dependent. For example they are not available on a Venu2 device but are available on a Venu X1 device. The application documentation shows them displaying in menu items. Only ASCII text appears to be universally supported by the Garmin Connect IQ (as you might hope). This is not something we have any control over, please do not request this to be "fixed".
|
||||||
|
|
||||||
It is possible to revert to the default glance content without deleting the template by changing the `type` to `status`.
|
It is possible to revert to the default glance content without deleting the template by changing the `type` to `status`.
|
||||||
|
|
||||||
@@ -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.
|
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
|
## 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"/>
|
<img src="../images/Venu2_glance_no_bt.png" width="200" title="Venu 2 Glance showing lost connectivity"/>
|
||||||
|
|||||||
@@ -39,6 +39,36 @@ Field | Purpose
|
|||||||
|
|
||||||
It may well be the case that often `attribute` and `data_attribute` are the same attribute, as with this example.
|
It may well be the case that often `attribute` and `data_attribute` are the same attribute, as with this example.
|
||||||
|
|
||||||
|
## Additional Action Data
|
||||||
|
|
||||||
|
The `tap_action` object may also include a `data` object for fixed service call parameters. When the picker value is selected, the application merges the picker value into this `data` object using `data_attribute`.
|
||||||
|
|
||||||
|
For example, a light brightness picker can request a HomeAssistant transition while still using the picker value for `brightness`.
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "Lounge Brightness",
|
||||||
|
"content": "{{ ((state_attr('light.lounge','brightness') | int(0) / 255) * 100) | round(0) }}%",
|
||||||
|
"type": "numeric",
|
||||||
|
"entity": "light.lounge",
|
||||||
|
"tap_action": {
|
||||||
|
"action": "light.turn_on",
|
||||||
|
"data": {
|
||||||
|
"transition": 2
|
||||||
|
},
|
||||||
|
"picker": {
|
||||||
|
"step": 5,
|
||||||
|
"min": 0,
|
||||||
|
"max": 255,
|
||||||
|
"attribute": "brightness",
|
||||||
|
"data_attribute": "brightness"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
The resulting action data sent to HomeAssistant contains both the fixed `transition` value and the selected `brightness` value.
|
||||||
|
|
||||||
## Helper
|
## Helper
|
||||||
|
|
||||||
You might define a "helper" entity as follows in HomeAssistant:
|
You might define a "helper" entity as follows in HomeAssistant:
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 720 KiB After Width: | Height: | Size: 718 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 8.7 KiB |
|
Before Width: | Height: | Size: 8.3 KiB After Width: | Height: | Size: 9.6 KiB |
|
Before Width: | Height: | Size: 8.7 KiB After Width: | Height: | Size: 8.2 KiB |
|
After Width: | Height: | Size: 8.3 KiB |
|
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 9.6 KiB |
|
Before Width: | Height: | Size: 8.8 KiB |
|
Before Width: | Height: | Size: 103 KiB After Width: | Height: | Size: 103 KiB |
|
Before Width: | Height: | Size: 167 KiB After Width: | Height: | Size: 167 KiB |
|
After Width: | Height: | Size: 73 KiB |
|
After Width: | Height: | Size: 156 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 94 KiB |
@@ -43,6 +43,7 @@
|
|||||||
<iq:product id="d2deltas"/>
|
<iq:product id="d2deltas"/>
|
||||||
<iq:product id="d2mach1"/>
|
<iq:product id="d2mach1"/>
|
||||||
<iq:product id="d2mach2"/>
|
<iq:product id="d2mach2"/>
|
||||||
|
<iq:product id="d2mach2pro"/>
|
||||||
<iq:product id="descentg1"/>
|
<iq:product id="descentg1"/>
|
||||||
<iq:product id="descentg2"/>
|
<iq:product id="descentg2"/>
|
||||||
<iq:product id="descentmk2"/>
|
<iq:product id="descentmk2"/>
|
||||||
@@ -101,6 +102,8 @@
|
|||||||
<iq:product id="fenixe"/>
|
<iq:product id="fenixe"/>
|
||||||
<iq:product id="fr165"/>
|
<iq:product id="fr165"/>
|
||||||
<iq:product id="fr165m"/>
|
<iq:product id="fr165m"/>
|
||||||
|
<iq:product id="fr170"/>
|
||||||
|
<iq:product id="fr170m"/>
|
||||||
<iq:product id="fr245"/>
|
<iq:product id="fr245"/>
|
||||||
<iq:product id="fr245m"/>
|
<iq:product id="fr245m"/>
|
||||||
<iq:product id="fr255"/>
|
<iq:product id="fr255"/>
|
||||||
@@ -114,6 +117,7 @@
|
|||||||
<iq:product id="fr57047mm"/>
|
<iq:product id="fr57047mm"/>
|
||||||
<iq:product id="fr645"/>
|
<iq:product id="fr645"/>
|
||||||
<iq:product id="fr645m"/>
|
<iq:product id="fr645m"/>
|
||||||
|
<iq:product id="fr70"/>
|
||||||
<iq:product id="fr745"/>
|
<iq:product id="fr745"/>
|
||||||
<iq:product id="fr935"/>
|
<iq:product id="fr935"/>
|
||||||
<iq:product id="fr945"/>
|
<iq:product id="fr945"/>
|
||||||
|
|||||||
@@ -52,12 +52,13 @@ d2deltas.resourcePath = $(d2deltas.resourcePath);resources-launcher-40-40;resour
|
|||||||
d2mach1.resourcePath = $(d2mach1.resourcePath);resources-launcher-60-60;resources-icons-48
|
d2mach1.resourcePath = $(d2mach1.resourcePath);resources-launcher-60-60;resources-icons-48
|
||||||
# Screen Size 454x454 launcher icon size 65x65
|
# Screen Size 454x454 launcher icon size 65x65
|
||||||
d2mach2.resourcePath = $(d2mach2.resourcePath);resources-launcher-65-65;resources-icons-53
|
d2mach2.resourcePath = $(d2mach2.resourcePath);resources-launcher-65-65;resources-icons-53
|
||||||
|
d2mach2pro.resourcePath = $(d2mach2pro.resourcePath);resources-launcher-65-65;resources-icons-53
|
||||||
# Screen Size 176x176 launcher icon size 62x62
|
# Screen Size 176x176 launcher icon size 62x62
|
||||||
descentg1.resourcePath = $(descentg1.resourcePath);resources-launcher-62-62;resources-icons-21
|
descentg1.resourcePath = $(descentg1.resourcePath);resources-launcher-62-62;resources-icons-21
|
||||||
# Screen Size 390x390 launcher icon size 60x60
|
# Screen Size 390x390 launcher icon size 60x60
|
||||||
descentg2.resourcePath = $(descentg2.resourcePath);resources-launcher-60-60;resources-icons-46
|
descentg2.resourcePath = $(descentg2.resourcePath);resources-launcher-60-60;resources-icons-46
|
||||||
# Screen Size 240x240 launcher icon size 40x40
|
# Screen Size 240x240 launcher icon size 40x40 - Does not work in simulation
|
||||||
descentmk1.resourcePath = $(descentmk1.resourcePath);resources-launcher-40-40;resources-icons-28
|
#descentmk1.resourcePath = $(descentmk1.resourcePath);resources-launcher-40-40;resources-icons-28
|
||||||
# Screen Size 280x280 launcher icon size 40x40
|
# Screen Size 280x280 launcher icon size 40x40
|
||||||
descentmk2.resourcePath = $(descentmk2.resourcePath);resources-launcher-40-40;resources-icons-32
|
descentmk2.resourcePath = $(descentmk2.resourcePath);resources-launcher-40-40;resources-icons-32
|
||||||
# Screen Size 240x240 launcher icon size 40x40
|
# Screen Size 240x240 launcher icon size 40x40
|
||||||
@@ -150,6 +151,8 @@ fenixe.resourcePath = $(fenixe.resourcePath);resources-launcher-60-60;resources-
|
|||||||
# Screen Size 390x390 launcher icon size 54x54
|
# Screen Size 390x390 launcher icon size 54x54
|
||||||
fr165.resourcePath = $(descentmk2s.resourcePath);resources-launcher-54-54;resources-icons-46
|
fr165.resourcePath = $(descentmk2s.resourcePath);resources-launcher-54-54;resources-icons-46
|
||||||
fr165m.resourcePath = $(descentmk2s.resourcePath);resources-launcher-54-54;resources-icons-46
|
fr165m.resourcePath = $(descentmk2s.resourcePath);resources-launcher-54-54;resources-icons-46
|
||||||
|
fr170.resourcePath = $(fr170.resourcePath);resources-launcher-54-54;resources-icons-46
|
||||||
|
fr170m.resourcePath = $(fr170m.resourcePath);resources-launcher-54-54;resources-icons-46
|
||||||
# Screen Size 240x240 launcher icon size 40x40
|
# Screen Size 240x240 launcher icon size 40x40
|
||||||
fr245.resourcePath = $(fr245.resourcePath);resources-launcher-40-40;resources-icons-28
|
fr245.resourcePath = $(fr245.resourcePath);resources-launcher-40-40;resources-icons-28
|
||||||
fr245m.resourcePath = $(fr245m.resourcePath);resources-launcher-40-40;resources-icons-28
|
fr245m.resourcePath = $(fr245m.resourcePath);resources-launcher-40-40;resources-icons-28
|
||||||
@@ -171,6 +174,8 @@ fr57047mm.resourcePath = $(fr57047mm.resourcePath);resources-launcher-65-65;reso
|
|||||||
# Screen Size 240x240 launcher icon size 40x40
|
# Screen Size 240x240 launcher icon size 40x40
|
||||||
fr645.resourcePath = $(fr645.resourcePath);resources-launcher-40-40;resources-icons-28
|
fr645.resourcePath = $(fr645.resourcePath);resources-launcher-40-40;resources-icons-28
|
||||||
fr645m.resourcePath = $(fr645m.resourcePath);resources-launcher-40-40;resources-icons-28
|
fr645m.resourcePath = $(fr645m.resourcePath);resources-launcher-40-40;resources-icons-28
|
||||||
|
# Screen Size 390x390 launcher icon size 54x54
|
||||||
|
fr70.resourcePath = $(fr70.resourcePath);resources-launcher-54-54;resources-icons-46
|
||||||
# Screen Size 240x240 launcher icon size 40x40
|
# Screen Size 240x240 launcher icon size 40x40
|
||||||
fr745.resourcePath = $(fr745.resourcePath);resources-launcher-40-40;resources-icons-28
|
fr745.resourcePath = $(fr745.resourcePath);resources-launcher-40-40;resources-icons-28
|
||||||
fr935.resourcePath = $(fr935.resourcePath);resources-launcher-40-40;resources-icons-28
|
fr935.resourcePath = $(fr935.resourcePath);resources-launcher-40-40;resources-icons-28
|
||||||
|
|||||||
@@ -38,6 +38,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">لا يوجد مفتاح API في إعدادات التطبيق.</string>
|
<string id="NoAPIKey" scope="glance">لا يوجد مفتاح API في إعدادات التطبيق.</string>
|
||||||
<string id="NoApiUrl" scope="glance">لا يوجد عنوان URL لـ API في إعدادات التطبيق.</string>
|
<string id="NoApiUrl" scope="glance">لا يوجد عنوان URL لـ API في إعدادات التطبيق.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">لا يوجد عنوان URL للتكوين في إعدادات التطبيق.</string>
|
<string id="NoConfigUrl" scope="glance">لا يوجد عنوان URL للتكوين في إعدادات التطبيق.</string>
|
||||||
|
<string id="NoHTTPS">لا توجد استجابة، استخدم اتصال HTTPS آمنًا.</string>
|
||||||
<string id="NoInternet">لا يوجد اتصال بالإنترنت.</string>
|
<string id="NoInternet">لا يوجد اتصال بالإنترنت.</string>
|
||||||
<string id="NoJson">لم يتم إرجاع أي JSON من طلب HTTP.</string>
|
<string id="NoJson">لم يتم إرجاع أي JSON من طلب HTTP.</string>
|
||||||
<string id="NoMenu">خطأ في تعريف القائمة، تحقق من التعليمات.</string>
|
<string id="NoMenu">خطأ في تعريف القائمة، تحقق من التعليمات.</string>
|
||||||
@@ -84,8 +85,6 @@
|
|||||||
<string id="SettingsTextAlign">محاذاة القائمة: لليسار (إيقاف) أو لليمين (تشغيل).</string>
|
<string id="SettingsTextAlign">محاذاة القائمة: لليسار (إيقاف) أو لليمين (تشغيل).</string>
|
||||||
<string id="SettingsLeftToRight">من اليسار إلى اليمين</string>
|
<string id="SettingsLeftToRight">من اليسار إلى اليمين</string>
|
||||||
<string id="SettingsRightToLeft">من اليمين إلى اليسار</string>
|
<string id="SettingsRightToLeft">من اليمين إلى اليسار</string>
|
||||||
<string id="SettingsWidgetStart">(عنصر واجهة المستخدم فقط) ابدأ التطبيق تلقائيًا من عنصر واجهة
|
|
||||||
المستخدم دون انتظار النقر.</string>
|
|
||||||
<string id="SettingsEnableBatteryLevel">تمكين خدمة الخلفية لإرسال مستوى بطارية الجهاز والموقع
|
<string id="SettingsEnableBatteryLevel">تمكين خدمة الخلفية لإرسال مستوى بطارية الجهاز والموقع
|
||||||
وبيانات النشاط (إذا كانت مدعومة) إلى Home Assistant.</string>
|
وبيانات النشاط (إذا كانت مدعومة) إلى Home Assistant.</string>
|
||||||
<string id="SettingsBatteryLevelRefreshRate">معدل التحديث (بالدقائق) الذي يجب أن تكرر فيه خدمة
|
<string id="SettingsBatteryLevelRefreshRate">معدل التحديث (بالدقائق) الذي يجب أن تكرر فيه خدمة
|
||||||
@@ -93,8 +92,10 @@
|
|||||||
<string id="SettingsUserHttpHeader">رأس HTTP مقدم من المستخدم</string>
|
<string id="SettingsUserHttpHeader">رأس HTTP مقدم من المستخدم</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">تتطلب بعض عمليات تثبيت Home Assistant تحديد رأس
|
<string id="SettingsUserHttpHeaderDescription">تتطلب بعض عمليات تثبيت Home Assistant تحديد رأس
|
||||||
HTTP مخصص لكي تعمل.</string>
|
HTTP مخصص لكي تعمل.</string>
|
||||||
<string id="SettingsUserHttpHeaderName">رأس HTTP مقدم من المستخدم: الاسم</string>
|
<string id="SettingsUserHttpHeader1Name">رأس HTTP مقدم من المستخدم 1: الاسم</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">رأس HTTP مقدم من المستخدم: القيمة</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 id="SettingsClearWebhookId">أعد الاتصال بـ Home Assistant (مسح معرف Webhook، انظر دليل
|
||||||
استكشاف الأخطاء وإصلاحها).</string>
|
استكشاف الأخطاء وإصلاحها).</string>
|
||||||
<string id="SettingsWebhookId">(للقراءة فقط) معرف Webhook الذي تم إنشاؤه بواسطة الجهاز لتحديثات
|
<string id="SettingsWebhookId">(للقراءة فقط) معرف Webhook الذي تم إنشاؤه بواسطة الجهاز لتحديثات
|
||||||
|
|||||||
@@ -36,6 +36,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">Няма ключ за API в настройките на приложението.</string>
|
<string id="NoAPIKey" scope="glance">Няма ключ за API в настройките на приложението.</string>
|
||||||
<string id="NoApiUrl" scope="glance">Няма URL адрес на API в настройките на приложението.</string>
|
<string id="NoApiUrl" scope="glance">Няма URL адрес на API в настройките на приложението.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">Няма URL адрес за конфигурация в настройките на приложението.</string>
|
<string id="NoConfigUrl" scope="glance">Няма URL адрес за конфигурация в настройките на приложението.</string>
|
||||||
|
<string id="NoHTTPS">Няма отговор, използвайте защитена HTTPS връзка.</string>
|
||||||
<string id="NoInternet">Няма интернет връзка.</string>
|
<string id="NoInternet">Няма интернет връзка.</string>
|
||||||
<string id="NoJson">Не е върнат JSON от HTTP заявка.</string>
|
<string id="NoJson">Не е върнат JSON от HTTP заявка.</string>
|
||||||
<string id="NoMenu">Грешка в дефиницията на менюто, проверете инструкциите.</string>
|
<string id="NoMenu">Грешка в дефиницията на менюто, проверете инструкциите.</string>
|
||||||
@@ -76,13 +77,14 @@
|
|||||||
<string id="SettingsTextAlign">Наляво (изключено) или вдясно (включено) изравняване на менюто.</string>
|
<string id="SettingsTextAlign">Наляво (изключено) или вдясно (включено) изравняване на менюто.</string>
|
||||||
<string id="SettingsLeftToRight">Отляво надясно</string>
|
<string id="SettingsLeftToRight">Отляво надясно</string>
|
||||||
<string id="SettingsRightToLeft">Отдясно наляво</string>
|
<string id="SettingsRightToLeft">Отдясно наляво</string>
|
||||||
<string id="SettingsWidgetStart">(Само при джаджа) Приложението се стартира автоматично от джаджата, без да се чака докосване.</string>
|
|
||||||
<string id="SettingsEnableBatteryLevel">Активиране на фоновата услуга за изпращане на нивото на батерията на устройството, местоположението и (ако се поддържа) данни за активност към Home Assistant.</string>
|
<string id="SettingsEnableBatteryLevel">Активиране на фоновата услуга за изпращане на нивото на батерията на устройството, местоположението и (ако се поддържа) данни за активност към Home Assistant.</string>
|
||||||
<string id="SettingsBatteryLevelRefreshRate">Скоростта на опресняване (в минути), при която фоновата услуга трябва да повтаря изпращането на данни.</string>
|
<string id="SettingsBatteryLevelRefreshRate">Скоростта на опресняване (в минути), при която фоновата услуга трябва да повтаря изпращането на данни.</string>
|
||||||
<string id="SettingsUserHttpHeader">Потребителска HTTP заглавка</string>
|
<string id="SettingsUserHttpHeader">Потребителска HTTP заглавка</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">Някои инсталации на Home Assistant изискват специфицирането на персонализирана HTTP заглавка, за да функционират.</string>
|
<string id="SettingsUserHttpHeaderDescription">Някои инсталации на Home Assistant изискват специфицирането на персонализирана HTTP заглавка, за да функционират.</string>
|
||||||
<string id="SettingsUserHttpHeaderName">Потребителска HTTP заглавка: Име</string>
|
<string id="SettingsUserHttpHeader1Name">Потребителска HTTP заглавка 1: Име</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">Потребителска HTTP заглавка: Стойност</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="SettingsClearWebhookId">Свържете се отново с Home Assistant (изчистване на Webhook ID, вижте ръководството за отстраняване на неизправности).</string>
|
||||||
<string id="SettingsWebhookId">(Само за четене) Webhook ID, създаден от устройството за актуализации на фоновите услуги. Може да ви е необходим за отстраняване на грешки.</string>
|
<string id="SettingsWebhookId">(Само за четене) Webhook ID, създаден от устройството за актуализации на фоновите услуги. Може да ви е необходим за отстраняване на грешки.</string>
|
||||||
</strings>
|
</strings>
|
||||||
|
|||||||
@@ -36,6 +36,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">Žádný klíč API v nastavení aplikace.</string>
|
<string id="NoAPIKey" scope="glance">Žádný klíč API v nastavení aplikace.</string>
|
||||||
<string id="NoApiUrl" scope="glance">Žádná URL API v nastavení aplikace.</string>
|
<string id="NoApiUrl" scope="glance">Žádná URL API v nastavení aplikace.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">Žádná konfigurační URL v nastavení aplikace.</string>
|
<string id="NoConfigUrl" scope="glance">Žádná konfigurační URL v nastavení aplikace.</string>
|
||||||
|
<string id="NoHTTPS">Žádná odpověď, použijte zabezpečené připojení HTTPS.</string>
|
||||||
<string id="NoInternet">Žádné připojení k internetu.</string>
|
<string id="NoInternet">Žádné připojení k internetu.</string>
|
||||||
<string id="NoJson">Žádný JSON se nevrátil z požadavku HTTP.</string>
|
<string id="NoJson">Žádný JSON se nevrátil z požadavku HTTP.</string>
|
||||||
<string id="NoMenu">Chyba definice menu, zkontrolujte pokyny.</string>
|
<string id="NoMenu">Chyba definice menu, zkontrolujte pokyny.</string>
|
||||||
@@ -76,13 +77,14 @@
|
|||||||
<string id="SettingsTextAlign">Vlevo (vypnuto) nebo vpravo (zapnuto) zarovnání nabídky.</string>
|
<string id="SettingsTextAlign">Vlevo (vypnuto) nebo vpravo (zapnuto) zarovnání nabídky.</string>
|
||||||
<string id="SettingsLeftToRight">Zleva doprava</string>
|
<string id="SettingsLeftToRight">Zleva doprava</string>
|
||||||
<string id="SettingsRightToLeft">Vpravo doleva</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="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="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="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="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="SettingsUserHttpHeader1Name">Uživatelská hlavička HTTP 1: Název</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">Uživatelská hlavička HTTP: Hodnota</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="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>
|
<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>
|
</strings>
|
||||||
|
|||||||
@@ -36,6 +36,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">Ingen API-nøgle i applikationsindstillingerne.</string>
|
<string id="NoAPIKey" scope="glance">Ingen API-nøgle i applikationsindstillingerne.</string>
|
||||||
<string id="NoApiUrl" scope="glance">Ingen API-URL i applikationsindstillingerne.</string>
|
<string id="NoApiUrl" scope="glance">Ingen API-URL i applikationsindstillingerne.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">Ingen konfigurations-URL i applikationsindstillingerne.</string>
|
<string id="NoConfigUrl" scope="glance">Ingen konfigurations-URL i applikationsindstillingerne.</string>
|
||||||
|
<string id="NoHTTPS">Intet svar, brug sikker HTTPS-forbindelse.</string>
|
||||||
<string id="NoInternet">Ingen internetforbindelse.</string>
|
<string id="NoInternet">Ingen internetforbindelse.</string>
|
||||||
<string id="NoJson">Ingen JSON modtaget fra HTTP-anmodning.</string>
|
<string id="NoJson">Ingen JSON modtaget fra HTTP-anmodning.</string>
|
||||||
<string id="NoMenu">Menudefinitionsfejl, tjek instruktionerne.</string>
|
<string id="NoMenu">Menudefinitionsfejl, tjek instruktionerne.</string>
|
||||||
@@ -76,13 +77,14 @@
|
|||||||
<string id="SettingsTextAlign">Venstre (fra) eller højre (til) menujustering.</string>
|
<string id="SettingsTextAlign">Venstre (fra) eller højre (til) menujustering.</string>
|
||||||
<string id="SettingsLeftToRight">Venstre til højre</string>
|
<string id="SettingsLeftToRight">Venstre til højre</string>
|
||||||
<string id="SettingsRightToLeft">Højre til venstre</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="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="SettingsBatteryLevelRefreshRate">Opdateringshastigheden (i minutter), hvormed baggrundstjenesten skal gentage afsendelse af data.</string>
|
||||||
<string id="SettingsUserHttpHeader">Brugerdefineret HTTP-header</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="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="SettingsUserHttpHeader1Name">Brugerdefineret HTTP-header 1: Navn</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">Brugerdefineret HTTP-header: Værdi</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="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>
|
<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>
|
</strings>
|
||||||
|
|||||||
@@ -69,12 +69,13 @@
|
|||||||
<string id="SettingsTextAlign">Menüausrichtung: Links (aus) oder Rechts (ein).</string>
|
<string id="SettingsTextAlign">Menüausrichtung: Links (aus) oder Rechts (ein).</string>
|
||||||
|
|
||||||
<string id="SettingsRightToLeft">Von rechts nach links</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="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="SettingsBatteryLevelRefreshRate">Intervall (in Minuten), in dem der Hintergrunddienst die Daten erneut senden soll.</string>
|
||||||
<string id="SettingsUserHttpHeader">Zusätzlicher HTTP-Header</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="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="SettingsUserHttpHeader1Name">Zusätzlicher HTTP-Header 1: Name</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">Zusätzlicher HTTP-Header: Value</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>
|
<string id="SettingsWebhookId">(Nur lesen) Die vom Gerät erstellte Webhook-ID für Hintergrund-Updates. Kann zum Debuggen benötigt werden.</string>
|
||||||
</strings>
|
</strings>
|
||||||
|
|||||||
@@ -36,6 +36,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">Kein API-Schlüssel in den App-Einstellungen hinterlegt.</string>
|
<string id="NoAPIKey" scope="glance">Kein API-Schlüssel in den App-Einstellungen hinterlegt.</string>
|
||||||
<string id="NoApiUrl" scope="glance">Keine API-URL in den App-Einstellungen hinterlegt.</string>
|
<string id="NoApiUrl" scope="glance">Keine API-URL in den App-Einstellungen hinterlegt.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">Keine Menükonfigurations-URL (JSON) in den App-Einstellungen hinterlegt.</string>
|
<string id="NoConfigUrl" scope="glance">Keine Menükonfigurations-URL (JSON) in den App-Einstellungen hinterlegt.</string>
|
||||||
|
<string id="NoHTTPS">Keine Antwort, sichere HTTPS-Verbindung verwenden.</string>
|
||||||
<string id="NoInternet">Keine Internetverbindung.</string>
|
<string id="NoInternet">Keine Internetverbindung.</string>
|
||||||
<string id="NoJson">Keine JSON-Datei aus der HTTP-Anfrage zurückbekommen.</string>
|
<string id="NoJson">Keine JSON-Datei aus der HTTP-Anfrage zurückbekommen.</string>
|
||||||
<string id="NoMenu">Fehler in der Menüdefinition, Anweisungen prüfen.</string>
|
<string id="NoMenu">Fehler in der Menüdefinition, Anweisungen prüfen.</string>
|
||||||
@@ -76,13 +77,14 @@
|
|||||||
<string id="SettingsTextAlign">Menüausrichtung: Links (aus) oder Rechts (ein).</string>
|
<string id="SettingsTextAlign">Menüausrichtung: Links (aus) oder Rechts (ein).</string>
|
||||||
<string id="SettingsLeftToRight">Von links nach rechts</string>
|
<string id="SettingsLeftToRight">Von links nach rechts</string>
|
||||||
<string id="SettingsRightToLeft">Von rechts nach links</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="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="SettingsBatteryLevelRefreshRate">Intervall (in Minuten), in dem der Hintergrunddienst die Daten erneut senden soll.</string>
|
||||||
<string id="SettingsUserHttpHeader">Zusätzlicher HTTP-Header</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="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="SettingsUserHttpHeader1Name">Zusätzlicher HTTP-Header 1: Name</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">Zusätzlicher HTTP-Header: Value</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="SettingsClearWebhookId">Neu mit Home Assistant verbinden (Webhook-ID löschen, siehe Fehlerbehebungshandbuch).</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>
|
<string id="SettingsWebhookId">(Nur lesen) Die vom Gerät erstellte Webhook-ID für Hintergrund-Updates. Kann zum Debuggen benötigt werden.</string>
|
||||||
</strings>
|
</strings>
|
||||||
|
|||||||
@@ -37,6 +37,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">Geen API-sleutel in de toepassingsinstellingen.</string>
|
<string id="NoAPIKey" scope="glance">Geen API-sleutel in de toepassingsinstellingen.</string>
|
||||||
<string id="NoApiUrl" scope="glance">Geen API-URL in de toepassingsinstellingen.</string>
|
<string id="NoApiUrl" scope="glance">Geen API-URL in de toepassingsinstellingen.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">Geen configuratie-URL in de toepassingsinstellingen.</string>
|
<string id="NoConfigUrl" scope="glance">Geen configuratie-URL in de toepassingsinstellingen.</string>
|
||||||
|
<string id="NoHTTPS">Geen antwoord, gebruik een beveiligde HTTPS-verbinding.</string>
|
||||||
<string id="NoInternet">Geen internetverbinding.</string>
|
<string id="NoInternet">Geen internetverbinding.</string>
|
||||||
<string id="NoJson">Geen JSON ontvangen van het HTTP-verzoek.</string>
|
<string id="NoJson">Geen JSON ontvangen van het HTTP-verzoek.</string>
|
||||||
<string id="NoMenu">Menudefinitiefout, controleer de instructies.</string>
|
<string id="NoMenu">Menudefinitiefout, controleer de instructies.</string>
|
||||||
@@ -84,8 +85,6 @@
|
|||||||
<string id="SettingsTextAlign">Links (uit) of rechts (aan) menu-uitlijning.</string>
|
<string id="SettingsTextAlign">Links (uit) of rechts (aan) menu-uitlijning.</string>
|
||||||
<string id="SettingsLeftToRight">Van links naar rechts</string>
|
<string id="SettingsLeftToRight">Van links naar rechts</string>
|
||||||
<string id="SettingsRightToLeft">Van rechts naar links</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
|
<string id="SettingsEnableBatteryLevel">Schakel de achtergrondservice in om het batterijniveau van
|
||||||
het apparaat, de locatie en (indien ondersteund) activiteitsgegevens naar Home Assistant te
|
het apparaat, de locatie en (indien ondersteund) activiteitsgegevens naar Home Assistant te
|
||||||
verzenden.</string>
|
verzenden.</string>
|
||||||
@@ -94,8 +93,10 @@
|
|||||||
<string id="SettingsUserHttpHeader">Door gebruiker opgegeven HTTP-header</string>
|
<string id="SettingsUserHttpHeader">Door gebruiker opgegeven HTTP-header</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">Sommige Home Assistant-installaties vereisen de
|
<string id="SettingsUserHttpHeaderDescription">Sommige Home Assistant-installaties vereisen de
|
||||||
specificatie van een aangepaste HTTP-header om te functioneren.</string>
|
specificatie van een aangepaste HTTP-header om te functioneren.</string>
|
||||||
<string id="SettingsUserHttpHeaderName">Door gebruiker opgegeven HTTP-header: Naam</string>
|
<string id="SettingsUserHttpHeader1Name">Door gebruiker opgegeven HTTP-header 1: Naam</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">Door gebruiker opgegeven HTTP-header: Waarde</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
|
<string id="SettingsClearWebhookId">Opnieuw verbinden met Home Assistant (Webhook-ID wissen, zie
|
||||||
Gids voor probleemoplossing).</string>
|
Gids voor probleemoplossing).</string>
|
||||||
<string id="SettingsWebhookId">(Alleen lezen) De Webhook-ID die door het apparaat is gemaakt voor
|
<string id="SettingsWebhookId">(Alleen lezen) De Webhook-ID die door het apparaat is gemaakt voor
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
<!--
|
<!--
|
||||||
Generated by Google Translate and gemini-2.5-flash from English to Estonian
|
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>
|
<strings>
|
||||||
@@ -36,6 +36,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">Rakenduse seadetes pole API võtit.</string>
|
<string id="NoAPIKey" scope="glance">Rakenduse seadetes pole API võtit.</string>
|
||||||
<string id="NoApiUrl" scope="glance">Rakenduse seadetes pole API URL-i.</string>
|
<string id="NoApiUrl" scope="glance">Rakenduse seadetes pole API URL-i.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">Rakenduse seadetes pole konfiguratsiooni URL-i.</string>
|
<string id="NoConfigUrl" scope="glance">Rakenduse seadetes pole konfiguratsiooni URL-i.</string>
|
||||||
|
<string id="NoHTTPS">Vastust pole, kasuta turvalist HTTPS-ühendust.</string>
|
||||||
<string id="NoInternet">Interneti-ühendust pole.</string>
|
<string id="NoInternet">Interneti-ühendust pole.</string>
|
||||||
<string id="NoJson">HTTP päring ei tagastanud JSON-i.</string>
|
<string id="NoJson">HTTP päring ei tagastanud JSON-i.</string>
|
||||||
<string id="NoMenu">Menüü määratluse viga, kontrollige juhiseid.</string>
|
<string id="NoMenu">Menüü määratluse viga, kontrollige juhiseid.</string>
|
||||||
@@ -82,8 +83,6 @@
|
|||||||
<string id="SettingsTextAlign">Vasak (väljas) või parem (sees) menüü joondus.</string>
|
<string id="SettingsTextAlign">Vasak (väljas) või parem (sees) menüü joondus.</string>
|
||||||
<string id="SettingsLeftToRight">Vasakult paremale</string>
|
<string id="SettingsLeftToRight">Vasakult paremale</string>
|
||||||
<string id="SettingsRightToLeft">Paremale vasakule</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
|
<string id="SettingsEnableBatteryLevel">Luba taustateenusel saata seadme aku tase, asukoht ja (kui
|
||||||
toetatud) tegevusandmed Home Assistantile.</string>
|
toetatud) tegevusandmed Home Assistantile.</string>
|
||||||
<string id="SettingsBatteryLevelRefreshRate">Värskendussagedus (minutites), millega taustateenus
|
<string id="SettingsBatteryLevelRefreshRate">Värskendussagedus (minutites), millega taustateenus
|
||||||
@@ -91,8 +90,10 @@
|
|||||||
<string id="SettingsUserHttpHeader">Kasutaja määratud HTTP päis</string>
|
<string id="SettingsUserHttpHeader">Kasutaja määratud HTTP päis</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">Mõned Home Assistanti installatsioonid vajavad
|
<string id="SettingsUserHttpHeaderDescription">Mõned Home Assistanti installatsioonid vajavad
|
||||||
toimimiseks kohandatud HTTP päise määramist.</string>
|
toimimiseks kohandatud HTTP päise määramist.</string>
|
||||||
<string id="SettingsUserHttpHeaderName">Kasutaja määratud HTTP päis: Nimi</string>
|
<string id="SettingsUserHttpHeader1Name">Kasutaja määratud HTTP-päis 1: Nimi</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">Kasutaja määratud HTTP päis: Väärtus</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
|
<string id="SettingsClearWebhookId">Ühenda uuesti Home Assistantiga (tühjenda Webhooki ID, vt
|
||||||
tõrkeotsingu juhendit).</string>
|
tõrkeotsingu juhendit).</string>
|
||||||
<string id="SettingsWebhookId">(Ainult lugemiseks) Seadme loodud Webhooki ID taustateenuse
|
<string id="SettingsWebhookId">(Ainult lugemiseks) Seadme loodud Webhooki ID taustateenuse
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
<!--
|
<!--
|
||||||
Generated by Google Translate and gemini-2.5-flash from English to Finnish
|
Generated by Google Translate and gemini-2.5-flash from English to Finnish
|
||||||
Generoinut Google Translate ja gemini-2.5-flash englannista suomeksi
|
Kääntänyt Google Translate ja gemini-2.5-flash englannista suomeksi
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<strings>
|
<strings>
|
||||||
@@ -36,6 +36,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">Ei API-avainta sovellusasetuksissa.</string>
|
<string id="NoAPIKey" scope="glance">Ei API-avainta sovellusasetuksissa.</string>
|
||||||
<string id="NoApiUrl" scope="glance">Ei API-URL-osoitetta sovellusasetuksissa.</string>
|
<string id="NoApiUrl" scope="glance">Ei API-URL-osoitetta sovellusasetuksissa.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">Ei määritys-URL-osoitetta sovellusasetuksissa.</string>
|
<string id="NoConfigUrl" scope="glance">Ei määritys-URL-osoitetta sovellusasetuksissa.</string>
|
||||||
|
<string id="NoHTTPS">Ei vastausta, käytä suojattua HTTPS-yhteyttä.</string>
|
||||||
<string id="NoInternet">Ei Internet-yhteyttä.</string>
|
<string id="NoInternet">Ei Internet-yhteyttä.</string>
|
||||||
<string id="NoJson">HTTP-pyynnöstä ei palautettu JSONia.</string>
|
<string id="NoJson">HTTP-pyynnöstä ei palautettu JSONia.</string>
|
||||||
<string id="NoMenu">Valikon määritysvirhe, tarkista ohjeet.</string>
|
<string id="NoMenu">Valikon määritysvirhe, tarkista ohjeet.</string>
|
||||||
@@ -85,8 +86,6 @@
|
|||||||
<string id="SettingsTextAlign">Vasen (pois päältä) tai oikea (on) valikon kohdistus.</string>
|
<string id="SettingsTextAlign">Vasen (pois päältä) tai oikea (on) valikon kohdistus.</string>
|
||||||
<string id="SettingsLeftToRight">Vasemmalta oikealle</string>
|
<string id="SettingsLeftToRight">Vasemmalta oikealle</string>
|
||||||
<string id="SettingsRightToLeft">Oikealta vasemmalle</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
|
<string id="SettingsEnableBatteryLevel">Ota taustapalvelu käyttöön laitteen akkutason, sijainnin
|
||||||
ja (jos tuettu) aktiivisuustietojen lähettämiseksi Home Assistantille.</string>
|
ja (jos tuettu) aktiivisuustietojen lähettämiseksi Home Assistantille.</string>
|
||||||
<string id="SettingsBatteryLevelRefreshRate">Päivitysnopeus (minuuteissa), jolla taustapalvelun
|
<string id="SettingsBatteryLevelRefreshRate">Päivitysnopeus (minuuteissa), jolla taustapalvelun
|
||||||
@@ -94,8 +93,10 @@
|
|||||||
<string id="SettingsUserHttpHeader">Käyttäjän määrittämä HTTP-otsake</string>
|
<string id="SettingsUserHttpHeader">Käyttäjän määrittämä HTTP-otsake</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">Jotkut Home Assistant -asennukset vaativat
|
<string id="SettingsUserHttpHeaderDescription">Jotkut Home Assistant -asennukset vaativat
|
||||||
mukautetun HTTP-otsakkeen määrittelyn toimiakseen.</string>
|
mukautetun HTTP-otsakkeen määrittelyn toimiakseen.</string>
|
||||||
<string id="SettingsUserHttpHeaderName">Käyttäjän määrittämä HTTP-otsake: Nimi</string>
|
<string id="SettingsUserHttpHeader1Name">Käyttäjän määrittämä HTTP-otsake 1: Nimi</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">Käyttäjän määrittämä HTTP-otsake: Arvo</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,
|
<string id="SettingsClearWebhookId">Yhdistä uudelleen Home Assistantiin (tyhjennä Webhook ID,
|
||||||
katso vianetsintäopas).</string>
|
katso vianetsintäopas).</string>
|
||||||
<string id="SettingsWebhookId">(Vain luku) Laitteen luoma Webhook ID taustapalvelun päivityksiä
|
<string id="SettingsWebhookId">(Vain luku) Laitteen luoma Webhook ID taustapalvelun päivityksiä
|
||||||
|
|||||||
@@ -39,6 +39,7 @@
|
|||||||
<string id="NoApiUrl" scope="glance">Aucune URL de l'API dans les paramètres de l'application.</string>
|
<string id="NoApiUrl" scope="glance">Aucune URL de l'API dans les paramètres de l'application.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">Aucune URL de configuration dans les paramètres de
|
<string id="NoConfigUrl" scope="glance">Aucune URL de configuration dans les paramètres de
|
||||||
l'application.</string>
|
l'application.</string>
|
||||||
|
<string id="NoHTTPS">Aucune réponse, utilisez une connexion HTTPS sécurisée.</string>
|
||||||
<string id="NoInternet">Pas de connexion Internet.</string>
|
<string id="NoInternet">Pas de connexion Internet.</string>
|
||||||
<string id="NoJson">Aucun JSON n'est retourné par la requête HTTP.</string>
|
<string id="NoJson">Aucun JSON n'est retourné par la requête HTTP.</string>
|
||||||
<string id="NoMenu">Erreur de définition du menu, vérifiez les instructions.</string>
|
<string id="NoMenu">Erreur de définition du menu, vérifiez les instructions.</string>
|
||||||
@@ -88,8 +89,6 @@
|
|||||||
<string id="SettingsTextAlign">Alignement du menu : Gauche (désactivé) ou Droit (activé).</string>
|
<string id="SettingsTextAlign">Alignement du menu : Gauche (désactivé) ou Droit (activé).</string>
|
||||||
<string id="SettingsLeftToRight">De gauche à droite</string>
|
<string id="SettingsLeftToRight">De gauche à droite</string>
|
||||||
<string id="SettingsRightToLeft">De droite à gauche</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
|
<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
|
de la batterie de l'appareil, l'emplacement et (le cas échéant) les données d'activité à Home
|
||||||
Assistant.</string>
|
Assistant.</string>
|
||||||
@@ -98,8 +97,10 @@
|
|||||||
<string id="SettingsUserHttpHeader">En-tête HTTP fourni par l'utilisateur</string>
|
<string id="SettingsUserHttpHeader">En-tête HTTP fourni par l'utilisateur</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">Certaines installations Home Assistant nécessitent
|
<string id="SettingsUserHttpHeaderDescription">Certaines installations Home Assistant nécessitent
|
||||||
la spécification d'un en-tête HTTP personnalisé pour fonctionner.</string>
|
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="SettingsUserHttpHeader1Name">En-tête HTTP fourni par l'utilisateur 1 : Nom</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">En-tête HTTP fourni par l'utilisateur : Valeur</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
|
<string id="SettingsClearWebhookId">Se reconnecter à Home Assistant (effacer l'ID du Webhook, voir
|
||||||
le guide de dépannage).</string>
|
le guide de dépannage).</string>
|
||||||
<string id="SettingsWebhookId">(Lecture seule) L'ID Webhook créé par l'appareil pour les mises à
|
<string id="SettingsWebhookId">(Lecture seule) L'ID Webhook créé par l'appareil pour les mises à
|
||||||
|
|||||||
@@ -38,6 +38,7 @@
|
|||||||
<string id="NoApiUrl" scope="glance">Δεν υπάρχει διεύθυνση URL API στις ρυθμίσεις εφαρμογής.</string>
|
<string id="NoApiUrl" scope="glance">Δεν υπάρχει διεύθυνση URL API στις ρυθμίσεις εφαρμογής.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">Δεν υπάρχει διεύθυνση URL διαμόρφωσης στις ρυθμίσεις
|
<string id="NoConfigUrl" scope="glance">Δεν υπάρχει διεύθυνση URL διαμόρφωσης στις ρυθμίσεις
|
||||||
εφαρμογής.</string>
|
εφαρμογής.</string>
|
||||||
|
<string id="NoHTTPS">Καμία απόκριση, χρησιμοποιήστε ασφαλή σύνδεση HTTPS.</string>
|
||||||
<string id="NoInternet">Χωρίς σύνδεση στο Διαδίκτυο.</string>
|
<string id="NoInternet">Χωρίς σύνδεση στο Διαδίκτυο.</string>
|
||||||
<string id="NoJson">Κανένα JSON δεν επεστράφη από το αίτημα HTTP.</string>
|
<string id="NoJson">Κανένα JSON δεν επεστράφη από το αίτημα HTTP.</string>
|
||||||
<string id="NoMenu">Σφάλμα ορισμού μενού, ελέγξτε τις οδηγίες.</string>
|
<string id="NoMenu">Σφάλμα ορισμού μενού, ελέγξτε τις οδηγίες.</string>
|
||||||
@@ -86,8 +87,6 @@
|
|||||||
<string id="SettingsTextAlign">Ευθυγράμμιση μενού: Αριστερά (απενεργοποιημένο) ή Δεξιά (ενεργό).</string>
|
<string id="SettingsTextAlign">Ευθυγράμμιση μενού: Αριστερά (απενεργοποιημένο) ή Δεξιά (ενεργό).</string>
|
||||||
<string id="SettingsLeftToRight">Από αριστερά προς τα δεξιά</string>
|
<string id="SettingsLeftToRight">Από αριστερά προς τα δεξιά</string>
|
||||||
<string id="SettingsRightToLeft">Δεξιά προς τα αριστερά</string>
|
<string id="SettingsRightToLeft">Δεξιά προς τα αριστερά</string>
|
||||||
<string id="SettingsWidgetStart">(Μόνο widget) Αυτόματη εκκίνηση της εφαρμογής από το widget χωρίς
|
|
||||||
να περιμένετε άγγιγμα.</string>
|
|
||||||
<string id="SettingsEnableBatteryLevel">Ενεργοποιήστε την υπηρεσία παρασκηνίου για την αποστολή
|
<string id="SettingsEnableBatteryLevel">Ενεργοποιήστε την υπηρεσία παρασκηνίου για την αποστολή
|
||||||
της στάθμης μπαταρίας της συσκευής, της τοποθεσίας και (αν υποστηρίζονται) δεδομένων
|
της στάθμης μπαταρίας της συσκευής, της τοποθεσίας και (αν υποστηρίζονται) δεδομένων
|
||||||
δραστηριότητας στο Home Assistant.</string>
|
δραστηριότητας στο Home Assistant.</string>
|
||||||
@@ -96,8 +95,10 @@
|
|||||||
<string id="SettingsUserHttpHeader">Κεφαλίδα HTTP που παρέχεται από τον χρήστη</string>
|
<string id="SettingsUserHttpHeader">Κεφαλίδα HTTP που παρέχεται από τον χρήστη</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">Ορισμένες εγκαταστάσεις Home Assistant απαιτούν την
|
<string id="SettingsUserHttpHeaderDescription">Ορισμένες εγκαταστάσεις Home Assistant απαιτούν την
|
||||||
προδιαγραφή μιας προσαρμοσμένης κεφαλίδας HTTP για να λειτουργήσουν.</string>
|
προδιαγραφή μιας προσαρμοσμένης κεφαλίδας HTTP για να λειτουργήσουν.</string>
|
||||||
<string id="SettingsUserHttpHeaderName">Κεφαλίδα HTTP που παρέχεται από τον χρήστη: Όνομα</string>
|
<string id="SettingsUserHttpHeader1Name">Κεφαλίδα HTTP 1 που παρέχεται από τον χρήστη: Όνομα</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">Κεφαλίδα HTTP που παρέχεται από τον χρήστη: Τιμή</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 id="SettingsClearWebhookId">Επανασύνδεση στο Home Assistant (εκκαθάριση Webhook ID, δείτε
|
||||||
τον οδηγό αντιμετώπισης προβλημάτων).</string>
|
τον οδηγό αντιμετώπισης προβλημάτων).</string>
|
||||||
<string id="SettingsWebhookId">(Μόνο για ανάγνωση) Το Webhook ID που δημιουργήθηκε από τη συσκευή
|
<string id="SettingsWebhookId">(Μόνο για ανάγνωση) Το Webhook ID που δημιουργήθηκε από τη συσκευή
|
||||||
|
|||||||
@@ -36,6 +36,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">אין מפתח API בהגדרות היישום.</string>
|
<string id="NoAPIKey" scope="glance">אין מפתח API בהגדרות היישום.</string>
|
||||||
<string id="NoApiUrl" scope="glance">אין כתובת URL של ה-API בהגדרות היישום.</string>
|
<string id="NoApiUrl" scope="glance">אין כתובת URL של ה-API בהגדרות היישום.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">אין כתובת URL לתצורה בהגדרות היישום.</string>
|
<string id="NoConfigUrl" scope="glance">אין כתובת URL לתצורה בהגדרות היישום.</string>
|
||||||
|
<string id="NoHTTPS">אין תגובה, השתמש בחיבור HTTPS מאובטח.</string>
|
||||||
<string id="NoInternet">אין חיבור לאינטרנט.</string>
|
<string id="NoInternet">אין חיבור לאינטרנט.</string>
|
||||||
<string id="NoJson">לא התקבל JSON מבקשת HTTP.</string>
|
<string id="NoJson">לא התקבל JSON מבקשת HTTP.</string>
|
||||||
<string id="NoMenu">שגיאת הגדרת תפריט, בדוק את ההוראות.</string>
|
<string id="NoMenu">שגיאת הגדרת תפריט, בדוק את ההוראות.</string>
|
||||||
@@ -79,8 +80,6 @@
|
|||||||
<string id="SettingsTextAlign">יישור תפריט: שמאל (כבוי) או ימין (מופעל).</string>
|
<string id="SettingsTextAlign">יישור תפריט: שמאל (כבוי) או ימין (מופעל).</string>
|
||||||
<string id="SettingsLeftToRight">משמאל לימין</string>
|
<string id="SettingsLeftToRight">משמאל לימין</string>
|
||||||
<string id="SettingsRightToLeft">מימין לשמאל</string>
|
<string id="SettingsRightToLeft">מימין לשמאל</string>
|
||||||
<string id="SettingsWidgetStart">(ווידג'ט בלבד) הפעל אוטומטית את היישום מהווידג'ט מבלי לחכות
|
|
||||||
להקשה.</string>
|
|
||||||
<string id="SettingsEnableBatteryLevel">אפשר לשירות הרקע לשלוח את רמת סוללת המכשיר, מיקום ו(אם
|
<string id="SettingsEnableBatteryLevel">אפשר לשירות הרקע לשלוח את רמת סוללת המכשיר, מיקום ו(אם
|
||||||
נתמך) נתוני פעילות אל Home Assistant.</string>
|
נתמך) נתוני פעילות אל Home Assistant.</string>
|
||||||
<string id="SettingsBatteryLevelRefreshRate">קצב הרענון (בדקות) שבו שירות הרקע ישלח נתונים באופן
|
<string id="SettingsBatteryLevelRefreshRate">קצב הרענון (בדקות) שבו שירות הרקע ישלח נתונים באופן
|
||||||
@@ -88,8 +87,10 @@
|
|||||||
<string id="SettingsUserHttpHeader">כותרת HTTP שסופקה על ידי המשתמש</string>
|
<string id="SettingsUserHttpHeader">כותרת HTTP שסופקה על ידי המשתמש</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">חלק מהתקנות Home Assistant דורשות הגדרה של כותרת
|
<string id="SettingsUserHttpHeaderDescription">חלק מהתקנות Home Assistant דורשות הגדרה של כותרת
|
||||||
HTTP מותאמת אישית כדי לתפקד.</string>
|
HTTP מותאמת אישית כדי לתפקד.</string>
|
||||||
<string id="SettingsUserHttpHeaderName">כותרת HTTP שסופקה על ידי המשתמש: שם</string>
|
<string id="SettingsUserHttpHeader1Name">כותרת HTTP שסופקה על ידי המשתמש 1: שם</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">כותרת HTTP שסופקה על ידי המשתמש: ערך</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 id="SettingsClearWebhookId">התחבר מחדש אל Home Assistant (נקה מזהה Webhook, ראה מדריך
|
||||||
לפתרון בעיות).</string>
|
לפתרון בעיות).</string>
|
||||||
<string id="SettingsWebhookId">(קריאה בלבד) מזהה Webhook שנוצר על ידי המכשיר לעדכוני שירות רקע.
|
<string id="SettingsWebhookId">(קריאה בלבד) מזהה Webhook שנוצר על ידי המכשיר לעדכוני שירות רקע.
|
||||||
|
|||||||
@@ -37,6 +37,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">Nema API ključa u postavkama aplikacije.</string>
|
<string id="NoAPIKey" scope="glance">Nema API ključa u postavkama aplikacije.</string>
|
||||||
<string id="NoApiUrl" scope="glance">Nema API URL-a u postavkama aplikacije.</string>
|
<string id="NoApiUrl" scope="glance">Nema API URL-a u postavkama aplikacije.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">Nema URL-a konfiguracije u postavkama aplikacije.</string>
|
<string id="NoConfigUrl" scope="glance">Nema URL-a konfiguracije u postavkama aplikacije.</string>
|
||||||
|
<string id="NoHTTPS">Nema odgovora, koristite sigurnu HTTPS vezu.</string>
|
||||||
<string id="NoInternet">Nema internetske veze.</string>
|
<string id="NoInternet">Nema internetske veze.</string>
|
||||||
<string id="NoJson">Nije primljen JSON odgovor na HTTP zahtjev.</string>
|
<string id="NoJson">Nije primljen JSON odgovor na HTTP zahtjev.</string>
|
||||||
<string id="NoMenu">Pogreška u definiciji izbornika, provjerite upute.</string>
|
<string id="NoMenu">Pogreška u definiciji izbornika, provjerite upute.</string>
|
||||||
@@ -84,8 +85,6 @@
|
|||||||
<string id="SettingsTextAlign">Poravnanje izbornika: lijevo (isključeno) ili desno (uključeno).</string>
|
<string id="SettingsTextAlign">Poravnanje izbornika: lijevo (isključeno) ili desno (uključeno).</string>
|
||||||
<string id="SettingsLeftToRight">Slijeva na desno</string>
|
<string id="SettingsLeftToRight">Slijeva na desno</string>
|
||||||
<string id="SettingsRightToLeft">Zdesna nalijevo</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
|
<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>
|
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
|
<string id="SettingsBatteryLevelRefreshRate">Brzina osvježavanja (u minutama) u kojoj bi
|
||||||
@@ -93,8 +92,10 @@
|
|||||||
<string id="SettingsUserHttpHeader">Korisnički HTTP zaglavlje</string>
|
<string id="SettingsUserHttpHeader">Korisnički HTTP zaglavlje</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">Neke instalacije Home Assistanta zahtijevaju
|
<string id="SettingsUserHttpHeaderDescription">Neke instalacije Home Assistanta zahtijevaju
|
||||||
specifikaciju prilagođenog HTTP zaglavlja za funkcioniranje.</string>
|
specifikaciju prilagođenog HTTP zaglavlja za funkcioniranje.</string>
|
||||||
<string id="SettingsUserHttpHeaderName">Korisnički HTTP zaglavlje: Naziv</string>
|
<string id="SettingsUserHttpHeader1Name">Korisnički HTTP zaglavlje 1: Naziv</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">Korisnički HTTP zaglavlje: Vrijednost</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,
|
<string id="SettingsClearWebhookId">Ponovno se povežite s Home Assistantom (očisti ID Webhooka,
|
||||||
pogledajte vodič za rješavanje problema).</string>
|
pogledajte vodič za rješavanje problema).</string>
|
||||||
<string id="SettingsWebhookId">(Samo za čitanje) ID Webhooka koji je uređaj stvorio za ažuriranja
|
<string id="SettingsWebhookId">(Samo za čitanje) ID Webhooka koji je uređaj stvorio za ažuriranja
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
<!--
|
<!--
|
||||||
Generated by Google Translate and gemini-2.5-flash from English to Hungarian
|
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>
|
<strings>
|
||||||
@@ -37,6 +37,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">Nincs API kulcs az alkalmazás beállításaiban.</string>
|
<string id="NoAPIKey" scope="glance">Nincs API kulcs az alkalmazás beállításaiban.</string>
|
||||||
<string id="NoApiUrl" scope="glance">Nincs API URL az alkalmazás beállításaiban.</string>
|
<string id="NoApiUrl" scope="glance">Nincs API URL az alkalmazás beállításaiban.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">Nincs konfigurációs URL az alkalmazás beállításaiban.</string>
|
<string id="NoConfigUrl" scope="glance">Nincs konfigurációs URL az alkalmazás beállításaiban.</string>
|
||||||
|
<string id="NoHTTPS">Nincs válasz, használjon biztonságos HTTPS kapcsolatot.</string>
|
||||||
<string id="NoInternet">Nincs internetkapcsolat.</string>
|
<string id="NoInternet">Nincs internetkapcsolat.</string>
|
||||||
<string id="NoJson">A HTTP kérés nem adott vissza JSON-t.</string>
|
<string id="NoJson">A HTTP kérés nem adott vissza JSON-t.</string>
|
||||||
<string id="NoMenu">Menüdefiníciós hiba, ellenőrizze az utasításokat.</string>
|
<string id="NoMenu">Menüdefiníciós hiba, ellenőrizze az utasításokat.</string>
|
||||||
@@ -85,8 +86,6 @@
|
|||||||
<string id="SettingsTextAlign">Menü igazítása: Balra (ki) vagy Jobbra (be).</string>
|
<string id="SettingsTextAlign">Menü igazítása: Balra (ki) vagy Jobbra (be).</string>
|
||||||
<string id="SettingsLeftToRight">Balról jobbra</string>
|
<string id="SettingsLeftToRight">Balról jobbra</string>
|
||||||
<string id="SettingsRightToLeft">Jobbról balra</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
|
<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
|
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>
|
Home Assistantnek.</string>
|
||||||
@@ -95,8 +94,10 @@
|
|||||||
<string id="SettingsUserHttpHeader">Felhasználó által megadott HTTP fejléc</string>
|
<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
|
<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>
|
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="SettingsUserHttpHeader1Name">Felhasználó által megadott HTTP-fejléc 1: Név</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">Felhasználó által megadott HTTP-fejléc: Érték</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ó
|
<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>
|
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
|
<string id="SettingsWebhookId">(Csak olvasható) Az eszköz által létrehozott webhook azonosító a
|
||||||
|
|||||||
@@ -37,6 +37,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">Tidak ada kunci API di pengaturan aplikasi.</string>
|
<string id="NoAPIKey" scope="glance">Tidak ada kunci API di pengaturan aplikasi.</string>
|
||||||
<string id="NoApiUrl" scope="glance">Tidak ada URL API di pengaturan aplikasi.</string>
|
<string id="NoApiUrl" scope="glance">Tidak ada URL API di pengaturan aplikasi.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">Tidak ada URL konfigurasi di pengaturan aplikasi.</string>
|
<string id="NoConfigUrl" scope="glance">Tidak ada URL konfigurasi di pengaturan aplikasi.</string>
|
||||||
|
<string id="NoHTTPS">Tidak ada respons, gunakan koneksi HTTPS aman.</string>
|
||||||
<string id="NoInternet">Tidak ada koneksi internet.</string>
|
<string id="NoInternet">Tidak ada koneksi internet.</string>
|
||||||
<string id="NoJson">Tidak ada JSON yang diterima dari permintaan HTTP.</string>
|
<string id="NoJson">Tidak ada JSON yang diterima dari permintaan HTTP.</string>
|
||||||
<string id="NoMenu">Kesalahan definisi menu, periksa instruksi.</string>
|
<string id="NoMenu">Kesalahan definisi menu, periksa instruksi.</string>
|
||||||
@@ -85,8 +86,6 @@
|
|||||||
<string id="SettingsTextAlign">Penjajaran Menu Kiri (mati) atau Kanan (hidup).</string>
|
<string id="SettingsTextAlign">Penjajaran Menu Kiri (mati) atau Kanan (hidup).</string>
|
||||||
<string id="SettingsLeftToRight">Kiri ke kanan</string>
|
<string id="SettingsLeftToRight">Kiri ke kanan</string>
|
||||||
<string id="SettingsRightToLeft">Kanan ke kiri</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
|
<string id="SettingsEnableBatteryLevel">Aktifkan layanan latar belakang untuk mengirim tingkat
|
||||||
baterai perangkat, lokasi, dan (jika didukung) data aktivitas ke Home Assistant.</string>
|
baterai perangkat, lokasi, dan (jika didukung) data aktivitas ke Home Assistant.</string>
|
||||||
<string id="SettingsBatteryLevelRefreshRate">Tingkat refresh (dalam menit) di mana layanan latar
|
<string id="SettingsBatteryLevelRefreshRate">Tingkat refresh (dalam menit) di mana layanan latar
|
||||||
@@ -94,8 +93,10 @@
|
|||||||
<string id="SettingsUserHttpHeader">Header HTTP yang disediakan pengguna</string>
|
<string id="SettingsUserHttpHeader">Header HTTP yang disediakan pengguna</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">Beberapa instalasi Home Assistant memerlukan
|
<string id="SettingsUserHttpHeaderDescription">Beberapa instalasi Home Assistant memerlukan
|
||||||
spesifikasi header HTTP kustom agar berfungsi.</string>
|
spesifikasi header HTTP kustom agar berfungsi.</string>
|
||||||
<string id="SettingsUserHttpHeaderName">Header HTTP yang disediakan pengguna: Nama</string>
|
<string id="SettingsUserHttpHeader1Name">Header HTTP yang disediakan pengguna 1: Nama</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">Header HTTP yang disediakan pengguna: Nilai</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
|
<string id="SettingsClearWebhookId">Sambungkan kembali ke Home Assistant (hapus ID Webhook, lihat
|
||||||
Panduan Pemecahan Masalah).</string>
|
Panduan Pemecahan Masalah).</string>
|
||||||
<string id="SettingsWebhookId">(Baca saja) ID Webhook yang dibuat oleh perangkat untuk pembaruan
|
<string id="SettingsWebhookId">(Baca saja) ID Webhook yang dibuat oleh perangkat untuk pembaruan
|
||||||
|
|||||||
@@ -38,6 +38,7 @@
|
|||||||
<string id="NoApiUrl" scope="glance">Nessun URL API nelle impostazioni dell'applicazione.</string>
|
<string id="NoApiUrl" scope="glance">Nessun URL API nelle impostazioni dell'applicazione.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">Nessun URL di configurazione nelle impostazioni
|
<string id="NoConfigUrl" scope="glance">Nessun URL di configurazione nelle impostazioni
|
||||||
dell'applicazione.</string>
|
dell'applicazione.</string>
|
||||||
|
<string id="NoHTTPS">Nessuna risposta, usa una connessione HTTPS sicura.</string>
|
||||||
<string id="NoInternet">Nessuna connessione Internet.</string>
|
<string id="NoInternet">Nessuna connessione Internet.</string>
|
||||||
<string id="NoJson">Nessun JSON ricevuto dalla richiesta HTTP.</string>
|
<string id="NoJson">Nessun JSON ricevuto dalla richiesta HTTP.</string>
|
||||||
<string id="NoMenu">Errore di definizione del menu, controlla le istruzioni.</string>
|
<string id="NoMenu">Errore di definizione del menu, controlla le istruzioni.</string>
|
||||||
@@ -90,8 +91,6 @@
|
|||||||
<string id="SettingsTextAlign">Allineamento del menu a sinistra (OFF) o a destra (ON).</string>
|
<string id="SettingsTextAlign">Allineamento del menu a sinistra (OFF) o a destra (ON).</string>
|
||||||
<string id="SettingsLeftToRight">Da sinistra a destra</string>
|
<string id="SettingsLeftToRight">Da sinistra a destra</string>
|
||||||
<string id="SettingsRightToLeft">Da destra a sinistra</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
|
<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
|
della batteria del dispositivo, la posizione e (se supportati) i dati di attività a Home
|
||||||
Assistant.</string>
|
Assistant.</string>
|
||||||
@@ -100,8 +99,10 @@
|
|||||||
<string id="SettingsUserHttpHeader">Intestazione HTTP fornita dall'utente</string>
|
<string id="SettingsUserHttpHeader">Intestazione HTTP fornita dall'utente</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">Alcune installazioni di Home Assistant richiedono
|
<string id="SettingsUserHttpHeaderDescription">Alcune installazioni di Home Assistant richiedono
|
||||||
la specifica di un'intestazione HTTP personalizzata per funzionare.</string>
|
la specifica di un'intestazione HTTP personalizzata per funzionare.</string>
|
||||||
<string id="SettingsUserHttpHeaderName">Intestazione HTTP fornita dall'utente: Nome</string>
|
<string id="SettingsUserHttpHeader1Name">Intestazione HTTP 1 fornita dall'utente: Nome</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">Intestazione HTTP fornita dall'utente: Valore</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
|
<string id="SettingsClearWebhookId">Riconnettiti a Home Assistant (cancella ID Webhook, vedi Guida
|
||||||
alla risoluzione dei problemi).</string>
|
alla risoluzione dei problemi).</string>
|
||||||
<string id="SettingsWebhookId">(Solo lettura) L'ID WebHook creato dal dispositivo per gli
|
<string id="SettingsWebhookId">(Solo lettura) L'ID WebHook creato dal dispositivo per gli
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
<!--
|
<!--
|
||||||
Generated by Google Translate and gemini-2.5-flash from English to Japanese
|
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>
|
<strings>
|
||||||
@@ -36,6 +36,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">アプリケーション設定にAPIキーはありません。</string>
|
<string id="NoAPIKey" scope="glance">アプリケーション設定にAPIキーはありません。</string>
|
||||||
<string id="NoApiUrl" scope="glance">アプリケーション設定にAPI URLはありません。</string>
|
<string id="NoApiUrl" scope="glance">アプリケーション設定にAPI URLはありません。</string>
|
||||||
<string id="NoConfigUrl" scope="glance">アプリケーション設定に構成URLはありません。</string>
|
<string id="NoConfigUrl" scope="glance">アプリケーション設定に構成URLはありません。</string>
|
||||||
|
<string id="NoHTTPS">応答なし、安全なHTTPS接続を使用してください。</string>
|
||||||
<string id="NoInternet">インターネット接続はありません。</string>
|
<string id="NoInternet">インターネット接続はありません。</string>
|
||||||
<string id="NoJson">JSONはHTTPリクエストから返されませんでした。</string>
|
<string id="NoJson">JSONはHTTPリクエストから返されませんでした。</string>
|
||||||
<string id="NoMenu">メニュー定義エラー、手順を確認してください。</string>
|
<string id="NoMenu">メニュー定義エラー、手順を確認してください。</string>
|
||||||
@@ -77,15 +78,16 @@
|
|||||||
<string id="SettingsTextAlign">メニューの配置:左(オフ)または右(オン)。</string>
|
<string id="SettingsTextAlign">メニューの配置:左(オフ)または右(オン)。</string>
|
||||||
<string id="SettingsLeftToRight">左から右</string>
|
<string id="SettingsLeftToRight">左から右</string>
|
||||||
<string id="SettingsRightToLeft">右から左</string>
|
<string id="SettingsRightToLeft">右から左</string>
|
||||||
<string id="SettingsWidgetStart">(ウィジェットのみ)タップを待たずにウィジェットからアプリケーションを自動起動します。</string>
|
|
||||||
<string id="SettingsEnableBatteryLevel">バックグラウンドサービスによるデバイスのバッテリーレベル、位置情報、および(サポートされている場合)アクティビティデータのHome
|
<string id="SettingsEnableBatteryLevel">バックグラウンドサービスによるデバイスのバッテリーレベル、位置情報、および(サポートされている場合)アクティビティデータのHome
|
||||||
Assistantへの送信を有効にする。</string>
|
Assistantへの送信を有効にする。</string>
|
||||||
<string id="SettingsBatteryLevelRefreshRate">バックグラウンドサービスがデータを送信するリフレッシュレート(分)。</string>
|
<string id="SettingsBatteryLevelRefreshRate">バックグラウンドサービスがデータを送信するリフレッシュレート(分)。</string>
|
||||||
<string id="SettingsUserHttpHeader">ユーザーが提供したHTTPヘッダー</string>
|
<string id="SettingsUserHttpHeader">ユーザーが提供したHTTPヘッダー</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">一部のHome
|
<string id="SettingsUserHttpHeaderDescription">一部のHome
|
||||||
Assistantのインストールでは、機能するためにカスタムHTTPヘッダーの指定が必要です。</string>
|
Assistantのインストールでは、機能するためにカスタムHTTPヘッダーの指定が必要です。</string>
|
||||||
<string id="SettingsUserHttpHeaderName">ユーザーが提供したHTTPヘッダー:名前</string>
|
<string id="SettingsUserHttpHeader1Name">ユーザーが提供したHTTPヘッダー 1: 名前</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">ユーザーが提供したHTTPヘッダー:値</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="SettingsClearWebhookId">Home Assistantに再接続(Webhook IDをクリア、トラブルシューティングガイドを参照)。</string>
|
||||||
<string id="SettingsWebhookId">(読み取り専用)バックグラウンドサービスの更新のためにデバイスによって作成されたWebhook
|
<string id="SettingsWebhookId">(読み取り専用)バックグラウンドサービスの更新のためにデバイスによって作成されたWebhook
|
||||||
ID。デバッグにこれが必要になる場合があります。</string>
|
ID。デバッグにこれが必要になる場合があります。</string>
|
||||||
|
|||||||
@@ -36,6 +36,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">앱 설정에 API 키가 없습니다.</string>
|
<string id="NoAPIKey" scope="glance">앱 설정에 API 키가 없습니다.</string>
|
||||||
<string id="NoApiUrl" scope="glance">앱 설정에 API URL이 없습니다.</string>
|
<string id="NoApiUrl" scope="glance">앱 설정에 API URL이 없습니다.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">앱 설정에 구성 URL이 없습니다.</string>
|
<string id="NoConfigUrl" scope="glance">앱 설정에 구성 URL이 없습니다.</string>
|
||||||
|
<string id="NoHTTPS">응답 없음, 보안 HTTPS 연결을 사용하세요.</string>
|
||||||
<string id="NoInternet">인터넷 연결 없음.</string>
|
<string id="NoInternet">인터넷 연결 없음.</string>
|
||||||
<string id="NoJson">HTTP 요청에서 JSON이 반환되지 않았습니다.</string>
|
<string id="NoJson">HTTP 요청에서 JSON이 반환되지 않았습니다.</string>
|
||||||
<string id="NoMenu">메뉴 정의 오류, 지침을 확인하세요.</string>
|
<string id="NoMenu">메뉴 정의 오류, 지침을 확인하세요.</string>
|
||||||
@@ -77,15 +78,16 @@
|
|||||||
<string id="SettingsTextAlign">왼쪽(꺼짐) 또는 오른쪽(켜짐) 메뉴 정렬.</string>
|
<string id="SettingsTextAlign">왼쪽(꺼짐) 또는 오른쪽(켜짐) 메뉴 정렬.</string>
|
||||||
<string id="SettingsLeftToRight">왼쪽에서 오른쪽</string>
|
<string id="SettingsLeftToRight">왼쪽에서 오른쪽</string>
|
||||||
<string id="SettingsRightToLeft">오른쪽에서 왼쪽</string>
|
<string id="SettingsRightToLeft">오른쪽에서 왼쪽</string>
|
||||||
<string id="SettingsWidgetStart">(위젯 전용) 탭을 기다리지 않고 위젯에서 앱을 자동으로 시작합니다.</string>
|
|
||||||
<string id="SettingsEnableBatteryLevel">백그라운드 서비스가 기기 배터리 잔량, 위치 및 (지원되는 경우) 활동 데이터를 Home
|
<string id="SettingsEnableBatteryLevel">백그라운드 서비스가 기기 배터리 잔량, 위치 및 (지원되는 경우) 활동 데이터를 Home
|
||||||
Assistant로 전송하도록 활성화합니다.</string>
|
Assistant로 전송하도록 활성화합니다.</string>
|
||||||
<string id="SettingsBatteryLevelRefreshRate">백그라운드 서비스가 데이터를 반복 전송할 새로 고침 빈도(분).</string>
|
<string id="SettingsBatteryLevelRefreshRate">백그라운드 서비스가 데이터를 반복 전송할 새로 고침 빈도(분).</string>
|
||||||
<string id="SettingsUserHttpHeader">사용자 제공 HTTP 헤더</string>
|
<string id="SettingsUserHttpHeader">사용자 제공 HTTP 헤더</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">일부 Home Assistant 설치에서는 작동을 위해 사용자 지정 HTTP 헤더를 지정해야
|
<string id="SettingsUserHttpHeaderDescription">일부 Home Assistant 설치에서는 작동을 위해 사용자 지정 HTTP 헤더를 지정해야
|
||||||
합니다.</string>
|
합니다.</string>
|
||||||
<string id="SettingsUserHttpHeaderName">사용자 제공 HTTP 헤더: 이름</string>
|
<string id="SettingsUserHttpHeader1Name">사용자 제공 HTTP 헤더 1: 이름</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">사용자 제공 HTTP 헤더: 값</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="SettingsClearWebhookId">Home Assistant에 다시 연결 (Webhook ID 지우기, 문제 해결 가이드 참조).</string>
|
||||||
<string id="SettingsWebhookId">(읽기 전용) 백그라운드 서비스 업데이트를 위해 기기에서 생성한 Webhook ID. 디버깅에 필요할 수 있습니다.</string>
|
<string id="SettingsWebhookId">(읽기 전용) 백그라운드 서비스 업데이트를 위해 기기에서 생성한 Webhook ID. 디버깅에 필요할 수 있습니다.</string>
|
||||||
</strings>
|
</strings>
|
||||||
|
|||||||
@@ -36,6 +36,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">Lietojumprogrammas iestatījumos nav API atslēgas.</string>
|
<string id="NoAPIKey" scope="glance">Lietojumprogrammas iestatījumos nav API atslēgas.</string>
|
||||||
<string id="NoApiUrl" scope="glance">Lietojumprogrammas iestatījumos nav API URL.</string>
|
<string id="NoApiUrl" scope="glance">Lietojumprogrammas iestatījumos nav API URL.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">Lietojumprogrammas iestatījumos nav konfigurācijas URL.</string>
|
<string id="NoConfigUrl" scope="glance">Lietojumprogrammas iestatījumos nav konfigurācijas URL.</string>
|
||||||
|
<string id="NoHTTPS">Nav atbildes, izmantojiet drošu HTTPS savienojumu.</string>
|
||||||
<string id="NoInternet">Nav interneta savienojuma.</string>
|
<string id="NoInternet">Nav interneta savienojuma.</string>
|
||||||
<string id="NoJson">HTTP pieprasījums neatgrieza JSON.</string>
|
<string id="NoJson">HTTP pieprasījums neatgrieza JSON.</string>
|
||||||
<string id="NoMenu">Izvēlnes definīcijas kļūda, pārbaudiet instrukcijas.</string>
|
<string id="NoMenu">Izvēlnes definīcijas kļūda, pārbaudiet instrukcijas.</string>
|
||||||
@@ -84,8 +85,6 @@
|
|||||||
<string id="SettingsTextAlign">Kreisā (izslēgta) vai labā (ieslēgta) izvēlnes izlīdzināšana.</string>
|
<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="SettingsLeftToRight">No kreisās uz labo pusi</string>
|
||||||
<string id="SettingsRightToLeft">No labās uz kreiso 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
|
<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>
|
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
|
<string id="SettingsBatteryLevelRefreshRate">Atsvaidzināšanas ātrums (minūtēs), kurā fona
|
||||||
@@ -93,8 +92,10 @@
|
|||||||
<string id="SettingsUserHttpHeader">Lietotāja norādītā HTTP galvene</string>
|
<string id="SettingsUserHttpHeader">Lietotāja norādītā HTTP galvene</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">Dažām Home Assistant instalācijām ir nepieciešama
|
<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>
|
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="SettingsUserHttpHeader1Name">Lietotāja norādītā HTTP galvene 1: Nosaukums</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">Lietotāja norādītā HTTP galvene: Vērtība</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,
|
<string id="SettingsClearWebhookId">Atkārtoti savienoties ar Home Assistant (notīrīt Webhook ID,
|
||||||
skatīt problēmu novēršanas ceļvedi).</string>
|
skatīt problēmu novēršanas ceļvedi).</string>
|
||||||
<string id="SettingsWebhookId">(Tikai lasīšanai) Webhook ID, ko ierīce izveidoja fona pakalpojumu
|
<string id="SettingsWebhookId">(Tikai lasīšanai) Webhook ID, ko ierīce izveidoja fona pakalpojumu
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
<!--
|
<!--
|
||||||
Generated by Google Translate and gemini-2.5-flash from English to Lithuanian
|
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>
|
<strings>
|
||||||
@@ -36,6 +36,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">Nėra API rakto programos nustatymuose.</string>
|
<string id="NoAPIKey" scope="glance">Nėra API rakto programos nustatymuose.</string>
|
||||||
<string id="NoApiUrl" scope="glance">Nėra API URL programos nustatymuose.</string>
|
<string id="NoApiUrl" scope="glance">Nėra API URL programos nustatymuose.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">Nėra konfigūracijos URL programos nustatymuose.</string>
|
<string id="NoConfigUrl" scope="glance">Nėra konfigūracijos URL programos nustatymuose.</string>
|
||||||
|
<string id="NoHTTPS">Jokio atsakymo, naudokite saugų HTTPS ryšį.</string>
|
||||||
<string id="NoInternet">Nėra interneto ryšio.</string>
|
<string id="NoInternet">Nėra interneto ryšio.</string>
|
||||||
<string id="NoJson">HTTP užklausa negrąžino JSON.</string>
|
<string id="NoJson">HTTP užklausa negrąžino JSON.</string>
|
||||||
<string id="NoMenu">Meniu apibrėžimo klaida, patikrinkite instrukcijas.</string>
|
<string id="NoMenu">Meniu apibrėžimo klaida, patikrinkite instrukcijas.</string>
|
||||||
@@ -82,8 +83,6 @@
|
|||||||
<string id="SettingsTextAlign">Meniu lygiavimas: kairė (išjungta) arba dešinė (įjungta).</string>
|
<string id="SettingsTextAlign">Meniu lygiavimas: kairė (išjungta) arba dešinė (įjungta).</string>
|
||||||
<string id="SettingsLeftToRight">Iš kairės į dešinę</string>
|
<string id="SettingsLeftToRight">Iš kairės į dešinę</string>
|
||||||
<string id="SettingsRightToLeft">Iš dešinės į kairę</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į,
|
<string id="SettingsEnableBatteryLevel">Įgalinti fono paslaugą siųsti įrenginio baterijos lygį,
|
||||||
vietą ir (jei palaikoma) veiklos duomenis į Home Assistant.</string>
|
vietą ir (jei palaikoma) veiklos duomenis į Home Assistant.</string>
|
||||||
<string id="SettingsBatteryLevelRefreshRate">Atnaujinimo dažnis (minutėmis), kuriuo fono paslauga
|
<string id="SettingsBatteryLevelRefreshRate">Atnaujinimo dažnis (minutėmis), kuriuo fono paslauga
|
||||||
@@ -91,8 +90,10 @@
|
|||||||
<string id="SettingsUserHttpHeader">Vartotojo pateikta HTTP antraštė</string>
|
<string id="SettingsUserHttpHeader">Vartotojo pateikta HTTP antraštė</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">Kai kuriems Home Assistant diegimams reikia
|
<string id="SettingsUserHttpHeaderDescription">Kai kuriems Home Assistant diegimams reikia
|
||||||
nurodyti pasirinktinę HTTP antraštę, kad jie veiktų.</string>
|
nurodyti pasirinktinę HTTP antraštę, kad jie veiktų.</string>
|
||||||
<string id="SettingsUserHttpHeaderName">Vartotojo pateikta HTTP antraštė: Pavadinimas</string>
|
<string id="SettingsUserHttpHeader1Name">Vartotojo pateikta HTTP antraštė 1: Pavadinimas</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">Vartotojo pateikta HTTP antraštė: Reikšmė</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,
|
<string id="SettingsClearWebhookId">Prisijungti iš naujo prie Home Assistant (išvalyti Webhook ID,
|
||||||
žr. Trikčių šalinimo vadovą).</string>
|
žr. Trikčių šalinimo vadovą).</string>
|
||||||
<string id="SettingsWebhookId">(Tik skaitymui) Webhook ID, kurį įrenginys sukūrė fono paslaugų
|
<string id="SettingsWebhookId">(Tik skaitymui) Webhook ID, kurį įrenginys sukūrė fono paslaugų
|
||||||
|
|||||||
@@ -37,6 +37,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">Ingen API-nøkkel i applikasjonsinnstillingene.</string>
|
<string id="NoAPIKey" scope="glance">Ingen API-nøkkel i applikasjonsinnstillingene.</string>
|
||||||
<string id="NoApiUrl" scope="glance">Ingen API-URL i applikasjonsinnstillingene.</string>
|
<string id="NoApiUrl" scope="glance">Ingen API-URL i applikasjonsinnstillingene.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">Ingen konfigurasjons-URL i applikasjonsinnstillingene.</string>
|
<string id="NoConfigUrl" scope="glance">Ingen konfigurasjons-URL i applikasjonsinnstillingene.</string>
|
||||||
|
<string id="NoHTTPS">Ingen svar, bruk sikker HTTPS-tilkobling.</string>
|
||||||
<string id="NoInternet">Ingen internettforbindelse.</string>
|
<string id="NoInternet">Ingen internettforbindelse.</string>
|
||||||
<string id="NoJson">Ingen JSON returnert fra HTTP-forespørsel.</string>
|
<string id="NoJson">Ingen JSON returnert fra HTTP-forespørsel.</string>
|
||||||
<string id="NoMenu">Menydefinisjonsfeil, sjekk instruksjonene.</string>
|
<string id="NoMenu">Menydefinisjonsfeil, sjekk instruksjonene.</string>
|
||||||
@@ -84,8 +85,6 @@
|
|||||||
<string id="SettingsTextAlign">Venstre (av) eller høyre (på) menyjustering.</string>
|
<string id="SettingsTextAlign">Venstre (av) eller høyre (på) menyjustering.</string>
|
||||||
<string id="SettingsLeftToRight">Fra venstre til høyre</string>
|
<string id="SettingsLeftToRight">Fra venstre til høyre</string>
|
||||||
<string id="SettingsRightToLeft">Høyre til venstre</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
|
<string id="SettingsEnableBatteryLevel">Aktiver bakgrunnstjenesten til å sende enhetens
|
||||||
batterinivå, posisjon og (hvis støttet) aktivitetsdata til Home Assistant.</string>
|
batterinivå, posisjon og (hvis støttet) aktivitetsdata til Home Assistant.</string>
|
||||||
<string id="SettingsBatteryLevelRefreshRate">Oppdateringsfrekvensen (i minutter) som
|
<string id="SettingsBatteryLevelRefreshRate">Oppdateringsfrekvensen (i minutter) som
|
||||||
@@ -93,8 +92,10 @@
|
|||||||
<string id="SettingsUserHttpHeader">Brukerdefinert HTTP-header</string>
|
<string id="SettingsUserHttpHeader">Brukerdefinert HTTP-header</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">Noen Home Assistant-installasjoner krever
|
<string id="SettingsUserHttpHeaderDescription">Noen Home Assistant-installasjoner krever
|
||||||
spesifikasjon av en tilpasset HTTP-header for å fungere.</string>
|
spesifikasjon av en tilpasset HTTP-header for å fungere.</string>
|
||||||
<string id="SettingsUserHttpHeaderName">Brukerdefinert HTTP-header: Navn</string>
|
<string id="SettingsUserHttpHeader1Name">Brukerdefinert HTTP-header 1: Navn</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">Brukerdefinert HTTP-header: Verdi</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
|
<string id="SettingsClearWebhookId">Koble til Home Assistant på nytt (tøm Webhook-ID, se
|
||||||
feilsøkingsveiledningen).</string>
|
feilsøkingsveiledningen).</string>
|
||||||
<string id="SettingsWebhookId">(Bare les) Webhook-ID-en som er opprettet av enheten for
|
<string id="SettingsWebhookId">(Bare les) Webhook-ID-en som er opprettet av enheten for
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
<!--
|
<!--
|
||||||
Generated by Google Translate and gemini-2.5-flash from English to Polish
|
Generated by Google Translate and gemini-2.5-flash from English to Polish
|
||||||
Wygenerowano przez Google Translate i gemini-2.5-flash z angielskiego na polski
|
Wygenerowano przez Google Translate i gemini-2.5-flash z języka angielskiego na polski
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<strings>
|
<strings>
|
||||||
@@ -38,6 +38,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">Brak klucza API w ustawieniach aplikacji.</string>
|
<string id="NoAPIKey" scope="glance">Brak klucza API w ustawieniach aplikacji.</string>
|
||||||
<string id="NoApiUrl" scope="glance">Brak adresu URL API w ustawieniach aplikacji.</string>
|
<string id="NoApiUrl" scope="glance">Brak adresu URL API w ustawieniach aplikacji.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">Brak adresu URL konfiguracji w ustawieniach aplikacji.</string>
|
<string id="NoConfigUrl" scope="glance">Brak adresu URL konfiguracji w ustawieniach aplikacji.</string>
|
||||||
|
<string id="NoHTTPS">Brak odpowiedzi, użyj bezpiecznego połączenia HTTPS.</string>
|
||||||
<string id="NoInternet">Brak połączenia internetowego.</string>
|
<string id="NoInternet">Brak połączenia internetowego.</string>
|
||||||
<string id="NoJson">Żądanie HTTP nie zwróciło danych JSON.</string>
|
<string id="NoJson">Żądanie HTTP nie zwróciło danych JSON.</string>
|
||||||
<string id="NoMenu">Błąd definicji menu, sprawdź instrukcje.</string>
|
<string id="NoMenu">Błąd definicji menu, sprawdź instrukcje.</string>
|
||||||
@@ -87,8 +88,6 @@
|
|||||||
<string id="SettingsTextAlign">Wyrównanie menu: lewe (wył.) lub prawe (wł.).</string>
|
<string id="SettingsTextAlign">Wyrównanie menu: lewe (wył.) lub prawe (wł.).</string>
|
||||||
<string id="SettingsLeftToRight">Od lewej do prawej</string>
|
<string id="SettingsLeftToRight">Od lewej do prawej</string>
|
||||||
<string id="SettingsRightToLeft">Od prawej do lewej</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,
|
<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>
|
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
|
<string id="SettingsBatteryLevelRefreshRate">Częstotliwość odświeżania (w minutach), z jaką usługa
|
||||||
@@ -96,8 +95,10 @@
|
|||||||
<string id="SettingsUserHttpHeader">Dostarczony przez użytkownika nagłówek HTTP</string>
|
<string id="SettingsUserHttpHeader">Dostarczony przez użytkownika nagłówek HTTP</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">Niektóre instalacje Home Assistant wymagają
|
<string id="SettingsUserHttpHeaderDescription">Niektóre instalacje Home Assistant wymagają
|
||||||
określenia niestandardowego nagłówka HTTP w celu prawidłowego działania.</string>
|
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="SettingsUserHttpHeader1Name">Dostarczony przez użytkownika nagłówek HTTP 1: Nazwa</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">Dostarczony przez użytkownika nagłówek HTTP: Wartość</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
|
<string id="SettingsClearWebhookId">Połącz ponownie z Home Assistant (wyczyść ID webhooka, patrz
|
||||||
przewodnik rozwiązywania problemów).</string>
|
przewodnik rozwiązywania problemów).</string>
|
||||||
<string id="SettingsWebhookId">(Tylko do odczytu) Identyfikator webhooka utworzony przez
|
<string id="SettingsWebhookId">(Tylko do odczytu) Identyfikator webhooka utworzony przez
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
<!--
|
<!--
|
||||||
Generated by Google Translate and gemini-2.5-flash from English to Portuguese
|
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>
|
<strings>
|
||||||
@@ -39,6 +39,7 @@
|
|||||||
<string id="NoApiUrl" scope="glance">Nenhum URL da API nas configurações do aplicativo.</string>
|
<string id="NoApiUrl" scope="glance">Nenhum URL da API nas configurações do aplicativo.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">Nenhum URL de configuração nas configurações do
|
<string id="NoConfigUrl" scope="glance">Nenhum URL de configuração nas configurações do
|
||||||
aplicativo.</string>
|
aplicativo.</string>
|
||||||
|
<string id="NoHTTPS">Sem resposta, use conexão HTTPS segura.</string>
|
||||||
<string id="NoInternet">Sem conexão com a Internet.</string>
|
<string id="NoInternet">Sem conexão com a Internet.</string>
|
||||||
<string id="NoJson">Nenhum JSON retornado da solicitação HTTP.</string>
|
<string id="NoJson">Nenhum JSON retornado da solicitação HTTP.</string>
|
||||||
<string id="NoMenu">Erro de definição do menu, verifique as instruções.</string>
|
<string id="NoMenu">Erro de definição do menu, verifique as instruções.</string>
|
||||||
@@ -86,8 +87,6 @@
|
|||||||
<string id="SettingsTextAlign">Alinhamento do menu: Esquerda (desativado) ou Direita (ativado).</string>
|
<string id="SettingsTextAlign">Alinhamento do menu: Esquerda (desativado) ou Direita (ativado).</string>
|
||||||
<string id="SettingsLeftToRight">Da esquerda para a direita</string>
|
<string id="SettingsLeftToRight">Da esquerda para a direita</string>
|
||||||
<string id="SettingsRightToLeft">Direita para a esquerda</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
|
<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>
|
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
|
<string id="SettingsBatteryLevelRefreshRate">A taxa de atualização (em minutos) na qual o serviço
|
||||||
@@ -95,8 +94,10 @@
|
|||||||
<string id="SettingsUserHttpHeader">Cabeçalho HTTP fornecido pelo usuário</string>
|
<string id="SettingsUserHttpHeader">Cabeçalho HTTP fornecido pelo usuário</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">Algumas instalações do Home Assistant exigem a
|
<string id="SettingsUserHttpHeaderDescription">Algumas instalações do Home Assistant exigem a
|
||||||
especificação de um cabeçalho HTTP personalizado para funcionar.</string>
|
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="SettingsUserHttpHeader1Name">Cabeçalho HTTP fornecido pelo usuário 1: Nome</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">Cabeçalho HTTP fornecido pelo usuário: Valor</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
|
<string id="SettingsClearWebhookId">Reconectar ao Home Assistant (limpar ID do Webhook, consulte o
|
||||||
Guia de Solução de Problemas).</string>
|
Guia de Solução de Problemas).</string>
|
||||||
<string id="SettingsWebhookId">(Somente leitura) O ID do Webhook criado pelo dispositivo para
|
<string id="SettingsWebhookId">(Somente leitura) O ID do Webhook criado pelo dispositivo para
|
||||||
|
|||||||
@@ -37,6 +37,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">Nicio cheie API în setările aplicației.</string>
|
<string id="NoAPIKey" scope="glance">Nicio cheie API în setările aplicației.</string>
|
||||||
<string id="NoApiUrl" scope="glance">Niciun URL API în setările aplicației.</string>
|
<string id="NoApiUrl" scope="glance">Niciun URL API în setările aplicației.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">Niciun URL de configurare în setările aplicației.</string>
|
<string id="NoConfigUrl" scope="glance">Niciun URL de configurare în setările aplicației.</string>
|
||||||
|
<string id="NoHTTPS">Niciun răspuns, utilizați o conexiune HTTPS securizată.</string>
|
||||||
<string id="NoInternet">Nicio conexiune la internet.</string>
|
<string id="NoInternet">Nicio conexiune la internet.</string>
|
||||||
<string id="NoJson">Niciun JSON nu a fost returnat de la cererea HTTP.</string>
|
<string id="NoJson">Niciun JSON nu a fost returnat de la cererea HTTP.</string>
|
||||||
<string id="NoMenu">Eroare de definire a meniului, verificați instrucțiunile.</string>
|
<string id="NoMenu">Eroare de definire a meniului, verificați instrucțiunile.</string>
|
||||||
@@ -84,8 +85,6 @@
|
|||||||
<string id="SettingsTextAlign">Alinierea meniului: Stânga (dezactivat) sau Dreapta (activat).</string>
|
<string id="SettingsTextAlign">Alinierea meniului: Stânga (dezactivat) sau Dreapta (activat).</string>
|
||||||
<string id="SettingsLeftToRight">De la stânga la dreapta</string>
|
<string id="SettingsLeftToRight">De la stânga la dreapta</string>
|
||||||
<string id="SettingsRightToLeft">De la dreapta la stânga</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
|
<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
|
bateriei dispozitivului, locația și (dacă este acceptat) datele de activitate către Home
|
||||||
Assistant.</string>
|
Assistant.</string>
|
||||||
@@ -94,8 +93,10 @@
|
|||||||
<string id="SettingsUserHttpHeader">Antetul HTTP furnizat de utilizator</string>
|
<string id="SettingsUserHttpHeader">Antetul HTTP furnizat de utilizator</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">Unele instalații Home Assistant necesită
|
<string id="SettingsUserHttpHeaderDescription">Unele instalații Home Assistant necesită
|
||||||
specificarea unui antet HTTP personalizat pentru a funcționa.</string>
|
specificarea unui antet HTTP personalizat pentru a funcționa.</string>
|
||||||
<string id="SettingsUserHttpHeaderName">Antet HTTP furnizat de utilizator: Nume</string>
|
<string id="SettingsUserHttpHeader1Name">Antet HTTP furnizat de utilizator 1: Nume</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">Antet HTTP furnizat de utilizator: Valoare</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,
|
<string id="SettingsClearWebhookId">Reconectați-vă la Home Assistant (ștergeți ID-ul Webhook,
|
||||||
consultați ghidul de depanare).</string>
|
consultați ghidul de depanare).</string>
|
||||||
<string id="SettingsWebhookId">(Doar citire) ID-ul Webhook creat de dispozitiv pentru actualizări
|
<string id="SettingsWebhookId">(Doar citire) ID-ul Webhook creat de dispozitiv pentru actualizări
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
<!--
|
<!--
|
||||||
Generated by Google Translate and gemini-2.5-flash from English to Slovak
|
Generated by Google Translate and gemini-2.5-flash from English to Slovak
|
||||||
Vygenerované službou Google Translate a gemini-2.5-flash z angličtiny do slovenčiny
|
Vygenerované pomocou Google Translate a gemini-2.5-flash z angličtiny do slovenčiny
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<strings>
|
<strings>
|
||||||
@@ -36,6 +36,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">V nastaveniach aplikácie chýba kľúč API</string>
|
<string id="NoAPIKey" scope="glance">V nastaveniach aplikácie chýba kľúč API</string>
|
||||||
<string id="NoApiUrl" scope="glance">V nastaveniach aplikácie chýba adresa URL rozhrania API</string>
|
<string id="NoApiUrl" scope="glance">V nastaveniach aplikácie chýba adresa URL rozhrania API</string>
|
||||||
<string id="NoConfigUrl" scope="glance">V nastaveniach aplikácie chýba konfiguračná adresa URL</string>
|
<string id="NoConfigUrl" scope="glance">V nastaveniach aplikácie chýba konfiguračná adresa URL</string>
|
||||||
|
<string id="NoHTTPS">Žiadna odpoveď, použite zabezpečené pripojenie HTTPS.</string>
|
||||||
<string id="NoInternet">Žiadne pripojenie na internet.</string>
|
<string id="NoInternet">Žiadne pripojenie na internet.</string>
|
||||||
<string id="NoJson">Z požiadavky HTTP sa nevrátil žiadny JSON.</string>
|
<string id="NoJson">Z požiadavky HTTP sa nevrátil žiadny JSON.</string>
|
||||||
<string id="NoMenu">Chyba definície ponuky, skontrolujte pokyny.</string>
|
<string id="NoMenu">Chyba definície ponuky, skontrolujte pokyny.</string>
|
||||||
@@ -82,16 +83,16 @@
|
|||||||
<string id="SettingsTextAlign">Zarovnanie menu vľavo (vypnuté) alebo vpravo (zapnuté).</string>
|
<string id="SettingsTextAlign">Zarovnanie menu vľavo (vypnuté) alebo vpravo (zapnuté).</string>
|
||||||
<string id="SettingsLeftToRight">Zľava doprava</string>
|
<string id="SettingsLeftToRight">Zľava doprava</string>
|
||||||
<string id="SettingsRightToLeft">Sprava doľava</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="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
|
<string id="SettingsBatteryLevelRefreshRate">Frekvencia obnovenia (v minútach), pri ktorej by
|
||||||
služba na pozadí mala opakovať odosielanie údajov.</string>
|
služba na pozadí mala opakovať odosielanie údajov.</string>
|
||||||
<string id="SettingsUserHttpHeader">Hlavička HTTP dodaná používateľom</string>
|
<string id="SettingsUserHttpHeader">Hlavička HTTP dodaná používateľom</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">Niektoré inštalácie Home Assistant vyžadujú
|
<string id="SettingsUserHttpHeaderDescription">Niektoré inštalácie Home Assistant vyžadujú
|
||||||
špecifikáciu vlastnej hlavičky HTTP pre správne fungovanie.</string>
|
š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="SettingsUserHttpHeader1Name">Používateľom dodaná HTTP hlavička 1: Názov</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">Používateľom dodaná HTTP hlavička: Hodnota</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
|
<string id="SettingsClearWebhookId">Znova sa pripojiť k Home Assistant (vymazať ID Webhooku, pozri
|
||||||
Sprievodcu riešením problémov).</string>
|
Sprievodcu riešením problémov).</string>
|
||||||
<string id="SettingsWebhookId">(Iba na čítanie) ID Webhooku vytvorené zariadením pre aktualizácie
|
<string id="SettingsWebhookId">(Iba na čítanie) ID Webhooku vytvorené zariadením pre aktualizácie
|
||||||
|
|||||||
@@ -36,6 +36,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">V nastavitvah aplikacije ni ključa API -ja.</string>
|
<string id="NoAPIKey" scope="glance">V nastavitvah aplikacije ni ključa API -ja.</string>
|
||||||
<string id="NoApiUrl" scope="glance">V nastavitvah aplikacije ni URL API -ja.</string>
|
<string id="NoApiUrl" scope="glance">V nastavitvah aplikacije ni URL API -ja.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">V nastavitvah aplikacije ni URL konfiguracije.</string>
|
<string id="NoConfigUrl" scope="glance">V nastavitvah aplikacije ni URL konfiguracije.</string>
|
||||||
|
<string id="NoHTTPS">Brez odgovora, uporabite varno povezavo HTTPS.</string>
|
||||||
<string id="NoInternet">Brez internetne povezave.</string>
|
<string id="NoInternet">Brez internetne povezave.</string>
|
||||||
<string id="NoJson">Zahteva HTTP ni vrnila JSON-a.</string>
|
<string id="NoJson">Zahteva HTTP ni vrnila JSON-a.</string>
|
||||||
<string id="NoMenu">Napaka pri definiciji menija, preverite navodila.</string>
|
<string id="NoMenu">Napaka pri definiciji menija, preverite navodila.</string>
|
||||||
@@ -81,8 +82,6 @@
|
|||||||
<string id="SettingsTextAlign">Leva (izklopljeno) ali desna (vklopljeno) poravnava menija.</string>
|
<string id="SettingsTextAlign">Leva (izklopljeno) ali desna (vklopljeno) poravnava menija.</string>
|
||||||
<string id="SettingsLeftToRight">Levo proti desni</string>
|
<string id="SettingsLeftToRight">Levo proti desni</string>
|
||||||
<string id="SettingsRightToLeft">Desno na levo</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
|
<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>
|
naprave, lokacije in (če so podprti) podatkov o dejavnosti v Home Assistant.</string>
|
||||||
<string id="SettingsBatteryLevelRefreshRate">Frekvenca osveževanja (v minutah), pri kateri naj
|
<string id="SettingsBatteryLevelRefreshRate">Frekvenca osveževanja (v minutah), pri kateri naj
|
||||||
@@ -90,8 +89,10 @@
|
|||||||
<string id="SettingsUserHttpHeader">Uporabniško določena glava HTTP</string>
|
<string id="SettingsUserHttpHeader">Uporabniško določena glava HTTP</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">Nekatere namestitve Home Assistant zahtevajo
|
<string id="SettingsUserHttpHeaderDescription">Nekatere namestitve Home Assistant zahtevajo
|
||||||
določitev glave HTTP po meri za delovanje.</string>
|
določitev glave HTTP po meri za delovanje.</string>
|
||||||
<string id="SettingsUserHttpHeaderName">Uporabniško določena glava HTTP: Ime</string>
|
<string id="SettingsUserHttpHeader1Name">Uporabniško določena glava HTTP 1: Ime</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">Uporabniško določena glava HTTP: Vrednost</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
|
<string id="SettingsClearWebhookId">Ponovna povezava z Home Assistant (počisti ID Webhooka, glejte
|
||||||
Vodnik za odpravljanje težav).</string>
|
Vodnik za odpravljanje težav).</string>
|
||||||
<string id="SettingsWebhookId">(Samo za branje) ID Webhooka, ki ga je ustvarila naprava za
|
<string id="SettingsWebhookId">(Samo za branje) ID Webhooka, ki ga je ustvarila naprava za
|
||||||
|
|||||||
@@ -39,6 +39,7 @@
|
|||||||
<string id="NoApiUrl" scope="glance">No hay URL de API en la configuración de la aplicación.</string>
|
<string id="NoApiUrl" scope="glance">No hay URL de API en la configuración de la aplicación.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">No hay URL de configuración en la configuración de la
|
<string id="NoConfigUrl" scope="glance">No hay URL de configuración en la configuración de la
|
||||||
aplicación.</string>
|
aplicación.</string>
|
||||||
|
<string id="NoHTTPS">Sin respuesta, utilice una conexión HTTPS segura.</string>
|
||||||
<string id="NoInternet">Sin conexión a Internet.</string>
|
<string id="NoInternet">Sin conexión a Internet.</string>
|
||||||
<string id="NoJson">No se recibió JSON de la solicitud HTTP.</string>
|
<string id="NoJson">No se recibió JSON de la solicitud HTTP.</string>
|
||||||
<string id="NoMenu">Error en la definición del menú, verifique las instrucciones.</string>
|
<string id="NoMenu">Error en la definición del menú, verifique las instrucciones.</string>
|
||||||
@@ -89,8 +90,6 @@
|
|||||||
<string id="SettingsTextAlign">Alineación del menú: izquierda (desactivado) o derecha (activado).</string>
|
<string id="SettingsTextAlign">Alineación del menú: izquierda (desactivado) o derecha (activado).</string>
|
||||||
<string id="SettingsLeftToRight">De izquierda a derecha</string>
|
<string id="SettingsLeftToRight">De izquierda a derecha</string>
|
||||||
<string id="SettingsRightToLeft">De derecha a izquierda</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
|
<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
|
nivel de batería del dispositivo, la ubicación y (si es compatible) los datos de actividad a
|
||||||
Home Assistant.</string>
|
Home Assistant.</string>
|
||||||
@@ -99,8 +98,10 @@
|
|||||||
<string id="SettingsUserHttpHeader">Encabezado HTTP suministrado por el usuario</string>
|
<string id="SettingsUserHttpHeader">Encabezado HTTP suministrado por el usuario</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">Algunas instalaciones de Home Assistant requieren
|
<string id="SettingsUserHttpHeaderDescription">Algunas instalaciones de Home Assistant requieren
|
||||||
la especificación de un encabezado HTTP personalizado para funcionar.</string>
|
la especificación de un encabezado HTTP personalizado para funcionar.</string>
|
||||||
<string id="SettingsUserHttpHeaderName">Encabezado HTTP suministrado por el usuario: Nombre</string>
|
<string id="SettingsUserHttpHeader1Name">Encabezado HTTP suministrado por el usuario 1: Nombre</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">Encabezado HTTP suministrado por el usuario: Valor</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,
|
<string id="SettingsClearWebhookId">Volver a conectar a Home Assistant (borrar ID de Webhook,
|
||||||
consulte la guía de solución de problemas).</string>
|
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
|
<string id="SettingsWebhookId">(Solo lectura) El ID de Webhook creado por el dispositivo para las
|
||||||
|
|||||||
@@ -37,6 +37,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">Ingen API-nyckel i applikationsinställningarna.</string>
|
<string id="NoAPIKey" scope="glance">Ingen API-nyckel i applikationsinställningarna.</string>
|
||||||
<string id="NoApiUrl" scope="glance">Ingen API-URL i applikationsinställningarna.</string>
|
<string id="NoApiUrl" scope="glance">Ingen API-URL i applikationsinställningarna.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">Ingen konfigurations-URL i applikationsinställningarna.</string>
|
<string id="NoConfigUrl" scope="glance">Ingen konfigurations-URL i applikationsinställningarna.</string>
|
||||||
|
<string id="NoHTTPS">Inget svar, använd säker HTTPS-anslutning.</string>
|
||||||
<string id="NoInternet">Ingen internetanslutning.</string>
|
<string id="NoInternet">Ingen internetanslutning.</string>
|
||||||
<string id="NoJson">Ingen JSON returnerades från HTTP-begäran.</string>
|
<string id="NoJson">Ingen JSON returnerades från HTTP-begäran.</string>
|
||||||
<string id="NoMenu">Menydefinitionfel, kontrollera instruktionerna.</string>
|
<string id="NoMenu">Menydefinitionfel, kontrollera instruktionerna.</string>
|
||||||
@@ -83,8 +84,6 @@
|
|||||||
<string id="SettingsTextAlign">Vänster (av) eller höger (på) menyinriktning.</string>
|
<string id="SettingsTextAlign">Vänster (av) eller höger (på) menyinriktning.</string>
|
||||||
<string id="SettingsLeftToRight">Vänster till höger</string>
|
<string id="SettingsLeftToRight">Vänster till höger</string>
|
||||||
<string id="SettingsRightToLeft">Höger till vänster</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
|
<string id="SettingsEnableBatteryLevel">Aktivera bakgrundstjänsten att skicka enhetens
|
||||||
batterinivå, plats och (om det stöds) aktivitetsdata till Home Assistant.</string>
|
batterinivå, plats och (om det stöds) aktivitetsdata till Home Assistant.</string>
|
||||||
<string id="SettingsBatteryLevelRefreshRate">Uppdateringsfrekvensen (i minuter) med vilken
|
<string id="SettingsBatteryLevelRefreshRate">Uppdateringsfrekvensen (i minuter) med vilken
|
||||||
@@ -92,8 +91,10 @@
|
|||||||
<string id="SettingsUserHttpHeader">Användardefinierat HTTP-huvud</string>
|
<string id="SettingsUserHttpHeader">Användardefinierat HTTP-huvud</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">Vissa Home Assistant-installationer kräver att ett
|
<string id="SettingsUserHttpHeaderDescription">Vissa Home Assistant-installationer kräver att ett
|
||||||
anpassat HTTP-huvud anges för att fungera.</string>
|
anpassat HTTP-huvud anges för att fungera.</string>
|
||||||
<string id="SettingsUserHttpHeaderName">Användardefinierat HTTP-huvud: Namn</string>
|
<string id="SettingsUserHttpHeader1Name">Användardefinierat HTTP-huvud 1: Namn</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">Användardefinierat HTTP-huvud: Värde</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
|
<string id="SettingsClearWebhookId">Återanslut till Home Assistant (rensa Webhook-ID, se
|
||||||
Felsökningsguide).</string>
|
Felsökningsguide).</string>
|
||||||
<string id="SettingsWebhookId">(Skrivskyddad) Webhook-ID som skapats av enheten för
|
<string id="SettingsWebhookId">(Skrivskyddad) Webhook-ID som skapats av enheten för
|
||||||
|
|||||||
@@ -36,6 +36,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">ไม่มีคีย์ API ในการตั้งค่าแอปพลิเคชัน</string>
|
<string id="NoAPIKey" scope="glance">ไม่มีคีย์ API ในการตั้งค่าแอปพลิเคชัน</string>
|
||||||
<string id="NoApiUrl" scope="glance">ไม่มี URL API ในการตั้งค่าแอปพลิเคชัน</string>
|
<string id="NoApiUrl" scope="glance">ไม่มี URL API ในการตั้งค่าแอปพลิเคชัน</string>
|
||||||
<string id="NoConfigUrl" scope="glance">ไม่มี URL การกำหนดค่าในการตั้งค่าแอปพลิเคชัน</string>
|
<string id="NoConfigUrl" scope="glance">ไม่มี URL การกำหนดค่าในการตั้งค่าแอปพลิเคชัน</string>
|
||||||
|
<string id="NoHTTPS">ไม่มีการตอบกลับ ใช้การเชื่อมต่อ HTTPS ที่ปลอดภัย</string>
|
||||||
<string id="NoInternet">ไม่มีการเชื่อมต่ออินเทอร์เน็ต</string>
|
<string id="NoInternet">ไม่มีการเชื่อมต่ออินเทอร์เน็ต</string>
|
||||||
<string id="NoJson">ไม่มี JSON ส่งคืนจากคำขอ HTTP</string>
|
<string id="NoJson">ไม่มี JSON ส่งคืนจากคำขอ HTTP</string>
|
||||||
<string id="NoMenu">ข้อผิดพลาดในการกำหนดเมนู โปรดตรวจสอบคำแนะนำ</string>
|
<string id="NoMenu">ข้อผิดพลาดในการกำหนดเมนู โปรดตรวจสอบคำแนะนำ</string>
|
||||||
@@ -81,8 +82,6 @@
|
|||||||
<string id="SettingsTextAlign">การจัดตำแหน่งเมนูซ้าย (ปิด) หรือขวา (เปิด)</string>
|
<string id="SettingsTextAlign">การจัดตำแหน่งเมนูซ้าย (ปิด) หรือขวา (เปิด)</string>
|
||||||
<string id="SettingsLeftToRight">จากซ้ายไปขวา</string>
|
<string id="SettingsLeftToRight">จากซ้ายไปขวา</string>
|
||||||
<string id="SettingsRightToLeft">ขวาไปซ้าย</string>
|
<string id="SettingsRightToLeft">ขวาไปซ้าย</string>
|
||||||
<string id="SettingsWidgetStart">(วิดเจ็ตเท่านั้น)
|
|
||||||
เริ่มแอปพลิเคชันจากวิดเจ็ตโดยอัตโนมัติโดยไม่ต้องรอแตะ</string>
|
|
||||||
<string id="SettingsEnableBatteryLevel">เปิดใช้งานบริการพื้นหลังเพื่อส่งระดับแบตเตอรี่ของอุปกรณ์
|
<string id="SettingsEnableBatteryLevel">เปิดใช้งานบริการพื้นหลังเพื่อส่งระดับแบตเตอรี่ของอุปกรณ์
|
||||||
ตำแหน่ง และข้อมูลกิจกรรม (ถ้ารองรับ) ไปยัง Home Assistant</string>
|
ตำแหน่ง และข้อมูลกิจกรรม (ถ้ารองรับ) ไปยัง Home Assistant</string>
|
||||||
<string id="SettingsBatteryLevelRefreshRate">อัตราการรีเฟรช (นาที)
|
<string id="SettingsBatteryLevelRefreshRate">อัตราการรีเฟรช (นาที)
|
||||||
@@ -90,8 +89,10 @@
|
|||||||
<string id="SettingsUserHttpHeader">ส่วนหัว HTTP ที่ผู้ใช้จัดหา</string>
|
<string id="SettingsUserHttpHeader">ส่วนหัว HTTP ที่ผู้ใช้จัดหา</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">การติดตั้ง Home Assistant
|
<string id="SettingsUserHttpHeaderDescription">การติดตั้ง Home Assistant
|
||||||
บางรายการต้องการการระบุส่วนหัว HTTP ที่กำหนดเองเพื่อให้สามารถทำงานได้</string>
|
บางรายการต้องการการระบุส่วนหัว HTTP ที่กำหนดเองเพื่อให้สามารถทำงานได้</string>
|
||||||
<string id="SettingsUserHttpHeaderName">ส่วนหัว HTTP ที่ผู้ใช้ระบุ: ชื่อ</string>
|
<string id="SettingsUserHttpHeader1Name">ส่วนหัว HTTP ที่ผู้ใช้จัดหา 1: ชื่อ</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">ส่วนหัว HTTP ที่ผู้ใช้ระบุ: ค่า</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 id="SettingsClearWebhookId">เชื่อมต่อกับ Home Assistant (ล้าง Webhook ID
|
||||||
ดูคู่มือการแก้ไขปัญหา)</string>
|
ดูคู่มือการแก้ไขปัญหา)</string>
|
||||||
<string id="SettingsWebhookId">(อ่านเท่านั้น) Webhook ID
|
<string id="SettingsWebhookId">(อ่านเท่านั้น) Webhook ID
|
||||||
|
|||||||
@@ -36,6 +36,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">Uygulama ayarlarında API anahtarı yok.</string>
|
<string id="NoAPIKey" scope="glance">Uygulama ayarlarında API anahtarı yok.</string>
|
||||||
<string id="NoApiUrl" scope="glance">Uygulama ayarlarında API URL'si yok.</string>
|
<string id="NoApiUrl" scope="glance">Uygulama ayarlarında API URL'si yok.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">Uygulama ayarlarında yapılandırma URL'si yok.</string>
|
<string id="NoConfigUrl" scope="glance">Uygulama ayarlarında yapılandırma URL'si yok.</string>
|
||||||
|
<string id="NoHTTPS">Yanıt yok, güvenli HTTPS bağlantısı kullanın.</string>
|
||||||
<string id="NoInternet">İnternet bağlantısı yok.</string>
|
<string id="NoInternet">İnternet bağlantısı yok.</string>
|
||||||
<string id="NoJson">HTTP isteğinden JSON dönmedi.</string>
|
<string id="NoJson">HTTP isteğinden JSON dönmedi.</string>
|
||||||
<string id="NoMenu">Menü tanım hatası, talimatları kontrol edin.</string>
|
<string id="NoMenu">Menü tanım hatası, talimatları kontrol edin.</string>
|
||||||
@@ -83,8 +84,6 @@
|
|||||||
<string id="SettingsTextAlign">Sol (kapalı) veya sağ (açık) menü hizalaması.</string>
|
<string id="SettingsTextAlign">Sol (kapalı) veya sağ (açık) menü hizalaması.</string>
|
||||||
<string id="SettingsLeftToRight">Soldan sağa</string>
|
<string id="SettingsLeftToRight">Soldan sağa</string>
|
||||||
<string id="SettingsRightToLeft">Sağdan sola</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
|
<string id="SettingsEnableBatteryLevel">Arka plan hizmetinin cihaz pil seviyesini, konumunu ve
|
||||||
(destekleniyorsa) etkinlik verilerini Home Assistant'a göndermesini etkinleştirin.</string>
|
(destekleniyorsa) etkinlik verilerini Home Assistant'a göndermesini etkinleştirin.</string>
|
||||||
<string id="SettingsBatteryLevelRefreshRate">Arka plan hizmetinin veri göndermeyi tekrarlayacağı
|
<string id="SettingsBatteryLevelRefreshRate">Arka plan hizmetinin veri göndermeyi tekrarlayacağı
|
||||||
@@ -92,8 +91,10 @@
|
|||||||
<string id="SettingsUserHttpHeader">Kullanıcı tarafından sağlanan HTTP başlığı</string>
|
<string id="SettingsUserHttpHeader">Kullanıcı tarafından sağlanan HTTP başlığı</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">Bazı Home Assistant kurulumları, çalışabilmek için
|
<string id="SettingsUserHttpHeaderDescription">Bazı Home Assistant kurulumları, çalışabilmek için
|
||||||
özel bir HTTP başlığının belirtilmesini gerektirir.</string>
|
ö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="SettingsUserHttpHeader1Name">Kullanıcı tarafından sağlanan HTTP Başlığı 1: Ad</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">Kullanıcı tarafından sağlanan HTTP-Header: Değer</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
|
<string id="SettingsClearWebhookId">Home Assistant'a yeniden bağlanın (Webhook Kimliğini
|
||||||
temizleyin, bkz. Sorun Giderme Kılavuzu).</string>
|
temizleyin, bkz. Sorun Giderme Kılavuzu).</string>
|
||||||
<string id="SettingsWebhookId">(Yalnızca okuyun) Arka plan hizmeti güncellemeleri için cihaz
|
<string id="SettingsWebhookId">(Yalnızca okuyun) Arka plan hizmeti güncellemeleri için cihaz
|
||||||
|
|||||||
@@ -38,6 +38,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">Немає ключа API в налаштуваннях програми.</string>
|
<string id="NoAPIKey" scope="glance">Немає ключа API в налаштуваннях програми.</string>
|
||||||
<string id="NoApiUrl" scope="glance">Немає URL-адреси API в налаштуваннях програми.</string>
|
<string id="NoApiUrl" scope="glance">Немає URL-адреси API в налаштуваннях програми.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">Немає URL-адреси конфігурації в налаштуваннях програми.</string>
|
<string id="NoConfigUrl" scope="glance">Немає URL-адреси конфігурації в налаштуваннях програми.</string>
|
||||||
|
<string id="NoHTTPS">Немає відповіді, використовуйте безпечне HTTPS-з'єднання.</string>
|
||||||
<string id="NoInternet">Немає підключення до Інтернету.</string>
|
<string id="NoInternet">Немає підключення до Інтернету.</string>
|
||||||
<string id="NoJson">HTTP-запит не повернув JSON.</string>
|
<string id="NoJson">HTTP-запит не повернув JSON.</string>
|
||||||
<string id="NoMenu">Помилка визначення меню, перевірте інструкції.</string>
|
<string id="NoMenu">Помилка визначення меню, перевірте інструкції.</string>
|
||||||
@@ -85,8 +86,6 @@
|
|||||||
<string id="SettingsTextAlign">Зліва (вимкнено) або праворуч (увімкнено) вирівнювання меню.</string>
|
<string id="SettingsTextAlign">Зліва (вимкнено) або праворуч (увімкнено) вирівнювання меню.</string>
|
||||||
<string id="SettingsLeftToRight">Зліва направо</string>
|
<string id="SettingsLeftToRight">Зліва направо</string>
|
||||||
<string id="SettingsRightToLeft">Справа наліво</string>
|
<string id="SettingsRightToLeft">Справа наліво</string>
|
||||||
<string id="SettingsWidgetStart">(Тільки віджет) Автоматично запускати програму з віджета, не
|
|
||||||
чекаючи натискання.</string>
|
|
||||||
<string id="SettingsEnableBatteryLevel">Увімкнути фонову службу для надсилання рівня заряду
|
<string id="SettingsEnableBatteryLevel">Увімкнути фонову службу для надсилання рівня заряду
|
||||||
батареї пристрою, місцезнаходження та (якщо підтримується) даних активності до Home Assistant.</string>
|
батареї пристрою, місцезнаходження та (якщо підтримується) даних активності до Home Assistant.</string>
|
||||||
<string id="SettingsBatteryLevelRefreshRate">Частота оновлення (у хвилинах), з якою фонова служба
|
<string id="SettingsBatteryLevelRefreshRate">Частота оновлення (у хвилинах), з якою фонова служба
|
||||||
@@ -94,8 +93,10 @@
|
|||||||
<string id="SettingsUserHttpHeader">Наданий користувачем HTTP-заголовок</string>
|
<string id="SettingsUserHttpHeader">Наданий користувачем HTTP-заголовок</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">Деякі інсталяції Home Assistant вимагають
|
<string id="SettingsUserHttpHeaderDescription">Деякі інсталяції Home Assistant вимагають
|
||||||
зазначення спеціального HTTP-заголовка для функціонування.</string>
|
зазначення спеціального HTTP-заголовка для функціонування.</string>
|
||||||
<string id="SettingsUserHttpHeaderName">Наданий користувачем HTTP-заголовок: Ім'я</string>
|
<string id="SettingsUserHttpHeader1Name">Наданий користувачем HTTP-заголовок 1: Ім'я</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">Наданий користувачем HTTP-заголовок: Значення</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 id="SettingsClearWebhookId">Повторне підключення до Home Assistant (очистити ID вебхука,
|
||||||
див. Посібник з усунення несправностей).</string>
|
див. Посібник з усунення несправностей).</string>
|
||||||
<string id="SettingsWebhookId">(Тільки для читання) ID вебхука, створений пристроєм для оновлень
|
<string id="SettingsWebhookId">(Тільки для читання) ID вебхука, створений пристроєм для оновлень
|
||||||
|
|||||||
@@ -36,6 +36,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">Không có khóa API trong cài đặt ứng dụng.</string>
|
<string id="NoAPIKey" scope="glance">Không có khóa API trong cài đặt ứng dụng.</string>
|
||||||
<string id="NoApiUrl" scope="glance">Không có URL API trong cài đặt ứng dụng.</string>
|
<string id="NoApiUrl" scope="glance">Không có URL API trong cài đặt ứng dụng.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">Không có URL cấu hình trong cài đặt ứng dụng.</string>
|
<string id="NoConfigUrl" scope="glance">Không có URL cấu hình trong cài đặt ứng dụng.</string>
|
||||||
|
<string id="NoHTTPS">Không có phản hồi, sử dụng kết nối HTTPS an toàn.</string>
|
||||||
<string id="NoInternet">Không có kết nối internet.</string>
|
<string id="NoInternet">Không có kết nối internet.</string>
|
||||||
<string id="NoJson">Không có JSON được trả về từ yêu cầu HTTP.</string>
|
<string id="NoJson">Không có JSON được trả về từ yêu cầu HTTP.</string>
|
||||||
<string id="NoMenu">Lỗi định nghĩa menu, kiểm tra hướng dẫn.</string>
|
<string id="NoMenu">Lỗi định nghĩa menu, kiểm tra hướng dẫn.</string>
|
||||||
@@ -83,8 +84,6 @@
|
|||||||
<string id="SettingsTextAlign">Căn chỉnh menu: Trái (tắt) hoặc Phải (bật).</string>
|
<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="SettingsLeftToRight">Trái sang phải</string>
|
||||||
<string id="SettingsRightToLeft">Phải sang trá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à
|
<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>
|
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ẽ
|
<string id="SettingsBatteryLevelRefreshRate">Tốc độ làm mới (tính bằng phút) mà dịch vụ nền sẽ
|
||||||
@@ -92,8 +91,10 @@
|
|||||||
<string id="SettingsUserHttpHeader">Tiêu đề HTTP do người dùng cung cấp</string>
|
<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
|
<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>
|
đề 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="SettingsUserHttpHeader1Name">Tiêu đề HTTP do người dùng cung cấp 1: Tên</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">Tiêu đề HTTP do người dùng cung cấp: Giá trị</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
|
<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>
|
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.
|
<string id="SettingsWebhookId">(Chỉ đọc) ID webhook được tạo bởi thiết bị để cập nhật dịch vụ nền.
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
<!--
|
<!--
|
||||||
Generated by Google Translate and gemini-2.5-flash from English to Chinese (Simplified)
|
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>
|
<strings>
|
||||||
@@ -36,6 +36,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">应用程序设置中没有 API 密钥。</string>
|
<string id="NoAPIKey" scope="glance">应用程序设置中没有 API 密钥。</string>
|
||||||
<string id="NoApiUrl" scope="glance">应用程序设置中没有 API URL。</string>
|
<string id="NoApiUrl" scope="glance">应用程序设置中没有 API URL。</string>
|
||||||
<string id="NoConfigUrl" scope="glance">应用程序设置中没有配置 URL。</string>
|
<string id="NoConfigUrl" scope="glance">应用程序设置中没有配置 URL。</string>
|
||||||
|
<string id="NoHTTPS">没有回应,请使用安全的 HTTPS 连接。</string>
|
||||||
<string id="NoInternet">没有互联网连接。</string>
|
<string id="NoInternet">没有互联网连接。</string>
|
||||||
<string id="NoJson">HTTP 请求未返回 JSON。</string>
|
<string id="NoJson">HTTP 请求未返回 JSON。</string>
|
||||||
<string id="NoMenu">菜单定义错误,请检查说明。</string>
|
<string id="NoMenu">菜单定义错误,请检查说明。</string>
|
||||||
@@ -76,13 +77,14 @@
|
|||||||
<string id="SettingsTextAlign">菜单对齐:左对齐(关闭)或右对齐(开启)。</string>
|
<string id="SettingsTextAlign">菜单对齐:左对齐(关闭)或右对齐(开启)。</string>
|
||||||
<string id="SettingsLeftToRight">从左到右</string>
|
<string id="SettingsLeftToRight">从左到右</string>
|
||||||
<string id="SettingsRightToLeft">从右到左</string>
|
<string id="SettingsRightToLeft">从右到左</string>
|
||||||
<string id="SettingsWidgetStart">(仅小部件)自动从小部件启动应用程序,而无需等待点击。</string>
|
|
||||||
<string id="SettingsEnableBatteryLevel">启用后台服务以将设备电池电量、位置以及(如果支持)活动数据发送到 Home Assistant。</string>
|
<string id="SettingsEnableBatteryLevel">启用后台服务以将设备电池电量、位置以及(如果支持)活动数据发送到 Home Assistant。</string>
|
||||||
<string id="SettingsBatteryLevelRefreshRate">后台服务应重复发送数据的刷新率(分钟)。</string>
|
<string id="SettingsBatteryLevelRefreshRate">后台服务应重复发送数据的刷新率(分钟)。</string>
|
||||||
<string id="SettingsUserHttpHeader">用户提供的 HTTP 标头</string>
|
<string id="SettingsUserHttpHeader">用户提供的 HTTP 标头</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">某些 Home Assistant 安装需要指定自定义 HTTP 标头才能正常运行。</string>
|
<string id="SettingsUserHttpHeaderDescription">某些 Home Assistant 安装需要指定自定义 HTTP 标头才能正常运行。</string>
|
||||||
<string id="SettingsUserHttpHeaderName">用户提供的 HTTP 标头:名称</string>
|
<string id="SettingsUserHttpHeader1Name">用户提供的 HTTP 标头 1:名称</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">用户提供的 HTTP 标头:值</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="SettingsClearWebhookId">重新连接到 Home Assistant(清除 Webhook ID,请参阅故障排除指南)。</string>
|
||||||
<string id="SettingsWebhookId">(只读)设备为后台服务更新创建的 Webhook ID。您可能需要此 ID 进行调试。</string>
|
<string id="SettingsWebhookId">(只读)设备为后台服务更新创建的 Webhook ID。您可能需要此 ID 进行调试。</string>
|
||||||
</strings>
|
</strings>
|
||||||
|
|||||||
@@ -36,6 +36,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">應用程式設定中沒有 API 密鑰。</string>
|
<string id="NoAPIKey" scope="glance">應用程式設定中沒有 API 密鑰。</string>
|
||||||
<string id="NoApiUrl" scope="glance">應用程式設定中沒有 API URL。</string>
|
<string id="NoApiUrl" scope="glance">應用程式設定中沒有 API URL。</string>
|
||||||
<string id="NoConfigUrl" scope="glance">應用程式設定中沒有配置 URL。</string>
|
<string id="NoConfigUrl" scope="glance">應用程式設定中沒有配置 URL。</string>
|
||||||
|
<string id="NoHTTPS">沒有回應,請使用安全的 HTTPS 連線。</string>
|
||||||
<string id="NoInternet">沒有互聯網連接。</string>
|
<string id="NoInternet">沒有互聯網連接。</string>
|
||||||
<string id="NoJson">HTTP 請求未返回 JSON。</string>
|
<string id="NoJson">HTTP 請求未返回 JSON。</string>
|
||||||
<string id="NoMenu">選單定義錯誤,請檢查說明。</string>
|
<string id="NoMenu">選單定義錯誤,請檢查說明。</string>
|
||||||
@@ -76,13 +77,14 @@
|
|||||||
<string id="SettingsTextAlign">選單對齊:靠左 (關閉) 或 靠右 (開啟)。</string>
|
<string id="SettingsTextAlign">選單對齊:靠左 (關閉) 或 靠右 (開啟)。</string>
|
||||||
<string id="SettingsLeftToRight">從左到右</string>
|
<string id="SettingsLeftToRight">從左到右</string>
|
||||||
<string id="SettingsRightToLeft">從右到左</string>
|
<string id="SettingsRightToLeft">從右到左</string>
|
||||||
<string id="SettingsWidgetStart">(僅限小工具)自動從小工具啟動應用程式,無需等待輕觸。</string>
|
|
||||||
<string id="SettingsEnableBatteryLevel">啟用背景服務以傳送裝置電池電量、位置以及 (如果支援) 活動資料至 Home Assistant。</string>
|
<string id="SettingsEnableBatteryLevel">啟用背景服務以傳送裝置電池電量、位置以及 (如果支援) 活動資料至 Home Assistant。</string>
|
||||||
<string id="SettingsBatteryLevelRefreshRate">背景服務應重複傳送資料的更新頻率(分鐘)。</string>
|
<string id="SettingsBatteryLevelRefreshRate">背景服務應重複傳送資料的更新頻率(分鐘)。</string>
|
||||||
<string id="SettingsUserHttpHeader">使用者提供的 HTTP 標頭</string>
|
<string id="SettingsUserHttpHeader">使用者提供的 HTTP 標頭</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">部分 Home Assistant 安裝需要指定自訂 HTTP 標頭才能運作。</string>
|
<string id="SettingsUserHttpHeaderDescription">部分 Home Assistant 安裝需要指定自訂 HTTP 標頭才能運作。</string>
|
||||||
<string id="SettingsUserHttpHeaderName">使用者提供的 HTTP 標頭:名稱</string>
|
<string id="SettingsUserHttpHeader1Name">使用者提供的 HTTP 標頭 1:名稱</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">使用者提供的 HTTP 標頭:值</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="SettingsClearWebhookId">重新連線至 Home Assistant (清除 Webhook ID,請參閱疑難排解指南)。</string>
|
||||||
<string id="SettingsWebhookId">(唯讀)裝置為背景服務更新建立的 Webhook ID。您可能需要此 ID 進行偵錯。</string>
|
<string id="SettingsWebhookId">(唯讀)裝置為背景服務更新建立的 Webhook ID。您可能需要此 ID 進行偵錯。</string>
|
||||||
</strings>
|
</strings>
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
<!--
|
<!--
|
||||||
Generated by Google Translate and gemini-2.5-flash from English to Standard (Bahasa) Malay
|
Generated by Google Translate and gemini-2.5-flash from English to Standard (Bahasa) Malay
|
||||||
Dijana oleh Google Translate dan gemini-2.5-flash dari Bahasa Inggeris ke Bahasa Melayu Standard (Bahasa).
|
Dijana oleh Google Translate dan gemini-2.5-flash daripada Bahasa Inggeris ke Bahasa Melayu Standard (Bahasa)
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<strings>
|
<strings>
|
||||||
@@ -36,6 +36,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">Tiada kunci API dalam tetapan aplikasi.</string>
|
<string id="NoAPIKey" scope="glance">Tiada kunci API dalam tetapan aplikasi.</string>
|
||||||
<string id="NoApiUrl" scope="glance">Tiada URL API dalam tetapan aplikasi.</string>
|
<string id="NoApiUrl" scope="glance">Tiada URL API dalam tetapan aplikasi.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">Tiada URL konfigurasi dalam tetapan aplikasi.</string>
|
<string id="NoConfigUrl" scope="glance">Tiada URL konfigurasi dalam tetapan aplikasi.</string>
|
||||||
|
<string id="NoHTTPS">Tiada respons, gunakan sambungan HTTPS selamat.</string>
|
||||||
<string id="NoInternet">Tiada sambungan internet.</string>
|
<string id="NoInternet">Tiada sambungan internet.</string>
|
||||||
<string id="NoJson">Tiada JSON dikembalikan daripada permintaan HTTP.</string>
|
<string id="NoJson">Tiada JSON dikembalikan daripada permintaan HTTP.</string>
|
||||||
<string id="NoMenu">Ralat definisi menu, semak arahan.</string>
|
<string id="NoMenu">Ralat definisi menu, semak arahan.</string>
|
||||||
@@ -76,13 +77,14 @@
|
|||||||
<string id="SettingsTextAlign">Penjajaran Menu Kiri (mati) atau Kanan (hidup).</string>
|
<string id="SettingsTextAlign">Penjajaran Menu Kiri (mati) atau Kanan (hidup).</string>
|
||||||
<string id="SettingsLeftToRight">Kiri ke kanan</string>
|
<string id="SettingsLeftToRight">Kiri ke kanan</string>
|
||||||
<string id="SettingsRightToLeft">Kanan ke kiri</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="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="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="SettingsUserHttpHeader">Pengepala HTTP dibekalkan pengguna</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">Sesetengah pemasangan Home Assistant memerlukan spesifikasi pengepala HTTP tersuai untuk berfungsi.</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="SettingsUserHttpHeader1Name">Pengepala HTTP dibekalkan pengguna 1: Nama</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">Pengepala HTTP dibekalkan pengguna: Nilai</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="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>
|
<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>
|
</strings>
|
||||||
|
|||||||
@@ -111,18 +111,36 @@
|
|||||||
<property id="battery_level_refresh_rate" type="number">15</property>
|
<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.
|
A user specified HTTP header name to be used in all HTTP requests.
|
||||||
This is useful for some Home Assistant installations that require a
|
This is useful for some Home Assistant installations that require a
|
||||||
custom HTTP header.
|
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.
|
A user specified HTTP header value to be used in all HTTP requests.
|
||||||
This is useful for some Home Assistant installations that require a
|
This is useful for some Home Assistant installations that require a
|
||||||
custom HTTP header.
|
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,
|
Clear the Webhook ID on next application start, and reauthenticate,
|
||||||
|
|||||||
@@ -124,18 +124,37 @@
|
|||||||
<settingConfig type="numeric" min="5" />
|
<settingConfig type="numeric" min="5" />
|
||||||
</setting>
|
</setting>
|
||||||
|
|
||||||
<setting
|
<group
|
||||||
propertyKey="@Properties.user_http_header_name"
|
id="HttpHeader"
|
||||||
title="@Strings.SettingsUserHttpHeaderName"
|
title="@Strings.SettingsUserHttpHeader"
|
||||||
|
description="@Strings.SettingsUserHttpHeaderDescription"
|
||||||
>
|
>
|
||||||
<settingConfig type="alphaNumeric" />
|
<setting
|
||||||
</setting>
|
propertyKey="@Properties.user_http_header1_name"
|
||||||
<setting
|
title="@Strings.SettingsUserHttpHeader1Name"
|
||||||
propertyKey="@Properties.user_http_header_value"
|
>
|
||||||
title="@Strings.SettingsUserHttpHeaderValue"
|
<settingConfig type="alphaNumeric" />
|
||||||
>
|
</setting>
|
||||||
<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
|
<setting
|
||||||
propertyKey="@Properties.clear_webhook_id"
|
propertyKey="@Properties.clear_webhook_id"
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
<string id="NoAPIKey" scope="glance">No API key in the application settings.</string>
|
<string id="NoAPIKey" scope="glance">No API key in the application settings.</string>
|
||||||
<string id="NoApiUrl" scope="glance">No API URL in the application settings.</string>
|
<string id="NoApiUrl" scope="glance">No API URL in the application settings.</string>
|
||||||
<string id="NoConfigUrl" scope="glance">No configuration URL in the application settings.</string>
|
<string id="NoConfigUrl" scope="glance">No configuration URL in the application settings.</string>
|
||||||
|
<string id="NoHTTPS">No response, use secure HTTPS connection.</string>
|
||||||
<string id="NoInternet">No Internet connection.</string>
|
<string id="NoInternet">No Internet connection.</string>
|
||||||
<string id="NoJson">No JSON returned from HTTP request.</string>
|
<string id="NoJson">No JSON returned from HTTP request.</string>
|
||||||
<string id="NoMenu">Menu definition error, check the instructions.</string>
|
<string id="NoMenu">Menu definition error, check the instructions.</string>
|
||||||
@@ -71,13 +72,14 @@
|
|||||||
<string id="SettingsTextAlign">Left (off) or Right (on) Menu Alignment.</string>
|
<string id="SettingsTextAlign">Left (off) or Right (on) Menu Alignment.</string>
|
||||||
<string id="SettingsLeftToRight">Left to right</string>
|
<string id="SettingsLeftToRight">Left to right</string>
|
||||||
<string id="SettingsRightToLeft">Right to Left</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="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="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="SettingsUserHttpHeader">User supplied HTTP headers</string>
|
||||||
<string id="SettingsUserHttpHeaderDescription">Some HomeAssistant installations require the specification of a custom HTTP header in order to function.</string>
|
<string id="SettingsUserHttpHeaderDescription">Some HomeAssistant installations require the specification of custom HTTP headers in order to function.</string>
|
||||||
<string id="SettingsUserHttpHeaderName">User supplied HTTP-Header: Name</string>
|
<string id="SettingsUserHttpHeader1Name">User supplied HTTP-Header 1: Name</string>
|
||||||
<string id="SettingsUserHttpHeaderValue">User supplied HTTP-Header: Value</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="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>
|
<string id="SettingsWebhookId">(Read only) The Webhook ID created by the device for background service updates. You might require this for debugging.</string>
|
||||||
</strings>
|
</strings>
|
||||||
|
|||||||
@@ -115,15 +115,18 @@ class BackgroundServiceDelegate extends System.ServiceDelegate {
|
|||||||
// System.println("BackgroundServiceDelegate onTemporalEvent(): Activity : " + Activity.getProfileInfo().name);
|
// System.println("BackgroundServiceDelegate onTemporalEvent(): Activity : " + Activity.getProfileInfo().name);
|
||||||
|
|
||||||
// Don't use Settings.* here as the object lasts < 30 secs and is recreated each time the background service is run
|
// Don't use Settings.* here as the object lasts < 30 secs and is recreated each time the background service is run
|
||||||
|
if (position.accuracy != Position.QUALITY_NOT_AVAILABLE) {
|
||||||
if (position.accuracy != Position.QUALITY_NOT_AVAILABLE && position.accuracy != Position.QUALITY_LAST_KNOWN) {
|
|
||||||
var accuracy = 0;
|
var accuracy = 0;
|
||||||
switch (position.accuracy) {
|
switch (position.accuracy) {
|
||||||
|
case Position.QUALITY_LAST_KNOWN:
|
||||||
|
// Location is no longer tied to the timestamp, hence the larger inaccuracy.
|
||||||
|
accuracy = 200;
|
||||||
|
break;
|
||||||
case Position.QUALITY_POOR:
|
case Position.QUALITY_POOR:
|
||||||
accuracy = 500;
|
accuracy = 100;
|
||||||
break;
|
break;
|
||||||
case Position.QUALITY_USABLE:
|
case Position.QUALITY_USABLE:
|
||||||
accuracy = 100;
|
accuracy = 50;
|
||||||
break;
|
break;
|
||||||
case Position.QUALITY_GOOD:
|
case Position.QUALITY_GOOD:
|
||||||
accuracy = 10;
|
accuracy = 10;
|
||||||
|
|||||||
@@ -27,11 +27,11 @@ using Toybox.Timer;
|
|||||||
//
|
//
|
||||||
(:glance, :background)
|
(:glance, :background)
|
||||||
class HomeAssistantApp extends Application.AppBase {
|
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 mHasToast as Lang.Boolean = false;
|
||||||
private var mApiStatus as Lang.String?;
|
private var mApiStatus as Lang.String?;
|
||||||
private var mMenuStatus as Lang.String?;
|
|
||||||
private var mHaMenu as HomeAssistantView?;
|
private var mHaMenu as HomeAssistantView?;
|
||||||
private var mGlanceTemplate as Lang.String? = null;
|
private var mGlanceTemplate as Lang.String? = null;
|
||||||
private var mGlanceText as Lang.String? = null;
|
private var mGlanceText as Lang.String? = null;
|
||||||
@@ -111,7 +111,6 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
mQuitTimer = new QuitTimer();
|
mQuitTimer = new QuitTimer();
|
||||||
mUpdateTimer = new Timer.Timer();
|
mUpdateTimer = new Timer.Timer();
|
||||||
mApiStatus = WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String;
|
mApiStatus = WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String;
|
||||||
mMenuStatus = WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String;
|
|
||||||
mHasToast = WatchUi has :showToast;
|
mHasToast = WatchUi has :showToast;
|
||||||
Settings.update();
|
Settings.update();
|
||||||
|
|
||||||
@@ -166,7 +165,6 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
// System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: " + responseCode);
|
// System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: " + responseCode);
|
||||||
// System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Data: " + data);
|
// System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Data: " + data);
|
||||||
|
|
||||||
mMenuStatus = WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String;
|
|
||||||
switch (responseCode) {
|
switch (responseCode) {
|
||||||
case Communications.BLE_HOST_TIMEOUT:
|
case Communications.BLE_HOST_TIMEOUT:
|
||||||
case Communications.BLE_CONNECTION_UNAVAILABLE:
|
case Communications.BLE_CONNECTION_UNAVAILABLE:
|
||||||
@@ -197,6 +195,13 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case Communications.SECURE_CONNECTION_REQUIRED:
|
||||||
|
// System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: SECURE_CONNECTION_REQUIRED, check API URL setting.");
|
||||||
|
if (mIsApp) {
|
||||||
|
ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoHTTPS) as Lang.String);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case 404:
|
case 404:
|
||||||
// System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: 404, page not found. Check Configuration URL setting.");
|
// System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: 404, page not found. Check Configuration URL setting.");
|
||||||
if (mIsApp) {
|
if (mIsApp) {
|
||||||
@@ -205,12 +210,8 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 200:
|
case 200:
|
||||||
if (data == null) {
|
if (data != null) {
|
||||||
mMenuStatus = WatchUi.loadResource($.Rez.Strings.Unavailable) as Lang.String;
|
if (mIsApp) {
|
||||||
} else {
|
|
||||||
if (hasCachedMenu()) {
|
|
||||||
mMenuStatus = WatchUi.loadResource($.Rez.Strings.Cached) as Lang.String;
|
|
||||||
} else if (mIsApp) {
|
|
||||||
// var stats = System.getSystemStats(); // stats.* values in bytes
|
// var stats = System.getSystemStats(); // stats.* values in bytes
|
||||||
// System.println("HomeAssistantApp onReturnFetchMenuConfig() Memory: total=" + stats.totalMemory + ", used=" + stats.usedMemory + ", free=" + stats.freeMemory);
|
// System.println("HomeAssistantApp onReturnFetchMenuConfig() Memory: total=" + stats.totalMemory + ", used=" + stats.usedMemory + ", free=" + stats.freeMemory);
|
||||||
|
|
||||||
@@ -219,14 +220,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."
|
// "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() fails with an uncatchable out-of-memory error."
|
||||||
Storage.setValue(scStorageKeyMenu, data as Lang.Dictionary);
|
Storage.setValue(scStorageKeyMenu, data as Lang.Dictionary);
|
||||||
mMenuStatus = WatchUi.loadResource($.Rez.Strings.Cached) as Lang.String;
|
// Store the smaller glance section of the menu separately so the Glance view can retrieve it within memory limits.
|
||||||
} else {
|
var glance = (data as Lang.Dictionary)["glance"];
|
||||||
mMenuStatus = WatchUi.loadResource($.Rez.Strings.Available) as Lang.String;
|
if (glance != null) {
|
||||||
|
Storage.setValue(scStorageKeyGlance, glance as Lang.Dictionary);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!mIsApp) {
|
if (mIsApp) {
|
||||||
glanceTemplate(data);
|
|
||||||
} else {
|
|
||||||
if (data == null) {
|
if (data == null) {
|
||||||
ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson) as Lang.String);
|
ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoJson) as Lang.String);
|
||||||
} else if (data.size() == 0) {
|
} else if (data.size() == 0) {
|
||||||
@@ -268,13 +269,13 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
function fetchMenuConfig() as Lang.Boolean {
|
function fetchMenuConfig() as Lang.Boolean {
|
||||||
// System.println("Menu URL = " + Settings.getConfigUrl());
|
// System.println("Menu URL = " + Settings.getConfigUrl());
|
||||||
if (Settings.getConfigUrl().equals("")) {
|
if (Settings.getConfigUrl().equals("")) {
|
||||||
mMenuStatus = WatchUi.loadResource($.Rez.Strings.Unconfigured) as Lang.String;
|
|
||||||
WatchUi.requestUpdate();
|
WatchUi.requestUpdate();
|
||||||
} else {
|
} else {
|
||||||
var menu = Storage.getValue(scStorageKeyMenu) as Lang.Dictionary;
|
var menu = Storage.getValue(scStorageKeyMenu) as Lang.Dictionary;
|
||||||
if (menu != null and (Settings.getClearCache() || !Settings.getCacheConfig())) {
|
if (menu != null and (Settings.getClearCache() || !Settings.getCacheConfig())) {
|
||||||
// System.println("HomeAssistantApp fetchMenuConfig(): Clearing cached menu on user request.");
|
// System.println("HomeAssistantApp fetchMenuConfig(): Clearing cached menu on user request.");
|
||||||
Storage.deleteValue(scStorageKeyMenu);
|
Storage.deleteValue(scStorageKeyMenu);
|
||||||
|
Storage.deleteValue(scStorageKeyGlance);
|
||||||
menu = null;
|
menu = null;
|
||||||
Settings.unsetClearCache();
|
Settings.unsetClearCache();
|
||||||
}
|
}
|
||||||
@@ -282,13 +283,8 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
// System.println("HomeAssistantApp fetchMenuConfig(): Menu not cached, fetching.");
|
// System.println("HomeAssistantApp fetchMenuConfig(): Menu not cached, fetching.");
|
||||||
fetchMenuConfigBasic(method(:onReturnFetchMenuConfig));
|
fetchMenuConfigBasic(method(:onReturnFetchMenuConfig));
|
||||||
} else {
|
} else {
|
||||||
mMenuStatus = WatchUi.loadResource($.Rez.Strings.Cached) as Lang.String;
|
|
||||||
WatchUi.requestUpdate();
|
WatchUi.requestUpdate();
|
||||||
if (!mIsApp) {
|
buildMenu(menu);
|
||||||
glanceTemplate(menu);
|
|
||||||
} else {
|
|
||||||
buildMenu(menu);
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -329,7 +325,6 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
} else {
|
} else {
|
||||||
ErrorView.show(WatchUi.loadResource(errorRez) as Lang.String);
|
ErrorView.show(WatchUi.loadResource(errorRez) as Lang.String);
|
||||||
}
|
}
|
||||||
mMenuStatus = WatchUi.loadResource(errorRez) as Lang.String;
|
|
||||||
} else {
|
} else {
|
||||||
Communications.makeWebRequest(
|
Communications.makeWebRequest(
|
||||||
Settings.getConfigUrl(),
|
Settings.getConfigUrl(),
|
||||||
@@ -368,19 +363,17 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
|
|
||||||
//! Extract the optional template to override the default glance view.
|
//! Extract the optional template to override the default glance view.
|
||||||
//
|
//
|
||||||
function glanceTemplate(menu as Lang.Dictionary) {
|
function glanceTemplate() {
|
||||||
if (menu != null) {
|
var glance = Storage.getValue(scStorageKeyGlance) as Lang.Dictionary;
|
||||||
if (menu["glance"] != null) {
|
if ((glance != null) && (glance["type"] != null)) {
|
||||||
var glance = menu["glance"] as Lang.Dictionary;
|
if (glance["type"].equals("info")) {
|
||||||
if (glance["type"].equals("info")) {
|
mGlanceTemplate = glance["content"] as Lang.String;
|
||||||
mGlanceTemplate = glance["content"] as Lang.String;
|
// System.println("HomeAssistantApp glanceTemplate() " + mGlanceTemplate);
|
||||||
// System.println("HomeAssistantApp glanceTemplate() " + mGlanceTemplate);
|
} else { // if glance["type"].equals("status")
|
||||||
} else { // if glance["type"].equals("status")
|
mGlanceTemplate = null;
|
||||||
mGlanceTemplate = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Test if two dictionaries are structurally equal. Used to see if the JSON menu has been
|
//! 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.
|
//! amended but yet to be updated in the application cache.
|
||||||
@@ -522,6 +515,13 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
myTimer.start(method(:updateMenuItems), Globals.scApiBackoffMs, false);
|
myTimer.start(method(:updateMenuItems), Globals.scApiBackoffMs, false);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case Communications.SECURE_CONNECTION_REQUIRED:
|
||||||
|
// System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: SECURE_CONNECTION_REQUIRED, check API URL setting.");
|
||||||
|
if (mIsApp) {
|
||||||
|
ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoHTTPS) as Lang.String);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case 404:
|
case 404:
|
||||||
// System.println("HomeAssistantApp onReturnCheckMenuConfig() Response Code: 404, page not found. Check API URL setting.");
|
// System.println("HomeAssistantApp onReturnCheckMenuConfig() Response Code: 404, page not found. Check API URL setting.");
|
||||||
ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound) as Lang.String);
|
ErrorView.show(WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound) as Lang.String);
|
||||||
@@ -539,6 +539,11 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
if (menu == null || !structuralEquals(data, menu)) {
|
if (menu == null || !structuralEquals(data, menu)) {
|
||||||
// System.println("HomeAssistantApp onReturnCheckMenuConfig() New menu found.");
|
// System.println("HomeAssistantApp onReturnCheckMenuConfig() New menu found.");
|
||||||
Storage.setValue(scStorageKeyMenu, data as Lang.Dictionary);
|
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) {
|
if (menu != null) {
|
||||||
// Notify the the user we have just got a newer menu file
|
// Notify the the user we have just got a newer menu file
|
||||||
var toast = WatchUi.loadResource($.Rez.Strings.MenuUpdated) as Lang.String;
|
var toast = WatchUi.loadResource($.Rez.Strings.MenuUpdated) as Lang.String;
|
||||||
@@ -807,6 +812,13 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case Communications.SECURE_CONNECTION_REQUIRED:
|
||||||
|
// System.println("HomeAssistantApp onReturnFetchMenuConfig() Response Code: SECURE_CONNECTION_REQUIRED, check API URL setting.");
|
||||||
|
if (mIsApp) {
|
||||||
|
ErrorView.show(WatchUi.loadResource($.Rez.Strings.NoHTTPS) as Lang.String);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case 404:
|
case 404:
|
||||||
// System.println("HomeAssistantApp onReturnFetchApiStatus() Response Code: 404, page not found. Check Configuration URL setting.");
|
// System.println("HomeAssistantApp onReturnFetchApiStatus() Response Code: 404, page not found. Check Configuration URL setting.");
|
||||||
if (mIsApp) {
|
if (mIsApp) {
|
||||||
@@ -897,51 +909,18 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
switch (responseCode) {
|
switch (responseCode) {
|
||||||
case Communications.BLE_HOST_TIMEOUT:
|
case Communications.BLE_HOST_TIMEOUT:
|
||||||
case Communications.BLE_CONNECTION_UNAVAILABLE:
|
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:
|
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:
|
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:
|
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:
|
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;
|
break;
|
||||||
|
|
||||||
case 200:
|
case 200:
|
||||||
if ((data != null) && (data instanceof Lang.Dictionary)) {
|
if ((data != null) && (data instanceof Lang.Dictionary)) {
|
||||||
mGlanceText = data["glanceTemplate"];
|
mGlanceText = data["glanceTemplate"];
|
||||||
}
|
}
|
||||||
|
WatchUi.requestUpdate();
|
||||||
break;
|
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();
|
WatchUi.requestUpdate();
|
||||||
}
|
}
|
||||||
@@ -989,14 +968,6 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
return mApiStatus;
|
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
|
//! Return the optional glance text that overrides the default glance content. This
|
||||||
//! is derived from the glance template.
|
//! is derived from the glance template.
|
||||||
//!
|
//!
|
||||||
@@ -1047,11 +1018,12 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
function getGlanceView() as [ WatchUi.GlanceView ] or [ WatchUi.GlanceView, WatchUi.GlanceViewDelegate ] or Null {
|
function getGlanceView() as [ WatchUi.GlanceView ] or [ WatchUi.GlanceView, WatchUi.GlanceViewDelegate ] or Null {
|
||||||
mIsApp = false; // A bit unnecessary given the default
|
mIsApp = false; // A bit unnecessary given the default
|
||||||
mApiStatus = WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String;
|
mApiStatus = WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String;
|
||||||
mMenuStatus = WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String;
|
|
||||||
Settings.update();
|
Settings.update();
|
||||||
|
glanceTemplate();
|
||||||
updateStatus();
|
updateStatus();
|
||||||
mGlanceTimer = new Timer.Timer();
|
mGlanceTimer = new Timer.Timer();
|
||||||
mGlanceTimer.start(method(:updateStatus), Globals.scApiBackoffMs, true);
|
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)];
|
return [new HomeAssistantGlanceView(self)];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1066,8 +1038,6 @@ class HomeAssistantApp extends Application.AppBase {
|
|||||||
//! Update the menu and API statuses. Required for the Glance update timer.
|
//! Update the menu and API statuses. Required for the Glance update timer.
|
||||||
//
|
//
|
||||||
function updateStatus() as Void {
|
function updateStatus() as Void {
|
||||||
mGlanceTimer = null;
|
|
||||||
fetchMenuConfig();
|
|
||||||
fetchApiStatus();
|
fetchApiStatus();
|
||||||
if (!Settings.getWebhookId().equals("") && !Settings.getClearWebhookId()) {
|
if (!Settings.getWebhookId().equals("") && !Settings.getClearWebhookId()) {
|
||||||
fetchGlanceContent();
|
fetchGlanceContent();
|
||||||
|
|||||||
@@ -47,8 +47,6 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView {
|
|||||||
private var mTitle as WatchUi.Text?;
|
private var mTitle as WatchUi.Text?;
|
||||||
private var mApiText as WatchUi.Text?;
|
private var mApiText as WatchUi.Text?;
|
||||||
private var mApiStatus 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 mGlanceContent as WatchUi.TextArea?;
|
||||||
private var mAntiAlias as Lang.Boolean = false;
|
private var mAntiAlias as Lang.Boolean = false;
|
||||||
|
|
||||||
@@ -69,7 +67,7 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView {
|
|||||||
function onLayout(dc as Graphics.Dc) as Void {
|
function onLayout(dc as Graphics.Dc) as Void {
|
||||||
var h = dc.getHeight();
|
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({
|
mTitle = new WatchUi.Text({
|
||||||
:text => WatchUi.loadResource($.Rez.Strings.AppName) as Lang.String,
|
:text => WatchUi.loadResource($.Rez.Strings.AppName) as Lang.String,
|
||||||
@@ -86,7 +84,7 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView {
|
|||||||
:font => Graphics.FONT_XTINY,
|
:font => Graphics.FONT_XTINY,
|
||||||
:justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
|
:justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
|
||||||
:locX => scLeftRectMargin + scRectWidth + scRightRectMargin,
|
:locX => scLeftRectMargin + scRectWidth + scRightRectMargin,
|
||||||
:locY => 3 * h / 6
|
:locY => 4 * h / 6
|
||||||
});
|
});
|
||||||
mApiStatus = new WatchUi.Text({
|
mApiStatus = new WatchUi.Text({
|
||||||
:text => WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String,
|
:text => WatchUi.loadResource($.Rez.Strings.Checking) as Lang.String,
|
||||||
@@ -94,28 +92,11 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView {
|
|||||||
:font => Graphics.FONT_XTINY,
|
:font => Graphics.FONT_XTINY,
|
||||||
:justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
|
:justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
|
||||||
:locX => scLeftRectMargin + scRectWidth + scRightRectMargin + scMidSep + mTextWidth,
|
:locX => scLeftRectMargin + scRectWidth + scRightRectMargin + scMidSep + mTextWidth,
|
||||||
:locY => 3 * h / 6
|
:locY => 4 * 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
|
|
||||||
});
|
});
|
||||||
|
|
||||||
mGlanceContent = new WatchUi.TextArea({
|
mGlanceContent = new WatchUi.TextArea({
|
||||||
:text => "A longer piece of text to wrap.",
|
:text => "",
|
||||||
:color => Graphics.COLOR_WHITE,
|
:color => Graphics.COLOR_WHITE,
|
||||||
:font => Graphics.FONT_XTINY,
|
:font => Graphics.FONT_XTINY,
|
||||||
:justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
|
:justification => Graphics.TEXT_JUSTIFY_LEFT | Graphics.TEXT_JUSTIFY_VCENTER,
|
||||||
@@ -134,10 +115,8 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView {
|
|||||||
var h = dc.getHeight();
|
var h = dc.getHeight();
|
||||||
var w = dc.getWidth() - scLeftRectMargin - scRightGlanceMargin;
|
var w = dc.getWidth() - scLeftRectMargin - scRightGlanceMargin;
|
||||||
var apiStatus = mApp.getApiStatus();
|
var apiStatus = mApp.getApiStatus();
|
||||||
var menuStatus = mApp.getMenuStatus();
|
|
||||||
var glanceText = mApp.getGlanceText();
|
var glanceText = mApp.getGlanceText();
|
||||||
var apiCol;
|
var apiCol;
|
||||||
var menuCol;
|
|
||||||
// System.println("HomeAssistantGlanceView onUpdate() glanceText=" + glanceText);
|
// System.println("HomeAssistantGlanceView onUpdate() glanceText=" + glanceText);
|
||||||
|
|
||||||
GlanceView.onUpdate(dc);
|
GlanceView.onUpdate(dc);
|
||||||
@@ -160,33 +139,15 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView {
|
|||||||
apiCol = Graphics.COLOR_RED;
|
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) {
|
if (glanceText == null) {
|
||||||
// Default Glance View
|
// Status Glance View
|
||||||
mApiText.draw(dc);
|
mApiText.draw(dc);
|
||||||
mApiStatus.setText(apiStatus);
|
mApiStatus.setText(apiStatus);
|
||||||
mApiStatus.setColor(apiCol);
|
mApiStatus.setColor(apiCol);
|
||||||
dc.setColor(apiCol, apiCol);
|
dc.setColor(apiCol, apiCol);
|
||||||
dc.drawRoundedRectangle(scLeftRectMargin, 2 * h / 6 + scVertMargin, w, 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, 2 * h / 6 - (2 * scVertMargin), scRectRadius);
|
dc.fillRoundedRectangle(scLeftRectMargin, 2 * h / 6 + scVertMargin, scRectWidth, 4 * h / 6 - (2 * scVertMargin), scRectRadius);
|
||||||
mApiStatus.draw(dc);
|
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 {
|
} else {
|
||||||
// Customised Glance View
|
// Customised Glance View
|
||||||
dc.setColor(Graphics.COLOR_BLUE, Graphics.COLOR_BLUE);
|
dc.setColor(Graphics.COLOR_BLUE, Graphics.COLOR_BLUE);
|
||||||
@@ -198,9 +159,7 @@ class HomeAssistantGlanceView extends WatchUi.GlanceView {
|
|||||||
scRectRadius
|
scRectRadius
|
||||||
);
|
);
|
||||||
dc.setColor(apiCol, apiCol);
|
dc.setColor(apiCol, apiCol);
|
||||||
dc.fillRoundedRectangle(scLeftRectMargin, 2 * h / 6 + scVertMargin, scRectWidth, 2 * h / 6 - (2 * scVertMargin), scRectRadius);
|
dc.fillRoundedRectangle(scLeftRectMargin, 2 * h / 6 + scVertMargin, scRectWidth, 4 * h / 6 - (2 * scVertMargin), scRectRadius);
|
||||||
dc.setColor(menuCol, menuCol);
|
|
||||||
dc.fillRoundedRectangle(scLeftRectMargin, 4 * h / 6 + scVertMargin, scRectWidth, 2 * h / 6 - (2 * scVertMargin), scRectRadius);
|
|
||||||
mGlanceContent.setText(glanceText);
|
mGlanceContent.setText(glanceText);
|
||||||
mGlanceContent.draw(dc);
|
mGlanceContent.draw(dc);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ class HomeAssistantMenuItemFactory {
|
|||||||
label as Lang.String or Lang.Symbol,
|
label as Lang.String or Lang.Symbol,
|
||||||
entity_id as Lang.String?,
|
entity_id as Lang.String?,
|
||||||
template as Lang.String?,
|
template as Lang.String?,
|
||||||
action as Lang.String?,
|
action as Lang.String?,
|
||||||
data as Lang.Dictionary?,
|
data as Lang.Dictionary?,
|
||||||
options as {
|
options as {
|
||||||
:exit as Lang.Boolean,
|
:exit as Lang.Boolean,
|
||||||
@@ -163,6 +163,7 @@ class HomeAssistantMenuItemFactory {
|
|||||||
entity_id as Lang.String?,
|
entity_id as Lang.String?,
|
||||||
template as Lang.String?,
|
template as Lang.String?,
|
||||||
action as Lang.String?,
|
action as Lang.String?,
|
||||||
|
data as Lang.Dictionary?,
|
||||||
picker as Lang.Dictionary,
|
picker as Lang.Dictionary,
|
||||||
options as {
|
options as {
|
||||||
:exit as Lang.Boolean,
|
:exit as Lang.Boolean,
|
||||||
@@ -171,9 +172,12 @@ class HomeAssistantMenuItemFactory {
|
|||||||
:icon as WatchUi.Bitmap
|
:icon as WatchUi.Bitmap
|
||||||
}
|
}
|
||||||
) as WatchUi.MenuItem {
|
) as WatchUi.MenuItem {
|
||||||
var data = null;
|
|
||||||
if (entity_id != null) {
|
if (entity_id != null) {
|
||||||
data = { "entity_id" => entity_id };
|
if (data == null) {
|
||||||
|
data = { "entity_id" => entity_id };
|
||||||
|
} else {
|
||||||
|
data["entity_id"] = entity_id;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
var keys = mMenuItemOptions.keys();
|
var keys = mMenuItemOptions.keys();
|
||||||
for (var i = 0; i < keys.size(); i++) {
|
for (var i = 0; i < keys.size(); i++) {
|
||||||
|
|||||||
@@ -155,7 +155,10 @@ class HomeAssistantNumericMenuItem extends HomeAssistantMenuItem {
|
|||||||
//
|
//
|
||||||
function onConfirm(b as Lang.Boolean) as Void {
|
function onConfirm(b as Lang.Boolean) as Void {
|
||||||
var dataAttribute = mPicker["data_attribute"] as Lang.String?;
|
var dataAttribute = mPicker["data_attribute"] as Lang.String?;
|
||||||
var entity_id = mData["entity_id"] as Lang.String?;
|
var entity_id = null as Lang.String?;
|
||||||
|
if (mData != null) {
|
||||||
|
entity_id = mData["entity_id"] as Lang.String?;
|
||||||
|
}
|
||||||
|
|
||||||
WatchUi.popView(WatchUi.SLIDE_RIGHT);
|
WatchUi.popView(WatchUi.SLIDE_RIGHT);
|
||||||
WatchUi.requestUpdate();
|
WatchUi.requestUpdate();
|
||||||
@@ -164,12 +167,18 @@ class HomeAssistantNumericMenuItem extends HomeAssistantMenuItem {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (mAction != null) {
|
if (mAction != null) {
|
||||||
|
var data = {} as Lang.Dictionary;
|
||||||
|
if (mData != null) {
|
||||||
|
var keys = mData.keys();
|
||||||
|
for (var i = 0; i < keys.size(); i++) {
|
||||||
|
data[keys[i]] = mData[keys[i]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
data["entity_id"] = entity_id.toString();
|
||||||
|
data[dataAttribute.toString()] = mValue;
|
||||||
mHomeAssistantService.call(
|
mHomeAssistantService.call(
|
||||||
mAction,
|
mAction,
|
||||||
{
|
data,
|
||||||
"entity_id" => entity_id.toString(),
|
|
||||||
dataAttribute.toString() => mValue
|
|
||||||
},
|
|
||||||
mExit
|
mExit
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,17 +30,20 @@ class HomeAssistantNumericPicker extends WatchUi.Picker {
|
|||||||
factory as HomeAssistantNumericFactory,
|
factory as HomeAssistantNumericFactory,
|
||||||
haItem as HomeAssistantNumericMenuItem
|
haItem as HomeAssistantNumericMenuItem
|
||||||
) {
|
) {
|
||||||
mItem = haItem;
|
mItem = haItem;
|
||||||
var picker = mItem.getPicker();
|
var picker = mItem.getPicker();
|
||||||
var min = (picker.get("min") as Lang.String).toFloat();
|
var minStr = picker.get("min");
|
||||||
var step = (picker.get("step") as Lang.String).toFloat();
|
var stepStr = picker.get("step");
|
||||||
var val = haItem.getValue();
|
var val = haItem.getValue();
|
||||||
|
|
||||||
if (min == null) {
|
var min = 0.0;
|
||||||
min = 0.0;
|
var step = 1.0;
|
||||||
|
|
||||||
|
if (minStr != null) {
|
||||||
|
min = (minStr as Lang.String).toFloat();
|
||||||
}
|
}
|
||||||
if (step == null) {
|
if (stepStr != null) {
|
||||||
step = 1.0;
|
step = (stepStr as Lang.String).toFloat();
|
||||||
}
|
}
|
||||||
|
|
||||||
WatchUi.Picker.initialize({
|
WatchUi.Picker.initialize({
|
||||||
@@ -95,4 +98,4 @@ class HomeAssistantNumericPickerDelegate extends WatchUi.PickerDelegate {
|
|||||||
mPicker.onConfirm(values[0]);
|
mPicker.onConfirm(values[0]);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -122,6 +122,7 @@ class HomeAssistantService {
|
|||||||
//!
|
//!
|
||||||
//! @param action The Home Assistant action to be run, e.g. from the JSON `action` field.
|
//! @param action The Home Assistant action to be run, e.g. from the JSON `action` field.
|
||||||
//! @param data Data to be supplied to the action call.
|
//! @param data Data to be supplied to the action call.
|
||||||
|
//! @param exit Whether to exit the app after making the call.
|
||||||
//
|
//
|
||||||
function call(
|
function call(
|
||||||
action as Lang.String,
|
action as Lang.String,
|
||||||
|
|||||||
@@ -228,9 +228,7 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
|
|||||||
// If there's no response body, let's assume that what we did actually happened and flip the toggle.
|
// If there's no response body, let's assume that what we did actually happened and flip the toggle.
|
||||||
if (data.size() == 0) {
|
if (data.size() == 0) {
|
||||||
setEnabled(!isEnabled());
|
setEnabled(!isEnabled());
|
||||||
}
|
} else {
|
||||||
|
|
||||||
else {
|
|
||||||
for(var i = 0; i < data.size(); i++) {
|
for(var i = 0; i < data.size(); i++) {
|
||||||
if ((data[i].get("entity_id") as Lang.String).equals(mData.get("entity_id"))) {
|
if ((data[i].get("entity_id") as Lang.String).equals(mData.get("entity_id"))) {
|
||||||
var state = data[i].get("state") as Lang.String;
|
var state = data[i].get("state") as Lang.String;
|
||||||
|
|||||||
@@ -76,49 +76,32 @@ class HomeAssistantView extends WatchUi.Menu2 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (type != null && name != null && enabled) {
|
if (type != null && name != null && enabled) {
|
||||||
if (type.equals("toggle") && entity != null) {
|
if (pin && !System.getDeviceSettings().isTouchScreen) {
|
||||||
addItem(HomeAssistantMenuItemFactory.create().toggle(
|
|
||||||
name,
|
|
||||||
entity,
|
|
||||||
content,
|
|
||||||
{
|
|
||||||
:exit => exit,
|
|
||||||
:confirm => confirm,
|
|
||||||
:pin => pin
|
|
||||||
}
|
|
||||||
));
|
|
||||||
} else if (type.equals("tap") && action != null) {
|
|
||||||
addItem(HomeAssistantMenuItemFactory.create().tap(
|
addItem(HomeAssistantMenuItemFactory.create().tap(
|
||||||
name,
|
"PIN requires Touchscreen",
|
||||||
entity,
|
null,
|
||||||
content,
|
null,
|
||||||
action,
|
null,
|
||||||
data,
|
data,
|
||||||
{
|
{
|
||||||
:exit => exit,
|
:exit => false,
|
||||||
:confirm => confirm,
|
:confirm => false,
|
||||||
:pin => pin
|
:pin => false
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
} else if (type.equals("template") && content != null) {
|
} else {
|
||||||
// NB. "template" is deprecated in the schema and remains only for backward compatibility. All menu items can now use templates, so the replacement is "info".
|
if (type.equals("toggle") && entity != null) {
|
||||||
// The exit option is dependent on the type of template.
|
addItem(HomeAssistantMenuItemFactory.create().toggle(
|
||||||
if (tap_action == null) {
|
|
||||||
// No exit from an information only item
|
|
||||||
addItem(HomeAssistantMenuItemFactory.create().tap(
|
|
||||||
name,
|
name,
|
||||||
entity,
|
entity,
|
||||||
content,
|
content,
|
||||||
action,
|
|
||||||
data,
|
|
||||||
{
|
{
|
||||||
:exit => false,
|
:exit => exit,
|
||||||
:confirm => confirm,
|
:confirm => confirm,
|
||||||
:pin => pin
|
:pin => pin
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
} else {
|
} else if (type.equals("tap") && action != null) {
|
||||||
// You may exit from template item with a 'tap_action'.
|
|
||||||
addItem(HomeAssistantMenuItemFactory.create().tap(
|
addItem(HomeAssistantMenuItemFactory.create().tap(
|
||||||
name,
|
name,
|
||||||
entity,
|
entity,
|
||||||
@@ -131,17 +114,31 @@ class HomeAssistantView extends WatchUi.Menu2 {
|
|||||||
:pin => pin
|
:pin => pin
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
}
|
} else if (type.equals("template") && content != null) {
|
||||||
} else if (type.equals("numeric") && action != null) {
|
// NB. "template" is deprecated in the schema and remains only for backward compatibility. All menu items can now use templates, so the replacement is "info".
|
||||||
if (tap_action != null) {
|
// The exit option is dependent on the type of template.
|
||||||
var picker = tap_action.get("picker") as Lang.Dictionary?;
|
if (tap_action == null) {
|
||||||
if (picker != null) {
|
// No exit from an information only item
|
||||||
addItem(HomeAssistantMenuItemFactory.create().numeric(
|
addItem(HomeAssistantMenuItemFactory.create().tap(
|
||||||
name,
|
name,
|
||||||
entity,
|
entity,
|
||||||
content,
|
content,
|
||||||
action,
|
action,
|
||||||
picker,
|
data,
|
||||||
|
{
|
||||||
|
:exit => false,
|
||||||
|
:confirm => confirm,
|
||||||
|
:pin => pin
|
||||||
|
}
|
||||||
|
));
|
||||||
|
} else {
|
||||||
|
// You may exit from template item with a 'tap_action'.
|
||||||
|
addItem(HomeAssistantMenuItemFactory.create().tap(
|
||||||
|
name,
|
||||||
|
entity,
|
||||||
|
content,
|
||||||
|
action,
|
||||||
|
data,
|
||||||
{
|
{
|
||||||
:exit => exit,
|
:exit => exit,
|
||||||
:confirm => confirm,
|
:confirm => confirm,
|
||||||
@@ -149,23 +146,43 @@ class HomeAssistantView extends WatchUi.Menu2 {
|
|||||||
}
|
}
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
} else if (type.equals("numeric") && action != null) {
|
||||||
} else if (type.equals("info") && content != null) {
|
// Numeric items are only actionable on touch screen devices.
|
||||||
// Cannot exit from a non-actionable information only menu item.
|
if (tap_action != null) {
|
||||||
addItem(HomeAssistantMenuItemFactory.create().tap(
|
var picker = tap_action.get("picker") as Lang.Dictionary?;
|
||||||
name,
|
if (picker != null) {
|
||||||
entity,
|
addItem(HomeAssistantMenuItemFactory.create().numeric(
|
||||||
content,
|
name,
|
||||||
action,
|
entity,
|
||||||
data,
|
content,
|
||||||
{
|
action,
|
||||||
:exit => false,
|
data,
|
||||||
:confirm => confirm,
|
picker,
|
||||||
:pin => pin
|
{
|
||||||
|
:exit => exit,
|
||||||
|
:confirm => confirm,
|
||||||
|
:pin => pin
|
||||||
|
}
|
||||||
|
));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
));
|
} else if (type.equals("info") && content != null) {
|
||||||
} else if (type.equals("group")) {
|
// Cannot exit from a non-actionable information only menu item.
|
||||||
addItem(HomeAssistantMenuItemFactory.create().group(items[i], content));
|
addItem(HomeAssistantMenuItemFactory.create().tap(
|
||||||
|
name,
|
||||||
|
entity,
|
||||||
|
content,
|
||||||
|
action,
|
||||||
|
data,
|
||||||
|
{
|
||||||
|
:exit => false,
|
||||||
|
:confirm => confirm,
|
||||||
|
:pin => pin
|
||||||
|
}
|
||||||
|
));
|
||||||
|
} else if (type.equals("group")) {
|
||||||
|
addItem(HomeAssistantMenuItemFactory.create().group(items[i], content));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -192,11 +209,9 @@ class HomeAssistantView extends WatchUi.Menu2 {
|
|||||||
}
|
}
|
||||||
fullList.addAll(item.getMenuView().getItemsToUpdate());
|
fullList.addAll(item.getMenuView().getItemsToUpdate());
|
||||||
} else if (item instanceof HomeAssistantNumericMenuItem) {
|
} else if (item instanceof HomeAssistantNumericMenuItem) {
|
||||||
// Numeric items can have an optional template to evaluate
|
// Numeric items can have an optional template to evaluate, but they must always be included in order
|
||||||
var nmi = item as HomeAssistantNumericMenuItem;
|
// to initialise the numeric picker's value.
|
||||||
if (nmi.hasTemplate()) {
|
fullList.add(item);
|
||||||
fullList.add(item);
|
|
||||||
}
|
|
||||||
} else if (item instanceof HomeAssistantToggleMenuItem) {
|
} else if (item instanceof HomeAssistantToggleMenuItem) {
|
||||||
fullList.add(item);
|
fullList.add(item);
|
||||||
} else if (item instanceof HomeAssistantTapMenuItem) {
|
} else if (item instanceof HomeAssistantTapMenuItem) {
|
||||||
|
|||||||
@@ -51,10 +51,14 @@ class Settings {
|
|||||||
private static var mIsSensorsEnabled as Lang.Boolean = false;
|
private static var mIsSensorsEnabled as Lang.Boolean = false;
|
||||||
//! minutes
|
//! minutes
|
||||||
private static var mBatteryRefreshRate as Lang.Number = 15;
|
private static var mBatteryRefreshRate as Lang.Number = 15;
|
||||||
//! Additional user configurable HTTP header key
|
//! Additional user configurable HTTP header 1 key
|
||||||
private static var mUserHeaderName as Lang.String? = null;
|
private static var mUserHeader1Name as Lang.String? = null;
|
||||||
//! Additional user configurable HTTP header value
|
//! Additional user configurable HTTP header 1 value
|
||||||
private static var mUserHeaderValue as Lang.String? = null;
|
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 mClearWebhookId as Lang.Boolean = false;
|
||||||
private static var mIsApp as Lang.Boolean = false;
|
private static var mIsApp as Lang.Boolean = false;
|
||||||
private static var mHasService as Lang.Boolean = false;
|
private static var mHasService as Lang.Boolean = false;
|
||||||
@@ -81,8 +85,10 @@ class Settings {
|
|||||||
mMenuAlignment = Properties.getValue("menu_alignment");
|
mMenuAlignment = Properties.getValue("menu_alignment");
|
||||||
mIsSensorsEnabled = Properties.getValue("enable_battery_level");
|
mIsSensorsEnabled = Properties.getValue("enable_battery_level");
|
||||||
mBatteryRefreshRate = Properties.getValue("battery_level_refresh_rate");
|
mBatteryRefreshRate = Properties.getValue("battery_level_refresh_rate");
|
||||||
mUserHeaderName = Properties.getValue("user_http_header_name");
|
mUserHeader1Name = Properties.getValue("user_http_header1_name");
|
||||||
mUserHeaderValue = Properties.getValue("user_http_header_value");
|
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");
|
mClearWebhookId = Properties.getValue("clear_webhook_id");
|
||||||
|
|
||||||
if (mIsApp && mMenuCheck && !mCacheConfig) {
|
if (mIsApp && mMenuCheck && !mCacheConfig) {
|
||||||
@@ -356,8 +362,11 @@ class Settings {
|
|||||||
//
|
//
|
||||||
static function augmentHttpHeaders(options as Lang.Dictionary) {
|
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.
|
// 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) {
|
if (mUserHeader1Name != null && mUserHeader1Name.length() > 0 && mUserHeader1Value != null && mUserHeader1Value.length() > 0) {
|
||||||
options[mUserHeaderName] = mUserHeaderValue;
|
options[mUserHeader1Name] = mUserHeader1Value;
|
||||||
|
}
|
||||||
|
if (mUserHeader2Name != null && mUserHeader2Name.length() > 0 && mUserHeader2Value != null && mUserHeader2Value.length() > 0) {
|
||||||
|
options[mUserHeader2Name] = mUserHeader2Value;
|
||||||
}
|
}
|
||||||
return options;
|
return options;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ class WebhookManager {
|
|||||||
// System.println("WebhookManager onReturnRequestWebhookId() Response Code: NETWORK_RESPONSE_OUT_OF_MEMORY, are we going too fast?");
|
// System.println("WebhookManager onReturnRequestWebhookId() Response Code: NETWORK_RESPONSE_OUT_OF_MEMORY, are we going too fast?");
|
||||||
// Ignore and see if we can carry on
|
// Ignore and see if we can carry on
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE:
|
case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE:
|
||||||
// System.println("WebhookManager onReturnRequestWebhookId() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned.");
|
// System.println("WebhookManager onReturnRequestWebhookId() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned.");
|
||||||
Settings.unsetIsSensorsEnabled();
|
Settings.unsetIsSensorsEnabled();
|
||||||
|
|||||||