home-assistant-intents 2024.4.24__py3-none-any.whl → 2024.6.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- home_assistant_intents/__init__.py +15 -0
- home_assistant_intents/data/ar.json +16 -0
- home_assistant_intents/data/bg.json +26 -0
- home_assistant_intents/data/en.json +284 -3
- home_assistant_intents/data/es.json +56 -8
- home_assistant_intents/data/fr.json +109 -9
- home_assistant_intents/data/nl.json +214 -8
- home_assistant_intents/data/pt.json +30 -2
- home_assistant_intents/data/ro.json +271 -1
- home_assistant_intents/data/ru.json +96 -3
- {home_assistant_intents-2024.4.24.dist-info → home_assistant_intents-2024.6.3.dist-info}/METADATA +1 -1
- {home_assistant_intents-2024.4.24.dist-info → home_assistant_intents-2024.6.3.dist-info}/RECORD +16 -16
- {home_assistant_intents-2024.4.24.dist-info → home_assistant_intents-2024.6.3.dist-info}/WHEEL +1 -1
- {home_assistant_intents-2024.4.24.dist-info → home_assistant_intents-2024.6.3.dist-info}/LICENSE.md +0 -0
- {home_assistant_intents-2024.4.24.dist-info → home_assistant_intents-2024.6.3.dist-info}/top_level.txt +0 -0
- {home_assistant_intents-2024.4.24.dist-info → home_assistant_intents-2024.6.3.dist-info}/zip-safe +0 -0
|
@@ -92,6 +92,21 @@ class ErrorKey(str, Enum):
|
|
|
92
92
|
DUPLICATE_ENTITIES_IN_FLOOR = "duplicate_entities_in_floor"
|
|
93
93
|
"""More than one entity in an floor matched with the same name."""
|
|
94
94
|
|
|
95
|
+
FEATURE_NOT_SUPPORTED = "feature_not_supported"
|
|
96
|
+
"""Entity does not support a required feature."""
|
|
97
|
+
|
|
98
|
+
ENTITY_WRONG_STATE = "entity_wrong_state"
|
|
99
|
+
"""Entity is not in the correct state."""
|
|
100
|
+
|
|
101
|
+
TIMER_NOT_FOUND = "timer_not_found"
|
|
102
|
+
"""No timer matched the provided constraints."""
|
|
103
|
+
|
|
104
|
+
MULTIPLE_TIMERS_MATCHED = "multiple_timers_matched"
|
|
105
|
+
"""More than one timer targeted for an action matched the constraints."""
|
|
106
|
+
|
|
107
|
+
NO_TIMER_SUPPORT = "no_timer_support"
|
|
108
|
+
"""Vocie satellite does not support timers."""
|
|
109
|
+
|
|
95
110
|
|
|
96
111
|
def get_intents(
|
|
97
112
|
language: str,
|
|
@@ -220,6 +220,22 @@
|
|
|
220
220
|
}
|
|
221
221
|
]
|
|
222
222
|
},
|
|
223
|
+
"HassNevermind": {
|
|
224
|
+
"data": [
|
|
225
|
+
{
|
|
226
|
+
"sentences": [
|
|
227
|
+
"(لا|ما) تهتم",
|
|
228
|
+
"(لا|ما) يهم",
|
|
229
|
+
"(لا|ما) بهم",
|
|
230
|
+
"(لا|ما) بأس",
|
|
231
|
+
"(لا|ما) تقلق",
|
|
232
|
+
"إنسى",
|
|
233
|
+
"إنساها",
|
|
234
|
+
"إنسى ذلك"
|
|
235
|
+
]
|
|
236
|
+
}
|
|
237
|
+
]
|
|
238
|
+
},
|
|
223
239
|
"HassLightSet": {
|
|
224
240
|
"data": [
|
|
225
241
|
{
|
|
@@ -997,6 +997,26 @@
|
|
|
997
997
|
}
|
|
998
998
|
}
|
|
999
999
|
]
|
|
1000
|
+
},
|
|
1001
|
+
"HassListAddItem": {
|
|
1002
|
+
"data": [
|
|
1003
|
+
{
|
|
1004
|
+
"sentences": [
|
|
1005
|
+
"добави <item> (в|към) <my_list>",
|
|
1006
|
+
"сложи <item> (в|към) <my_list>",
|
|
1007
|
+
"прибави <item> (в|към) <my_list>",
|
|
1008
|
+
"запиши <item> (в|към) <my_list>"
|
|
1009
|
+
],
|
|
1010
|
+
"response": "item_added",
|
|
1011
|
+
"requires_context": {
|
|
1012
|
+
"domain": "todo"
|
|
1013
|
+
},
|
|
1014
|
+
"expansion_rules": {
|
|
1015
|
+
"my_list": "[ моя| моите] [ списък| списъка| списъка ми] [с|със|за] {name} [ми]",
|
|
1016
|
+
"item": "{shopping_list_item:item}"
|
|
1017
|
+
}
|
|
1018
|
+
}
|
|
1019
|
+
]
|
|
1000
1020
|
}
|
|
1001
1021
|
},
|
|
1002
1022
|
"responses": {
|
|
@@ -1035,6 +1055,9 @@
|
|
|
1035
1055
|
"cover_area": "Отворих {{ slots.area }}",
|
|
1036
1056
|
"cover_device_class": "Отворих {{ slots.device_class }}"
|
|
1037
1057
|
},
|
|
1058
|
+
"HassListAddItem": {
|
|
1059
|
+
"item_added": "Добавих {{ slots.item }}"
|
|
1060
|
+
},
|
|
1038
1061
|
"HassGetWeather": {
|
|
1039
1062
|
"default": "{% set weather_condition = {\n 'clear': 'и ясно',\n 'clear-night': 'и ясно',\n 'cloudy': 'и облачно',\n 'exceptional': 'and exceptional',\n 'fog': 'с мъгла',\n 'hail': 'с градушка',\n 'lightning': 'с грамотевици',\n 'lightning-rainy': 'с грамотевици и дъжд',\n 'partlycloudy': 'и с частична облачност',\n 'pouring': 'и обилни дъждове',\n 'rainy': 'и дъждовно',\n 'snowy': 'и снеговалеж',\n 'snowy-rainy': 'със сняг и дъжд',\n 'sunny': 'и слънчево',\n 'windy': 'и ветровито',\n 'windy-variant': 'with wind and clouds'\n} %} {{ state.attributes.get('temperature') }} {{ state.attributes.get('temperature_unit') }} {{ weather_condition.get((state.state | string).lower(), \"\") }}\n"
|
|
1040
1063
|
},
|
|
@@ -1539,6 +1562,9 @@
|
|
|
1539
1562
|
"out": "off"
|
|
1540
1563
|
}
|
|
1541
1564
|
]
|
|
1565
|
+
},
|
|
1566
|
+
"shopping_list_item": {
|
|
1567
|
+
"wildcard": true
|
|
1542
1568
|
}
|
|
1543
1569
|
},
|
|
1544
1570
|
"expansion_rules": {
|
|
@@ -2455,6 +2455,43 @@
|
|
|
2455
2455
|
}
|
|
2456
2456
|
]
|
|
2457
2457
|
},
|
|
2458
|
+
"HassCancelTimer": {
|
|
2459
|
+
"data": [
|
|
2460
|
+
{
|
|
2461
|
+
"sentences": [
|
|
2462
|
+
"<timer_cancel>[ the| my] timer",
|
|
2463
|
+
"<timer_cancel>[ the| my] <timer_start> timer",
|
|
2464
|
+
"<timer_cancel>[ the| my] timer for <timer_start>",
|
|
2465
|
+
"<timer_cancel>[ the| my] {area} timer",
|
|
2466
|
+
"<timer_cancel>[ the| my] timer in <area>",
|
|
2467
|
+
"<timer_cancel>[ the| my] {timer_name:name} timer",
|
|
2468
|
+
"<timer_cancel>[ the| my] timer for {timer_name:name}"
|
|
2469
|
+
]
|
|
2470
|
+
}
|
|
2471
|
+
]
|
|
2472
|
+
},
|
|
2473
|
+
"HassTimerStatus": {
|
|
2474
|
+
"data": [
|
|
2475
|
+
{
|
|
2476
|
+
"sentences": [
|
|
2477
|
+
"timer[s] status",
|
|
2478
|
+
"status of[ the| my] timer[s]",
|
|
2479
|
+
"[how much ]time[ is] left on[ the| my] timer[s]",
|
|
2480
|
+
"<timer_start> timer status",
|
|
2481
|
+
"status of[ the| my] <timer_start> timer",
|
|
2482
|
+
"[how much ]time[ is] left on[ the| my] <timer_start> timer",
|
|
2483
|
+
"{area} timer status",
|
|
2484
|
+
"status of[ the| my] {area} timer[s]",
|
|
2485
|
+
"status of[ the| my] timer[s] in <area>",
|
|
2486
|
+
"[how much ]time[ is] left on[ the| my] {area} timer",
|
|
2487
|
+
"[how much ]time[ is] left on[ the| my] timer[s] in <area>",
|
|
2488
|
+
"{timer_name:name} timer status",
|
|
2489
|
+
"status of[ the| my] {timer_name:name} timer[s]",
|
|
2490
|
+
"[how much ]time[ is] left on[ the| my] {timer_name:name} timer"
|
|
2491
|
+
]
|
|
2492
|
+
}
|
|
2493
|
+
]
|
|
2494
|
+
},
|
|
2458
2495
|
"HassGetWeather": {
|
|
2459
2496
|
"data": [
|
|
2460
2497
|
{
|
|
@@ -2744,6 +2781,22 @@
|
|
|
2744
2781
|
"requires_context": {
|
|
2745
2782
|
"domain": "media_player"
|
|
2746
2783
|
}
|
|
2784
|
+
},
|
|
2785
|
+
{
|
|
2786
|
+
"sentences": [
|
|
2787
|
+
"(unpause|resume)"
|
|
2788
|
+
],
|
|
2789
|
+
"requires_context": {
|
|
2790
|
+
"area": {
|
|
2791
|
+
"slot": true
|
|
2792
|
+
}
|
|
2793
|
+
}
|
|
2794
|
+
},
|
|
2795
|
+
{
|
|
2796
|
+
"sentences": [
|
|
2797
|
+
"(unpause|resume)[ [the |my ](music|[tv ]show[s]|media[ player[s]]) ][ in] <area>",
|
|
2798
|
+
"(unpause|resume) <area> (music|[tv ]show[s]|media[ player[s]])"
|
|
2799
|
+
]
|
|
2747
2800
|
}
|
|
2748
2801
|
]
|
|
2749
2802
|
},
|
|
@@ -2807,6 +2860,32 @@
|
|
|
2807
2860
|
}
|
|
2808
2861
|
]
|
|
2809
2862
|
},
|
|
2863
|
+
"HassIncreaseTimer": {
|
|
2864
|
+
"data": [
|
|
2865
|
+
{
|
|
2866
|
+
"sentences": [
|
|
2867
|
+
"add <timer_duration> to[ the| my] timer",
|
|
2868
|
+
"add <timer_duration> to[ the| my] <timer_start> timer",
|
|
2869
|
+
"add <timer_duration> to[ the| my] timer for <timer_start>",
|
|
2870
|
+
"add <timer_duration> to[ the| my] {area} timer",
|
|
2871
|
+
"add <timer_duration> to[ the| my] timer in <area>",
|
|
2872
|
+
"add <timer_duration> to[ the| my] {timer_name:name} timer",
|
|
2873
|
+
"add <timer_duration> to[ the| my] timer (named|called|for) {timer_name:name}"
|
|
2874
|
+
]
|
|
2875
|
+
},
|
|
2876
|
+
{
|
|
2877
|
+
"sentences": [
|
|
2878
|
+
"increase[ the| my] timer by <timer_duration>",
|
|
2879
|
+
"increase[ the| my] <timer_start> timer by <timer_duration>",
|
|
2880
|
+
"increase[ the| my] timer for <timer_start> by <timer_duration>",
|
|
2881
|
+
"increase[ the| my] {area} timer by <timer_duration>",
|
|
2882
|
+
"increase[ the| my] timer in <area> by <timer_duration>",
|
|
2883
|
+
"increase[ the| my] {timer_name:name} timer by <timer_duration>",
|
|
2884
|
+
"increase[ the| my] timer (named|called|for) {timer_name:name} by <timer_duration>"
|
|
2885
|
+
]
|
|
2886
|
+
}
|
|
2887
|
+
]
|
|
2888
|
+
},
|
|
2810
2889
|
"HassLightSet": {
|
|
2811
2890
|
"data": [
|
|
2812
2891
|
{
|
|
@@ -2952,6 +3031,64 @@
|
|
|
2952
3031
|
"requires_context": {
|
|
2953
3032
|
"domain": "media_player"
|
|
2954
3033
|
}
|
|
3034
|
+
},
|
|
3035
|
+
{
|
|
3036
|
+
"sentences": [
|
|
3037
|
+
"next [track|item]",
|
|
3038
|
+
"(skip [(to [the ]next [(song|track)]|([the ](song|track)|this [(song|track)]))])"
|
|
3039
|
+
],
|
|
3040
|
+
"requires_context": {
|
|
3041
|
+
"area": {
|
|
3042
|
+
"slot": true
|
|
3043
|
+
}
|
|
3044
|
+
}
|
|
3045
|
+
},
|
|
3046
|
+
{
|
|
3047
|
+
"sentences": [
|
|
3048
|
+
"next [track|item] [in ]<area>",
|
|
3049
|
+
"(skip [(to [the ]next [(song|track)]|([the ](song|track)|this [(song|track)]) )];[in ]<area>)"
|
|
3050
|
+
]
|
|
3051
|
+
}
|
|
3052
|
+
]
|
|
3053
|
+
},
|
|
3054
|
+
"HassPauseTimer": {
|
|
3055
|
+
"data": [
|
|
3056
|
+
{
|
|
3057
|
+
"sentences": [
|
|
3058
|
+
"pause[ the| my] timer",
|
|
3059
|
+
"pause[ the| my] <timer_start> timer",
|
|
3060
|
+
"pause[ the| my] timer for <timer_start>",
|
|
3061
|
+
"pause[ the| my] {area} timer",
|
|
3062
|
+
"pause[ the| my] timer in <area>",
|
|
3063
|
+
"pause[ the| my] {timer_name:name} timer",
|
|
3064
|
+
"pause[ the| my] timer (named|called|for) {timer_name:name}"
|
|
3065
|
+
]
|
|
3066
|
+
}
|
|
3067
|
+
]
|
|
3068
|
+
},
|
|
3069
|
+
"HassDecreaseTimer": {
|
|
3070
|
+
"data": [
|
|
3071
|
+
{
|
|
3072
|
+
"sentences": [
|
|
3073
|
+
"remove <timer_duration> from[ the| my] timer",
|
|
3074
|
+
"remove <timer_duration> from[ the| my] <timer_start> timer",
|
|
3075
|
+
"remove <timer_duration> from[ the| my] timer for <timer_start>",
|
|
3076
|
+
"remove <timer_duration> from[ the| my] {area} timer",
|
|
3077
|
+
"remove <timer_duration> from[ the| my] timer in <area>",
|
|
3078
|
+
"remove <timer_duration> from[ the| my] {timer_name:name} timer",
|
|
3079
|
+
"remove <timer_duration> from[ the| my] timer (named|called|for) {timer_name:name}"
|
|
3080
|
+
]
|
|
3081
|
+
},
|
|
3082
|
+
{
|
|
3083
|
+
"sentences": [
|
|
3084
|
+
"decrease[ the| my] timer by <timer_duration>",
|
|
3085
|
+
"decrease[ the| my] <timer_start> timer by <timer_duration>",
|
|
3086
|
+
"decrease[ the| my] timer for <timer_start> by <timer_duration>",
|
|
3087
|
+
"decrease[ the| my] {area} timer by <timer_duration>",
|
|
3088
|
+
"decrease[ the| my] timer in <area> by <timer_duration>",
|
|
3089
|
+
"decrease[ the| my] {timer_name:name} timer by <timer_duration>",
|
|
3090
|
+
"decrease[ the| my] timer (named|called|for) {timer_name:name} by <timer_duration>"
|
|
3091
|
+
]
|
|
2955
3092
|
}
|
|
2956
3093
|
]
|
|
2957
3094
|
},
|
|
@@ -2964,6 +3101,66 @@
|
|
|
2964
3101
|
"requires_context": {
|
|
2965
3102
|
"domain": "media_player"
|
|
2966
3103
|
}
|
|
3104
|
+
},
|
|
3105
|
+
{
|
|
3106
|
+
"sentences": [
|
|
3107
|
+
"pause"
|
|
3108
|
+
],
|
|
3109
|
+
"requires_context": {
|
|
3110
|
+
"area": {
|
|
3111
|
+
"slot": true
|
|
3112
|
+
}
|
|
3113
|
+
}
|
|
3114
|
+
},
|
|
3115
|
+
{
|
|
3116
|
+
"sentences": [
|
|
3117
|
+
"pause[ [the |my ](music|[tv ]show[s]|media[ player[s]]) ][ in] <area>",
|
|
3118
|
+
"pause <area> (music|[tv ]show[s]|media[ player[s]])"
|
|
3119
|
+
]
|
|
3120
|
+
}
|
|
3121
|
+
]
|
|
3122
|
+
},
|
|
3123
|
+
"HassUnpauseTimer": {
|
|
3124
|
+
"data": [
|
|
3125
|
+
{
|
|
3126
|
+
"sentences": [
|
|
3127
|
+
"(resume|continue)[ the| my] timer",
|
|
3128
|
+
"(resume|continue)[ the| my] <timer_start> timer",
|
|
3129
|
+
"(resume|continue)[ the| my] timer for <timer_start>",
|
|
3130
|
+
"(resume|continue)[ the| my] {area} timer",
|
|
3131
|
+
"(resume|continue)[ the| my] timer in <area>",
|
|
3132
|
+
"(resume|continue)[ the| my] timer (named|called|for) {timer_name:name}",
|
|
3133
|
+
"(resume|continue)[ the| my] {timer_name:name} timer"
|
|
3134
|
+
]
|
|
3135
|
+
}
|
|
3136
|
+
]
|
|
3137
|
+
},
|
|
3138
|
+
"HassStartTimer": {
|
|
3139
|
+
"data": [
|
|
3140
|
+
{
|
|
3141
|
+
"sentences": [
|
|
3142
|
+
"<timer_duration> timer",
|
|
3143
|
+
"timer for <timer_duration>",
|
|
3144
|
+
"<timer_duration> timer for {timer_name:name}",
|
|
3145
|
+
"timer for <timer_duration> (named|called) {timer_name:name}",
|
|
3146
|
+
"<timer_set>[ a] <timer_duration> timer",
|
|
3147
|
+
"<timer_set>[ a] timer for <timer_duration>",
|
|
3148
|
+
"<timer_set>[ a] <timer_duration> timer (named|called|for) {timer_name:name}",
|
|
3149
|
+
"<timer_set>[ a] timer (named|called) {timer_name:name} for <timer_duration>",
|
|
3150
|
+
"<timer_set>[ a] timer for <timer_duration> (named|called) {timer_name:name}"
|
|
3151
|
+
],
|
|
3152
|
+
"requires_context": {
|
|
3153
|
+
"area": {
|
|
3154
|
+
"slot": false
|
|
3155
|
+
}
|
|
3156
|
+
}
|
|
3157
|
+
},
|
|
3158
|
+
{
|
|
3159
|
+
"sentences": [
|
|
3160
|
+
"{timer_command:conversation_command} in <timer_duration>",
|
|
3161
|
+
"in <timer_duration> {timer_command:conversation_command}"
|
|
3162
|
+
],
|
|
3163
|
+
"response": "command"
|
|
2967
3164
|
}
|
|
2968
3165
|
]
|
|
2969
3166
|
},
|
|
@@ -3043,6 +3240,29 @@
|
|
|
3043
3240
|
"requires_context": {
|
|
3044
3241
|
"domain": "media_player"
|
|
3045
3242
|
}
|
|
3243
|
+
},
|
|
3244
|
+
{
|
|
3245
|
+
"sentences": [
|
|
3246
|
+
"<numeric_value_set> volume to <volume> [percent]",
|
|
3247
|
+
"turn volume (up|down) to <volume> [percent]",
|
|
3248
|
+
"<numeric_value_set> the volume to <volume> [percent]",
|
|
3249
|
+
"turn (the volume;(up|down)) to <volume> [percent]"
|
|
3250
|
+
],
|
|
3251
|
+
"requires_context": {
|
|
3252
|
+
"area": {
|
|
3253
|
+
"slot": true
|
|
3254
|
+
}
|
|
3255
|
+
}
|
|
3256
|
+
},
|
|
3257
|
+
{
|
|
3258
|
+
"sentences": [
|
|
3259
|
+
"<numeric_value_set> <area> volume to <volume> [percent]",
|
|
3260
|
+
"turn <area> [volume] (up|down) to <volume> [percent]",
|
|
3261
|
+
"turn [volume] (up|down) to <volume> [percent][in ]<area>",
|
|
3262
|
+
"(<numeric_value_set> the volume to <volume> [percent];[in ]<area>)",
|
|
3263
|
+
"<numeric_value_set> the volume [in ]<area> to <volume> [percent]",
|
|
3264
|
+
"(turn (the volume;(up|down)) to <volume> [percent];[in ]<area>)"
|
|
3265
|
+
]
|
|
3046
3266
|
}
|
|
3047
3267
|
]
|
|
3048
3268
|
}
|
|
@@ -3062,6 +3282,8 @@
|
|
|
3062
3282
|
"no_entity": "Sorry, I am not aware of any device called {{ entity }}",
|
|
3063
3283
|
"no_entity_in_area": "Sorry, I am not aware of any device called {{ entity }} in the {{ area }} area",
|
|
3064
3284
|
"no_entity_in_floor": "Sorry, I am not aware of any device called {{ entity }} in the {{ floor }} floor",
|
|
3285
|
+
"entity_wrong_state": "Sorry, no device is {{ state | lower }}",
|
|
3286
|
+
"feature_not_supported": "Sorry, no device supports the required features",
|
|
3065
3287
|
"no_entity_exposed": "Sorry, {{ entity }} is not exposed",
|
|
3066
3288
|
"no_entity_in_area_exposed": "Sorry, {{ entity }} in the {{ area }} area is not exposed",
|
|
3067
3289
|
"no_entity_in_floor_exposed": "Sorry, {{ entity }} in the {{ floor }} floor is not exposed",
|
|
@@ -3073,7 +3295,10 @@
|
|
|
3073
3295
|
"no_device_class_in_floor_exposed": "Sorry, no {{ device_class }} in the {{ floor }} floor is exposed",
|
|
3074
3296
|
"duplicate_entities": "Sorry, there are multiple devices called {{ entity }}",
|
|
3075
3297
|
"duplicate_entities_in_area": "Sorry, there are multiple devices called {{ entity }} in the {{ area }} area",
|
|
3076
|
-
"duplicate_entities_in_floor": "Sorry, there are multiple devices called {{ entity }} in the {{ floor }} floor"
|
|
3298
|
+
"duplicate_entities_in_floor": "Sorry, there are multiple devices called {{ entity }} in the {{ floor }} floor",
|
|
3299
|
+
"timer_not_found": "Sorry, I couldn't find that timer",
|
|
3300
|
+
"multiple_timers_matched": "Sorry, I am unable to target multiple timers",
|
|
3301
|
+
"no_timer_support": "Sorry, timers are not supported on this device"
|
|
3077
3302
|
},
|
|
3078
3303
|
"intents": {
|
|
3079
3304
|
"HassGetState": {
|
|
@@ -3098,6 +3323,10 @@
|
|
|
3098
3323
|
"lock": "Unlocked",
|
|
3099
3324
|
"valve": "Closed"
|
|
3100
3325
|
},
|
|
3326
|
+
"HassStartTimer": {
|
|
3327
|
+
"default": "Timer started",
|
|
3328
|
+
"command": "Command received"
|
|
3329
|
+
},
|
|
3101
3330
|
"HassShoppingListAddItem": {
|
|
3102
3331
|
"item_added": "Added {{ slots.item }}"
|
|
3103
3332
|
},
|
|
@@ -3117,9 +3346,18 @@
|
|
|
3117
3346
|
"HassMediaPause": {
|
|
3118
3347
|
"default": "Paused"
|
|
3119
3348
|
},
|
|
3349
|
+
"HassPauseTimer": {
|
|
3350
|
+
"default": "Timer paused"
|
|
3351
|
+
},
|
|
3352
|
+
"HassTimerStatus": {
|
|
3353
|
+
"default": "{% set num_timers = slots.timers | length %}\n{% set active_timers = slots.timers | selectattr('is_active') | list %}\n{% set num_active_timers = active_timers | length %}\n{% set paused_timers = slots.timers | rejectattr('is_active') | list %}\n{% set num_paused_timers = paused_timers | length %}\n{% set next_timer = None %}\n\n{% if num_timers == 0: %}\n No timers.\n{% elif num_active_timers == 0: %}\n {# No active timers #}\n {% if num_paused_timers == 1: %}\n {% set next_timer = paused_timers[0] %}\n Timer is paused.\n {% else: %}\n {{ num_paused_timers }} paused timers.\n {% endif %}\n{% else: %}\n {# At least one active timer #}\n {% if num_active_timers == 1: %}\n {% set next_timer = active_timers[0] %}\n {% else: %}\n {# Get active timer that will finish soonest #}\n {% set sorted_timers = active_timers | sort(attribute='total_seconds_left') %}\n {% set next_timer = sorted_timers[0] %}\n {{ num_active_timers }} running timers.\n {% endif %}\n\n {% if num_paused_timers == 1: %}\n 1 paused timer.\n {% elif num_paused_timers > 0: %}\n {{ num_paused_timers }} paused timers.\n {% endif %}\n{% endif %}\n\n{% if next_timer: %}\n {# At least one active timer #}\n {% if (next_timer.rounded_hours_left == 1) and (next_timer.rounded_minutes_left > 0): %}\n 1 hour and {{ next_timer.rounded_minutes_left }} minutes\n {% elif (next_timer.rounded_hours_left == 1): %}\n 1 hour\n {% elif (next_timer.rounded_hours_left > 1) and (next_timer.rounded_minutes_left > 0): %}\n {{ next_timer.rounded_hours_left }} hours and {{ next_timer.rounded_minutes_left }} minutes\n {% elif (next_timer.rounded_hours_left > 1): %}\n {{ next_timer.rounded_hours_left }} hours\n {% elif (next_timer.rounded_minutes_left == 1) and (next_timer.rounded_seconds_left > 0): %}\n 1 minute and {{ next_timer.rounded_seconds_left }} seconds\n {% elif (next_timer.rounded_minutes_left == 1): %}\n 1 minute\n {% elif (next_timer.rounded_minutes_left > 1) and (next_timer.rounded_seconds_left > 0): %}\n {{ next_timer.rounded_minutes_left }} minutes and {{ next_timer.rounded_seconds_left }} seconds\n {% elif (next_timer.rounded_minutes_left > 1): %}\n {{ next_timer.rounded_minutes_left }} minutes\n {% elif (next_timer.rounded_seconds_left == 1): %}\n 1 second\n {% elif (next_timer.rounded_seconds_left > 1): %}\n {{ next_timer.rounded_seconds_left }} seconds\n {% endif %}\n\n {% if num_timers > 1: %}\n {# Give some extra information to disambiguate #}\n left on\n {% if (next_timer.start_hours > 0) and (next_timer.start_minutes > 0): %}\n {{ next_timer.start_hours }} hour and {{ next_timer.start_minutes }} minute\n {% elif (next_timer.start_hours > 0): %}\n {{ next_timer.start_hours }} hour\n {% elif (next_timer.start_minutes > 0) and (next_timer.start_seconds > 0): %}\n {{ next_timer.start_minutes }} minute and {{ next_timer.start_seconds }} second\n {% elif (next_timer.start_minutes > 0): %}\n {{ next_timer.start_minutes }} minute\n {% elif (next_timer.start_seconds > 0): %}\n {{ next_timer.start_seconds }} second\n {% endif %}\n\n {% if next_timer.name: %}\n {{ next_timer.name }}\n {% elif next_timer.area: %}\n {{ next_timer.area }}\n {% endif %}\n\n timer.\n {% else: %}\n left.\n {% endif %}\n{% endif %}\n"
|
|
3354
|
+
},
|
|
3120
3355
|
"HassListAddItem": {
|
|
3121
3356
|
"item_added": "Added {{ slots.item }}"
|
|
3122
3357
|
},
|
|
3358
|
+
"HassUnpauseTimer": {
|
|
3359
|
+
"default": "Timer resumed"
|
|
3360
|
+
},
|
|
3123
3361
|
"HassGetWeather": {
|
|
3124
3362
|
"default": "{% set weather_condition = {\n 'clear': 'and clear',\n 'clear-night': 'and clear',\n 'cloudy': 'and cloudy',\n 'exceptional': 'and exceptional',\n 'fog': 'with fog',\n 'hail': 'with hail',\n 'lightning': 'with lightning',\n 'lightning-rainy': 'with lightning and rain',\n 'partlycloudy': 'and partly cloudy',\n 'pouring': 'and pouring rain',\n 'rainy': 'and raining',\n 'snowy': 'and snowing',\n 'snowy-rainy': 'with snow and rain',\n 'sunny': 'and sunny',\n 'windy': 'and windy',\n 'windy-variant': 'with wind and clouds'\n} %} {{ state.attributes.get('temperature') }} {{ state.attributes.get('temperature_unit') }} {{ weather_condition.get((state.state | string).lower(), \"\") }}\n"
|
|
3125
3363
|
},
|
|
@@ -3131,7 +3369,7 @@
|
|
|
3131
3369
|
"default": "Started"
|
|
3132
3370
|
},
|
|
3133
3371
|
"HassMediaUnpause": {
|
|
3134
|
-
"default": "
|
|
3372
|
+
"default": "Resumed"
|
|
3135
3373
|
},
|
|
3136
3374
|
"HassSetPosition": {
|
|
3137
3375
|
"default": "Position set"
|
|
@@ -3139,12 +3377,21 @@
|
|
|
3139
3377
|
"HassMediaNext": {
|
|
3140
3378
|
"default": "Playing next"
|
|
3141
3379
|
},
|
|
3380
|
+
"HassCancelTimer": {
|
|
3381
|
+
"default": "Timer cancelled"
|
|
3382
|
+
},
|
|
3142
3383
|
"HassClimateGetTemperature": {
|
|
3143
3384
|
"default": "{% set temperature = state_attr(state.entity_id, 'current_temperature') %} {% if temperature == 1: %} {{ temperature }} degree {% else: %} {{ temperature }} degrees {% endif %}\n"
|
|
3144
3385
|
},
|
|
3145
3386
|
"HassSetVolume": {
|
|
3146
3387
|
"default": "Volume set"
|
|
3147
3388
|
},
|
|
3389
|
+
"HassDecreaseTimer": {
|
|
3390
|
+
"default": "Timer updated"
|
|
3391
|
+
},
|
|
3392
|
+
"HassIncreaseTimer": {
|
|
3393
|
+
"default": "Timer updated"
|
|
3394
|
+
},
|
|
3148
3395
|
"HassVacuumReturnToBase": {
|
|
3149
3396
|
"default": "Returning"
|
|
3150
3397
|
}
|
|
@@ -3649,6 +3896,30 @@
|
|
|
3649
3896
|
"from": 0,
|
|
3650
3897
|
"to": 100
|
|
3651
3898
|
}
|
|
3899
|
+
},
|
|
3900
|
+
"timer_seconds": {
|
|
3901
|
+
"range": {
|
|
3902
|
+
"from": 1,
|
|
3903
|
+
"to": 100
|
|
3904
|
+
}
|
|
3905
|
+
},
|
|
3906
|
+
"timer_minutes": {
|
|
3907
|
+
"range": {
|
|
3908
|
+
"from": 1,
|
|
3909
|
+
"to": 100
|
|
3910
|
+
}
|
|
3911
|
+
},
|
|
3912
|
+
"timer_hours": {
|
|
3913
|
+
"range": {
|
|
3914
|
+
"from": 1,
|
|
3915
|
+
"to": 100
|
|
3916
|
+
}
|
|
3917
|
+
},
|
|
3918
|
+
"timer_name": {
|
|
3919
|
+
"wildcard": true
|
|
3920
|
+
},
|
|
3921
|
+
"timer_command": {
|
|
3922
|
+
"wildcard": true
|
|
3652
3923
|
}
|
|
3653
3924
|
},
|
|
3654
3925
|
"expansion_rules": {
|
|
@@ -3673,7 +3944,17 @@
|
|
|
3673
3944
|
"home": "(home|house|appartment|flat)",
|
|
3674
3945
|
"everywhere": "(everywhere|in all [the] rooms|in every room[s]|in each room|in the <home>)",
|
|
3675
3946
|
"here": "(here|in here|in this room|in the room)",
|
|
3676
|
-
"what_is_the_class_of_name": "(<what_is> the <class> (of|in|from|(indicated|measured) by) <name> [in <area>]|<what_is> <name>['s] <class> [in <area>]|<what_is> <area> <name>['s] <class>)"
|
|
3947
|
+
"what_is_the_class_of_name": "(<what_is> the <class> (of|in|from|(indicated|measured) by) <name> [in <area>]|<what_is> <name>['s] <class> [in <area>]|<what_is> <area> <name>['s] <class>)",
|
|
3948
|
+
"timer_set": "(start|set|create)",
|
|
3949
|
+
"timer_cancel": "(cancel|stop)",
|
|
3950
|
+
"timer_duration_seconds": "{timer_seconds:seconds} second[s]",
|
|
3951
|
+
"timer_duration_minutes": "{timer_minutes:minutes} minute[s][ [and ]{timer_seconds:seconds} second[s]]",
|
|
3952
|
+
"timer_duration_hours": "{timer_hours:hours} hour[s][ [and ]{timer_minutes:minutes} minute[s]][ [and ]{timer_seconds:seconds} second[s]]",
|
|
3953
|
+
"timer_duration": "<timer_duration_seconds>|<timer_duration_minutes>|<timer_duration_hours>",
|
|
3954
|
+
"timer_start_seconds": "{timer_seconds:start_seconds} second[s]",
|
|
3955
|
+
"timer_start_minutes": "{timer_minutes:start_minutes} minute[s][ [and ]{timer_seconds:start_seconds} second[s]]",
|
|
3956
|
+
"timer_start_hours": "{timer_hours:start_hours} hour[s][ [and ]{timer_minutes:start_minutes} minute[s]][ [and ]{timer_seconds:start_seconds} second[s]]",
|
|
3957
|
+
"timer_start": "<timer_start_seconds>|<timer_start_minutes>|<timer_start_hours>"
|
|
3677
3958
|
},
|
|
3678
3959
|
"skip_words": [
|
|
3679
3960
|
"please",
|