942 lines
21 KiB
Nix
942 lines
21 KiB
Nix
{
|
|
language = "en";
|
|
|
|
intents = {
|
|
TimerDuration.data = [
|
|
{
|
|
sentences = [
|
|
"how [much] long[er] on [the] {entity_id} timer"
|
|
"how much time is left on [the] {entity_id} timer"
|
|
"how long until [the] {entity_id} timer (is finished|finishes)"
|
|
];
|
|
}
|
|
{
|
|
sentences = [
|
|
"how [much] long[er] on [the] timer[s]"
|
|
"how much time is left on [the] {entity_id} timer[s]"
|
|
"how long until [the] timer[s] (is finished|finishes)"
|
|
];
|
|
slots.entity_id = "null";
|
|
}
|
|
];
|
|
|
|
TimerPause.data = [
|
|
{
|
|
sentences = ["(pause|interrupt) [the] {entity_id} timer[s]"];
|
|
slots.timer_action = "pause";
|
|
}
|
|
{
|
|
sentences = ["(pause|interrupt) [the] timer[s]"];
|
|
slots = {
|
|
entity_id = "null";
|
|
timer_action = "pause";
|
|
};
|
|
}
|
|
{
|
|
sentences = ["(pause|interrupt) all timer[s]"];
|
|
slots = {
|
|
entity_id = "all";
|
|
timer_action = "pause";
|
|
};
|
|
}
|
|
{
|
|
sentences = ["(resume|continue) [the] {entity_id} timer[s]"];
|
|
slots.timer_action = "resume";
|
|
}
|
|
{
|
|
sentences = ["(resume|continue) [the] timer[s]"];
|
|
slots = {
|
|
entity_id = "null";
|
|
timer_action = "resume";
|
|
};
|
|
}
|
|
{
|
|
sentences = ["(resume|continue) all timer[s]"];
|
|
slots = {
|
|
entity_id = "all";
|
|
timer_action = "resume";
|
|
};
|
|
}
|
|
];
|
|
|
|
TimerStart.data = [
|
|
{
|
|
sentences = [
|
|
"(start|set) [a] timer (for|with) {hours} hour[s] [and] {minutes} minute[s] [and] {seconds} seconde[s]"
|
|
];
|
|
}
|
|
|
|
{
|
|
sentences = [
|
|
"(start|set) [(a|an)] timer (for|with) {hours} hour[s]"
|
|
"(start|set) [(a|an)] {hours} hour[s] timer"
|
|
];
|
|
slots = {
|
|
minutes = 0;
|
|
seconds = 0;
|
|
};
|
|
}
|
|
|
|
{
|
|
sentences = [
|
|
"(start|set) [a] timer (for|with) {minutes} minute[s]"
|
|
"(start|set) [(a|an)] {minutes} minute[s] timer"
|
|
];
|
|
slots = {
|
|
hours = 0;
|
|
seconds = 0;
|
|
};
|
|
}
|
|
|
|
{
|
|
sentences = [
|
|
"(start|set) [a] timer (for|with) {seconds} seconde[s]"
|
|
"(start|set) [(a|an)] {seconds} second[s] timer"
|
|
];
|
|
slots = {
|
|
hours = 0;
|
|
minutes = 0;
|
|
};
|
|
}
|
|
|
|
{
|
|
sentences = [
|
|
"(start|set) [a] timer (for|with) {minutes} minute[s] [and] {seconds} seconde[s]"
|
|
];
|
|
slots.hours = 0;
|
|
}
|
|
|
|
{
|
|
sentences = [
|
|
"(start|set) [a] timer (for|with) {hours} hour[s] [and] {minutes} minute[s]"
|
|
];
|
|
slots.seconds = 0;
|
|
}
|
|
];
|
|
|
|
TimerStop.data = [
|
|
{sentences = ["(stop|cancel|turn off) [the] {entity_id} timer[s]"];}
|
|
{
|
|
sentences = ["(stop|cancel|turn off) [the] timer[s]"];
|
|
slots.entity_id = "null";
|
|
}
|
|
];
|
|
};
|
|
|
|
lists = {
|
|
entity_id.values = [
|
|
{
|
|
"in" = "(first|one|1)";
|
|
out = "timer.assist_timer1";
|
|
}
|
|
{
|
|
"in" = "(second|two|2)";
|
|
out = "timer.assist_timer2";
|
|
}
|
|
{
|
|
"in" = "(third|three|3)";
|
|
out = "timer.assist_timer3";
|
|
}
|
|
{
|
|
"in" = "(all|every)";
|
|
out = "all";
|
|
}
|
|
];
|
|
|
|
hours.values = [
|
|
{
|
|
"in" = "(one|1)";
|
|
out = 1;
|
|
}
|
|
{
|
|
"in" = "(two|2)";
|
|
out = 2;
|
|
}
|
|
{
|
|
"in" = "(three|3)";
|
|
out = 3;
|
|
}
|
|
{
|
|
"in" = "(four|4)";
|
|
out = 4;
|
|
}
|
|
{
|
|
"in" = "(five|5)";
|
|
out = 5;
|
|
}
|
|
{
|
|
"in" = "(six|6)";
|
|
out = 6;
|
|
}
|
|
{
|
|
"in" = "(seven|7)";
|
|
out = 7;
|
|
}
|
|
{
|
|
"in" = "(eight|8)";
|
|
out = 8;
|
|
}
|
|
{
|
|
"in" = "(nine|9)";
|
|
out = 9;
|
|
}
|
|
{
|
|
"in" = "(ten|10)";
|
|
out = 10;
|
|
}
|
|
{
|
|
"in" = "(eleven|11)";
|
|
out = 11;
|
|
}
|
|
{
|
|
"in" = "(twelve|12)";
|
|
out = 12;
|
|
}
|
|
{
|
|
"in" = "(thirteen|13)";
|
|
out = 13;
|
|
}
|
|
{
|
|
"in" = "(fourteen|14)";
|
|
out = 14;
|
|
}
|
|
{
|
|
"in" = "(fifteen|15)";
|
|
out = 15;
|
|
}
|
|
{
|
|
"in" = "(sixteen|16)";
|
|
out = 16;
|
|
}
|
|
{
|
|
"in" = "(seventeen|17)";
|
|
out = 17;
|
|
}
|
|
{
|
|
"in" = "(eighteen|18)";
|
|
out = 18;
|
|
}
|
|
{
|
|
"in" = "(nineteen|19)";
|
|
out = 19;
|
|
}
|
|
{
|
|
"in" = "(twenty|20)";
|
|
out = 20;
|
|
}
|
|
{
|
|
"in" = "(twenty-one|21)";
|
|
out = 21;
|
|
}
|
|
{
|
|
"in" = "(twenty-two|22)";
|
|
out = 22;
|
|
}
|
|
{
|
|
"in" = "(twenty-three|23)";
|
|
out = 23;
|
|
}
|
|
{
|
|
"in" = "(twenty-four|24)";
|
|
out = 24;
|
|
}
|
|
];
|
|
|
|
minutes.values = [
|
|
{
|
|
"in" = "(one|1)";
|
|
out = 1;
|
|
}
|
|
{
|
|
"in" = "(two|2)";
|
|
out = 2;
|
|
}
|
|
{
|
|
"in" = "(three|3)";
|
|
out = 3;
|
|
}
|
|
{
|
|
"in" = "(four|4)";
|
|
out = 4;
|
|
}
|
|
{
|
|
"in" = "(five|5)";
|
|
out = 5;
|
|
}
|
|
{
|
|
"in" = "(six|6)";
|
|
out = 6;
|
|
}
|
|
{
|
|
"in" = "(seven|7)";
|
|
out = 7;
|
|
}
|
|
{
|
|
"in" = "(eight|8)";
|
|
out = 8;
|
|
}
|
|
{
|
|
"in" = "(nine|9)";
|
|
out = 9;
|
|
}
|
|
{
|
|
"in" = "(ten|10)";
|
|
out = 10;
|
|
}
|
|
{
|
|
"in" = "(eleven|11)";
|
|
out = 11;
|
|
}
|
|
{
|
|
"in" = "(twelve|12)";
|
|
out = 12;
|
|
}
|
|
{
|
|
"in" = "(thirteen|13)";
|
|
out = 13;
|
|
}
|
|
{
|
|
"in" = "(fourteen|14)";
|
|
out = 14;
|
|
}
|
|
{
|
|
"in" = "(fifteen|15)";
|
|
out = 15;
|
|
}
|
|
{
|
|
"in" = "(sixteen|16)";
|
|
out = 16;
|
|
}
|
|
{
|
|
"in" = "(seventeen|17)";
|
|
out = 17;
|
|
}
|
|
{
|
|
"in" = "(eighteen|18)";
|
|
out = 18;
|
|
}
|
|
{
|
|
"in" = "(nineteen|19)";
|
|
out = 19;
|
|
}
|
|
{
|
|
"in" = "(twenty|20)";
|
|
out = 20;
|
|
}
|
|
{
|
|
"in" = "(twenty-one|21)";
|
|
out = 21;
|
|
}
|
|
{
|
|
"in" = "(twenty-two|22)";
|
|
out = 22;
|
|
}
|
|
{
|
|
"in" = "(twenty-three|23)";
|
|
out = 23;
|
|
}
|
|
{
|
|
"in" = "(twenty-four|24)";
|
|
out = 24;
|
|
}
|
|
{
|
|
"in" = "(twenty-five|25)";
|
|
out = 25;
|
|
}
|
|
{
|
|
"in" = "(twenty-six|26)";
|
|
out = 26;
|
|
}
|
|
{
|
|
"in" = "(twenty-seven|27)";
|
|
out = 27;
|
|
}
|
|
{
|
|
"in" = "(twenty-eight|28)";
|
|
out = 28;
|
|
}
|
|
{
|
|
"in" = "(twenty-nine|29)";
|
|
out = 29;
|
|
}
|
|
{
|
|
"in" = "(thirty|30)";
|
|
out = 30;
|
|
}
|
|
{
|
|
"in" = "(thirty-one|31)";
|
|
out = 31;
|
|
}
|
|
{
|
|
"in" = "(thirty-two|32)";
|
|
out = 32;
|
|
}
|
|
{
|
|
"in" = "(thirty-three|33)";
|
|
out = 33;
|
|
}
|
|
{
|
|
"in" = "(thirty-four|34)";
|
|
out = 34;
|
|
}
|
|
{
|
|
"in" = "(thirty-five|35)";
|
|
out = 35;
|
|
}
|
|
{
|
|
"in" = "(thirty-six|36)";
|
|
out = 36;
|
|
}
|
|
{
|
|
"in" = "(thirty-seven|37)";
|
|
out = 37;
|
|
}
|
|
{
|
|
"in" = "(thirty-eight|38)";
|
|
out = 38;
|
|
}
|
|
{
|
|
"in" = "(thirty-nine|39)";
|
|
out = 39;
|
|
}
|
|
{
|
|
"in" = "(forty|40)";
|
|
out = 40;
|
|
}
|
|
{
|
|
"in" = "(forty-one|41)";
|
|
out = 41;
|
|
}
|
|
{
|
|
"in" = "(forty-two|42)";
|
|
out = 42;
|
|
}
|
|
{
|
|
"in" = "(forty-three|43)";
|
|
out = 43;
|
|
}
|
|
{
|
|
"in" = "(forty-four|44)";
|
|
out = 44;
|
|
}
|
|
{
|
|
"in" = "(forty-five|45)";
|
|
out = 45;
|
|
}
|
|
{
|
|
"in" = "(forty-six|46)";
|
|
out = 46;
|
|
}
|
|
{
|
|
"in" = "(forty-seven|47)";
|
|
out = 47;
|
|
}
|
|
{
|
|
"in" = "(forty-eight|48)";
|
|
out = 48;
|
|
}
|
|
{
|
|
"in" = "(forty-nine|49)";
|
|
out = 49;
|
|
}
|
|
{
|
|
"in" = "(fifty|50)";
|
|
out = 50;
|
|
}
|
|
{
|
|
"in" = "(fifty-one|51)";
|
|
out = 51;
|
|
}
|
|
{
|
|
"in" = "(fifty-two|52)";
|
|
out = 52;
|
|
}
|
|
{
|
|
"in" = "(fifty-three|53)";
|
|
out = 53;
|
|
}
|
|
{
|
|
"in" = "(fifty-four|54)";
|
|
out = 54;
|
|
}
|
|
{
|
|
"in" = "(fifty-five|55)";
|
|
out = 55;
|
|
}
|
|
{
|
|
"in" = "(fifty-six|56)";
|
|
out = 56;
|
|
}
|
|
{
|
|
"in" = "(fifty-seven|57)";
|
|
out = 57;
|
|
}
|
|
{
|
|
"in" = "(fifty-eight|58)";
|
|
out = 58;
|
|
}
|
|
{
|
|
"in" = "(fifty-nine|59)";
|
|
out = 59;
|
|
}
|
|
{
|
|
"in" = "(sixty|60)";
|
|
out = 60;
|
|
}
|
|
];
|
|
|
|
seconds.values = [
|
|
{
|
|
"in" = "(one|1)";
|
|
out = 1;
|
|
}
|
|
{
|
|
"in" = "(two|2)";
|
|
out = 2;
|
|
}
|
|
{
|
|
"in" = "(three|3)";
|
|
out = 3;
|
|
}
|
|
{
|
|
"in" = "(four|4)";
|
|
out = 4;
|
|
}
|
|
{
|
|
"in" = "(five|5)";
|
|
out = 5;
|
|
}
|
|
{
|
|
"in" = "(six|6)";
|
|
out = 6;
|
|
}
|
|
{
|
|
"in" = "(seven|7)";
|
|
out = 7;
|
|
}
|
|
{
|
|
"in" = "(eight|8)";
|
|
out = 8;
|
|
}
|
|
{
|
|
"in" = "(nine|9)";
|
|
out = 9;
|
|
}
|
|
{
|
|
"in" = "(ten|10)";
|
|
out = 10;
|
|
}
|
|
{
|
|
"in" = "(eleven|11)";
|
|
out = 11;
|
|
}
|
|
{
|
|
"in" = "(twelve|12)";
|
|
out = 12;
|
|
}
|
|
{
|
|
"in" = "(thirteen|13)";
|
|
out = 13;
|
|
}
|
|
{
|
|
"in" = "(fourteen|14)";
|
|
out = 14;
|
|
}
|
|
{
|
|
"in" = "(fifteen|15)";
|
|
out = 15;
|
|
}
|
|
{
|
|
"in" = "(sixteen|16)";
|
|
out = 16;
|
|
}
|
|
{
|
|
"in" = "(seventeen|17)";
|
|
out = 17;
|
|
}
|
|
{
|
|
"in" = "(eighteen|18)";
|
|
out = 18;
|
|
}
|
|
{
|
|
"in" = "(nineteen|19)";
|
|
out = 19;
|
|
}
|
|
{
|
|
"in" = "(twenty|20)";
|
|
out = 20;
|
|
}
|
|
{
|
|
"in" = "(twenty-one|21)";
|
|
out = 21;
|
|
}
|
|
{
|
|
"in" = "(twenty-two|22)";
|
|
out = 22;
|
|
}
|
|
{
|
|
"in" = "(twenty-three|23)";
|
|
out = 23;
|
|
}
|
|
{
|
|
"in" = "(twenty-four|24)";
|
|
out = 24;
|
|
}
|
|
{
|
|
"in" = "(twenty-five|25)";
|
|
out = 25;
|
|
}
|
|
{
|
|
"in" = "(twenty-six|26)";
|
|
out = 26;
|
|
}
|
|
{
|
|
"in" = "(twenty-seven|27)";
|
|
out = 27;
|
|
}
|
|
{
|
|
"in" = "(twenty-eight|28)";
|
|
out = 28;
|
|
}
|
|
{
|
|
"in" = "(twenty-nine|29)";
|
|
out = 29;
|
|
}
|
|
{
|
|
"in" = "(thirty|30)";
|
|
out = 30;
|
|
}
|
|
{
|
|
"in" = "(thirty-one|31)";
|
|
out = 31;
|
|
}
|
|
{
|
|
"in" = "(thirty-two|32)";
|
|
out = 32;
|
|
}
|
|
{
|
|
"in" = "(thirty-three|33)";
|
|
out = 33;
|
|
}
|
|
{
|
|
"in" = "(thirty-four|34)";
|
|
out = 34;
|
|
}
|
|
{
|
|
"in" = "(thirty-five|35)";
|
|
out = 35;
|
|
}
|
|
{
|
|
"in" = "(thirty-six|36)";
|
|
out = 36;
|
|
}
|
|
{
|
|
"in" = "(thirty-seven|37)";
|
|
out = 37;
|
|
}
|
|
{
|
|
"in" = "(thirty-eight|38)";
|
|
out = 38;
|
|
}
|
|
{
|
|
"in" = "(thirty-nine|39)";
|
|
out = 39;
|
|
}
|
|
{
|
|
"in" = "(forty|40)";
|
|
out = 40;
|
|
}
|
|
{
|
|
"in" = "(forty-one|41)";
|
|
out = 41;
|
|
}
|
|
{
|
|
"in" = "(forty-two|42)";
|
|
out = 42;
|
|
}
|
|
{
|
|
"in" = "(forty-three|43)";
|
|
out = 43;
|
|
}
|
|
{
|
|
"in" = "(forty-four|44)";
|
|
out = 44;
|
|
}
|
|
{
|
|
"in" = "(forty-five|45)";
|
|
out = 45;
|
|
}
|
|
{
|
|
"in" = "(forty-six|46)";
|
|
out = 46;
|
|
}
|
|
{
|
|
"in" = "(forty-seven|47)";
|
|
out = 47;
|
|
}
|
|
{
|
|
"in" = "(forty-eight|48)";
|
|
out = 48;
|
|
}
|
|
{
|
|
"in" = "(forty-nine|49)";
|
|
out = 49;
|
|
}
|
|
{
|
|
"in" = "(fifty|50)";
|
|
out = 50;
|
|
}
|
|
{
|
|
"in" = "(fifty-one|51)";
|
|
out = 51;
|
|
}
|
|
{
|
|
"in" = "(fifty-two|52)";
|
|
out = 52;
|
|
}
|
|
{
|
|
"in" = "(fifty-three|53)";
|
|
out = 53;
|
|
}
|
|
{
|
|
"in" = "(fifty-four|54)";
|
|
out = 54;
|
|
}
|
|
{
|
|
"in" = "(fifty-five|55)";
|
|
out = 55;
|
|
}
|
|
{
|
|
"in" = "(fifty-six|56)";
|
|
out = 56;
|
|
}
|
|
{
|
|
"in" = "(fifty-seven|57)";
|
|
out = 57;
|
|
}
|
|
{
|
|
"in" = "(fifty-eight|58)";
|
|
out = 58;
|
|
}
|
|
{
|
|
"in" = "(fifty-nine|59)";
|
|
out = 59;
|
|
}
|
|
{
|
|
"in" = "(sixty|60)";
|
|
out = 60;
|
|
}
|
|
];
|
|
};
|
|
|
|
responses.intents = {
|
|
TimerDuration.default = ''
|
|
{%- set timer_amount = states.timer
|
|
| selectattr('state','eq','active')
|
|
| selectattr('entity_id','match','timer.assist_timer*')
|
|
| map(attribute='entity_id')
|
|
| list
|
|
| length -%}
|
|
|
|
{% if timer_amount == 0 %}
|
|
There are no timers active.
|
|
{% else %}
|
|
{%- if slots.entity_id != 'all' and slots.entity_id != 'null' %}
|
|
{%- set active_timers = states.timer
|
|
| selectattr('state','eq','active')
|
|
| selectattr('entity_id','match',slots.entity_id)
|
|
| list -%}
|
|
{%- else%}
|
|
{%- set active_timers = states.timer
|
|
| selectattr('state','eq','active')
|
|
| selectattr('entity_id','match','timer.assist_timer*')
|
|
| list -%}
|
|
{%- endif %}
|
|
|
|
{% if active_timers|length == 0 %}
|
|
{%- if slots.entity_id != 'all' and slots.entity_id != 'null' %}
|
|
This timer is not active.
|
|
{%- else %}
|
|
There are no timers active.
|
|
{%- endif %}
|
|
{% elif active_timers|length > 1 %}
|
|
There are {{active_timers|length }} timers active.
|
|
{% endif %}
|
|
|
|
{% for timer in active_timers %}
|
|
{% set timer_id = timer.entity_id %}
|
|
{% set timer_finishes_at = state_attr(timer_id, 'finishes_at') %}
|
|
|
|
{% set time_remaining = as_datetime(timer_finishes_at) - now() %}
|
|
{% set hours_remaining = time_remaining.total_seconds() // 3600 %}
|
|
{% set minutes_remaining = (time_remaining.total_seconds() % 3600) // 60 %}
|
|
{% set seconds_remaining = time_remaining.total_seconds() % 60 %}
|
|
|
|
{% if timer.state == "active" or timer.state == "paused" %}
|
|
{% if slots.entity_id != timer_id %}
|
|
{{ state_attr(timer_id, 'friendly_name')[9:] }}
|
|
|
|
{% if timer.state == "paused" %}
|
|
is paused and
|
|
{% endif %}
|
|
has
|
|
{% else %}
|
|
There are
|
|
{% endif %}
|
|
|
|
{% if hours_remaining > 0 %}
|
|
{{ hours_remaining | round }} hours
|
|
{% endif %}
|
|
|
|
{% if minutes_remaining == 1 %}
|
|
1 minute
|
|
{% endif %}
|
|
|
|
{% if minutes_remaining > 1 %}
|
|
{{ minutes_remaining | round }} minutes
|
|
{% endif %}
|
|
|
|
{% if seconds_remaining == 1 and hours_remaining == 0%}
|
|
1 seconde
|
|
{% endif %}
|
|
|
|
{% if seconds_remaining > 1 and hours_remaining == 0 %}
|
|
{{ seconds_remaining | round }} seconds
|
|
{% endif %}
|
|
remaining.
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endif %}
|
|
'';
|
|
|
|
TimerPause.default = ''
|
|
{%- if slots.timer_action is set or slots.timer_action != "" -%}
|
|
{%- set timer_action = slots.timer_action -%}
|
|
{%- else -%}
|
|
{%- set timer_action = "resume" -%}
|
|
{%- endif -%}
|
|
|
|
{%- set timer_amount = states.timer
|
|
| selectattr('state','eq','active')
|
|
| selectattr('entity_id','match','timer.assist_timer*')
|
|
| map(attribute='entity_id')
|
|
| list
|
|
| length -%}
|
|
|
|
{% if timer_amount == 0 %}
|
|
There are no timers active.
|
|
|
|
{% elif timer_amount > 1 and slots.entity_id == 'null' %}
|
|
There are multiple timers active.
|
|
{{ (["Please specify which timer you mean.", "Please specify which timer.", "Specify which timer you mean.", ""] | random) }}
|
|
|
|
{% elif slots.entity_id == 'all' %}
|
|
{{ (["Understood. ", "Okay. ", "Of course. ", ""] | random) }}.
|
|
All timers
|
|
{% if timer_action == "pause" %}
|
|
paused
|
|
{% else %}
|
|
resumed
|
|
{% endif %}
|
|
.
|
|
|
|
{% elif (as_timestamp(now()) - as_timestamp(states.timer.assist_timer1.last_changed) < 3 and states('timer.assist_timer1') == 'idle') or
|
|
(as_timestamp(now()) - as_timestamp(states.timer.assist_timer2.last_changed) < 3 and states('timer.assist_timer2') == 'idle') or
|
|
(as_timestamp(now()) - as_timestamp(states.timer.assist_timer3.last_changed) < 3 and states('timer.assist_timer3') == 'idle') %}
|
|
Timer
|
|
{% if timer_action == "pause" %}
|
|
paused
|
|
{% else %}
|
|
resumed
|
|
{% endif %}
|
|
.
|
|
|
|
{% elif (timer_amount == 1 and slots.entity_id == 'null') or
|
|
(slots.entity_id == 'timer.assist_timer1' and states('timer.assist_timer1') != 'idle') or
|
|
(slots.entity_id == 'timer.assist_timer2' and states('timer.assist_timer2') != 'idle') or
|
|
(slots.entity_id == 'timer.assist_timer3' and states('timer.assist_timer3') != 'idle') %}
|
|
{{ (["Understood. ", "Okay. ", "Of course. ", ""] | random) }}Timer
|
|
{% if timer_action == "pause" %}
|
|
paused
|
|
{% else %}
|
|
resumed
|
|
{% endif %}
|
|
.
|
|
{% else %}
|
|
|
|
This timer is not active.
|
|
{% endif %}
|
|
'';
|
|
|
|
TimerStart.default = ''
|
|
{{ (["Understood. ", "Okay. ", "Of course. ", ""] | random) +
|
|
(["I will start a timer for ", "Timer started with ", "Starting timer with ", "Timer active for "] | random)}}
|
|
|
|
{% if (slots.hours | int(default=0)) == 1 %}
|
|
1 hour
|
|
{% elif (slots.hours | int(default=0)) > 1 %}
|
|
{{ (slots.hours | int)}} hours
|
|
{% endif %}
|
|
|
|
{% if (slots.hours | int(default=0)) > 0 and ((slots.minutes | int(default=0)) > 0 or (slots.seconds | int(default=0)) > 0) %}
|
|
and
|
|
{% endif %}
|
|
|
|
{% if (slots.minutes | int(default=0)) == 1 %}
|
|
1 minute
|
|
{% elif (slots.minutes | int(default=0)) > 1 %}
|
|
{{ (slots.minutes | int)}} minutes
|
|
{% endif %}
|
|
|
|
{% if (slots.minutes | int(default=0)) > 0 and (slots.seconds | int(default=0)) > 0 %}
|
|
and
|
|
{% endif %}
|
|
|
|
{% if (slots.seconds | int(default=0)) == 1 %}
|
|
1 second
|
|
{% elif (slots.seconds | int(default=0)) > 1 %}
|
|
{{ (slots.seconds | int)}} secondes
|
|
{% endif %}.
|
|
'';
|
|
|
|
TimerStop.default = ''
|
|
{%- set timer_amount = states.timer
|
|
| selectattr('state','eq','active')
|
|
| selectattr('entity_id','match','timer.assist_timer*')
|
|
| map(attribute='entity_id')
|
|
| list
|
|
| length -%}
|
|
|
|
{% set mediaplayer = namespace(entity=[]) %}
|
|
|
|
{% for player in states.media_player %}
|
|
{%- if ((state_attr(player.entity_id, 'media_content_id') | lower != 'none'
|
|
and state_attr(player.entity_id, 'media_content_id')[:47][38:] == 'Timer.mp3')
|
|
or state_attr(player.entity_id, 'media_title') | lower == 'timer')
|
|
and states(player.entity_id) == 'playing' -%}
|
|
{%- set mediaplayer.entity = player.entity_id -%}
|
|
{% endif -%}
|
|
{% endfor %}
|
|
|
|
{% if mediaplayer.entity[:12] == 'media_player' %}
|
|
{{ (["Understood. ", "Okay. ", "Of course. ", ""] | random) }}Timer stopped.
|
|
{% elif timer_amount == 0 and
|
|
(as_timestamp(now()) - as_timestamp(states.timer.assist_timer1.last_changed) > 3 and states('timer.assist_timer1') == 'idle') and
|
|
(as_timestamp(now()) - as_timestamp(states.timer.assist_timer2.last_changed) > 3 and states('timer.assist_timer2') == 'idle') and
|
|
(as_timestamp(now()) - as_timestamp(states.timer.assist_timer3.last_changed) > 3 and states('timer.assist_timer3') == 'idle') %}
|
|
There are no timers active.
|
|
{% elif (slots_entity_id == 'timer.assist_timer1' and states('timer.assist_timer1') == 'idle') or
|
|
(slots_entity_id == 'timer.assist_timer2' and states('timer.assist_timer2') == 'idle') or
|
|
(slots_entity_id == 'timer.assist_timer3' and states('timer.assist_timer3') == 'idle') %}
|
|
This timer is not active.
|
|
{% elif timer_amount > 1 and slots_entity_id == 'null' %}
|
|
There are multiple timers active.
|
|
{{ (["Please specify which timer you mean.", "Please specify which timer.", "Specify which timer you mean.", ""] | random) }}
|
|
{% elif slots_entity_id == 'all' %}
|
|
{{ (["Understood. ", "Okay. ", "Of course. ", ""] | random) }}All timers stopped.
|
|
{% else %}
|
|
{{ (["Understood. ", "Okay. ", "Of course. ", ""] | random) }}Timer stopped.
|
|
{% endif %}
|
|
'';
|
|
};
|
|
}
|