Files
mash-lab/automations.yaml
T
2026-06-16 18:25:28 +02:00

1273 lines
36 KiB
YAML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
- id: '1749315801894'
alias: "\U0001F4C5 Notif - Calendrier"
description: Envoie une notification Gotify à chaque déclenchement d'un événement
calendrier (bestioles, maison, poubelles, jardin).
triggers:
- entity_id:
- calendar.bestioles
- calendar.mashome
- calendar.garbage
- calendar.garden
to: 'on'
trigger: state
conditions: []
actions:
- action: script.notif_gotify
data:
title: "\U0001F4C5 {{ state_attr(trigger.entity_id, 'friendly_name') }}"
message: '{{ state_attr(trigger.entity_id, ''message'') }}'
priority: 5
mode: single
- id: '1751221338548'
alias: "\U0001F680 Système - Home Assistant (MAJ + démarrage + arrêt)"
description: Notifie les mises à jour disponibles (Core, OS, Supervisor) et les
événements de cycle de vie de HA (démarrage / arrêt).
triggers:
- entity_id:
- update.home_assistant_core_update
- update.home_assistant_operating_system_update
- update.home_assistant_supervisor_update
to: 'on'
id: update
trigger: state
- event: start
id: start
trigger: homeassistant
- event: shutdown
id: stop
trigger: homeassistant
actions:
- choose:
- conditions:
- condition: trigger
id: update
sequence:
- data:
title: "\U0001F680 MAJ {{ trigger.to_state.name }}"
message: Version {{ trigger.to_state.attributes.latest_version }} disponible
priority: 5
action: script.notif_gotify
- conditions:
- condition: trigger
id: start
sequence:
- data:
title: ✅ Gérald
message: Démarrage réussi
priority: 4
action: script.notif_gotify
- conditions:
- condition: trigger
id: stop
sequence:
- data:
title: ⏹️ Gérald
message: Arrêt en cours
priority: 4
action: script.notif_gotify
mode: single
- id: '1752652068313'
alias: "\U0001F3D6 Simulation Présence"
description: 'Simule une présence réaliste pendant les vacances : ouverture progressive
des volets le matin, fermeture au coucher du soleil, allumage/extinction aléatoire
des lumières en soirée.'
triggers:
- minutes: /30
trigger: time_pattern
conditions:
- condition: state
entity_id: input_boolean.vacance
state: 'on'
actions:
- choose:
- conditions:
- condition: sun
after: sunrise
after_offset: +00:30:00
- condition: time
before: '10:00:00'
sequence:
- action: cover.set_cover_position
target:
entity_id:
- cover.bibliotheque
- cover.cuisine
- cover.salle_a_manger
- cover.salon
data:
position: '{{ range(80, 100) | random }}'
- choose:
- conditions:
- condition: sun
after: sunset
after_offset: -00:30:00
sequence:
- action: cover.close_cover
target:
entity_id:
- cover.bibliotheque
- cover.cuisine
- cover.salle_a_manger
- cover.salon
data: {}
- choose:
- conditions:
- condition: time
after: '18:00:00'
before: '23:30:00'
- condition: sun
after: sunset
sequence:
- action: light.turn_on
target:
entity_id: '{{ [''light.interrupteur_veranda_l1'', ''light.bar'', ''light.plafonnier'',
''light.halogene''] | random }}'
data:
brightness_pct: '{{ range(40, 80) | random }}'
transition: 2
- delay:
minutes: '{{ range(15, 45) | random }}'
- action: light.turn_off
target:
entity_id: '{{ expand(''light.lumieres'') | selectattr(''state'', ''eq'',
''on'') | map(attribute=''entity_id'') | list | random }}'
data:
transition: 2
mode: queued
max: 3
- id: '1755537503205'
alias: "\U0001FA9F Volets - Gestion complète"
description: Ferme les volets en mode canicule (temp >24°C, hors 20h-6h, si volets
ouverts). Ouvre les volets au lever du soleil si le mode maison est 'absent'.
triggers:
- entity_id: input_select.maison_mode
trigger: state
id: mode_change
- entity_id: sensor.mont_cauvaire_temperature
above: 24
trigger: numeric_state
id: temp_canicule
- trigger: sun
event: sunrise
id: sunrise
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id: temp_canicule
- condition: not
conditions:
- condition: time
after: '20:00:00'
before: 06:00:00
- condition: numeric_state
entity_id: sensor.mont_cauvaire_temperature
above: 24
- condition: state
entity_id: cover.volets
state: open
sequence:
- action: scene.turn_on
target:
entity_id: scene.volets_chaleur
- conditions:
- condition: trigger
id: sunrise
- condition: state
entity_id: input_select.maison_mode
state: absent
sequence:
- action: cover.open_cover
target:
entity_id: cover.volets
mode: restart
- id: '1755633804919'
alias: "\U0001F9F9 Doris - Gestion complète"
description: Rappel de vidage du réservoir si ≥5 cycles (11h et 19h). Incrémente
le compteur et notifie à chaque fin de nettoyage.
triggers:
- trigger: time
at: '11:00:00'
id: notification_matin
- trigger: time
at: '19:00:00'
id: notification_soir
- trigger: state
entity_id:
- vacuum.doris
from:
- returning
to:
- docked
id: nettoyage_termine
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id:
- notification_matin
- notification_soir
- condition: numeric_state
entity_id: counter.cycle_doris
above: 5
sequence:
- action: script.notif_gotify
data:
title: "\U0001F9F9 Doris"
message: 'Réservoir à vider : {{ states(''counter.cycle_doris'') }} cycles
effectués'
priority: 6
- conditions:
- condition: trigger
id: nettoyage_termine
sequence:
- action: counter.increment
target:
entity_id: counter.cycle_doris
- action: script.notif_gotify
data:
title: "\U0001F9F9 Doris"
message: Nettoyage terminé ({{ states('counter.cycle_doris') }} cycles)
priority: 3
mode: queued
max: 3
- id: '1755637169948'
alias: ⏱️ Timer Unifié - TV Chambre et Home Cinéma
description: 'Gestion centralisée des timers d''extinction : TV chambre (durée configurable
via input_number) et home cinéma (fixe 1h30). Notifie au démarrage, à l''extinction
et en cas d''annulation.'
triggers:
- entity_id: input_boolean.etat_minuteur_chambre
to: 'on'
trigger: state
id: timer_chambre
- entity_id: input_boolean.minuteur_salon
to: 'on'
trigger: state
id: timer_salon
- trigger: state
entity_id:
- input_boolean.etat_minuteur_chambre
to:
- 'off'
id: cancel_chambre
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id:
- timer_chambre
sequence:
- variables:
delay_minutes: '{{ states(''input_number.timer_ch'') | int(30) }}'
- action: script.notif_gotify
data:
title: ⏱️ Timer TV Chambre
message: Extinction dans {{ delay_minutes }} minutes
priority: 3
- delay:
minutes: '{{ delay_minutes }}'
- condition: state
entity_id: input_boolean.etat_minuteur_chambre
state: 'on'
- action: switch.turn_off
target:
entity_id:
- switch.tele_chambre
- action: input_boolean.turn_off
target:
entity_id: input_boolean.etat_minuteur_chambre
- action: script.notif_gotify
data:
title: ✅ Timer terminé
message: TV chambre éteinte
priority: 2
- conditions:
- condition: trigger
id:
- timer_salon
sequence:
- action: script.notif_gotify
data:
title: ⏱️ Timer Home Cinéma
message: Extinction dans 1h30
priority: 3
- delay:
hours: 1
minutes: 30
- condition: state
entity_id: input_boolean.minuteur_salon
state: 'on'
- action: switch.turn_off
target:
entity_id: switch.home_cinema_prise
- action: input_boolean.turn_off
target:
entity_id: input_boolean.minuteur_salon
- action: script.notif_gotify
data:
title: ✅ Timer terminé
message: Home cinéma éteint
priority: 2
- conditions:
- condition: trigger
id:
- cancel_chambre
sequence:
- action: script.notif_gotify
data:
title: ❌ Timer annulé
message: Timer chambre annulé
priority: 2
mode: parallel
max: 2
- id: '1758057240516'
alias: "\U0001F4FA Home Cinéma - Gestion complète"
description: Synchronise la Bbox, la prise home cinéma et le plafonnier. Gère l'allumage/extinction
de nuit (lumière ambiante) et adapte le comportement selon l'origine du déclenchement
(prise ou Bbox).
triggers:
- entity_id: switch.home_cinema_prise
trigger: state
to: 'on'
for:
seconds: 3
id: TVON
- entity_id: switch.home_cinema_prise
trigger: state
to: 'off'
id: TVOFF
- type: turned_on
device_id: 3b837fd4e120ab9b973f31ce99017ef5
entity_id: 34b78481039c1e06821015a0e6bed72d
domain: remote
trigger: device
for:
seconds: 3
id: bbox_on
- trigger: sun
event: sunset
id: Coucher_soleil
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id: TVON
- condition: sun
after: sunset
before: sunrise
sequence:
- action: remote.turn_on
target:
entity_id: remote.bboxtv
- action: light.turn_on
data:
color_temp_kelvin: 2000
brightness_pct: 50
target:
entity_id: light.plafonnier
- conditions:
- condition: trigger
id: TVON
- condition: sun
before: sunset
after: sunrise
sequence:
- action: remote.turn_on
target:
entity_id: remote.bboxtv
- conditions:
- condition: trigger
id: bbox_on
- condition: sun
after: sunset
before: sunrise
sequence:
- action: switch.turn_on
target:
entity_id: switch.home_cinema_prise
- action: light.turn_on
data:
color_temp_kelvin: 2000
brightness_pct: 50
target:
entity_id: light.plafonnier
- conditions:
- condition: trigger
id: bbox_on
- condition: sun
before: sunset
after: sunrise
sequence:
- action: switch.turn_on
target:
entity_id: switch.home_cinema_prise
- conditions:
- condition: trigger
id: Coucher_soleil
- condition: state
entity_id: switch.home_cinema_prise
state: 'on'
sequence:
- action: light.turn_on
data:
color_temp_kelvin: 2000
brightness_pct: 50
target:
entity_id: light.plafonnier
- conditions:
- condition: trigger
id: TVOFF
sequence:
- action: remote.turn_off
target:
entity_id: remote.bboxtv
device_id:
- 3b837fd4e120ab9b973f31ce99017ef5
- e40a5194622be081af6b905eaa6675c6
area_id: salon
data: {}
- action: light.turn_off
target:
entity_id: light.plafonnier
mode: restart
- id: '1763205350889'
alias: "\U0001FA9F Radiateurs + Fenêtres"
description: Coupe le radiateur chambre si la fenêtre reste ouverte >10s, le rallume
2min après fermeture. Même logique pour le radiateur bureau via le capteur de
verrou.
triggers:
- entity_id:
- binary_sensor.fenetre_chambre
- binary_sensor.verrou_fenetre_bureau
trigger: state
for:
seconds: 10
conditions: []
actions:
- choose:
- conditions:
- condition: template
value_template: '{{ trigger.entity_id == ''binary_sensor.fenetre_chambre''
}}'
- condition: state
entity_id: binary_sensor.fenetre_chambre
state: 'on'
- condition: template
value_template: '{{ states(''climate.radiateur_chambre'') != ''off'' }}'
sequence:
- action: climate.set_hvac_mode
target:
device_id: f8576af3693e3b54af895631c64538fb
data:
hvac_mode: 'off'
- action: script.notif_gotify
data:
title: "\U0001FA9F Fenêtre chambre"
message: Radiateur coupé (fenêtre ouverte)
priority: 4
enabled: false
- conditions:
- condition: template
value_template: '{{ trigger.entity_id == ''binary_sensor.fenetre_chambre''
}}'
- condition: state
entity_id: binary_sensor.fenetre_chambre
state: 'off'
for:
seconds: 5
- condition: template
value_template: '{{ states(''climate.radiateur_chambre'') == ''off'' }}'
sequence:
- delay:
minutes: 2
- condition: state
entity_id: binary_sensor.fenetre_chambre
state: 'off'
- condition: template
value_template: '{{ states(''climate.radiateur_chambre'') == ''off'' }}'
- action: climate.set_hvac_mode
target:
device_id: f8576af3693e3b54af895631c64538fb
data:
hvac_mode: heat
- action: script.notif_gotify
data:
title: "\U0001FA9F Fenêtre chambre"
message: Radiateur rallumé (fenêtre fermée)
priority: 3
enabled: false
- choose:
- conditions:
- condition: template
value_template: '{{ trigger.entity_id == ''binary_sensor.verrou_fenetre_bureau''
}}'
- condition: state
entity_id: binary_sensor.verrou_fenetre_bureau
state: 'on'
- condition: state
entity_id: switch.radiateur_bureau
state: 'on'
sequence:
- action: switch.turn_off
target:
entity_id: switch.radiateur_bureau
- action: script.notif_gotify
data:
title: "\U0001FA9F Fenêtre bureau"
message: Radiateur coupé (fenêtre ouverte)
priority: 4
enabled: false
- conditions:
- condition: template
value_template: '{{ trigger.entity_id == ''binary_sensor.verrou_fenetre_bureau''
}}'
- condition: state
entity_id: binary_sensor.verrou_fenetre_bureau
state: 'off'
for:
seconds: 5
- condition: state
entity_id: switch.radiateur_bureau
state: 'off'
sequence:
- delay:
minutes: 2
- condition: state
entity_id: binary_sensor.verrou_fenetre_bureau
state: 'off'
- condition: state
entity_id: switch.radiateur_bureau
state: 'off'
- action: switch.turn_on
target:
entity_id: switch.radiateur_bureau
- action: script.notif_gotify
data:
title: "\U0001FA9F Fenêtre bureau"
message: Radiateur rallumé (fenêtre fermée)
priority: 3
enabled: false
mode: queued
max: 5
- id: '1766170300000'
alias: "\U0001F527 Maintenance et Surveillance"
description: Surveille les appareils hors ligne (10min), les erreurs Doris (5min),
les batteries critiques (<10%, heure ouvrable). Rapport batteries faibles (<20%)
tous les dimanches à 10h.
triggers:
- entity_id:
- vacuum.doris
- switch.radiateur_bureau
- switch.home_cinema_prise
- cover.volets
- climate.radiateur_chambre
to: unavailable
trigger: state
for:
minutes: 10
id: appareil_offline
- entity_id: vacuum.doris
to: error
trigger: state
for:
minutes: 5
id: doris_erreur
- trigger: numeric_state
entity_id:
- sensor.doris_battery_level
- sensor.porte_bibliotheque
- sensor.porte_veranda
- sensor.fenetre_chambre
- sensor.verrou_fenetre_bureau
below: 10
id: batterie_critique
for:
hours: 1
- trigger: state
entity_id: sensor.litiere_etat_batterie
to: low
id: batterie_litiere
for:
hours: 1
- trigger: time
at: '10:00:00'
id: rappel_hebdo
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id: appareil_offline
sequence:
- action: script.notif_gotify
data:
title: "\U0001F50C Appareil hors ligne"
message: '{{ trigger.to_state.attributes.friendly_name }} indisponible'
priority: 8
- conditions:
- condition: trigger
id: doris_erreur
sequence:
- action: script.notif_gotify
data:
title: "\U0001F9F9 Doris - Erreur"
message: Doris en erreur depuis 5min
priority: 8
- conditions:
- condition: trigger
id: batterie_critique
- condition: template
value_template: '{{ now().hour >= 8 and now().hour < 22 }}'
sequence:
- action: script.notif_gotify
data:
title: "\U0001F50B Batterie critique"
message: '{{ trigger.to_state.attributes.friendly_name }} à {{ trigger.to_state.state
}}%'
priority: 8
- conditions:
- condition: trigger
id: batterie_litiere
sequence:
- action: script.notif_gotify
data:
title: "\U0001F50B Batterie litière"
message: Batterie du capteur PIR litière faible
priority: 8
- conditions:
- condition: trigger
id: rappel_hebdo
- condition: time
weekday:
- sun
sequence:
- variables:
batteries_faibles: "{% set ns = namespace(liste=[]) %} {% for entity in
[\n 'sensor.doris_battery_level',\n 'sensor.porte_veranda',\n 'sensor.porte_bibliotheque',\n
\ 'sensor.fenetre_chambre',\n 'sensor.verrou_fenetre_bureau'\n] %}\n
\ {% set niveau = states(entity) | int(100) %}\n {% if niveau < 20 %}\n
\ {% set nom = state_attr(entity, 'friendly_name') %}\n {% set ns.liste
= ns.liste + [nom ~ ' (' ~ niveau ~ '%)'] %}\n {% endif %}\n{% endfor
%} {{ ns.liste | join(', ') }}"
- condition: template
value_template: '{{ batteries_faibles != "" }}'
- action: script.notif_gotify
data:
title: "\U0001F50B Rappel batteries"
message: 'À surveiller : {{ batteries_faibles }}'
priority: 5
mode: queued
max: 5
- id: '1766170300001'
alias: "\U0001F326 Météo - Gestion complète"
description: Alerte en cas de pluie, orage ou neige (après 15min de stabilisation).
Alerte gel entre 17h et 21h si température <3°C depuis 15min.
triggers:
- entity_id:
- sensor.mont_cauvaire_original_condition
trigger: state
id: condition_change
for:
hours: 0
minutes: 15
seconds: 0
- entity_id:
- sensor.mont_cauvaire_temperature
below: 3
trigger: numeric_state
id: risque_gel
for:
hours: 0
minutes: 15
seconds: 0
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id:
- condition_change
- condition: template
value_template: '{{ trigger.to_state.state in [''pluie'', ''orage'', ''neige'']
}}'
- condition: template
value_template: '{{ trigger.from_state.state not in [''pluie'', ''orage'',
''neige''] }}'
sequence:
- choose:
- conditions:
- condition: template
value_template: '{{ trigger.to_state.state == ''orage'' }}'
sequence:
- action: script.notif_gotify
data:
title: ⛈️ Alerte orage
message: Rentrer mobilier jardin et fermer fenêtres !
priority: 8
default:
- action: script.notif_gotify
data:
title: "\U0001F326 Alerte météo"
message: '{{ trigger.to_state.state | capitalize }}'
priority: 6
- conditions:
- condition: trigger
id:
- risque_gel
- condition: time
after: '17:00:00'
before: '21:00:00'
sequence:
- action: script.notif_gotify
data:
title: "\U0001F331 Protection plantes"
message: Gel prévu ({{ states('sensor.mont_cauvaire_temperature') }}°C)
- Protéger plantes !
priority: 7
mode: queued
max: 3
- id: '1766573335939'
alias: "\U0001F431 Litière - Utilisation et notifications"
description: Détecte chaque passage de Mojo (filtre 15s), incrémente le compteur
et notifie sur mobile. Déclenche un rappel nettoyage au seuil configuré, et un
rappel grand nettoyage au seuil de nettoyages cumulés. Reset manuel via input_button.
triggers:
- entity_id:
- binary_sensor.litiere_mouvement
to:
- 'on'
trigger: state
id: utilisation
for:
seconds: '{{ states(''input_number.duree_detection_litiere'') | int(15) }}'
- entity_id: counter.compteur_litiere
trigger: state
id: check_nettoyage
- entity_id: counter.nettoyages_litiere
trigger: state
id: check_gros_nettoyage
- entity_id: input_button.litiere_reset
trigger: state
id: reset
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id:
- utilisation
sequence:
- action: counter.increment
target:
entity_id: counter.compteur_litiere
- action: notify.mobile_app_arthas
data:
title: "\U0001F431 Litière"
message: Mojo a chié.
- conditions:
- condition: trigger
id:
- check_nettoyage
- condition: template
value_template: "{{ states('counter.compteur_litiere') | int >= \n states('input_number.seuil_nettoyage_litiere')
| int }}"
sequence:
- action: script.notif_gotify
data:
title: "\U0001F9F9 Litière à nettoyer"
message: Mojo a utilisé la litière {{ states('counter.compteur_litiere')
}} fois. Il est temps de retirer les crottes !
priority: 6
- action: counter.reset
target:
entity_id: counter.compteur_litiere
- conditions:
- condition: trigger
id:
- check_gros_nettoyage
- condition: template
value_template: "{{ states('counter.nettoyages_litiere') | int >= \n states('input_number.seuil_gros_nettoyage')
| int }}"
sequence:
- action: script.notif_gotify
data:
title: "\U0001F9FC GROS NETTOYAGE litière"
message: '{{ states(''counter.nettoyages_litiere'') }} nettoyages effectués
! Il est temps de faire le gros nettoyage complet de la litière (changement
total).'
priority: 8
- action: counter.reset
target:
entity_id: counter.nettoyages_litiere
- action: counter.reset
target:
entity_id: counter.compteur_litiere
- conditions:
- condition: trigger
id:
- reset
sequence:
- action: counter.reset
target:
entity_id: counter.compteur_litiere
mode: queued
max: 3
- id: '1771693177609'
alias: "\U0001F4A1 Lumières - Gestion complète"
description: Allume la véranda et le bar à l'arrivée d'un habitant après le coucher
du soleil (extinction véranda après 5min). Allume l'allée si une ouverture est
détectée de nuit.
triggers:
- entity_id:
- person.morgane
- person.seb
zone: zone.home
event: enter
id: arrivee
trigger: zone
- entity_id:
- binary_sensor.fenetre_bibliotheque
- binary_sensor.porte_veranda
to: 'on'
id: ouverture
trigger: state
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id: arrivee
- condition: sun
after: sunset
sequence:
- target:
entity_id:
- light.bar
- light.interrupteur_veranda_l1
data:
brightness_pct: 100
action: light.turn_on
- delay: 00:05:00
- target:
entity_id: light.interrupteur_veranda_l1
action: light.turn_off
data: {}
- conditions:
- condition: trigger
id: ouverture
- condition: state
entity_id: sun.sun
state: below_horizon
sequence:
- target:
entity_id: switch.allee
action: switch.turn_on
data: {}
- delay: 00:05:00
- target:
entity_id: switch.allee
action: switch.turn_off
data: {}
mode: restart
- id: '1777000000001'
alias: "\U0001F3E0 Mode Maison - Gestion complète"
description: Met à jour input_select.maison_mode selon la présence de Morgane et
Seb et l'état du mode vacances. Désactive automatiquement les vacances au retour
d'un habitant.
triggers:
- entity_id: person.morgane
zone: zone.home
event: enter
trigger: zone
id: morgane_enter
- entity_id: person.morgane
zone: zone.home
event: leave
trigger: zone
id: morgane_leave
- entity_id: person.seb
zone: zone.home
event: enter
trigger: zone
id: seb_enter
- entity_id: person.seb
zone: zone.home
event: leave
trigger: zone
id: seb_leave
- entity_id: input_boolean.vacance
trigger: state
id: vacance_toggle
conditions: []
actions:
- choose:
- alias: Retour maison pendant vacances → désactive vacances
conditions:
- condition: or
conditions:
- condition: trigger
id: morgane_enter
- condition: trigger
id: seb_enter
- condition: state
entity_id: input_boolean.vacance
state: 'on'
sequence:
- action: input_boolean.turn_off
target:
entity_id: input_boolean.vacance
- action: alarmo.disarm
data:
code: '4212'
- alias: Vacances activées → mode vacances + armer Alarmo
conditions:
- condition: trigger
id: vacance_toggle
- condition: state
entity_id: input_boolean.vacance
state: 'on'
sequence:
- action: input_select.select_option
target:
entity_id: input_select.maison_mode
data:
option: vacances
- action: alarmo.arm
data:
mode: vacation
code: '4212'
- alias: Vacances OFF + quelqu'un à la maison → mode maison + désarmer
conditions:
- condition: or
conditions:
- condition: trigger
id: morgane_enter
- condition: trigger
id: seb_enter
- condition: state
entity_id: input_boolean.vacance
state: 'off'
- condition: template
value_template: '{{ is_state(''person.morgane'', ''home'') or is_state(''person.seb'',
''home'') }}'
sequence:
- action: input_select.select_option
target:
entity_id: input_select.maison_mode
data:
option: maison
- action: alarmo.disarm
data:
code: '4212'
- alias: Vacances OFF + tout le monde absent → mode absent + armer
conditions:
- condition: or
conditions:
- condition: trigger
id: morgane_leave
- condition: trigger
id: seb_leave
- condition: state
entity_id: input_boolean.vacance
state: 'off'
- condition: template
value_template: '{{ is_state(''person.morgane'', ''not_home'') and is_state(''person.seb'',
''not_home'') }}'
sequence:
- action: input_select.select_option
target:
entity_id: input_select.maison_mode
data:
option: absent
- action: alarmo.arm
data:
mode: away
code: '4212'
mode: restart
- id: '1781010467486'
alias: "\U0001F33F Marcelino - Gestion complète"
description: 'Notifie les erreurs, la batterie faible et le bilan du soir (19h15
: retour en cours, erreur ou non en charge). Confirme le retour en base après
19h15.'
triggers:
- id: erreur_change
entity_id: sensor.marcelino_erreur
trigger: state
- id: batterie_basse
entity_id:
- sensor.marcelino_batterie
below: 3
trigger: numeric_state
- id: soir
at: '19:15:00'
trigger: time
- id: docked
entity_id: lawn_mower.marcelino
from: returning
to: docked
for:
seconds: 15
trigger: state
actions:
- choose:
- conditions:
- condition: trigger
id: erreur_change
- condition: template
value_template: '{{ erreur != ''no_error'' }}'
sequence:
- data:
title: "\U0001F33F Marcelino"
message: '❌ Erreur : {{ erreur }}'
priority: 9
action: script.notif_gotify
- conditions:
- condition: trigger
id: batterie_basse
sequence:
- data:
title: "\U0001F33F Marcelino"
message: "\U0001F50B Batterie faible : {{ states('sensor.marcelino_batterie')
}}%"
priority: 7
action: script.notif_gotify
- conditions:
- condition: trigger
id: soir
- condition: not
conditions:
- condition: state
entity_id: lawn_mower.marcelino
state: docked
sequence:
- choose:
- conditions:
- condition: state
entity_id: lawn_mower.marcelino
state: returning
sequence:
- data:
title: "\U0001F33F Marcelino"
message: "\U0001F3E0 Marcelino est sur le chemin du retour"
priority: 5
action: script.notif_gotify
- conditions:
- condition: template
value_template: '{{ erreur != ''no_error'' }}'
sequence:
- data:
title: "\U0001F33F Marcelino"
message: '❌ Erreur soir : {{ erreur }}'
priority: 9
action: script.notif_gotify
- conditions:
- condition: template
value_template: '{{ tension < 25 }}'
sequence:
- data:
title: "\U0001F33F Marcelino"
message: ⚠️ Non en charge
priority: 7
action: script.notif_gotify
- conditions:
- condition: trigger
id: docked
- condition: time
after: '19:15:00'
sequence:
- data:
title: "\U0001F33F Marcelino"
message: ✅ Marcelino est rentré à la maison
priority: 5
action: script.notif_gotify
variables:
erreur: '{{ states(''sensor.marcelino_erreur'') }}'
tension: '{{ states(''sensor.marcelino_batterie'') | float(0) }}'
mode: restart
- id: '1781032426339'
alias: "\U0001F37D Mealie - Sync menus semaine"
description: Synchronise les menus Mealie — utilise la date de référence si définie
triggers:
- trigger: time
at: 06:00:00
- trigger: homeassistant
event: start
- trigger: state
entity_id: input_datetime.mealie_semaine_ref
conditions: []
actions:
- variables:
ref_date: "{% set ref = states('input_datetime.mealie_semaine_ref') %} {% if
ref not in ['unknown','unavailable',''] %}\n {% set d = strptime(ref, '%Y-%m-%d')
%}\n {{ (d.date() - timedelta(days=d.weekday())).strftime('%Y-%m-%d') }}\n{%
else %}\n {{ (now().date() - timedelta(days=now().weekday())).strftime('%Y-%m-%d')
}}\n{% endif %}"
- repeat:
for_each:
- nom: lundi
offset: 0
- nom: mardi
offset: 1
- nom: mercredi
offset: 2
- nom: jeudi
offset: 3
- nom: vendredi
offset: 4
- nom: samedi
offset: 5
- nom: dimanche
offset: 6
sequence:
- variables:
jour_nom: '{{ repeat.item.nom }}'
jour_date: '{{ (strptime(ref_date, ''%Y-%m-%d'').date() + timedelta(days=repeat.item.offset)).strftime(''%Y-%m-%d'')
}}'
- repeat:
for_each:
- nom: petit_dejeuner
entity: calendar.mealie_petit_dejeuner
- nom: dejeuner
entity: calendar.mealie_dejeuner
- nom: accompagnement
entity: calendar.mealie_accompagnement
- nom: collation
entity: calendar.mealie_collation
- nom: dessert
entity: calendar.mealie_dessert
- nom: diner
entity: calendar.mealie_diner
sequence:
- action: calendar.get_events
target:
entity_id: '{{ repeat.item.entity }}'
data:
start_date_time: '{{ jour_date }}T00:00:00'
end_date_time: '{{ jour_date }}T23:59:59'
response_variable: events
- action: input_text.set_value
target:
entity_id: input_text.mealie_{{ jour_nom }}_{{ repeat.item.nom }}
data:
value: "{% set cal = repeat.item.entity %} {% if events[cal] is defined
and events[cal].events | length > 0 %}\n {{ events[cal].events[0].summary
}}\n{% else %}\n \n{% endif %}\n"
mode: single
- id: '1781126730091'
alias: Alarmo - Alertes Alexa simples
triggers:
- entity_id: alarm_control_panel.alarmo
to: armed_away
id: armed
trigger: state
- entity_id: alarm_control_panel.alarmo
to: disarmed
id: disarmed
trigger: state
- entity_id: alarm_control_panel.alarmo
to: triggered
id: triggered
trigger: state
actions:
- choose:
- conditions:
- condition: trigger
id: armed
sequence:
- data:
target:
- media_player.echo_chambre
- media_player.echo_bureau
- media_player.echo_salon
message: Système armé.
data:
type: announce
action: notify.alexa_media
- conditions:
- condition: trigger
id: disarmed
sequence:
- data:
target:
- media_player.echo_chambre
- media_player.echo_bureau
- media_player.echo_salon
message: Système désarmé.
data:
type: announce
action: notify.alexa_media
- conditions:
- condition: trigger
id: triggered
sequence:
- data:
target:
- media_player.echo_chambre
- media_player.echo_bureau
- media_player.echo_salon
message: Alerte intrusion. Alarme déclenchée.
data:
type: announce
action: notify.alexa_media
enabled: true
- action: notify.mobile_app_tablette
metadata: {}
data:
message: Intrusion détectée
title: "\U0001F6A8 Alarme"
mode: single
- id: '1781519588436'
alias: "\U0001F514 Michelle - Gestion minuteur"
description: Capture la source et notifie en boucle jusqu'à confirmation
triggers:
- event_type: assist_pipeline_run
id: capture_source
trigger: event
- event_type: timer.finished
id: timer_fini
trigger: event
actions:
- choose:
- conditions:
- condition: trigger
id: capture_source
sequence:
- action: input_text.set_value
target:
entity_id: input_text.timer_source_device
data:
value: '{{ trigger.event.data.device_id }}'
- conditions:
- condition: trigger
id: timer_fini
sequence:
- action: input_boolean.turn_on
target:
entity_id: input_boolean.timer_actif
- repeat:
while:
- condition: state
entity_id: input_boolean.timer_actif
state: 'on'
sequence:
- action: 'notify.{{ states(''input_text.timer_source_device'') }}
'
data:
title: ⏰ Minuteur terminé !
message: Dis Okay Nabu, arrête le minuteur
data:
channel: timer
importance: high
ttl: 0
priority: high
persistent: true
tag: timer_alert
- delay:
seconds: 30