led: Support automated LED updates based on display_template results

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor
2022-03-23 18:06:09 -04:00
parent a6ab56c0a6
commit 1ab3ac39e4
3 changed files with 126 additions and 10 deletions

View File

@@ -3552,12 +3552,18 @@ text:
### [display_template]
Display data text "macros" (one may define any number of sections with
a display_template prefix). This feature allows one to reduce
repetitive definitions in display_data sections. One may use the
builtin render() function in display_data sections to evaluate a
template. For example, if one were to define `[display_template
my_template]` then one could use `{ render('my_template') }` in a
display_data section.
a display_template prefix). See the
[command templates](Command_Templates.md) document for information on
template evaluation.
This feature allows one to reduce repetitive definitions in
display_data sections. One may use the builtin `render()` function in
display_data sections to evaluate a template. For example, if one were
to define `[display_template my_template]` then one could use `{
render('my_template') }` in a display_data section.
This feature can also be used for continuous LED updates using the
[SET_LED_TEMPLATE](G-Codes.md#set_led_template) command.
```
[display_template my_template_name]
@@ -3570,9 +3576,9 @@ display_data section.
# "param_speed = 75" might have a caller with
# "render('my_template_name', param_speed=80)". Parameter names may
# not use upper case characters.
#text:
# The text to return when the render() function is called for this
# template. This field is evaluated using command templates (see
text:
# The text to return when the this template is rendered. This field
# is evaluated using command templates (see
# docs/Command_Templates.md). This parameter must be provided.
```

View File

@@ -714,6 +714,23 @@ timeout. If careful timing is not needed, the optional SYNC=0
parameter can be specified to apply the changes without resetting the
idle timeout.
#### SET_LED_TEMPLATE
`SET_LED_TEMPLATE LED=<led_name> TEMPLATE=<template_name>
[INDEX=<index>]`: Assign a
[display_template](Config_Reference.md#display_template) to a given
[LED](Config_Reference.md#leds). For example, if one defined a
`[display_template my_led_template]` config section then one could
assign `TEMPLATE=my_led_template` here. The display_template should
produce a comma separated string containing four floating point
numbers corresponding to red, green, blue, and white color settings.
The template will be continuously evaluated and the LED will be
automatically set to the resulting colors. If INDEX is not specified
then all chips in the LED's daisy-chain will be set to the template,
otherwise only the chip with the given index will be updated. If
TEMPLATE is an empty string then this command will clear any previous
template assigned to the LED (one can then use `SET_LED` commands to
manage the LED's color settings).
### [output_pin]
The following command is available when an