mirror of
https://github.com/house-of-abbey/GarminHomeAssistant.git
synced 2025-06-16 03:18:35 +00:00
Added examples for templates and custom switches
This commit is contained in:
59
examples/Switches.md
Normal file
59
examples/Switches.md
Normal file
@ -0,0 +1,59 @@
|
||||
# Switches
|
||||
|
||||
In order to facilitate custom switches at this time, you must create a template switch in HomeAssistant.
|
||||
|
||||
```yaml
|
||||
switch:
|
||||
- platform: template
|
||||
switches:
|
||||
<switch-name>:
|
||||
friendly_name: <name>
|
||||
value_template: <value>
|
||||
turn_on:
|
||||
service: <service>
|
||||
data:
|
||||
entity_id: <entity>
|
||||
<attribute>: <value>
|
||||
turn_off:
|
||||
service: <service>
|
||||
data:
|
||||
entity_id: <entity>
|
||||
<attribute>: <value>
|
||||
```
|
||||
|
||||
Then you can use the following in your config:
|
||||
|
||||
```json
|
||||
{
|
||||
"entity": "switch.<switch-name>",
|
||||
"name": "<name>",
|
||||
"type": "toggle"
|
||||
}
|
||||
```
|
||||
|
||||
## Example (covers)
|
||||
|
||||
```yaml
|
||||
switch:
|
||||
- platform: template
|
||||
switches:
|
||||
cover:
|
||||
friendly_name: Cover
|
||||
value_template: "{{ is_state('cover.cover', 'open') }}"
|
||||
turn_on:
|
||||
service: cover.open_cover
|
||||
data:
|
||||
entity_id: cover.cover
|
||||
turn_off:
|
||||
service: cover.close_cover
|
||||
data:
|
||||
entity_id: cover.cover
|
||||
```
|
||||
|
||||
```json
|
||||
{
|
||||
"entity": "switch.cover",
|
||||
"name": "Cover",
|
||||
"type": "toggle"
|
||||
}
|
||||
```
|
66
examples/Templates.md
Normal file
66
examples/Templates.md
Normal file
@ -0,0 +1,66 @@
|
||||
# Templates
|
||||
|
||||
In order to provide the most functionality possible the content of the card is a user-defined template (i.e. you generate your own text). This allows you to do some pretty cool things. It also makes the config a bit more complicated. This page will help you understand how to use templates.
|
||||
|
||||
In this file anything between `<` and `>` is a placeholder. Replace it with the appropriate value.
|
||||
|
||||
Anything between `{{` and `}}` is a template. Templates are used to dynamically insert values into the content. For more info see [the docs](https://www.home-assistant.io/docs/configuration/templating/).
|
||||
|
||||
## States
|
||||
|
||||
In this example we get the battery level of the device and add the percent sign. *Very simple*
|
||||
|
||||
```json
|
||||
{
|
||||
"entity": "sensor.<device>_battery_level",
|
||||
"name": "Phone",
|
||||
"type": "template",
|
||||
"content": "{{ states('sensor.<device>_battery_level') }}%"
|
||||
}
|
||||
```
|
||||
|
||||
## Conditionals
|
||||
|
||||
Anything between `{%` and `%}` is a directive (`if`, `else`, `elif`, `endif`, etc.). Conditionals are used to dynamically change the content based on the state of the entity.
|
||||
|
||||
In this example we get the battery level of the device and add the percent sign. If the device is charging we add a plus sign.
|
||||
|
||||
```json
|
||||
{
|
||||
"entity": "sensor.<device>_battery_level",
|
||||
"name": "Phone",
|
||||
"type": "template",
|
||||
"content": "{{ states('sensor.<device>_battery_level') }}%{% if is_state('binary_sensor.<device>_is_charging', 'on') %}+{% endif %}"
|
||||
}
|
||||
```
|
||||
|
||||
Here we also use the else clause as well to give proper text instead of just `on` or `off`.
|
||||
|
||||
```json
|
||||
{
|
||||
"entity": "binary_sensor.garage_doors",
|
||||
"name": "Garage Doors",
|
||||
"type": "template",
|
||||
"content": "{% if is_state('binary_sensor.<door-0>', 'on') %}Open{% else %}Closed{% endif %} {% if is_state('binary_sensor.<door-1>', 'on') %}Open{% else %}Closed{% endif %}"
|
||||
}
|
||||
```
|
||||
|
||||
## Advanced
|
||||
|
||||
Here we generate a bar graph of the battery level. We use the following steps to do this:
|
||||
|
||||
- Convert the state to a number.
|
||||
- Divide by 100 to get a fraction.
|
||||
- Multiply by the width to get the number of `#`s.
|
||||
- Multiply by the `#` char to make a string.
|
||||
- Subtract the width from the number of `#`s to get the number of `_`s.
|
||||
- Multiply by the `_` char to make a string.
|
||||
|
||||
```json
|
||||
{
|
||||
"entity": "sensor.<device>_battery_level",
|
||||
"name": "Phone",
|
||||
"type": "template",
|
||||
"content": "{{ states('sensor.<device>_battery_level') }}%{% if is_state('binary_sensor.<device>_is_charging', 'on') %}+{% endif %} {{ '#' * (((states('sensor.<device>_battery_level') | int) / 100 * <width>) | int) }}{{ '_' * (<width> - (((states('sensor.<device>_battery_level') | int) / 100 * <width>) | int)) }}"
|
||||
}
|
||||
```
|
Reference in New Issue
Block a user