--- /dev/null
+######################################################################
+# Switch off all covers
+######################################################################
+
+- alias: "ciao"
+ trigger:
+ - platform: time
+ at: '15:48:00'
+
+ condition: []
+
+ action:
+ - service: script.speech_engine
+ data_template:
+ message: >-
+ {% set ora = now().strftime('%H') %}
+ "Sono le {{ ora }} e tutto va bene"
--- /dev/null
+######################################################################
+# Home Assistant: Management of the Home Mode Button
+######################################################################
+
+- alias: "Home Assistant: Cambio Modalità On"
+ trigger:
+ platform: state
+ entity_id: input_boolean.home_mode_day,
+ input_boolean.home_mode_night,
+ input_boolean.home_mode_away
+ to: 'on'
+
+ action:
+ - service: input_boolean.turn_off
+ data_template:
+ entity_id: >
+ {% set booleans = [ 'input_boolean.home_mode_day', 'input_boolean.home_mode_night', 'input_boolean.home_mode_away' ] | reject('equalto', trigger.entity_id) %}
+ {{ booleans | list | join(', ') }}
+
+- alias: "Home Assistant: Cambio Modalità Off"
+ trigger:
+ platform: state
+ entity_id: input_boolean.home_mode_day,
+ input_boolean.home_mode_night,
+ input_boolean.home_mode_away
+ to: 'off'
+
+ condition:
+ condition: and
+ conditions:
+ - condition: state
+ entity_id: input_boolean.home_mode_day
+ state: 'off'
+ - condition: state
+ entity_id: input_boolean.home_mode_night
+ state: 'off'
+ - condition: state
+ entity_id: input_boolean.home_mode_away
+ state: 'off'
+
+ action:
+ - service: input_boolean.turn_on
+ data_template:
+ entity_id: >
+ {% if now().strftime('%H')|int >= 7 and now().strftime('%H')|int < 23 %}
+ input_boolean.home_mode_day
+ {% else %}
+ input_boolean.home_mode_night
+ {% endif %}
+
+######################################################################
+# Home Assistant: Management of Day/Night Mode
+######################################################################
+
+- alias: "Home Assistant: Modalità Giorno/Notte"
+ trigger:
+ - platform: time
+ at: '07:00:00'
+ - platform: time
+ at: '23:00:00'
+ - platform: homeassistant
+ event: start
+
+ condition:
+ condition: state
+ entity_id: input_boolean.home_mode_away
+ state: 'off'
+
+ action:
+ - service: input_boolean.turn_on
+ data_template:
+ entity_id: >-
+ {% if now().strftime('%H')|int >= 7 and now().strftime('%H')|int < 23 %}
+ input_boolean.home_mode_day
+ {% else %}
+ input_boolean.home_mode_night
+ {% endif %}
+
+######################################################################
+# Home Assistant: Management of Speech Notifications
+######################################################################
+
+- alias: "Home Assistant: Gestione notifiche vocali"
+ trigger:
+ - platform: state
+ entity_id: input_boolean.home_mode_night
+ to: 'on'
+ - platform: state
+ entity_id: input_boolean.home_mode_night
+ to: 'off'
+
+ action:
+ - service_template: >-
+ {% if is_state('input_boolean.home_mode_night', 'on') %}
+ input_boolean.turn_off
+ {% else %}
+ input_boolean.turn_on
+ {% endif %}
+ data:
+ entity_id: input_boolean.speech_notifications
+
+######################################################################
+# Home Assistant: Update Available Notifications
+######################################################################
+
+- alias: "Home Assistant: Notifica Aggiornamento"
+ trigger:
+ - platform: state
+ entity_id: updater.updater
+
+ action:
+ service: script.notify_text
+ data_template:
+ #message: "Home Assistant {{ states.updater.updater.state }} is now available. {{now().strftime('%Y-%m-%d %I:%M %p')}}"
+ title: "Home Assistant - Aggiornamento"
+ message: "E' disponibile un aggiornamento per Home Assistant ({{ states.updater.updater.state }}). {{now().strftime('%Y-%m-%d %I:%M %p')}}"
+ enable_persistant: true
+
+######################################################################
+# Home Assistant: Startup Automation
+# - Sync with Google Assistant
+######################################################################
+
+- alias: "Home Assistant: startup automations"
+ trigger:
+ - platform: homeassistant
+ event: start
+
+ action:
+ - delay: 0:05
+ - service: google_assistant.request_sync
--- /dev/null
+######################################################################
+# Night Time
+# - Switch off all covers
+######################################################################
+
+- alias: "Notte: Chiusura Tapparelle"
+ trigger:
+ - platform: state
+ entity_id: input_boolean.home_mode_night
+ to: 'on'
+
+ condition: []
+# condition: state
+# entity_id: input_boolean.home_mode_away
+# state: 'off'
+
+ action:
+ - service: cover.set_cover_position
+ data:
+ entity_id: cover.all_covers
+ position: 10
--- /dev/null
+######################################################################
+# Wake Up Giorgio
+# - Every working day it opens Studio Cover
+######################################################################
+
+- alias: "Risveglio Giorgio"
+ trigger:
+ - platform: time
+ at: '07:00:00'
+
+ condition:
+ condition: and
+ conditions:
+ - condition: state
+ entity_id: input_boolean.home_mode_away
+ state: 'off'
+
+ - condition: time
+ weekday:
+ - mon
+ - tue
+ - wed
+ - thu
+ - fri
+
+ action:
+ - service: cover.set_cover_position
+ data:
+ entity_id: cover.tapparella_studio
+ position: 85
--- /dev/null
+######################################################################
+# Welcome message
+# - greeting
+# - disable away mode
+######################################################################
+
+- alias: Saluto di benvenuto
+ trigger:
+ - platform: state
+ entity_id:
+ - device_tracker.giorgio
+ - device_tracker.laura
+ to: 'home'
+# for: '00:02:00'
+
+ condition: []
+ #condition:
+ #condition: time
+ #after: '10:00:00'
+ #before: '23:00:00'
+ #condition: state
+ #entity_id: input_boolean.home_mode_night
+ #state: 'off'
+
+ action:
+ - service: script.speech_engine
+ data_template:
+ language: 'it'
+ message: >
+ {% set name = trigger.entity_id.split('.')[1]|replace('_', ' ') %}
+ {%- macro greeting_sentence(name) -%}
+ {{ [
+ "Ciao " ~ name + " è un piacere rivederti a casa",
+ "Finalmente a casa " ~ name + "!",
+ "Indovina chi è a casa? " ~ name + "!",
+ name + " è ora a casa!",
+ "Che bello! " ~ name + " è a casa",
+ name + " sei a casa!",
+ "Il sistema di domotica Casa Ravera-Testa notifica che " ~ name + " è a casa!",
+ "Annuncio: " ~ name + " è ora a casa!",
+ "Rilevo una presenza! " ~ name + " è a casa!",
+ "Ciao " ~ name + " che la forza sia con te",
+ "Sento un tremito nella forza! " ~ name + " è a casa",
+ "Sento un interferenza nella Forza! " ~ name + " è qui",
+ "Menomale che sei qui " ~ name + "! Mi sentivo solo",
+ "Menomale che sei qui " ~ name + "! La casa è vuota senza di te!",
+ "Ciao " ~ name + "! Casa è sempre la casa!",
+ ] | random }}
+ {%- endmacro -%}
+ {{ greeting_sentence(name) }}
+
+ - service: input_boolean.turn_off
+ data:
+ entity_id: input_boolean.home_mode_away
--- /dev/null
+######################################################################
+# Binary Sensor: Home Mode
+######################################################################
+
+- platform: template
+ sensors:
+ home_mode:
+ friendly_name: Modalità Casa
+ entity_id: sensor.home_mode
+ value_template: >-
+ {{ is_state('sensor.home_mode', 'giorno')
+ or is_state('sensor.home_mode', 'notte')
+ or is_state('sensor.home_mode', 'vacanza') }}
+ icon_template: >-
+ {% if is_state('sensor.home_mode', 'giorno') %}
+ mdi:white-balance-sunny
+ {% elif is_state('sensor.home_mode', 'notte') %}
+ mdi:weather-night
+ {% elif is_state('sensor.home_mode', 'vacanza') %}
+ mdi:airplane-takeoff
+ {% endif %}
+
+######################################################################
+# Binary Sensor: Text Notification
+######################################################################
+
+- platform: template
+ sensors:
+ text_notirication:
+ friendly_name: Notifiche testuali
+ entity_id: input_boolean.text_notifications
+ value_template: >-
+ {{ is_state('input_boolean.text_notifications', 'on') }}
+ icon_template: >-
+ {% if is_state('input_boolean.text_notifications', 'on') %}
+ mdi:message-bulleted
+ {% else %}
+ mdi:message-bulleted-off
+ {% endif %}
+
+######################################################################
+# Binary Sensor: Speech Notification
+######################################################################
+
+- platform: template
+ sensors:
+ speech_notirication:
+ friendly_name: Notifiche vocali
+ entity_id: input_boolean.speech_notifications
+ value_template: >-
+ {{ is_state('input_boolean.speech_notifications', 'on') }}
+ icon_template: >-
+ {% if is_state('input_boolean.speech_notifications', 'on') %}
+ mdi:speaker-wireless
+ {% else %}
+ mdi:speaker-off
+ {% endif %}
--- /dev/null
+homeassistant:
+ # Name of the location where Home Assistant is running
+ name: Casa Ravera-Testa
+ # Location required to calculate the time the sun rises and sets
+ latitude: !secret home_latitude
+ longitude: !secret home_longitude
+ # Impacts weather/sunrise data (altitude above sea level in meters)
+ elevation: !secret home_elevation
+ # metric for Metric, imperial for Imperial
+ unit_system: metric
+ # Pick yours from here: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones
+ time_zone: Europe/Rome
+ # Customization folder
+ customize: !include_dir_merge_named customizations/
+
+# Show links to resources in log and frontend
+# introduction:
+
+# Enables the frontend
+frontend:
+ javascript_version: latest
+
+# Enables configuration UI
+config:
+
+# Uncomment this if you are using SSL/TLS, running in Docker container, etc.
+http:
+ # api_password: !secret http_password
+ base_url: !secret base_url
+ # server_port: 80
+ # ssl_certificate: /var/lib/homeassistant/.homeassistant/fullchain.pem
+ # ssl_key: /var/lib/homeassistant/.homeassistant/privkey.pem
+ use_x_forwarded_for: true
+ trusted_proxies: 127.0.0.1
+ # trusted_networks:
+ # - 192.168.0.0
+ # - 192.168.2.0
+ ip_ban_enabled: True
+ login_attempts_threshold: 3
+
+# Lovelace UI Mode
+# lovelace:
+# mode: yaml
+
+# Checks for available updates
+# Note: This component will send some information about your system to
+# the developers to assist with development of Home Assistant.
+# For more information, please see:
+# https://home-assistant.io/blog/2016/10/25/explaining-the-updater/
+updater:
+ # Optional, allows Home Assistant developers to focus on popular components.
+ # include_used_components: true
+
+# Discover some devices automatically
+discovery:
+# ignore:
+# - roku
+# - google_cast
+
+# Allows you to issue voice commands from the frontend in enabled browsers
+conversation:
+
+# Enables support for tracking state changes over time
+history:
+ exclude:
+ domains:
+ - automation
+ - group
+ - script
+
+# View all events in a logbook
+logbook:
+ exclude:
+ domains:
+ - automation
+ - group
+ - script
+
+# Enables a map showing the location of tracked devices
+map:
+
+# Track the sun
+sun:
+
+# UPNP
+upnp:
+ port_mapping: false
+ sensors: true
+
+# Sensors
+sensor: !include_dir_merge_list sensor/
+binary_sensor: !include_dir_merge_list binary_sensor/
+
+# Covers
+cover: !include_dir_merge_list cover/
+
+# Switches
+switch: !include_dir_merge_list switch/
+
+# Input Boolean
+input_boolean: !include_dir_merge_named input_boolean/
+
+# Text to speech
+tts:
+ - platform: google
+ language: it
+
+# Cloud
+# cloud:
+
+# MQTT
+mqtt:
+ broker: localhost
+ port: 1883
+ client_id: homeassistant
+ username: !secret mqtt_user
+ password: !secret mqtt_password
+
+# EQ3 Max Cube
+maxcube:
+ gateways:
+ - host: 192.168.0.28
+ port: 62910
+
+climate:
+ platform: maxcube
+
+# Google Assistant
+google_assistant: !include google.yaml
+
+# Zones
+zone: !include_dir_list zone/
+
+# Device Tracker
+device_tracker: !include_dir_merge_list device_tracker/
+
+# Notification
+notify: !include_dir_merge_list notify/
+
+group: !include_dir_merge_named group/
+automation: !include_dir_merge_list automation/
+script: !include_dir_merge_named script/
--- /dev/null
+- platform: template
+ covers:
+ all_covers:
+ friendly_name: "Tapparelle Globale"
+ open_cover:
+ service: script.all_covers_operation
+ data:
+ modus: 'open'
+ close_cover:
+ service: script.all_covers_operation
+ data:
+ modus: 'close'
+ stop_cover:
+ service: script.all_covers_operation
+ data:
+ modus: 'stop'
+ set_cover_position:
+ service: script.all_covers_position
+ data_template:
+ position: "{{ position }}"
+# value_template:
+# icon_template: >-
+# {% if is_state('sensor.all_covers', 'open') %}
+# mdi:window-open
+# {% else %}
+# mdi:window-closed
+# {% endif %}
+# entity_id:
+# - cover.bedroom
+# - cover.livingroom
--- /dev/null
+######################################################################
+# Kitchen Cover
+######################################################################
+
+- platform: mqtt
+ name: Tapparella Cucina
+ #state_topic: "shellies/shellyswitch-55980F/roller/0"
+ command_topic: "shellies/shellyswitch-55980F/roller/0/command"
+ position_topic: "shellies/shellyswitch-55980F/roller/0/pos"
+ set_position_topic: "shellies/shellyswitch-55980F/roller/0/command/pos"
+ qos: 0
+ retain: false
+ payload_open: "open"
+ payload_close: "close"
+ payload_stop: "stop"
+ #state_open: "open"
+ #state_closed: "close"
+ #state_stop: "stop"
+ position_open: 100
+ position_closed: 0
+ optimistic: false
+ #value_template: '{{ value.x }}'
--- /dev/null
+######################################################################
+# Living Room Cover
+######################################################################
+
+- platform: mqtt
+ name: Tapparella Sala
+ #state_topic: "shellies/shellyswitch-135454/roller/0"
+ command_topic: "shellies/shellyswitch-135454/roller/0/command"
+ position_topic: "shellies/shellyswitch-135454/roller/0/pos"
+ set_position_topic: "shellies/shellyswitch-135454/roller/0/command/pos"
+ qos: 0
+ retain: false
+ payload_open: "open"
+ payload_close: "close"
+ payload_stop: "stop"
+ #state_open: "open"
+ #state_closed: "close"
+ #state_stop: "stop"
+ position_open: 100
+ position_closed: 0
+ optimistic: false
+ #value_template: '{{ value.x }}'
--- /dev/null
+######################################################################
+# Office Cover
+######################################################################
+
+- platform: mqtt
+ name: Tapparella Studio
+ #state_topic: "shellies/shellyswitch-13572B/roller/0"
+ command_topic: "shellies/shellyswitch-13572B/roller/0/command"
+ position_topic: "shellies/shellyswitch-13572B/roller/0/pos"
+ set_position_topic: "shellies/shellyswitch-13572B/roller/0/command/pos"
+ qos: 0
+ retain: false
+ payload_open: "open"
+ payload_close: "close"
+ payload_stop: "stop"
+ #state_open: "open"
+ #state_closed: "close"
+ #state_stop: "stop"
+ position_open: 100
+ position_closed: 0
+ optimistic: false
+ #value_template: '{{ value.x }}'
--- /dev/null
+######################################################################
+# Bedroom Cover
+######################################################################
+
+- platform: mqtt
+ name: Tapparella Camera
+ #state_topic: "shellies/shellyswitch-559C49/roller/0"
+ command_topic: "shellies/shellyswitch-559C49/roller/0/command"
+ position_topic: "shellies/shellyswitch-559C49/roller/0/pos"
+ set_position_topic: "shellies/shellyswitch-559C49/roller/0/command/pos"
+ qos: 0
+ retain: false
+ payload_open: "open"
+ payload_close: "close"
+ payload_stop: "stop"
+ #state_open: "open"
+ #state_closed: "close"
+ #state_stop: "stop"
+ position_open: 100
+ position_closed: 0
+ optimistic: false
+ #value_template: '{{ value.x }}'
--- /dev/null
+######################################################################
+# MAX EQ3
+######################################################################
+
+climate.cucina_termostato_cucina:
+ friendly_name: Termostato Cucina
+climate.sala_termostato_sala:
+ friendly_name: Termostato Sala
+climate.bagno_termostato_bagno:
+ friendly_name: Termostato Bagno
+climate.studio_termostato_studio:
+ friendly_name: Termostato Studio
+climate.camera_termostato_camera:
+ friendly_name: Termostato Camera
--- /dev/null
+######################################################################
+# Group Customization for the order view
+######################################################################
+
+group.default_view:
+ order: 0
+group.cucina:
+ order: 1
+group.sala:
+ order: 2
+group.bagno:
+ order: 3
+group.studio:
+ order: 4
+group.camera:
+ order: 5
+
+group.covers:
+ order: 10
+
+group.climate:
+ order: 11
+
+group.people:
+ order: 12
+
+group.network:
+ order: 13
+
+group.weather:
+ order: 14
+
+group.settings:
+ order: 15
+
+group.all_automations:
+ hidden: false
+ control: hidden
+ friendly_name: Automazioni
--- /dev/null
+######################################################################
+# Media Player Devices
+######################################################################
+
+# Samsung TV UE46C600
+media_player.ue46c7000_samsung_dtv_rcr:
+ friendly_name: TV Sala
+
+# Samsung BD-F6500
+media_player.bdf6500_bdf6500:
+ friendly_name: Blu-Ray Camera
+
+# NowTV
+media_player.roku_yd00df095157:
+ friendly_name: NowTV Anna
+media_player.roku_yd00dm481414:
+ friendly_name: NowTV Giorgio
--- /dev/null
+######################################################################
+# Script Customizations
+######################################################################
+
+script.notify_text_internal:
+ hidden: true
--- /dev/null
+######################################################################
+# Speed Test
+######################################################################
+
+sensor.speedtest_ping:
+ friendly_name: Ping
+sensor.speedtest_download:
+ friendly_name: Download
+sensor.speedtest_upload:
+ friendly_name: Upload
+
+######################################################################
+# pfSense
+######################################################################
+
+sensor.freebsd_router_kbyte_sec_received:
+ friendly_name: Traffico in ingresso
+sensor.freebsd_router_kbyte_sec_sent:
+ friendly_name: Traffico in uscita
\ No newline at end of file
--- /dev/null
+######################################################################
+# Device Tracker: Google
+######################################################################
+
+- platform: google_maps
+ username: !secret google_maps_username
+ password: !secret google_maps_password
--- /dev/null
+######################################################################
+# Device Tracker: Netgear
+######################################################################
+
+- platform: netgear
+ host: !secret ap1_host
+ port: !secret ap1_port
+ username: !secret ap1_username
+ password: !secret ap1_password
+ devices:
+ - s9.giorgioravera.it
+ - a5.giorgioravera.it
+# - a3.giorgioravera.it
+
+ # Seconds between each scan for new devices
+ interval_seconds: 30
+ # Seconds to wait till marking someone as not home after not being seen
+ consider_home: 180
+ new_device_defaults:
+ track_new_devices: false
+ hide_if_away: false
--- /dev/null
+######################################################################
+# Device Tracker: Nmap
+######################################################################
+
+- platform: nmap_tracker
+ hosts:
+ - s9.giorgioravera.it
+ - a5.giorgioravera.it
+ - a3.giorgioravera.it
+ scan_options: " --privileged -sP "
+ # The number of minutes Nmap will not scan this device
+ home_interval: 10
+
+ # Seconds between each scan for new devices
+ interval_seconds: 60
+ # Seconds to wait till marking someone as not home after not being seen
+ consider_home: 600
+ new_device_defaults:
+ track_new_devices: false
+ hide_if_away: false
--- /dev/null
+######################################################################
+# Device Tracker: Ping
+######################################################################
+
+- platform: ping
+ hosts:
+ giorgio: s9.giorgioravera.it
+ laura: a5.giorgioravera.it
+ anna: a3.giorgioravera.it
+ count: 5
+
+ # Seconds between each scan for new devices
+ interval_seconds: 30
+ # Seconds to wait till marking someone as not home after not being seen
+ consider_home: 180
+ new_device_defaults:
+ track_new_devices: false
+ hide_if_away: false
--- /dev/null
+######################################################################
+# Google Home Integration
+######################################################################
+
+project_id: !secret google_project
+api_key: !secret google_api_key
+#api_key: !secret google_oauth_key
+expose_by_default: false
+entity_config:
+ climate.bagno_termostato_bagno:
+ name: Termostato Bagno
+ room: Bagno
+ expose: true
+ climate.camera_termostato_camera:
+ name: Termostato Camera
+ room: Camera
+ expose: true
+ climate.cucina_termostato_cucina:
+ name: Termostato Cucina
+ room: Cucina
+ expose: true
+ climate.sala_termostato_sala:
+ name: Termostato Sala
+ room: Sala
+ expose: true
+ climate.studio_termostato_studio:
+ name: Termostato Studio
+ room: Studio
+ expose: true
+ cover.all_covers:
+ name: Tapparella Generale
+ room: Generale
+ expose: true
+ cover.tapparella_cucina:
+ name: Tapparella Cucina
+ room: Cucina
+ expose: true
+ cover.tapparella_sala:
+ name: Tapparella Sala
+ room: Sala
+ expose: true
+ cover.tapparella_studio:
+ name: Tapparella Studio
+ room: Studio
+ expose: true
+ cover.tapparella_camera:
+ name: Tapparella Camera
+ room: Camera
+ expose: true
+ input_boolean.home_mode_away:
+ name: Modalità Vacanza
+ room: Generale
+ expose: true
+ media_player.bdf6500_bdf6500:
+ name: Blue-Ray Camera
+ room: Camera
+ expose: true
+ media_player.roku_yd00dm481414:
+ name: NowTV Giorgio
+ room: Sala
+ expose: true
+ media_player.ue46c7000_samsung_dtv_rcr:
+ name: TV Sala
+ room: Sala
+ expose: true
--- /dev/null
+climate:
+ name: Termostato
+ view: true
+ icon: mdi:thermometer
+ entities:
+ - sensor.termostato_cucina
+ - sensor.termostato_sala
+ - sensor.termostato_bagno
+ - sensor.termostato_studio
+ - sensor.termostato_camera
+ - group.climate2
+
+climate2:
+ name: Termostato
+ entities:
+ - climate.cucina_termostato_cucina
+ - climate.sala_termostato_sala
+ - climate.bagno_termostato_bagno
+ - climate.studio_termostato_studio
+ - climate.camera_termostato_camera
--- /dev/null
+covers:
+ name: Tapparelle
+ view: true
+ icon: mdi:window-closed
+ entities:
+ - sensor.tapparella_cucina
+ - sensor.tapparella_sala
+ - sensor.tapparella_studio
+ - sensor.tapparella_camera
+ - group.covers2
+
+covers2:
+ name: Tapparelle
+ control: hidden
+ entities:
+ - cover.all_covers
+ - cover.tapparella_cucina
+ - cover.tapparella_sala
+ - cover.tapparella_studio
+ - cover.tapparella_camera
--- /dev/null
+default_view:
+ name: Principale
+ view: true
+ icon: mdi:home
+ entities:
+ - device_tracker.giorgio
+ - device_tracker.laura
+ - sensor.home_mode
+ - group.cucina
+ - group.sala
+ - group.bagno
+ - group.studio
+ - group.camera
+ - group.home_mode
+ - gorup.all_automations
+
+cucina:
+ name: Cucina
+ control: hidden
+ entities:
+ - cover.tapparella_cucina
+ - climate.cucina_termostato_cucina
+ - media_player.google_home
+
+sala:
+ name: Sala
+ control: hidden
+ entities:
+ - cover.tapparella_sala
+ - climate.sala_termostato_sala
+# - media_player.roku_yd00dm481414
+# - media_player.ue46c7000_samsung_dtv_rcr
+
+bagno:
+ name: Bagno
+ control: hidden
+ entities:
+ - climate.bagno_termostato_bagno
+
+studio:
+ name: Studio
+ control: hidden
+ entities:
+ - cover.tapparella_studio
+ - climate.studio_termostato_studio
+
+camera:
+ name: Camera
+ control: hidden
+ entities:
+ - cover.tapparella_camera
+ - climate.camera_termostato_camera
+# - media_player.bdf6500_bdf6500
+
+home_mode:
+ name: Modalità Casa
+ control: hidden
+ entities:
+ - input_boolean.home_mode_day
+ - input_boolean.home_mode_night
+ - input_boolean.home_mode_away
--- /dev/null
+network:
+ name: Dispositivi di Rete
+ view: true
+ icon: mdi:lan
+ entities:
+ - group.speedtest
+ - group.pfsense
+# - group.qnap
+
+speedtest:
+ name: Speed Test
+ control: hidden
+ entities:
+ - sensor.speedtest_ping
+ - sensor.speedtest_download
+ - sensor.speedtest_upload
+
+pfsense:
+ name: pfSense
+ control: hidden
+ entities:
+ - sensor.freebsd_router_kbyte_sec_received
+ - sensor.freebsd_router_kbyte_sec_sent
+
+#qnap:
+# name: QNAP TS-228 Status
+# control: hidden
+# entities:
+# - sensor.nas_status
+# - sensor.nas_cpu_usage
+# - sensor.nas_memory_usage
+# - sensor.nas_volume_used_datavol1
+# - sensor.nas_system_temperature
+# - sensor.nas_temperature_drive_0_1
+# - sensor.nas_temperature_drive_0_2
\ No newline at end of file
--- /dev/null
+people:
+ name: Persone
+ view: true
+ icon: mdi:account-multiple
+ entities:
+ - device_tracker.giorgio
+ - device_tracker.laura
+ - device_tracker.anna
--- /dev/null
+settings:
+ name: Configurazione
+ view: true
+ icon: mdi:settings
+ entities:
+ - group.all_automations
+ - group.ha_settings
+
+ha_settings:
+ name: Configurazione Notifiche
+ control: hidden
+ entities:
+ - input_boolean.speech_notifications
+ - input_boolean.text_notifications
\ No newline at end of file
--- /dev/null
+weather:
+ name: Previsioni Meteo
+ view: true
+ icon: mdi:weather-sunny
+ entities:
+ - sun.sun
+ - sensor.yr_symbol
+# - sensor.dark_sky_icon
+# - sensor.dark_sky_summary
+# - sensor.dark_sky_daily_summary
+# - sensor.dark_sky_precip_probability
+# - sensor.dark_sky_temperature
+# - sensor.dark_sky_cloud_coverage
+# - sensor.dark_sky_uv_index
--- /dev/null
+######################################################################
+# Inputs: Home Mode
+######################################################################
+
+home_mode_day:
+ name: Giorno
+ icon: mdi:white-balance-sunny
+ initial: on
+
+home_mode_night:
+ name: Notte
+ icon: mdi:weather-night
+ initial: off
+
+home_mode_away:
+ name: Vacanza
+ icon: mdi:airplane-takeoff
+ initial: off
+
+######################################################################
+# Inputs: Notification Settings
+######################################################################
+
+speech_notifications:
+ name: Notifiche Vocali
+ icon: mdi:speaker-wireless
+ initial: on
+
+text_notifications:
+ name: Notifiche Testuali
+ icon: mdi:message-bulleted
+ initial: on
--- /dev/null
+######################################################################
+# Mail Server Integration
+######################################################################
+
+- name: mail
+ platform: smtp
+ server: !secret mail_server
+ port: 25
+ encryption: none
+ sender: !secret mail_sender
+ recipient: !secret mail_recipient
+ sender_name: Casa Ravera-Testa
--- /dev/null
+######################################################################
+# Push Notifications
+######################################################################
+
+- name: push
+ platform: html5
+ gcm_api_key: !secret google_push_key
+ gcm_sender_id: !secret google_push_id
--- /dev/null
+######################################################################
+# All Covers Operation
+######################################################################
+
+all_covers_operation:
+ alias: "Operazioni su tutte le Tapparelle"
+ sequence:
+ - service_template: "cover.{{modus}}_cover"
+ data:
+ entity_id:
+ - cover.tapparella_cucina
+ - cover.tapparella_sala
+ - cover.tapparella_camera
+ - cover.tapparella_studio
+
+######################################################################
+# All Covers Position
+######################################################################
+
+all_covers_position:
+ alias: "Imposta posizione a tutte le Tapparelle"
+ sequence:
+ - service: cover.set_cover_position
+ data_template:
+ entity_id:
+ - cover.tapparella_cucina
+ - cover.tapparella_sala
+ - cover.tapparella_camera
+ - cover.tapparella_studio
+ position: '{{ position }}'
--- /dev/null
+######################################################################\r
+# Script: Text Notification\r
+# Inputs:\r
+# - title\r
+# - message\r
+# - enable_persistent\r
+#\r
+# Operations:\r
+# - mail\r
+# - browser push\r
+# - enable_persistent notification\r
+######################################################################\r
+\r
+notify_text_internal:\r
+ alias: Notifiche testuali\r
+ sequence:\r
+ - service: notify.mail\r
+ data_template:\r
+ title: "{{ title }}"\r
+ message: "{{ message }}"\r
+\r
+ - service: notify.push\r
+ data_template:\r
+ title: "{{ title }}"\r
+ message: "{{ message }}"\r
+\r
+ - condition: template\r
+ value_template: >-\r
+ {% if enable_persistent %}\r
+ true\r
+ {% else %}\r
+ false\r
+ {% endif %}\r
+\r
+ - service: persistent_notification.create\r
+ data_template:\r
+ title: "{{ title }}"\r
+ message: "{{ message }}"\r
+\r
+notify_text:\r
+ alias: Notifiche testuali\r
+ sequence:\r
+ - condition: state\r
+ entity_id: input_boolean.text_notifications\r
+ state: 'on'\r
+\r
+ - service: script.notify_text_internal\r
+ data_template:\r
+ title: >-\r
+ {# Check Null Input #}\r
+ {% if title | length == 0 %}\r
+ {% set title = 'Home Assistant' %}\r
+ {% endif %}\r
+ {{ title }}\r
+ message: "{{ message }}"\r
+ enable_persistent: >\r
+ {# Check Null Input #}\r
+ {% if enable_persistent %}\r
+ true\r
+ {% else %}\r
+ false\r
+ {% endif %}\r
+\r
+######################################################################\r
+# Script: Voice Notification\r
+# - google home\r
+######################################################################\r
+\r
+notify_voice:\r
+ alias: Notifiche vocali\r
+ sequence:\r
+ - condition: state\r
+ entity_id: input_boolean.speech_notifications\r
+ state: 'on'\r
+ \r
+ - service: media_player.volume_set\r
+ data_template:\r
+ entity_id: >-\r
+ {# Check Null Input #}\r
+ {% if media_player | length == 0 %}\r
+ {% set media_player = 'media_player.google_home' %}\r
+ {% endif %}\r
+ {{ media_player }}\r
+ volume_level: >-\r
+ {# Default Values #}\r
+ {% set defaultVolume = 0.30 %}\r
+ {% set maxDayVolume = 0.50 %}\r
+ {% set maxNightVolume = 0.20 %}\r
+ \r
+ {# Check Null Input #}\r
+ {% if volume_level | length == 0 %}\r
+ {% set volume_level = defaultVolume %}\r
+ {% endif %}\r
+ \r
+ {# Day/Night mode #}\r
+ {% if is_state('input_boolean.home_mode_night', 'off') %}\r
+ {% if ((volume_level)|float) > ((maxDayVolume)|float) %}\r
+ {{ maxDayVolume }}\r
+ {% else %}\r
+ {{ volume_level }}\r
+ {% endif %}\r
+ {% else %}\r
+ {% if ((volume_level)|float) > ((maxNightVolume)|float) %}\r
+ {{ maxNightVolume }}\r
+ {% else %}\r
+ {{ volume_level }}\r
+ {% endif %}\r
+ {% endif %}\r
+\r
+ - service: tts.google_say\r
+ data_template:\r
+ entity_id: >-\r
+ {# Check Null Input #}\r
+ {% if media_player | length == 0 %}\r
+ {% set media_player = 'media_player.google_home' %}\r
+ {% endif %}\r
+ {{ media_player }}\r
+ language: >-\r
+ {# Check Null Input #}\r
+ {% if language | length == 0 %}\r
+ {% set language = 'it' %}\r
+ {% endif %}\r
+ {{ language }}\r
+ message: "{{ message }}"\r
+\r
+######################################################################\r
+# Script: Global Notification (Text+Voice)\r
+# Inputs:\r
+# - title\r
+# - media_player\r
+# - volume_level\r
+# _ language\r
+# - message\r
+# - enable_persistent\r
+#\r
+# Operations:\r
+# - notify_text\r
+# - notify_voice\r
+######################################################################\r
+\r
+notify_all:\r
+ alias: Notifiche globali (Testo+Voce)\r
+ sequence:\r
+ - service: script.notify_text\r
+ data_template:\r
+ title: "{{ title }}"\r
+ message: "{{ message }}"\r
+ enable_persistent: >\r
+ {# Check Null Input #}\r
+ {% if enable_persistent %}\r
+ true\r
+ {% else %}\r
+ false\r
+ {% endif %}\r
+\r
+ - service: script.notify_voice\r
+ data_template:\r
+ media_player: "{{ media_player }}"\r
+ volume_level: "{{ volume_level }}"\r
+ language: "{{ language }}"\r
+ message: "{{ message }}"\r
--- /dev/null
+######################################################################\r
+# Script: Speech Engine\r
+# Inputs:\r
+# - media_player\r
+# - volume_level\r
+# - message\r
+# - enable_greeting\r
+#\r
+# - announcement\r
+# - welcome_message\r
+######################################################################\r
+\r
+speech_engine:\r
+ alias: Speech Engine\r
+ sequence: \r
+ - service: script.notify_voice\r
+ data_template:\r
+ media_player: >-\r
+ {{ media_player }}\r
+ volume_level: >-\r
+ {{ volume_level }}\r
+ language: >-\r
+ {{ language }}\r
+ message: >-\r
+ {# greeting message #} \r
+ {% if enable_greeting == true %}\r
+ {% if now().strftime('%H')|int >= 7 and now().strftime('%H')|int < 12 %}\r
+ Buongiorno.\r
+ {% elif now().strftime('%H')|int >= 12 and now().strftime('%H')|int < 17 %}\r
+ Buonpomeriggio.\r
+ {% elif now().strftime('%H')|int >= 17 and now().strftime('%H')|int < 23 %}\r
+ Buonasera.\r
+ {% else %}\r
+ Buonanotte.\r
+ {% endif %}\r
+ {% endif %}\r
+ \r
+ {# generic message #}\r
+ {{ message }}\r
--- /dev/null
+######################################################################
+# Sensor: Temperature from Radiator Thermostat
+######################################################################
+
+- platform: template
+ sensors:
+ termostato_cucina:
+ friendly_name: "Cucina"
+ value_template: "{{ state_attr('climate.cucina_termostato_cucina', 'current_temperature') }}"
+ unit_of_measurement: '°C'
+
+- platform: template
+ sensors:
+ termostato_sala:
+ friendly_name: "Sala"
+ value_template: "{{ state_attr('climate.sala_termostato_sala', 'current_temperature') }}"
+ unit_of_measurement: '°C'
+
+- platform: template
+ sensors:
+ termostato_bagno:
+ friendly_name: "Bagno"
+ value_template: "{{ state_attr('climate.bagno_termostato_bagno', 'current_temperature') }}"
+ unit_of_measurement: '°C'
+
+- platform: template
+ sensors:
+ termostato_studio:
+ friendly_name: "Studio"
+ value_template: "{{ state_attr('climate.studio_termostato_studio', 'current_temperature') }}"
+ unit_of_measurement: '°C'
+
+- platform: template
+ sensors:
+ termostato_camera:
+ friendly_name: "Camera"
+ value_template: "{{ state_attr('climate.camera_termostato_camera', 'current_temperature') }}"
+ unit_of_measurement: '°C'
--- /dev/null
+######################################################################
+# Sensor: Cover position
+######################################################################
+
+- platform: template
+ sensors:
+ tapparella_cucina:
+ friendly_name: "Cucina"
+ value_template: "{{ state_attr('cover.tapparella_cucina', 'current_position') }}"
+ unit_of_measurement: '%'
+
+- platform: template
+ sensors:
+ tapparella_sala:
+ friendly_name: "Sala"
+ value_template: "{{ state_attr('cover.tapparella_sala', 'current_position') }}"
+ unit_of_measurement: '%'
+
+- platform: template
+ sensors:
+ tapparella_studio:
+ friendly_name: "Studio"
+ value_template: "{{ state_attr('cover.tapparella_studio', 'current_position') }}"
+ unit_of_measurement: '%'
+
+- platform: template
+ sensors:
+ tapparella_camera:
+ friendly_name: "Camera"
+ value_template: "{{ state_attr('cover.tapparella_camera', 'current_position') }}"
+ unit_of_measurement: '%'
--- /dev/null
+######################################################################
+# Sensor: Home Mode
+######################################################################
+
+- platform: template
+ sensors:
+ home_mode:
+ friendly_name: Modalità Casa
+ entity_id: input_boolean.home_mode_day,
+ input_boolean.home_mode_night,
+ input_boolean.home_mode_away
+ value_template: >-
+ {% if is_state('input_boolean.home_mode_day', 'on') %}
+ giorno
+ {% elif is_state('input_boolean.home_mode_night', 'on') %}
+ notte
+ {% elif is_state('input_boolean.home_mode_away', 'on') %}
+ vacanza
+ {% endif %}
+ icon_template: >-
+ {% if is_state('input_boolean.home_mode_day', 'on') %}
+ mdi:white-balance-sunny
+ {% elif is_state('input_boolean.home_mode_night', 'on') %}
+ mdi:weather-night
+ {% elif is_state('input_boolean.home_mode_away', 'on') %}
+ mdi:airplane-takeoff
+ {% endif %}
--- /dev/null
+######################################################################
+# QNAP Sensor
+######################################################################
+
+- platform: qnap
+ host: !secret qnap_host
+ username: !secret qnap_username
+ password: !secret qnap_password
+ monitored_conditions:
+ - status
+ - system_temp
+ - cpu_usage
+ - memory_percent_used
+ - drive_temp
+ - volume_percentage_used
\ No newline at end of file
--- /dev/null
+######################################################################
+# Speed Test Sensor
+######################################################################
+
+- platform: speedtest
+ minute: 0
+ hour:
+ - 0
+ - 6
+ - 12
+ - 18
+ monitored_conditions:
+ - ping
+ - download
+ - upload
--- /dev/null
+- platform: time_date
+ display_options:
+ - 'time'
+ - 'date'
+# - 'date_time'
+ - 'time_date'
+# - 'time_utc'
+# - 'beat'
--- /dev/null
+######################################################################
+# Weather Sensor
+######################################################################
+
+- platform: yr
+
+#- platform: openweathermap
+# api_key: !secret openweathermap_key
+# forecast: 1
+# latitude: !secret home_latitude
+# longitude: !secret home_longitude
+# language: it
+# monitored_conditions:
+# - weather
+# - temperature
+# - humidity
+# - wind_speed
+# - pressure
+# - rain
+# - snow
+# - clouds
+
+- platform: darksky
+ api_key: !secret darksky_key
+ forecast:
+ - 0
+ - 1
+ - 2
+ - 3
+ language: it
+ latitude: !secret home_latitude
+ longitude: !secret home_longitude
+ monitored_conditions:
+ - summary
+ - icon
+ - precip_type
+ - precip_intensity
+ - precip_probability
+ - temperature
+ - dew_point
+ - wind_speed
+ - cloud_cover
+ - humidity
+ - pressure
+ - visibility
+ - minutely_summary
+ - hourly_summary
+ - daily_summary
+ - temperature_high
+ - temperature_low
+ - uv_index
+ units: si
+ update_interval: 00:30
--- /dev/null
+google-site-verification: google0c82ce29df72d7c2.html
\ No newline at end of file
--- /dev/null
+######################################################################
+# Zone: Home
+######################################################################
+
+name: Casa
+latitude: !secret home_latitude
+longitude: !secret home_longitude
+radius: 50
+icon: mdi:home
--- /dev/null
+######################################################################
+# Zone Work
+######################################################################
+
+name: Lavoro
+latitude: !secret work_latitude
+longitude: !secret work_longitude
+radius: 50
+icon: mdi:city