@
Faece Dan zou ik denk ik doen iets als (beetje aangepast voor mezelf om te testen). En bij een tap roep ik dan een script aan met de optie zodat je er iets mee kunt doen.
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
| type: horizontal-stack
cards:
- type: custom:mushroom-template-card
tap_action:
action: call-service
service: script.play_audio
service_data:
option: "{{ states('input_text.test').split(',')[0] }}"
primary: "{{ states('input_text.test').split(',')[0] }}"
icon: >
{% if states('input_text.test').split(',')[0] is defined %}
mdi:volume-high
{% else %}
mdi:volume-off
{% endif %}
icon_color: >
{% if states('input_text.test').split(',')[0] is defined %}
yellow
{% else %}
grey
{% endif %}
- type: custom:mushroom-template-card
tap_action:
action: call-service
service: script.play_audio
service_data:
option: "{{ states('input_text.test').split(',')[1] }}"
primary: "{{ states('input_text.test').split(',')[1] }}"
icon: >
{% if states('input_text.test').split(',')[1] is defined %}
mdi:volume-high
{% else %}
mdi:volume-off
{% endif %}
icon_color: >
{% if states('input_text.test').split(',')[1] is defined %}
yellow
{% else %}
grey
{% endif %} |
En qua uitleg van het script, je bent wel bekend met de field toch?
In de basis is het dus een chooser met twee opties, een voor iets toevoegen en één voor iets verwijderen uit de lijst. Primair gebeurd dit door te kijken naar wat het field
add_remove bevat. Het field
option is wat er toegevoegd of verwijdert moet worden.
De tweede conditie van add kijkt of wat in
option staat al voorkomt.
states('input_text.test').split(',') maakt dus van de kommagescheidenlijst een echte lijst.
En derde conditie bij add kijkt of de lijst nog steeds kleiner is dan 4 items.
{{ (states('input_text.test') ~ ',' ~ option)|trim(',') }} plakt een komma achter de lijst en dan de optie. De trim haalt eventuele komma's vooraan of achteraan weg, dit omdat als de lijst leeg is er eigenlijk geen komma voor moet staan als je de optie toevoegt.
Voor verwijderen wordt de kommagescheidenlijst eerst weer omgezet naar een echte lijst. De
reject() gooit vervolgens het item dat overeen komt met de optie weg uit de lijst. Waarna de
join() en
trim() er weer een mooie lijst van maken.