Compare commits

..

2 Commits

Author SHA1 Message Date
Philip Abbey
098dc81236 Space alignment in code (tidy) and v3.6 history amendment 2025-11-06 20:40:43 +00:00
Philip Abbey
5ab8229602 Update Numeric.md
Changed 'service' to 'action'. Careless omission for new documentation.

Signed-off-by: Philip Abbey <philipabbey@users.noreply.github.com>
2025-11-06 18:15:09 +00:00
7 changed files with 25 additions and 25 deletions

View File

@@ -51,4 +51,4 @@
| 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.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. |
| 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. |

View File

@@ -15,7 +15,7 @@ An example using a thermostat as a `numeric` menu item.
"type": "numeric",
"entity": "climate.room",
"tap_action": {
"service": "climate.set_temperature",
"action": "climate.set_temperature",
"picker": {
"step": 0.5,
"min": 10,
@@ -35,7 +35,7 @@ Field | Purpose
`min` | The minimum value the numeric entity can take. | Yes |
`max` | The maximum value the numeric entity can take. | Yes |
`attribute` | The attribute on the `entity` that holds the state to be read. | No |
`data_attribute` | The attribute on the `service` call that sets the state. | Yes |
`data_attribute` | The attribute on the `action` call that sets the state. | Yes |
It may well be the case that often `attribute` and `data_attribute` are the same attribute, as with this example.
@@ -45,7 +45,7 @@ You might define a "helper" entity as follows in HomeAssistant:
<img src="../images/my_float.png" width="400" title="HomeAssistant Helper definition for an 'input_number'." style="margin:5px"/>
In this case, the state is the actual value, so the template uses `states(..)` instead of `state_attr(..)`, you must not set the optional `attribute` value in the JSON definition so that the application uses the correct template internally for querying the HA server for its present value. Your own template definition in the `content` field will need to follow suit too. The `data_attribute` must be set to `value` for the service call that sets the chosen value from the number carousel.
In this case, the state is the actual value, so the template uses `states(..)` instead of `state_attr(..)`, you must not set the optional `attribute` value in the JSON definition so that the application uses the correct template internally for querying the HA server for its present value. Your own template definition in the `content` field will need to follow suit too. The `data_attribute` must be set to `value` for the `action` call that sets the chosen value from the number carousel.
```json
{
@@ -54,7 +54,7 @@ In this case, the state is the actual value, so the template uses `states(..)` i
"type": "numeric",
"entity": "input_number.my_float",
"tap_action": {
"service": "input_number.set_value",
"action": "input_number.set_value",
"picker": {
"step": 0.5,
"min": -10.0,
@@ -76,7 +76,7 @@ The complication here is this amplifier uses one scale for changing the value, a
"type": "numeric",
"entity": "media_player.amplifier",
"tap_action": {
"service": "media_player.volume_set",
"action": "media_player.volume_set",
"picker": {
"step": 0.005,
"min": 0.2,
@@ -149,7 +149,7 @@ The JSON menu definition can now use dB with the new template number as follows.
"type": "numeric",
"entity": "number.amplifier_db",
"tap_action": {
"service": "number.set_value",
"action": "number.set_value",
"picker": {
"step": 0.5,
"min": -60.0,

View File

@@ -35,7 +35,7 @@ class HomeAssistantNumericMenuItem extends HomeAssistantMenuItem {
//!
//! @param label Menu item label.
//! @param template Menu item template.
//! @param action Menu item action.
//! @param action Menu item action.
//! @param data Data to supply to the action call.
//! @param exit Should the action call complete and then exit?
//! @param confirm Should the action call be confirmed to avoid accidental invocation?
@@ -120,10 +120,10 @@ class HomeAssistantNumericMenuItem extends HomeAssistantMenuItem {
WatchUi.pushView(
dialog,
new WifiLteExecutionConfirmDelegate({
:type => "action",
:type => "action",
:action => mAction,
:data => mData,
:exit => mExit,
:data => mData,
:exit => mExit,
}, dialog),
WatchUi.SLIDE_LEFT
);

View File

@@ -121,7 +121,7 @@ class HomeAssistantService {
//! Invoke a action call for a menu item.
//!
//! @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.
//
function call(
action as Lang.String,
@@ -136,10 +136,10 @@ class HomeAssistantService {
WatchUi.pushView(
dialog,
new WifiLteExecutionConfirmDelegate({
:type => "action",
:type => "action",
:action => action,
:data => data,
:exit => exit,
:data => data,
:exit => exit,
}, dialog),
WatchUi.SLIDE_LEFT
);

View File

@@ -31,7 +31,7 @@ class HomeAssistantTapMenuItem extends HomeAssistantMenuItem {
//!
//! @param label Menu item label.
//! @param template Menu item template.
//! @param action Menu item action.
//! @param action Menu item action.
//! @param data Data to supply to the action call.
//! @param exit Should the action call complete and then exit?
//! @param confirm Should the action call be confirmed to avoid accidental invocation?
@@ -44,7 +44,7 @@ class HomeAssistantTapMenuItem extends HomeAssistantMenuItem {
function initialize(
label as Lang.String or Lang.Symbol,
template as Lang.String,
action as Lang.String?,
action as Lang.String?,
data as Lang.Dictionary?,
options as {
:alignment as WatchUi.MenuItem.Alignment,

View File

@@ -47,7 +47,7 @@ class HomeAssistantView extends WatchUi.Menu2 {
var content = items[i].get("content") as Lang.String?;
var entity = items[i].get("entity") as Lang.String?;
var tap_action = items[i].get("tap_action") as Lang.Dictionary?;
var action = items[i].get("service") as Lang.String?; // Deprecated schema
var action = items[i].get("service") as Lang.String?; // Deprecated schema
var confirm = false as Lang.Boolean or Lang.String or Null;
var pin = false as Lang.Boolean?;
var data = null as Lang.Dictionary?;

View File

@@ -24,12 +24,12 @@ using Toybox.Timer;
//
class WifiLteExecutionConfirmDelegate extends WatchUi.ConfirmationDelegate {
public static var mCommandData as {
:type as Lang.String,
:type as Lang.String,
:action as Lang.String?,
:data as Lang.Dictionary?,
:url as Lang.String?,
:id as Lang.Number?,
:exit as Lang.Boolean
:data as Lang.Dictionary?,
:url as Lang.String?,
:id as Lang.Number?,
:exit as Lang.Boolean
}?;
private static var mTimer as Timer.Timer?;
@@ -52,7 +52,7 @@ class WifiLteExecutionConfirmDelegate extends WatchUi.ConfirmationDelegate {
function initialize(
cOptions as {
:type as Lang.String,
:action as Lang.String?,
:action as Lang.String?,
:data as Lang.Dictionary?,
:url as Lang.String?,
:callback as Lang.Method?,
@@ -73,7 +73,7 @@ class WifiLteExecutionConfirmDelegate extends WatchUi.ConfirmationDelegate {
mConfirmationView = view;
mCommandData = {
:type => cOptions[:type],
:action => cOptions[:action],
:action => cOptions[:action],
:data => cOptions[:data],
:url => cOptions[:url],
:callback => cOptions[:callback],