703 lines
31 KiB
YAML
703 lines
31 KiB
YAML
- id: karotz_dev_horloge_parlante_automation
|
||
alias: Karotz dev - Annonce de l'heure
|
||
description: Fait annoncer l'heure par le Karotz dev toutes les heures
|
||
trigger:
|
||
- trigger: time_pattern
|
||
minutes: '0'
|
||
condition:
|
||
- condition: time
|
||
after: 07:00:00
|
||
before: '20:00:00'
|
||
action:
|
||
- action: rest_command.karotz_dev_clock
|
||
- alias: karotz_dev - Courrier retirée
|
||
description: ''
|
||
triggers:
|
||
- entity_id: binary_sensor.eth01_status_lettre
|
||
to: 'off'
|
||
trigger: state
|
||
actions:
|
||
- data:
|
||
entity_id: input_number.karotz_dev_ear_left
|
||
value: '{{ states(''input_number.karotz_dev_saved_ear_left'') | int }}'
|
||
action: input_number.set_value
|
||
- data:
|
||
entity_id: input_number.karotz_dev_ear_right
|
||
value: '{{ states(''input_number.karotz_dev_saved_ear_right'') | int }}'
|
||
action: input_number.set_value
|
||
- data:
|
||
entity_id: input_text.karotz_dev_color_1
|
||
value: '{{ states(''input_text.karotz_dev_saved_color_1'') }}'
|
||
action: input_text.set_value
|
||
- data:
|
||
entity_id: input_text.karotz_dev_color_2
|
||
value: '{{ states(''input_text.karotz_dev_saved_color_2'') }}'
|
||
action: input_text.set_value
|
||
- data:
|
||
entity_id: input_number.karotz_dev_light_speed
|
||
value: '{{ states(''input_number.karotz_dev_saved_light_speed'') | int }}'
|
||
action: input_number.set_value
|
||
- action: rest_command.karotz_dev_light
|
||
data: {}
|
||
- action: rest_command.karotz_dev_ears
|
||
data: {}
|
||
- alias: karotz_dev - Il y a du courrier
|
||
description: ''
|
||
triggers:
|
||
- minutes: '45'
|
||
trigger: time_pattern
|
||
conditions:
|
||
- condition: time
|
||
after: 07:00:00
|
||
before: '20:00:00'
|
||
enabled: true
|
||
- condition: state
|
||
entity_id: binary_sensor.eth01_status_lettre
|
||
state: 'on'
|
||
actions:
|
||
- data:
|
||
entity_id: input_text.karotz_dev_saved_color_1
|
||
value: '{{ states(''input_text.karotz_dev_color_1'') }}'
|
||
action: input_text.set_value
|
||
- data:
|
||
entity_id: input_text.karotz_dev_saved_color_2
|
||
value: '{{ states(''input_text.karotz_dev_color_2'') }}'
|
||
action: input_text.set_value
|
||
- data:
|
||
entity_id: input_number.karotz_dev_saved_light_speed
|
||
value: '{{ states(''input_number.karotz_dev_light_speed'') | int }}'
|
||
action: input_number.set_value
|
||
- data:
|
||
entity_id: input_number.karotz_dev_saved_ear_left
|
||
value: '{{ states(''input_number.karotz_dev_ear_left'') | int }}'
|
||
action: input_number.set_value
|
||
- data:
|
||
entity_id: input_number.karotz_dev_saved_ear_right
|
||
value: '{{ states(''input_number.karotz_dev_ear_right'') | int }}'
|
||
action: input_number.set_value
|
||
- data:
|
||
text: "{% set phrases = [\n \"Une lettre cosmique vient d'atterrir.\",\n \"\
|
||
Le courrier est arrivé, capitaine.\",\n \"Message en provenance d'une autre\
|
||
\ galaxie détecté.\",\n \"Il y a du courrier dans la boîte aux lettres.\"\
|
||
,\n \"Le facteur stellaire a fait sa livraison.\"\n] %} {{ phrases | random\
|
||
\ }}\n"
|
||
action: rest_command.karotz_dev_say
|
||
- data:
|
||
entity_id: input_text.karotz_dev_color_1
|
||
value: 00FF00
|
||
action: input_text.set_value
|
||
- action: input_boolean.turn_on
|
||
target:
|
||
entity_id: input_boolean.karotz_dev_light_fixed_mode
|
||
data: {}
|
||
- delay:
|
||
hours: 0
|
||
minutes: 0
|
||
seconds: 1
|
||
milliseconds: 0
|
||
- action: rest_command.karotz_dev_light_fixed
|
||
metadata: {}
|
||
data: {}
|
||
- alias: karotz_dev - Cuisine
|
||
description: karotz_dev réagit à l'allumage de la cuisine, puis reprend son état
|
||
triggers:
|
||
- type: turned_on
|
||
device_id: 26e2c20e7bdc25f3ee9e158db8a7ada9
|
||
entity_id: 4047c432f33eacd0d26280b195f15772
|
||
domain: switch
|
||
trigger: device
|
||
conditions: []
|
||
actions:
|
||
- delay:
|
||
hours: 0
|
||
minutes: 0
|
||
seconds: 10
|
||
milliseconds: 0
|
||
- variables:
|
||
ear_left_prev: '{{ states(''input_number.karotz_dev_ear_left'') | int }}'
|
||
ear_right_prev: '{{ states(''input_number.karotz_dev_ear_right'') | int }}'
|
||
color1_prev: '{{ states(''input_text.karotz_dev_color_1'') }}'
|
||
color2_prev: '{{ states(''input_text.karotz_dev_color_2'') }}'
|
||
speed_prev: '{{ states(''input_number.karotz_dev_light_speed'') | int }}'
|
||
- action: rest_command.karotz_dev_ears_random
|
||
data: {}
|
||
- data:
|
||
text: "{% set phrases = [\n \"Huuuuuummm, ça sent bon la carotte ici !\",\n\
|
||
\ \"Tu cuisines ou tu fais une potion magique ?\",\n \"Attention à ne pas\
|
||
\ brûler les poêles, c’est pas un barbekiou !\",\n \"Le chef karotz dev est\
|
||
\ impressionné !\",\n \"J’espère que c’est pour moi ce festin !\"\n] %} {{\
|
||
\ phrases | random }}\n"
|
||
action: rest_command.karotz_dev_say
|
||
- data:
|
||
value: '{{ ear_left_prev }}'
|
||
target:
|
||
entity_id: input_number.karotz_dev_ear_left
|
||
action: input_number.set_value
|
||
- data:
|
||
value: '{{ ear_right_prev }}'
|
||
target:
|
||
entity_id: input_number.karotz_dev_ear_right
|
||
action: input_number.set_value
|
||
- data:
|
||
entity_id: input_text.karotz_dev_color_1
|
||
value: '{{ color1_prev }}'
|
||
action: input_text.set_value
|
||
- data:
|
||
entity_id: input_text.karotz_dev_color_2
|
||
value: '{{ color2_prev }}'
|
||
action: input_text.set_value
|
||
- data:
|
||
entity_id: input_number.karotz_dev_light_speed
|
||
value: '{{ speed_prev }}'
|
||
action: input_number.set_value
|
||
- action: rest_command.karotz_dev_light
|
||
data: {}
|
||
- action: rest_command.karotz_dev_ears
|
||
data: {}
|
||
- delay:
|
||
hours: 0
|
||
minutes: 5
|
||
seconds: 0
|
||
milliseconds: 0
|
||
mode: single
|
||
- alias: karotz_dev - test tag
|
||
description: ''
|
||
triggers:
|
||
- webhook_id: tag-lapin-test
|
||
allowed_methods:
|
||
- GET
|
||
local_only: true
|
||
trigger: webhook
|
||
conditions: []
|
||
actions:
|
||
- data:
|
||
text: Bonjour, je m'appel karotz !
|
||
action: rest_command.karotz_dev_say
|
||
mode: single
|
||
- alias: karotz_dev - Son sur ouverture porte garage
|
||
description: Joue le son 'bling' quand la porte du garage s'ouvre
|
||
triggers:
|
||
- entity_id: binary_sensor.porte_garage
|
||
to: 'on'
|
||
trigger: state
|
||
conditions: []
|
||
actions:
|
||
- data:
|
||
sound: jet1
|
||
action: rest_command.karotz_dev_sound
|
||
- data:
|
||
text: "{% set phrases = [\n \"La porte du hangar spatial est ouverte.\",\n\
|
||
\ \"Le sas du garage est désormais déverrouillé.\",\n \"Ouverture du portail\
|
||
\ galactique confirmée.\",\n \"Le garage s'ouvre sur l'infini et au-delà.\"\
|
||
,\n \"Accès au vaisseau terrestre autorisé.\"\n] %} {{ phrases | random }}\n"
|
||
action: rest_command.karotz_dev_say
|
||
mode: single
|
||
- alias: Karotz - Réveil à 8h
|
||
trigger:
|
||
- platform: time
|
||
at: 08:00:00
|
||
action:
|
||
- service: rest_command.karotz_dev_wakeup
|
||
- delay: 00:00:05
|
||
- service: script.karotz_daily_loop
|
||
- alias: Karotz - Rappel déjeuner (12h30)
|
||
trigger:
|
||
- platform: time
|
||
at: '12:30:00'
|
||
action:
|
||
- service: script.karotz_intro_effect
|
||
- delay: 00:00:01
|
||
- service: rest_command.karotz_dev_say
|
||
data:
|
||
text: '{{ state_attr(''input_select.karotz_meal_phrases'',''options'') | random
|
||
}}'
|
||
- alias: Karotz - Rappel départ (16h30)
|
||
trigger:
|
||
- platform: time
|
||
at: '16:30:00'
|
||
action:
|
||
- service: script.karotz_intro_effect
|
||
- delay: 00:00:01
|
||
- service: rest_command.karotz_dev_say
|
||
data:
|
||
text: '{{ state_attr(''input_select.karotz_departure_phrases'',''options'')
|
||
| random }}'
|
||
- alias: Karotz - Sommeil à 17h
|
||
trigger:
|
||
- platform: time
|
||
at: '17:00:00'
|
||
action:
|
||
- service: rest_command.karotz_dev_sleep
|
||
- id: karotz_dev_on_automation
|
||
alias: karotz_dev On
|
||
trigger:
|
||
- trigger: state
|
||
entity_id: sensor.karotz_dev_status
|
||
attribute: sleep
|
||
to: '0'
|
||
action:
|
||
- action: input_boolean.turn_on
|
||
target:
|
||
entity_id: input_boolean.karotz_dev_awake
|
||
- id: karotz_dev_off_automation
|
||
alias: karotz_dev Off
|
||
trigger:
|
||
- trigger: state
|
||
entity_id: sensor.karotz_dev_status
|
||
attribute: sleep
|
||
to: '1'
|
||
action:
|
||
- action: input_boolean.turn_off
|
||
target:
|
||
entity_id: input_boolean.karotz_dev_awake
|
||
- id: karotz_dev_color_automation
|
||
alias: karotz_dev Update Color
|
||
trigger:
|
||
- trigger: state
|
||
entity_id:
|
||
- input_text.karotz_dev_color_1
|
||
- input_text.karotz_dev_color_2
|
||
- input_number.karotz_dev_light_speed
|
||
action:
|
||
- action: rest_command.karotz_dev_light
|
||
- id: karotz_dev_ear_automation
|
||
alias: karotz_dev Update Ears
|
||
trigger:
|
||
- trigger: state
|
||
entity_id:
|
||
- input_number.karotz_dev_ear_left
|
||
- input_number.karotz_dev_ear_right
|
||
action:
|
||
- action: rest_command.karotz_dev_ears
|
||
- id: karotz_dev_light_mode_automation
|
||
alias: karotz_dev Light Mode Automation
|
||
trigger:
|
||
- trigger: state
|
||
entity_id: input_boolean.karotz_dev_light_fixed_mode
|
||
action:
|
||
- choose:
|
||
- conditions:
|
||
- condition: state
|
||
entity_id: input_boolean.karotz_dev_light_fixed_mode
|
||
state: 'on'
|
||
sequence:
|
||
- action: rest_command.karotz_dev_light_fixed
|
||
- conditions:
|
||
- condition: state
|
||
entity_id: input_boolean.karotz_dev_light_fixed_mode
|
||
state: 'off'
|
||
sequence:
|
||
- action: rest_command.karotz_dev_light
|
||
- id: karotz_dev_volume_automation
|
||
alias: karotz_dev Update Volume
|
||
trigger:
|
||
- trigger: state
|
||
entity_id: input_number.karotz_dev_volume
|
||
action:
|
||
- action: rest_command.karotz_dev_volume
|
||
data:
|
||
level: '{{ states(''input_number.karotz_dev_volume'') | int }}'
|
||
- id: karotz_dev_clear_cache_auto
|
||
alias: karotz_dev - Clear cache si mémoire > 80%
|
||
trigger:
|
||
- trigger: numeric_state
|
||
entity_id: sensor.karotz_dev_status
|
||
above: 80
|
||
action:
|
||
- action: rest_command.karotz_dev_clear_cache
|
||
- id: karotz_dev_meteo_automation
|
||
alias: karotz_dev - Réaction météo h/30
|
||
description: Adapte les oreilles, la LED et le clignotement selon les conditions
|
||
météo
|
||
trigger:
|
||
- trigger: time_pattern
|
||
minutes: '30'
|
||
condition:
|
||
- condition: time
|
||
after: 07:00:00
|
||
before: '19:00:00'
|
||
actions:
|
||
- action: rest_command.karotz_dev_say
|
||
data:
|
||
text: Voici la météo.
|
||
- action: rest_command.karotz_dev_ears_reset
|
||
- action: input_number.set_value
|
||
data:
|
||
entity_id: input_number.karotz_dev_ear_left
|
||
value: "{% set rain_str = states('sensor.[ville]_rain_chance') %} {% set rain\
|
||
\ = rain_str if rain_str not in ['unavailable', 'unknown', 'none', ''] else\
|
||
\ 0 %} {% set rain = rain | float %} {% if rain < 5 %}\n {{ 15 }}\n{% elif\
|
||
\ rain > 60 %}\n {{ 4 }}\n{% else %}\n {{ (15 - ((rain - 5) // 5)) | int\
|
||
\ }}\n{% endif %}\n"
|
||
- action: input_number.set_value
|
||
data:
|
||
entity_id: input_number.karotz_dev_ear_right
|
||
value: "{% set rain_str = states('sensor.[ville]_rain_chance') %} {% set rain\
|
||
\ = rain_str if rain_str not in ['unavailable', 'unknown', 'none', ''] else\
|
||
\ 0 %} {% set rain = rain | float %} {% if rain < 5 %}\n {{ 15 }}\n{% elif\
|
||
\ rain > 60 %}\n {{ 4 }}\n{% else %}\n {{ (15 - ((rain - 5) // 5)) | int\
|
||
\ }}\n{% endif %}\n"
|
||
- action: input_text.set_value
|
||
data:
|
||
entity_id: input_text.karotz_dev_color_1
|
||
value: '{% set temp = states(''sensor.pac_atom_temp_ext'') | default(20) | float
|
||
%} {% if temp <= -10 %}ADD8E6 {% elif temp <= -5 %}87CEFA {% elif temp <=
|
||
0 %}00CED1 {% elif temp <= 5 %}40E0D0 {% elif temp <= 10 %}90EE90 {% elif
|
||
temp <= 15 %}ADFF2F {% elif temp <= 20 %}FFD700 {% elif temp <= 25 %}FFA500
|
||
{% elif temp <= 30 %}FF4500 {% else %}FF0000{% endif %}
|
||
|
||
'
|
||
- action: input_text.set_value
|
||
data:
|
||
entity_id: input_text.karotz_dev_color_2
|
||
value: '000000'
|
||
- action: input_number.set_value
|
||
data:
|
||
entity_id: input_number.karotz_dev_light_speed
|
||
value: '{% set wind = states(''sensor.weather_station_vitesse_moyenne_du_vent_km_h'')
|
||
| default(0) | float %} {% set base = 2000 %} {% set min_speed = 100 %} {%
|
||
set decrement = ((wind // 5) * 150) %} {% set result = base - decrement %}
|
||
{% if result < min_speed %}{{ min_speed }}{% elif result > base %}{{ base
|
||
}}{% else %}{{ result | int }}{% endif %}
|
||
|
||
'
|
||
- action: rest_command.karotz_dev_light
|
||
- action: rest_command.karotz_dev_ears
|
||
- action: rest_command.karotz_dev_say
|
||
data:
|
||
text: "{% set temp_str = states('sensor.pac_atom_temp_ext') %} {% set temp =\
|
||
\ temp_str if temp_str not in ['unavailable', 'unknown', 'none', ''] else\
|
||
\ 20 %} {% set temp = temp | float %}\n{% set wind_str = states('sensor.weather_station_vitesse_moyenne_du_vent_km_h')\
|
||
\ %} {% set wind = wind_str if wind_str not in ['unavailable', 'unknown',\
|
||
\ 'none', ''] else 0 %} {% set wind = wind | float %}\n{% set rain_str = states('sensor.[ville]_rain_chance')\
|
||
\ %} {% set rain = rain_str if rain_str not in ['unavailable', 'unknown',\
|
||
\ 'none', ''] else 0 %} {% set rain = rain | float %}\n{% set alerte = states('sensor.44_weather_alert')\
|
||
\ | default('') | lower %}\nLa température est de {{ temp | round(0) }} degrés.\
|
||
\ Le vent souffle à {{ wind | round(0) }} kilomètres par heure. Le risque\
|
||
\ de pluie est de {{ rain | round(0) }} pourcents. {% if 'orange' in alerte\
|
||
\ %}\n Attention, une alerte météo orange est en cours.\n{% elif 'rouge'\
|
||
\ in alerte %}\n Attention, une alerte météo rouge est en cours. Restez vigilant.\n\
|
||
{% endif %}"
|
||
mode: single
|
||
- id: karotz_dev_meteo_jour
|
||
alias: karotz_dev - Météo du jour 7h15
|
||
description: Annonce la météo du jour via Karotz_dev
|
||
triggers:
|
||
- trigger: time
|
||
at: 07:15:00
|
||
conditions: []
|
||
actions:
|
||
- action: input_number.set_value
|
||
data:
|
||
entity_id: input_number.karotz_dev_ear_left
|
||
value: "{% set rain_str = states('sensor.[ville]_rain_chance') %} {% set rain\
|
||
\ = rain_str if rain_str not in ['unavailable', 'unknown', 'none', ''] else\
|
||
\ 0 %} {% set rain = rain | float %} {% if rain < 5 %}\n {{ 15 }}\n{% elif\
|
||
\ rain > 60 %}\n {{ 4 }}\n{% else %}\n {{ (15 - ((rain - 5) // 5)) | int\
|
||
\ }}\n{% endif %}\n"
|
||
- action: input_number.set_value
|
||
data:
|
||
entity_id: input_number.karotz_dev_ear_right
|
||
value: "{% set rain_str = states('sensor.[ville]_rain_chance') %} {% set rain\
|
||
\ = rain_str if rain_str not in ['unavailable', 'unknown', 'none', ''] else\
|
||
\ 0 %} {% set rain = rain | float %} {% if rain < 5 %}\n {{ 15 }}\n{% elif\
|
||
\ rain > 60 %}\n {{ 4 }}\n{% else %}\n {{ (15 - ((rain - 5) // 5)) | int\
|
||
\ }}\n{% endif %}\n"
|
||
- action: input_text.set_value
|
||
data:
|
||
entity_id: input_text.karotz_dev_color_1
|
||
value: '{% set temp = state_attr(''sensor.prevision_meteo_aujourd_hui'', ''temperature'')
|
||
| default(20) | float %} {% if temp <= -10 %}ADD8E6 {% elif temp <= -5 %}87CEFA
|
||
{% elif temp <= 0 %}00CED1 {% elif temp <= 5 %}40E0D0 {% elif temp <= 10 %}90EE90
|
||
{% elif temp <= 15 %}ADFF2F {% elif temp <= 20 %}FFD700 {% elif temp <= 25
|
||
%}FFA500 {% elif temp <= 30 %}FF4500 {% else %}FF0000{% endif %}
|
||
|
||
'
|
||
- action: input_number.set_value
|
||
data:
|
||
entity_id: input_number.karotz_dev_light_speed
|
||
value: '{% set wind = state_attr(''sensor.prevision_meteo_aujourd_hui'', ''wind_speed'')
|
||
| default(0) | float %} {% set base = 2000 %} {% set min_speed = 100 %} {%
|
||
set decrement = ((wind // 5) * 150) %} {% set result = base - decrement %}
|
||
{% if result < min_speed %}{{ min_speed }}{% elif result > base %}{{ base
|
||
}}{% else %}{{ result | int }}{% endif %}
|
||
|
||
'
|
||
- action: rest_command.karotz_dev_light
|
||
- action: rest_command.karotz_dev_ears
|
||
- action: rest_command.karotz_dev_say
|
||
metadata: {}
|
||
data:
|
||
text: "{% set conditions = {\n 'sunny': 'ensoleillé',\n 'clear-night': 'nuit\
|
||
\ dégagée',\n 'cloudy': 'nuageux',\n 'partlycloudy': 'partiellement nuageux',\n\
|
||
\ 'fog': 'brouillard',\n 'windy': 'venteux',\n 'windy-variant': 'variablement\
|
||
\ venteux',\n 'hail': 'grêle',\n 'lightning': 'orages',\n 'lightning-rainy':\
|
||
\ 'orages avec pluie',\n 'pouring': 'fortes pluies',\n 'rainy': 'pluvieux',\n\
|
||
\ 'snowy': 'enneigé',\n 'snowy-rainy': 'neige et pluie',\n 'exceptional':\
|
||
\ 'conditions exceptionnelles'\n} %} {% set condition = states('sensor.prevision_meteo_aujourd_hui')\
|
||
\ %} {% set condition_fr = conditions.get(condition, condition) %}\nVoici\
|
||
\ la météo prévue pour aujourd'hui. Le temps sera {{ condition_fr }}. Température\
|
||
\ maximale : {{\n state_attr('sensor.prevision_meteo_aujourd_hui', 'temperature')\
|
||
\ | default(0) | float | round(0)\n}} degrés. Température minimale : {{\n\
|
||
\ state_attr('sensor.prevision_meteo_aujourd_hui', 'templow') | default(0)\
|
||
\ | float | round(0)\n}} degrés. {% set pluie = state_attr('sensor.prevision_meteo_aujourd_hui',\
|
||
\ 'precipitation_probability') %} {% if pluie != 'n/a' and pluie is not none\
|
||
\ %}\n Risque de pluie : {{ pluie }} pourcents.\n{% endif %} {% set nuages\
|
||
\ = state_attr('sensor.prevision_meteo_aujourd_hui', 'cloud_coverage') %}\
|
||
\ {% if nuages != 'n/a' and nuages is not none %}\n Couverture nuageuse :\
|
||
\ {{ nuages }} pourcents.\n{% endif %} Vent : {{\n state_attr('sensor.prevision_meteo_aujourd_hui',\
|
||
\ 'wind_speed') | default(0) | float | round(0)\n}} kilomètres par heure.\
|
||
\ {% set uv =\n state_attr('sensor.prevision_meteo_aujourd_hui', 'uv_index')\
|
||
\ |\n default(0) %} Indice UV : {{ uv }} sur 10."
|
||
mode: single
|
||
- id: karotz_dev_meteo_demain
|
||
alias: Karotz_dev - Météo de demain à 19h05
|
||
description: Annonce la météo de demain via Karotz_dev
|
||
triggers:
|
||
- trigger: time
|
||
at: '19:05:00'
|
||
conditions: []
|
||
actions:
|
||
- action: input_number.set_value
|
||
data:
|
||
entity_id: input_number.karotz_dev_ear_left
|
||
value: "{% set rain_str = states('sensor.[ville]_rain_chance') %} {% set rain\
|
||
\ = rain_str if rain_str not in ['unavailable', 'unknown', 'none', ''] else\
|
||
\ 0 %} {% set rain = rain | float %} {% if rain < 5 %}\n {{ 15 }}\n{% elif\
|
||
\ rain > 60 %}\n {{ 4 }}\n{% else %}\n {{ (15 - ((rain - 5) // 5)) | int\
|
||
\ }}\n{% endif %}\n"
|
||
- action: input_number.set_value
|
||
data:
|
||
entity_id: input_number.karotz_dev_ear_right
|
||
value: "{% set rain_str = states('sensor.[ville]_rain_chance') %} {% set rain\
|
||
\ = rain_str if rain_str not in ['unavailable', 'unknown', 'none', ''] else\
|
||
\ 0 %} {% set rain = rain | float %} {% if rain < 5 %}\n {{ 15 }}\n{% elif\
|
||
\ rain > 60 %}\n {{ 4 }}\n{% else %}\n {{ (15 - ((rain - 5) // 5)) | int\
|
||
\ }}\n{% endif %}\n"
|
||
- action: input_text.set_value
|
||
data:
|
||
entity_id: input_text.karotz_dev_color_1
|
||
value: '{% set temp = state_attr(''sensor.prevision_meteo_aujourd_hui'', ''temperature'')
|
||
| default(20) | float %} {% if temp <= -10 %}ADD8E6 {% elif temp <= -5 %}87CEFA
|
||
{% elif temp <= 0 %}00CED1 {% elif temp <= 5 %}40E0D0 {% elif temp <= 10 %}90EE90
|
||
{% elif temp <= 15 %}ADFF2F {% elif temp <= 20 %}FFD700 {% elif temp <= 25
|
||
%}FFA500 {% elif temp <= 30 %}FF4500 {% else %}FF0000{% endif %}
|
||
|
||
'
|
||
- action: input_number.set_value
|
||
data:
|
||
entity_id: input_number.karotz_dev_light_speed
|
||
value: '{% set wind = state_attr(''sensor.prevision_meteo_aujourd_hui'', ''wind_speed'')
|
||
| default(0) | float %} {% set base = 2000 %} {% set min_speed = 100 %} {%
|
||
set decrement = ((wind // 5) * 150) %} {% set result = base - decrement %}
|
||
{% if result < min_speed %}{{ min_speed }}{% elif result > base %}{{ base
|
||
}}{% else %}{{ result | int }}{% endif %}
|
||
|
||
'
|
||
- action: rest_command.karotz_dev_light
|
||
- action: rest_command.karotz_dev_ears
|
||
- action: rest_command.karotz_dev_say
|
||
metadata: {}
|
||
data:
|
||
text: "{% set conditions = {\n 'sunny': 'ensoleillé',\n 'clear-night': 'nuit\
|
||
\ dégagée',\n 'cloudy': 'nuageux',\n 'partlycloudy': 'partiellement nuageux',\n\
|
||
\ 'fog': 'brouillard',\n 'windy': 'venteux',\n 'windy-variant': 'variablement\
|
||
\ venteux',\n 'hail': 'grêle',\n 'lightning': 'orages',\n 'lightning-rainy':\
|
||
\ 'orages avec pluie',\n 'pouring': 'fortes pluies',\n 'rainy': 'pluvieux',\n\
|
||
\ 'snowy': 'enneigé',\n 'snowy-rainy': 'neige et pluie',\n 'exceptional':\
|
||
\ 'conditions exceptionnelles'\n} %} {% set condition = states('sensor.prevision_meteo_demain')\
|
||
\ %} {% set condition_fr = conditions.get(condition, condition) %}\nVoici\
|
||
\ la météo prévue pour demain. Le temps sera {{ condition_fr }}. Température\
|
||
\ maximale : {{ state_attr('sensor.prevision_meteo_demain', 'temperature')\
|
||
\ | default(0) | float | round(0) }} degrés. Température minimale : {{ state_attr('sensor.prevision_meteo_demain',\
|
||
\ 'templow') | default(0) | float | round(0) }} degrés. {% set pluie = state_attr('sensor.prevision_meteo_demain',\
|
||
\ 'precipitation_probability') %} {% if pluie != 'n/a' %}\n Risque de pluie\
|
||
\ : {{ pluie }} pourcents. \n{% endif %} {% set nuages = state_attr('sensor.prevision_meteo_demain',\
|
||
\ 'cloud_coverage') %} {% if nuages != 'n/a' %} \n Couverture nuageuse :\
|
||
\ {{ nuages }} pourcents. \n{% endif %} Vent : {{ state_attr('sensor.prevision_meteo_demain',\
|
||
\ 'wind_speed') | default(0) | float | round(0) }} kilomètres par heure. \
|
||
\ Indice UV : {{ state_attr('sensor.prevision_meteo_demain', 'uv_index') }}\
|
||
\ sur 10."
|
||
mode: single
|
||
- id: karotz_dev_meteo_automation
|
||
alias: karotz_dev - Réaction météo
|
||
description: Adapte les oreilles, la LED et le clignotement selon les conditions
|
||
météo
|
||
trigger:
|
||
- trigger: time_pattern
|
||
minutes: '15'
|
||
condition:
|
||
- condition: time
|
||
after: 07:00:00
|
||
before: '19:00:00'
|
||
actions:
|
||
- action: rest_command.karotz_dev_say
|
||
data:
|
||
text: Voici la météo.
|
||
- action: rest_command.karotz_dev_ears_reset
|
||
- action: input_number.set_value
|
||
data:
|
||
entity_id: input_number.karotz_dev_ear_left
|
||
value: "{% set rain = states('sensor.[ville]_rain_chance') | default(0) | float\
|
||
\ %} {% if rain < 5 %}\n {{ 15 }}\n{% elif rain > 60 %}\n {{ 4 }}\n{% else\
|
||
\ %}\n {{ (15 - ((rain - 5) // 5)) | int }}\n{% endif %}\n"
|
||
- action: input_number.set_value
|
||
data:
|
||
entity_id: input_number.karotz_dev_ear_right
|
||
value: "{% set rain = states('sensor.[ville]_rain_chance') | default(0) | float\
|
||
\ %} {% if rain < 5 %}\n {{ 15 }}\n{% elif rain > 60 %}\n {{ 4 }}\n{% else\
|
||
\ %}\n {{ (15 - ((rain - 5) // 5)) | int }}\n{% endif %}\n"
|
||
- action: input_text.set_value
|
||
data:
|
||
entity_id: input_text.karotz_dev_color_1
|
||
value: '{% set temp = states(''sensor.[temperature]'') | default(20) | float
|
||
%} {% if temp <= -10 %}ADD8E6 {% elif temp <= -5 %}87CEFA {% elif temp <=
|
||
0 %}00CED1 {% elif temp <= 5 %}40E0D0 {% elif temp <= 10 %}90EE90 {% elif
|
||
temp <= 15 %}ADFF2F {% elif temp <= 20 %}FFD700 {% elif temp <= 25 %}FFA500
|
||
{% elif temp <= 30 %}FF4500 {% else %}FF0000{% endif %}
|
||
|
||
'
|
||
- action: input_text.set_value
|
||
data:
|
||
entity_id: input_text.karotz_dev_color_2
|
||
value: '000000'
|
||
- action: input_number.set_value
|
||
data:
|
||
entity_id: input_number.karotz_dev_light_speed
|
||
value: '{% set wind = states(''sensor.[vitesse du vent]'') | default(0) | float
|
||
%} {% set base = 2000 %} {% set min_speed = 100 %} {% set decrement = ((wind
|
||
// 5) * 150) %} {% set result = base - decrement %} {% if result < min_speed
|
||
%}{{ min_speed }}{% elif result > base %}{{ base }}{% else %}{{ result | int
|
||
}}{% endif %}
|
||
|
||
'
|
||
- action: rest_command.karotz_dev_light
|
||
- action: rest_command.karotz_dev_ears
|
||
- action: rest_command.karotz_dev_say
|
||
data:
|
||
text: "La température est de {{ states('sensor.[temperature]') | default(20)\
|
||
\ | float | round(0) }} degrés. Le vent souffle à {{ states('sensor.[vitesse\
|
||
\ du vent]') | default(0) | float | round(0) }} kilomètres par heure. Le risque\
|
||
\ de pluie est de {{ states('sensor.[ville]_rain_chance') | default(0) | float\
|
||
\ | round(0) }} pourcents. {% set alerte = states('sensor.44_weather_alert')\
|
||
\ | default('') | lower %} {% if 'orange' in alerte %}\n Attention, une alerte\
|
||
\ météo **orange** est en cours.\n{% elif 'rouge' in alerte %}\n Attention,\
|
||
\ une alerte météo **rouge** est en cours. Restez vigilant.\n{% endif %}"
|
||
mode: single
|
||
- alias: Karotz_dev - Météo de demain à 19h05
|
||
description: Annonce la météo de demain via Karotz_dev
|
||
triggers:
|
||
- trigger: time
|
||
at: '19:05:00'
|
||
conditions: []
|
||
actions:
|
||
- action: rest_command.karotz_dev_say
|
||
metadata: {}
|
||
data:
|
||
text: "{% set conditions = {\n 'sunny': 'ensoleillé',\n 'clear-night': 'nuit\
|
||
\ dégagée',\n 'cloudy': 'nuageux',\n 'partlycloudy': 'partiellement nuageux',\n\
|
||
\ 'fog': 'brouillard',\n 'windy': 'venteux',\n 'windy-variant': 'variablement\
|
||
\ venteux',\n 'hail': 'grêle',\n 'lightning': 'orages',\n 'lightning-rainy':\
|
||
\ 'orages avec pluie',\n 'pouring': 'fortes pluies',\n 'rainy': 'pluvieux',\n\
|
||
\ 'snowy': 'enneigé',\n 'snowy-rainy': 'neige et pluie',\n 'exceptional':\
|
||
\ 'conditions exceptionnelles'\n} %} {% set condition = states('sensor.prevision_meteo_demain')\
|
||
\ %} {% set condition_fr = conditions.get(condition, condition) %}\nVoici\
|
||
\ la météo prévue pour demain. Le temps sera {{ condition_fr }}. Température\
|
||
\ maximale : {{ state_attr('sensor.prevision_meteo_demain', 'temperature')\
|
||
\ | default(0) | float | round(0) }} degrés. Température minimale : {{ state_attr('sensor.prevision_meteo_demain',\
|
||
\ 'templow') | default(0) | float | round(0) }} degrés. {% set pluie = state_attr('sensor.prevision_meteo_demain',\
|
||
\ 'precipitation_probability') %} {% if pluie != 'n/a' %}\n Risque de pluie\
|
||
\ : {{ pluie }} pourcents. \n{% endif %} {% set nuages = state_attr('sensor.prevision_meteo_demain',\
|
||
\ 'cloud_coverage') %} {% if nuages != 'n/a' %} \n Couverture nuageuse :\
|
||
\ {{ nuages }} pourcents. \n{% endif %} Vent : {{ state_attr('sensor.prevision_meteo_demain',\
|
||
\ 'wind_speed') | default(0) | float | round(0) }} kilomètres par heure. \
|
||
\ Indice UV : {{ state_attr('sensor.prevision_meteo_demain', 'uv_index') }}\
|
||
\ sur 10."
|
||
mode: single
|
||
- id: karotz_dev_meteo_jour
|
||
alias: karotz_dev - Météo du jour 7h15
|
||
description: Annonce la météo du jour via Karotz_dev
|
||
triggers:
|
||
- trigger: time
|
||
at: 07:15:00
|
||
conditions: []
|
||
actions:
|
||
- action: input_number.set_value
|
||
data:
|
||
entity_id: input_number.karotz_dev_ear_left
|
||
value: "{% set pluie_str = state_attr('sensor.prevision_meteo_aujourd_hui',\
|
||
\ 'precipitation_probability') %} {% set pluie = pluie_str if pluie_str not\
|
||
\ in ['unavailable', 'unknown', 'none', '', 'n/a'] else 0 %} {% set pluie\
|
||
\ = pluie | float %} {% if pluie < 5 %}\n {{ 15 }}\n{% elif pluie > 60 %}\n\
|
||
\ {{ 4 }}\n{% else %}\n {{ (15 - ((pluie - 5) // 5)) | int }}\n{% endif\
|
||
\ %}\n"
|
||
- action: input_number.set_value
|
||
data:
|
||
entity_id: input_number.karotz_dev_ear_right
|
||
value: "{% set pluie_str = state_attr('sensor.prevision_meteo_aujourd_hui',\
|
||
\ 'precipitation_probability') %} {% set pluie = pluie_str if pluie_str not\
|
||
\ in ['unavailable', 'unknown', 'none', '', 'n/a'] else 0 %} {% set pluie\
|
||
\ = pluie | float %} {% if pluie < 5 %}\n {{ 15 }}\n{% elif pluie > 60 %}\n\
|
||
\ {{ 4 }}\n{% else %}\n {{ (15 - ((pluie - 5) // 5)) | int }}\n{% endif\
|
||
\ %}\n"
|
||
- action: input_text.set_value
|
||
data:
|
||
entity_id: input_text.karotz_dev_color_1
|
||
value: '{% set temp_str = state_attr(''sensor.prevision_meteo_aujourd_hui'',
|
||
''temperature'') %} {% set temp = temp_str if temp_str not in [''unavailable'',
|
||
''unknown'', ''none'', '''', ''n/a''] else 20 %} {% set temp = temp | float
|
||
%} {% if temp <= -10 %}ADD8E6 {% elif temp <= -5 %}87CEFA {% elif temp <=
|
||
0 %}00CED1 {% elif temp <= 5 %}40E0D0 {% elif temp <= 10 %}90EE90 {% elif
|
||
temp <= 15 %}ADFF2F {% elif temp <= 20 %}FFD700 {% elif temp <= 25 %}FFA500
|
||
{% elif temp <= 30 %}FF4500 {% else %}FF0000{% endif %}
|
||
|
||
'
|
||
- action: input_number.set_value
|
||
data:
|
||
entity_id: input_number.karotz_dev_light_speed
|
||
value: '{% set wind_str = state_attr(''sensor.prevision_meteo_aujourd_hui'',
|
||
''wind_speed'') %} {% set wind = wind_str if wind_str not in [''unavailable'',
|
||
''unknown'', ''none'', '''', ''n/a''] else 0 %} {% set wind = wind | float
|
||
%} {% set base = 2000 %} {% set min_speed = 100 %} {% set decrement = ((wind
|
||
// 5) * 150) %} {% set result = base - decrement %} {% if result < min_speed
|
||
%}{{ min_speed }}{% elif result > base %}{{ base }}{% else %}{{ result | int
|
||
}}{% endif %}
|
||
|
||
'
|
||
- action: rest_command.karotz_dev_light
|
||
- action: rest_command.karotz_dev_ears
|
||
- action: rest_command.karotz_dev_say
|
||
metadata: {}
|
||
data:
|
||
text: "{% set conditions = {\n 'sunny': 'ensoleillé',\n 'clear-night': 'nuit\
|
||
\ dégagée',\n 'cloudy': 'nuageux',\n 'partlycloudy': 'partiellement nuageux',\n\
|
||
\ 'fog': 'brouillard',\n 'windy': 'venteux',\n 'windy-variant': 'variablement\
|
||
\ venteux',\n 'hail': 'grêle',\n 'lightning': 'orages',\n 'lightning-rainy':\
|
||
\ 'orages avec pluie',\n 'pouring': 'fortes pluies',\n 'rainy': 'pluvieux',\n\
|
||
\ 'snowy': 'enneigé',\n 'snowy-rainy': 'neige et pluie',\n 'exceptional':\
|
||
\ 'conditions exceptionnelles'\n} %} {% set condition = states('sensor.prevision_meteo_aujourd_hui')\
|
||
\ %} {% set condition_fr = conditions.get(condition, condition) %}\nVoici\
|
||
\ la météo prévue pour aujourd'hui. Le temps sera {{ condition_fr }}. \n{%\
|
||
\ set temp_str = state_attr('sensor.prevision_meteo_aujourd_hui', 'temperature')\
|
||
\ %} {% if temp_str not in ['unavailable', 'unknown', 'none', '', 'n/a'] %}\n\
|
||
\ Température maximale : {{ temp_str | float | round(0) }} degrés.\n{% endif\
|
||
\ %}\n{% set temp_min_str = state_attr('sensor.prevision_meteo_aujourd_hui',\
|
||
\ 'templow') %} {% if temp_min_str not in ['unavailable', 'unknown', 'none',\
|
||
\ '', 'n/a'] %}\n Température minimale : {{ temp_min_str | float | round(0)\
|
||
\ }} degrés.\n{% endif %}\n{% set pluie_str = state_attr('sensor.prevision_meteo_aujourd_hui',\
|
||
\ 'precipitation_probability') %} {% if pluie_str not in ['unavailable', 'unknown',\
|
||
\ 'none', '', 'n/a'] %}\n Risque de pluie : {{ pluie_str }} pourcents.\n\
|
||
{% endif %}\n{% set nuages_str = state_attr('sensor.prevision_meteo_aujourd_hui',\
|
||
\ 'cloud_coverage') %} {% if nuages_str not in ['unavailable', 'unknown',\
|
||
\ 'none', '', 'n/a'] %}\n Couverture nuageuse : {{ nuages_str }} pourcents.\n\
|
||
{% endif %}\n{% set vent_str = state_attr('sensor.prevision_meteo_aujourd_hui',\
|
||
\ 'wind_speed') %} {% if vent_str not in ['unavailable', 'unknown', 'none',\
|
||
\ '', 'n/a'] %}\n Vent : {{ vent_str | float | round(0) }} kilomètres par\
|
||
\ heure.\n{% endif %}\n{% set uv_str = state_attr('sensor.prevision_meteo_aujourd_hui',\
|
||
\ 'uv_index') %} {% if uv_str not in ['unavailable', 'unknown', 'none', '',\
|
||
\ 'n/a'] %}\n Indice UV : {{ uv_str }} sur 10.\n{% endif %}\n{% set source\
|
||
\ = state_attr('sensor.prevision_meteo_aujourd_hui', 'source') | default('Météo-France')\
|
||
\ %} {% if source == 'Sauvegarde de la veille' %}\n Données basées sur les\
|
||
\ prévisions de la veille.\n{% endif %}"
|
||
mode: single
|