permissions:
contents: read
+ packages: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
runs-on: ubuntu-latest
strategy:
+ max-parallel: 1
matrix:
version: [ "stable", "beta" ]
steps:
+ # ---------------------------------------------------------
+ # CHECKOUT
+ # ---------------------------------------------------------
- name: ⤵️ Check out configuration from GitHub
uses: actions/checkout@v4
- with:
- fetch-depth: 0
- clean: true
# ---------------------------------------------------------
# CACHE PIP
# ---------------------------------------------------------
- name: ⤵️ Check out Custom Components
run: |
- mkdir custom_components/
+ mkdir -p custom_components/
# Monitor Docker
git clone https://github.com/ualex73/monitor_docker
mv monitor_docker/custom_components/monitor_docker/ custom_components/
cp credentials/.google_dummy.json credentials/google.json
# ---------------------------------------------------------
- # HOME ASSISTANT CONFIG CHECK (Docker)
+ # FETCH HOME ASSISTANT IMAGE
# ---------------------------------------------------------
- name: ⤵️ Fetch Home Assistant Docker Image
run: |
docker pull -q "ghcr.io/home-assistant/home-assistant:${{ matrix.version }}"
+ # ---------------------------------------------------------
+ # HOME ASSISTANT CONFIG CHECK
+ # ---------------------------------------------------------
- name: 🚀 Run Home Assistant Configuration Check
run: |
# Show Version
steps:
- name: ⤵️ Checkout
uses: actions/checkout@v4
- with:
- fetch-depth: 0
- clean: true
- name: 🔑 Dummy secrets
run: |
id: "risveglio_giorgio"
#initial_state: 'on'
- trigger:
+ triggers:
- trigger: time
at: '07:00:00'
- condition:
- condition: and
- conditions:
+ conditions:
+ - and:
- condition: state
entity_id: input_boolean.home_mode_away
state: 'off'
- condition: time
weekday: [mon, tue, wed, thu, fri]
- action:
+ actions:
- action: cover.set_cover_position
data:
entity_id:
id: "porta_casa_accendi_luci_corridoio"
mode: single
- trigger:
+ triggers:
- trigger: state
entity_id: binary_sensor.porta_casa_contact
to: 'on'
- condition:
- condition: and
- conditions:
+ conditions:
+ - and:
- condition: numeric_state
entity_id: sun.sun
attribute: elevation
entity_id: group.lights
state: "off"
- action:
+ actions:
- delay: 00:00:01
- action: light.turn_on
entity_id: light.luce_zona_giorno
- alias: "Allarmi: Consumo Energetico Elevato"
id: "allarmi_consumo_energetico_elevato"
- trigger:
+ triggers:
- trigger: numeric_state
entity_id: sensor.shelly_em_channel_1_potenza
above: 3300
- action:
- action: script.notify_all
- data_template:
- title: "Home Assistant - Consumo Energetico Elevato"
- message: "Consumo energetico elevato ({{ states.sensor.shelly_em_channel_1_potenza.state }})."
- enable_persistent: false
- volume_level: 0.4
+ actions:
+ - action: script.notify_all
+ data_template:
+ title: "Home Assistant - Consumo Energetico Elevato"
+ message: "Consumo energetico elevato ({{ states.sensor.shelly_em_channel_1_potenza.state }})."
+ enable_persistent: false
+ volume_level: 0.4
- alias: "Home Assistant: Cambio modalità On"
id: "home_assistant_cambio_modalita_on"
- trigger:
- trigger: state
- entity_id: input_boolean.home_mode_day,
- input_boolean.home_mode_night,
- input_boolean.home_mode_away
- to: 'on'
+ triggers:
+ - trigger: state
+ entity_id: input_boolean.home_mode_day,
+ input_boolean.home_mode_night,
+ input_boolean.home_mode_away
+ to: 'on'
- action:
+ actions:
- action: input_boolean.turn_off
data_template:
entity_id: >
- alias: "Home Assistant: Cambio modalità Off"
- trigger:
- trigger: state
- entity_id: input_boolean.home_mode_day,
- input_boolean.home_mode_night,
- input_boolean.home_mode_away
- to: 'off'
+ triggers:
+ - trigger: state
+ entity_id: input_boolean.home_mode_day,
+ input_boolean.home_mode_night,
+ input_boolean.home_mode_away
+ to: 'off'
- condition:
- condition: and
- conditions:
+ conditions:
+ - and:
- condition: state
entity_id: input_boolean.home_mode_day
state: 'off'
entity_id: input_boolean.home_mode_away
state: 'off'
- action:
+ actions:
- action: input_boolean.turn_on
data_template:
entity_id: >
- alias: "Home Assistant: Modalità Giorno/Notte"
id: "home_assistant_modalita_giorno_notte"
- trigger:
+ triggers:
- trigger: time
at: '08:00:00'
- trigger: time
- alias: "Home Assistant: Gestione notifiche vocali"
id: "home_assistant_gestione_notifiche_vocali"
- trigger:
+ triggers:
- trigger: state
entity_id: input_boolean.home_mode_night
to: 'on'
- alias: "Home Assistant: Pulitura settimanale log"
id: "home_assistant_pulitura_settimanale_log"
- trigger:
+ triggers:
- trigger: time
at: '00:00:00'
######################################################################
- alias: "Accendi luce bagno se occupato e casa non vuota"
id: "accendi_luci_presenza_bagno_grande"
+
description: >
If someone is at home, the bathroom is occupied,
the sun is low, and it is between 3:00 p.m. and 5:00 a.m.,
turn on the light in the large bathroom and turn it off after a while.
- trigger:
- - platform: state
+
+ triggers:
+ - trigger: state
entity_id: binary_sensor.sensore_presenza_bagno_grande_occupancy
to: "on"
- alias: "Google Home: Pronuncia testo"
id: "google_home_pronuncia_testo"
- trigger:
+ triggers:
- trigger: state
entity_id: input_text.google_home_speak
- trigger: state
entity_id: input_text.google_anna_speak
- condition: []
-
- action:
+ actions:
- action: script.speech_engine
data_template:
media_player: >
!secret nfc_1:
name: "NFC_1"
- trigger:
- trigger: event
- event_type: tag_scanned
+ triggers:
+ - trigger: event
+ event_type: tag_scanned
- action:
+ actions:
- variables:
detected_tag: "{{ trigger.event.data.tag_id }}"
detected_device: "{{ trigger.event.data.device_id }}"
id: "modalita_notte"
initial_state: false
- trigger:
+ triggers:
- trigger: state
entity_id: input_boolean.home_mode_night
to: 'on'
- condition: []
-
- action:
- - action: cover.set_cover_position
- data:
- entity_id: cover.tapparella_globale
- position: 15
-
+ actions:
- action: cover.set_cover_position
data:
- entity_id: cover.tapparella_camera
position: 0
+ entity_id:
+ - cover.tapparella_cucina_grande
+ - cover.tapparella_sala
+ - cover.tapparella_studio
+ - cover.tapparella_camera
id: "saluto_di_benvenuto"
mode: parallel
- trigger:
+ triggers:
- trigger: zone
entity_id:
- person.giorgio
zone: zone.home
event: enter
- condition: []
-
- action:
+ actions:
- wait_for_trigger:
- trigger: state
entity_id: binary_sensor.porta_casa_contact
- alias: "Saluto orario"
initial_state: false
- trigger:
+ triggers:
- trigger: time
at: '12:00:00'
- alias: "Home Assistant - Startup: Google Sync"
id: "home_assistant_startup_google_sync"
- trigger:
+ triggers:
- trigger: homeassistant
event: start
- action:
+ actions:
- action: script.homeassistant_google_home_sync
- alias: "Home Assistant - Modalità Test: Azione on"
id: "home_assistant_modalita_test_azione_on"
- trigger:
+ triggers:
- trigger: state
entity_id: input_boolean.test_mode
to: 'on'
- alias: "Home Assistant - Modalità Test: Azione off"
id: "home_assistant_modalita_test_azione_off"
- trigger:
+ triggers:
- trigger: state
entity_id: input_boolean.test_mode
to: 'off'
- alias: "Home Assistant - Temi: Modalità Giorno/Notte"
id: "home_assistant_temi_modalita_giorno_notte"
- trigger:
+ triggers:
- trigger: homeassistant
event: start
- trigger: state
entity_id: input_boolean.home_mode_away
to: 'on'
- action:
+ actions:
- delay:
milliseconds: 50
- action: frontend.set_theme
- alias: "wireless_button_single"
id: 'wireless_button_single'
- trigger:
+ triggers:
- domain: mqtt
trigger: device
device_id: 438f9a7754246f4c5b02f7560706eb59
type: action
subtype: single
- action:
+ actions:
- action: light.toggle
entity_id: light.luce_corridoio
- alias: 'wireless_button_double'
id: 'wireless_button_double'
- trigger:
+ triggers:
- domain: mqtt
trigger: device
device_id: 438f9a7754246f4c5b02f7560706eb59
type: action
subtype: action_double
- action:
+ actions:
- action: light.toggle
entity_id: light.luce_sala
- alias: 'wireless_button_triple'
id: 'wireless_button_triple'
- trigger:
+ triggers:
- domain: mqtt
trigger: device
device_id: 438f9a7754246f4c5b02f7560706eb59
type: action
subtype: action_triple
- action:
+ actions:
- action: light.toggle
entity_id: light.luce_studio
- alias: 'wireless_button_hold'
id: 'wireless_button_hold'
- trigger:
+ triggers:
- domain: mqtt
trigger: device
device_id: 438f9a7754246f4c5b02f7560706eb59
type: action
subtype: hold
- action:
+ actions:
- action: light.toggle
entity_id: light.luci_casa
| list
}}
- trigger:
+ triggers:
- trigger: state
entity_id: group.bticino
to: 'on'
- trigger: homeassistant
event: start
- condition:
- condition: state
- entity_id: group.bticino
- state: 'on'
+ conditions:
+ - condition: state
+ entity_id: group.bticino
+ state: 'on'
- action:
+ actions:
- delay: '00:00:10'
- action: script.notify_text
data_template:
- alias: "Allarmi: Riconoscimento Allarmi"
id: "allarmi_riconoscimento_allarmi"
- trigger:
- trigger: state
- entity_id: group.alarms
- to: 'off'
+ triggers:
+ - trigger: state
+ entity_id: group.alarms
+ to: 'off'
- action:
+ actions:
- action: script.stop_alarm
- alias: "Allarmi: Porta Casa"
id: "allarmi_porta_casa"
- trigger:
+ triggers:
- trigger: state
entity_id: group.doors
to: 'on'
- condition:
+ conditions:
- condition: state
entity_id: binary_sensor.guard_mode
state: 'on'
- action:
+ actions:
- action: script.start_alarm
data_template:
entity_id: input_boolean.door_alarm
- alias: "Allarmi: Perdita Acqua"
id: "allarmi_perdita_acqua"
- trigger:
+ triggers:
- trigger: state
entity_id: group.water
to: 'on'
- action:
+ actions:
- action: script.start_alarm
data_template:
entity_id: input_boolean.water_alarm
- alias: "Allarmi: Auto"
id: "allarmi_auto"
- trigger:
+ triggers:
- trigger: state
entity_id: group.car_alarm
to: 'on'
- action:
+ actions:
- action: script.start_alarm
data_template:
entity_id: input_boolean.car_alarm
- alias: "Modalità Vacanza: Gestione Termosifoni"
id: "modalita_vacanza_gestione_termosifoni"
- trigger:
+ triggers:
- trigger: state
entity_id: input_boolean.home_mode_away
to: 'on'
entity_id: input_boolean.home_mode_away
to: 'off'
- condition: []
-
- action:
+ actions:
- choose:
# Switch On
- conditions:
id: "modalita_vacanza_gestione_tapparelle"
#initial_state: 'on'
- trigger:
+ triggers:
- trigger: time
at: '08:00:00'
- trigger: time
at: '20:00:00'
- condition:
+ conditions:
- condition: state
entity_id: input_boolean.home_mode_away
state: 'on'
- action:
+ actions:
- action: cover.set_cover_position
data_template:
entity_id:
- alias: "Modalità Vacanza: Azione on"
id: "modalita_vacanza_azione_on"
- trigger:
+ triggers:
- trigger: state
entity_id: input_boolean.home_mode_away
to: 'on'
- action:
+ actions:
- action: script.notify_voice
data_template:
message: "Modalità vacanza abilitata"
- alias: "Modalità Vacanza: Azione off"
id: "modalita_vacanza_azione_off"
- trigger:
+ triggers:
# Manual Disable
- trigger: state
entity_id: input_boolean.home_mode_away
- trigger: time
at: input_datetime.away_mode_end
- condition:
- condition: or
- conditions:
+ conditions:
+ - or:
- condition: template
value_template: >-
{% if trigger.entity_id == 'input_boolean.home_mode_away' %}
- alias: "Riscaldamento Centralizzato"
id: "riscaldamneto_centralizzato"
- trigger:
+ triggers:
- trigger: homeassistant
event: start
- trigger: time
at: '00:00:00'
- condition: []
-
- action:
+ actions:
- choose:
# Switch on
- conditions: "{{ now().month == 11 and now().day == 1 and is_state('input_boolean.central_heating', 'off') }}"
- alias: "Home Assistant - Errori: Insorgenza Errore"
id: "home_assistant_errori_insorgenza_errore"
- trigger:
- - event_data:
+ triggers:
+ - trigger: event
+ event_data:
domain: persistent_notification
service: create
event_type: call_service
- trigger: event
- - event_data:
+ - trigger: event
+ event_data:
domain: persistent_notification
service: dimiss
event_type: call_service
- trigger: event
-
- condition: []
- action:
+ actions:
- action: input_boolean.turn_on
data_template:
entity_id: input_boolean.home_assistant_error
- alias: "Home Assistant - Errori: Scomparsa Errore"
id: "home_assistant_errori_scomparsa_errore"
- trigger:
+ triggers:
- event_data:
domain: persistent_notification
service: create
event_type: call_service
trigger: event
- condition: []
-
- action:
+ actions:
- action: input_boolean.turn_off
data_template:
entity_id: input_boolean.home_assistant_error
logbook:
exclude:
entities:
- # 7530 AX
- - binary_sensor.fritz_box_7530_ax_collegamento
- - binary_sensor.fritz_box_7530_ax_connessione
- - sensor.fritz_box_7530_ax_gb_inviati
- - sensor.fritz_box_7530_ax_gb_ricevuti
- - sensor.fritz_box_7530_ax_ip_esterno
- - sensor.fritz_box_7530_ax_ipv6_esterno
- - sensor.fritz_box_7530_ax_tempo_di_attivita_della_connessione
- - sensor.fritz_box_7530_ax_ultimo_riavvio
- - sensor.fritz_box_7530_ax_velocita_effettiva_di_caricamento
- - sensor.fritz_box_7530_ax_velocita_effettiva_di_caricamento_del_collegamento
- - sensor.fritz_box_7530_ax_velocita_effettiva_di_scaricamento
- - sensor.fritz_box_7530_ax_velocita_effettiva_di_scaricamento_del_collegamento
- - sensor.fritz_box_7530_ax_velocita_massima_di_caricamento_della_connessione
- - sensor.fritz_box_7530_ax_velocita_massima_di_scaricamento_della_connessione
- # 7590
- - sensor.fritz_box_7590_ultimo_riavvio
+ # 7530 AX
+ - binary_sensor.fritz_box_7530_ax_collegamento
+ - binary_sensor.fritz_box_7530_ax_connessione
+ - sensor.fritz_box_7530_ax_gb_inviati
+ - sensor.fritz_box_7530_ax_gb_ricevuti
+ - sensor.fritz_box_7530_ax_ip_esterno
+ - sensor.fritz_box_7530_ax_ipv6_esterno
+ - sensor.fritz_box_7530_ax_tempo_di_attivita_della_connessione
+ - sensor.fritz_box_7530_ax_ultimo_riavvio
+ - sensor.fritz_box_7530_ax_velocita_effettiva_di_caricamento
+ - sensor.fritz_box_7530_ax_velocita_effettiva_di_caricamento_del_collegamento
+ - sensor.fritz_box_7530_ax_velocita_effettiva_di_scaricamento
+ - sensor.fritz_box_7530_ax_velocita_effettiva_di_scaricamento_del_collegamento
+ - sensor.fritz_box_7530_ax_velocita_massima_di_caricamento_della_connessione
+ - sensor.fritz_box_7530_ax_velocita_massima_di_scaricamento_della_connessione
+ # 7590
+ - sensor.fritz_box_7590_ultimo_riavvio
######################################################################
# Fritz Package - Recorder
recorder:
exclude:
entities:
- # 7530 AX
- - binary_sensor.fritz_box_7530_ax_collegamento
- - binary_sensor.fritz_box_7530_ax_connessione
- - sensor.fritz_box_7530_ax_gb_inviati
- - sensor.fritz_box_7530_ax_gb_ricevuti
- - sensor.fritz_box_7530_ax_ip_esterno
- - sensor.fritz_box_7530_ax_ipv6_esterno
- - sensor.fritz_box_7530_ax_tempo_di_attivita_della_connessione
- - sensor.fritz_box_7530_ax_ultimo_riavvio
- - sensor.fritz_box_7530_ax_velocita_effettiva_di_caricamento
- - sensor.fritz_box_7530_ax_velocita_effettiva_di_caricamento_del_collegamento
- - sensor.fritz_box_7530_ax_velocita_effettiva_di_scaricamento
- - sensor.fritz_box_7530_ax_velocita_effettiva_di_scaricamento_del_collegamento
- - sensor.fritz_box_7530_ax_velocita_massima_di_caricamento_della_connessione
- - sensor.fritz_box_7530_ax_velocita_massima_di_scaricamento_della_connessione
- # 7590
- - sensor.fritz_box_7590_ultimo_riavvio
+ # 7530 AX
+ - binary_sensor.fritz_box_7530_ax_collegamento
+ - binary_sensor.fritz_box_7530_ax_connessione
+ - sensor.fritz_box_7530_ax_gb_inviati
+ - sensor.fritz_box_7530_ax_gb_ricevuti
+ - sensor.fritz_box_7530_ax_ip_esterno
+ - sensor.fritz_box_7530_ax_ipv6_esterno
+ - sensor.fritz_box_7530_ax_tempo_di_attivita_della_connessione
+ - sensor.fritz_box_7530_ax_ultimo_riavvio
+ - sensor.fritz_box_7530_ax_velocita_effettiva_di_caricamento
+ - sensor.fritz_box_7530_ax_velocita_effettiva_di_caricamento_del_collegamento
+ - sensor.fritz_box_7530_ax_velocita_effettiva_di_scaricamento
+ - sensor.fritz_box_7530_ax_velocita_effettiva_di_scaricamento_del_collegamento
+ - sensor.fritz_box_7530_ax_velocita_massima_di_caricamento_della_connessione
+ - sensor.fritz_box_7530_ax_velocita_massima_di_scaricamento_della_connessione
+ # 7590
+ - sensor.fritz_box_7590_ultimo_riavvio
automation:
| list
}}
- trigger:
+ triggers:
- trigger: state
entity_id: group.fritz
to: 'on'
- trigger: homeassistant
event: start
- condition:
- condition: state
- entity_id: group.fritz
- state: 'on'
+ conditions:
+ - condition: state
+ entity_id: group.fritz
+ state: 'on'
- action:
+ actions:
- delay: '00:00:10'
- action: script.notify_text
data_template:
- alias: "Modalità Guardia: Attivazione"
id: "modalita_guardia_attivazione"
- trigger:
+ triggers:
- trigger: state
entity_id: group.residents
from: 'home'
- trigger: homeassistant
event: start
- condition: "{{ not is_state('group.residents', 'home') }}"
+ conditions:
+ - condition: template
+ value_template: "{{ not is_state('group.residents', 'home') }}"
- action:
+
+ actions:
- action: input_boolean.turn_on
data_template:
entity_id: input_boolean.guard_mode
- alias: "Modalità Guardia: Disattivazione"
id: "modalita_guardia_disattivazione"
- trigger:
+ triggers:
- trigger: state
entity_id: group.residents
to: 'home'
- trigger: homeassistant
event: start
- condition: "{{ is_state('group.residents', 'home') }}"
+ conditions:
+ - condition: template
+ value_template: "{{ is_state('group.residents', 'home') }}"
- action:
+ actions:
- action: input_boolean.turn_off
data_template:
entity_id: input_boolean.guard_mode
# 2 -> external locked (e.g. locked by key)
######################################################################
- binary_sensor:
- - name: ff590mr_locked"
- unique_id: ff590mr_locked
- state: >
- {% if is_state('sensor.ff590mr_lock', '0') %}
- on
- {% else %}
- off
- {% endif %}
- device_class: door # oppure safety, connectivity, problem… lock non è supportato
- icon: >
- {% if not is_state('sensor.ff590mr_lock', '0') %}
- mdi:lock
- {% else %}
- mdi:lock-open
- {% endif %}
+ - name: ff590mr_locked"
+ unique_id: ff590mr_locked
+ state: >
+ {% if is_state('sensor.ff590mr_lock', '0') %}
+ on
+ {% else %}
+ off
+ {% endif %}
+ device_class: door # oppure safety, connectivity, problem… lock non è supportato
+ icon: >
+ {% if not is_state('sensor.ff590mr_lock', '0') %}
+ mdi:lock
+ {% else %}
+ mdi:lock-open
+ {% endif %}
######################################################################
# Binary Sensor: Doors Closed
- alias: "Termosifoni: Sincronizzazione con Riscaldamento Centralizzato"
id: "termosifoni_sincronizzazione_con_riscaldamento_centralizzato"
- trigger:
+ triggers:
- trigger: state
entity_id: input_boolean.central_heating
to: 'on'
entity_id: input_boolean.central_heating
to: 'off'
- condition: []
-
- action:
+ actions:
- choose:
# Switch On
- conditions:
id: termosifoni_attivazione_boost
mode: parallel
- trigger:
+ triggers:
- trigger: state
entity_id:
- input_boolean.boost_valvola_zona_giorno
id: termosifoni_disattivazione_boost
mode: parallel
- trigger:
+ triggers:
- trigger: state
entity_id:
- input_boolean.boost_valvola_zona_giorno
template:
- sensor:
- - name: "Netatmo Valve Map"
- state: "ok"
- attributes:
- boolean_to_climate: >
- { "input_boolean.valvola_zona_giorno":"climate.zona_giorno",
- "input_boolean.valvola_cucina":"climate.cucina",
- "input_boolean.valvola_sala":"climate.sala",
- "input_boolean.valvola_studio":"climate.studio",
- "input_boolean.valvola_bagno_piccolo":"climate.bagno_piccolo",
- "input_boolean.valvola_bagno_grande":"climate.bagno_grande",
- "input_boolean.valvola_camera":"climate.camera" }
+ - name: "Netatmo Valve Map"
+ state: "ok"
+ attributes:
+ boolean_to_climate: >
+ { "input_boolean.valvola_zona_giorno":"climate.zona_giorno",
+ "input_boolean.valvola_cucina":"climate.cucina",
+ "input_boolean.valvola_sala":"climate.sala",
+ "input_boolean.valvola_studio":"climate.studio",
+ "input_boolean.valvola_bagno_piccolo":"climate.bagno_piccolo",
+ "input_boolean.valvola_bagno_grande":"climate.bagno_grande",
+ "input_boolean.valvola_camera":"climate.camera" }
- boolean_to_timer: >
- { "input_boolean.valvola_zona_giorno":"timer.valvola_zona_giorno",
- "input_boolean.valvola_cucina":"timer.valvola_cucina",
- "input_boolean.valvola_sala":"timer.valvola_sala",
- "input_boolean.valvola_studio":"timer.valvola_studio",
- "input_boolean.valvola_bagno_piccolo":"timer.valvola_bagno_piccolo",
- "input_boolean.valvola_bagno_grande":"timer.valvola_bagno_grande",
- "input_boolean.valvola_camera":"timer.valvola_camera" }
+ boolean_to_timer: >
+ { "input_boolean.valvola_zona_giorno":"timer.valvola_zona_giorno",
+ "input_boolean.valvola_cucina":"timer.valvola_cucina",
+ "input_boolean.valvola_sala":"timer.valvola_sala",
+ "input_boolean.valvola_studio":"timer.valvola_studio",
+ "input_boolean.valvola_bagno_piccolo":"timer.valvola_bagno_piccolo",
+ "input_boolean.valvola_bagno_grande":"timer.valvola_bagno_grande",
+ "input_boolean.valvola_camera":"timer.valvola_camera" }
- timer_to_boolean: >
- { "timer.valvola_zona_giorno":"input_boolean.valvola_zona_giorno",
- "timer.valvola_cucina":"input_boolean.valvola_cucina",
- "timer.valvola_sala":"input_boolean.valvola_sala",
- "timer.valvola_studio":"input_boolean.valvola_studio",
- "timer.valvola_bagno_piccolo":"input_boolean.valvola_bagno_piccolo",
- "timer.valvola_bagno_grande":"input_boolean.valvola_bagno_grande",
- "timer.valvola_camera":"input_boolean.valvola_camera" }
+ timer_to_boolean: >
+ { "timer.valvola_zona_giorno":"input_boolean.valvola_zona_giorno",
+ "timer.valvola_cucina":"input_boolean.valvola_cucina",
+ "timer.valvola_sala":"input_boolean.valvola_sala",
+ "timer.valvola_studio":"input_boolean.valvola_studio",
+ "timer.valvola_bagno_piccolo":"input_boolean.valvola_bagno_piccolo",
+ "timer.valvola_bagno_grande":"input_boolean.valvola_bagno_grande",
+ "timer.valvola_camera":"input_boolean.valvola_camera" }
- boost_boolean_to_climate: >
- { "input_boolean.boost_valvola_zona_giorno":"climate.zona_giorno",
- "input_boolean.boost_valvola_cucina":"climate.cucina",
- "input_boolean.boost_valvola_sala":"climate.sala",
- "input_boolean.boost_valvola_studio":"climate.studio",
- "input_boolean.boost_valvola_bagno_piccolo":"climate.bagno_piccolo",
- "input_boolean.boost_valvola_bagno_grande":"climate.bagno_grande",
- "input_boolean.boost_valvola_camera":"climate.camera" }
+ boost_boolean_to_climate: >
+ { "input_boolean.boost_valvola_zona_giorno":"climate.zona_giorno",
+ "input_boolean.boost_valvola_cucina":"climate.cucina",
+ "input_boolean.boost_valvola_sala":"climate.sala",
+ "input_boolean.boost_valvola_studio":"climate.studio",
+ "input_boolean.boost_valvola_bagno_piccolo":"climate.bagno_piccolo",
+ "input_boolean.boost_valvola_bagno_grande":"climate.bagno_grande",
+ "input_boolean.boost_valvola_camera":"climate.camera" }
- sensors_to_climate: >
- { "binary_sensor.portafinestra_sala":"input_boolean.valvola_sala",
- "binary_sensor.portafinestra_camera_contact":"input_boolean.valvola_camera" }
+ sensors_to_climate: >
+ { "binary_sensor.portafinestra_sala":"input_boolean.valvola_sala",
+ "binary_sensor.portafinestra_camera_contact":"input_boolean.valvola_camera" }
- alias: "Termosifoni: Accensione"
id: termosifoni_accensione
- trigger:
+ triggers:
- trigger: state
entity_id:
- input_boolean.valvola_zona_giorno
- alias: "Termosifoni: Spegnimento"
id: termosifoni_spegnimento
- trigger:
+ triggers:
- trigger: state
entity_id:
- input_boolean.valvola_zona_giorno
id: termosifoni_scadenza_timeout_impostazione_manuale
mode: parallel
- trigger:
+ triggers:
- trigger: event
event_type: timer.finished
event_data:
id: termosifoni_spegnimento_con_finestra_aperta
mode: parallel
- trigger:
+ triggers:
- trigger: state
entity_id:
- binary_sensor.portafinestra_sala_contact
id: termosifoni_riaccensione_con_finestra_chiusa
mode: parallel
- trigger:
+ triggers:
- trigger: state
entity_id:
- binary_sensor.portafinestra_sala_contact
| list
}}
- trigger:
+ triggers:
- trigger: state
entity_id: climate.zona_giorno
to: 'unavailable'
entity_id: climate.camera
to: 'unavailable'
- action:
+ actions:
- action: script.notify_text
data_template:
title: "Netatmo - Dispositivi disconnessi"
| list
}}
- trigger:
+ triggers:
- trigger: state
entity_id: group.shelly
to: 'on'
- trigger: homeassistant
event: start
- condition:
- condition: state
- entity_id: group.shelly
- state: 'on'
+ conditions:
+ - condition: state
+ entity_id: group.shelly
+ state: 'on'
- action:
+ actions:
- delay: '00:00:10'
- action: script.notify_text
data_template:
| list
}}
- trigger:
+ triggers:
- trigger: state
entity_id: group.hacs
to: 'on'
- trigger: homeassistant
event: start
- condition:
- condition: state
- entity_id: group.hacs
- state: 'on'
+ conditions:
+ - condition: state
+ entity_id: group.hacs
+ state: 'on'
- action:
+ actions:
- delay: '00:00:10'
- action: script.notify_text
data_template:
- alias: "Update: Riconoscimento Aggiornamenti"
id: "update_riconoscimento_aggiornamenti"
- trigger:
- trigger: state
- entity_id:
- - input_boolean.update_hacs
- - input_boolean.update_shelly
- - input_boolean.update_bticino
- - input_boolean.update_fritz
- to: 'off'
+ triggers:
+ - trigger: state
+ entity_id:
+ - input_boolean.update_hacs
+ - input_boolean.update_shelly
+ - input_boolean.update_bticino
+ - input_boolean.update_fritz
+ to: 'off'
action:
- action: persistent_notification.dismiss
######################################################################
- alias: "Zigbee2MQTT: Abilita Join"
id: "zigbee2mqtt_abilita_join"
- trigger:
- trigger: state
- entity_id: switch.zigbee2mqtt_bridge_permit_join
- to: "on"
- action:
- action: timer.start
- entity_id: timer.zigbee_permit_join
- data_template:
- duration: "{{ '00:0%i:00' % (states('input_number.zigbee2mqtt_join_minutes') | int ) }}"
+ triggers:
+ - trigger: state
+ entity_id: switch.zigbee2mqtt_bridge_permit_join
+ to: "on"
+ actions:
+ - action: timer.start
+ entity_id: timer.zigbee_permit_join
+ data_template:
+ duration: "{{ '00:0%i:00' % (states('input_number.zigbee2mqtt_join_minutes') | int ) }}"
######################################################################
# Automation to stop timer when switch turned off and turn off switch when timer finished
######################################################################
- alias: "Zigbee2MQTT: Disabilita Join"
id: "zigbee2mqtt_disabilita_join"
- trigger:
+ triggers:
- trigger: event
event_type: timer.finished
event_data:
- trigger: state
entity_id: switch.zigbee2mqtt_bridge_permit_join
to: "off"
- action:
+ actions:
- action: timer.cancel
data:
entity_id: timer.zigbee_permit_join
######################################################################
- alias: "Zigbee2MQTT: Device aggiunto alla rete Zigbee2mqtt"
id: "zigbee2mqtt_device_aggiunto_alla_rete_zigbee2mqtt"
- trigger:
- trigger: mqtt
- topic: 'zigbee2mqtt/bridge/event'
- condition:
- condition: template
- value_template: '{{trigger.payload_json.type == "device_interview" and trigger.payload_json.data.status == "successful" and trigger.payload_json.data.supported}}'
- action:
+ triggers:
+ - trigger: mqtt
+ topic: 'zigbee2mqtt/bridge/event'
+ conditions:
+ - condition: template
+ value_template: '{{trigger.payload_json.type == "device_interview" and trigger.payload_json.data.status == "successful" and trigger.payload_json.data.supported}}'
+ actions:
- action: persistent_notification.create
data_template:
title: "Device aggiunto alla rete Zigbee2mqtt"
######################################################################
- alias: "Zigbee2MQTT: Restart Automation"
id: "zigbee2mqtt_restart_automation"
- trigger:
+ triggers:
- trigger: homeassistant
event: start
- trigger: state
entity_id: binary_sensor.zigbee2mqtt_bridge_connection_state
to: "off"
for: "00:01:00"
- action:
+ actions:
- action: shell_command.zigbee2mqtt_restart
data:
docker_host: !secret docker_host
# Sensors: Certificates
######################################################################
-- trigger:
- - platform: homeassistant
+- triggers:
+ - trigger: homeassistant
event: start
- - platform: time_pattern
+ - trigger: time_pattern
seconds: "/30"
- - platform: time
+ - trigger: time
at: "00:00:00"
sensor:
- name: "Certificato SSL - Giorni Rimanenti"