nixos-configs/devices/homie/modules/home-assistant/timer-sentences.nix

943 lines
21 KiB
Nix
Raw Permalink Normal View History

{
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 %}
'';
};
}