-######################################################################\r
-# Startup Automation: Restart on Error\r
-######################################################################\r
-\r
-- alias: "Home Assistant - Startup: Restart on Error"\r
-\r
- trigger:\r
- - platform: homeassistant\r
- event: start\r
-\r
- action:\r
- - delay: 00:00:60\r
- - condition: state\r
- entity_id: persistent_notification.invalid_config\r
- state: 'notifying'\r
- - service: script.homeassistant_restart\r
-\r
-######################################################################\r
-# Startup Automation: Google Sync\r
-######################################################################\r
-\r
-- alias: "Home Assistant - Startup: Google Sync"\r
-\r
- trigger:\r
- - platform: homeassistant\r
- event: start\r
-\r
- action:\r
- - service: script.homeassistant_google_home_sync\r
+######################################################################
+# Startup Automation: Restart on Error
+######################################################################
+
+- alias: "Home Assistant - Startup: Restart on Error"
+
+ trigger:
+ - platform: homeassistant
+ event: start
+
+ action:
+ - delay: 00:00:60
+ - condition: state
+ entity_id: persistent_notification.invalid_config
+ state: 'notifying'
+ - service: script.homeassistant_restart
+
+######################################################################
+# Startup Automation: Google Sync
+######################################################################
+
+- alias: "Home Assistant - Startup: Google Sync"
+
+ trigger:
+ - platform: homeassistant
+ event: start
+
+ action:
+ - service: script.homeassistant_google_home_sync
-######################################################################\r
-# Update Notification: HACS\r
-######################################################################\r
-\r
-- alias: "Update Notification: HACS"\r
-\r
- trigger:\r
- - platform: numeric_state\r
- entity_id: sensor.hacs\r
- above: 0\r
-\r
- - platform: homeassistant\r
- event: start\r
-\r
- condition:\r
- condition: numeric_state\r
- entity_id: sensor.hacs\r
- above: 0\r
-\r
- action:\r
- - delay: '00:00:15'\r
- - service: script.notify_text\r
- data_template:\r
- title: "HACS - Aggiornamento"\r
- message: >\r
- {% set update_number = states('sensor.hacs') %}\r
- {% if is_state('sensor.hacs', '1') %}\r
- E' disponibile un aggiornamento per i moduli HACS:\r
- {% else %}\r
- Sono disponibili {{ update_number }} aggiornamenti per i moduli HACS:\r
- {% endif %}\r
- {% for update in states.sensor.hacs.attributes['repositories'] %}\r
- - {{ update['display_name'] }}: {{ update['available_version'] }}\r
- {%- endfor %}\r
- notification_id: "update"\r
- enable_persistent: true\r
-\r
- - service: input_boolean.turn_on\r
- entity_id: input_boolean.update_hacs\r
-\r
-######################################################################\r
-# Update: Aknowledge update\r
-#\r
-# Actions:\r
-# - persistent_notification.dismiss\r
-######################################################################\r
-- alias: "Update: Riconoscimento Aggiornamenti"\r
-\r
- trigger:\r
- platform: state\r
- entity_id:\r
- - input_boolean.update_homeassistant\r
- - input_boolean.update_shelly\r
- - input_boolean.update_hacs\r
- to: 'off'\r
-\r
- action:\r
- - service: persistent_notification.dismiss\r
- data_template:\r
- notification_id: "update"\r
+######################################################################
+# Update Notification: HACS
+######################################################################
+
+- alias: "Update Notification: HACS"
+
+ trigger:
+ - platform: numeric_state
+ entity_id: sensor.hacs
+ above: 0
+
+ - platform: homeassistant
+ event: start
+
+ condition:
+ condition: numeric_state
+ entity_id: sensor.hacs
+ above: 0
+
+ action:
+ - delay: '00:00:15'
+ - service: script.notify_text
+ data_template:
+ title: "HACS - Aggiornamento"
+ message: >
+ {% set update_number = states('sensor.hacs') %}
+ {% if is_state('sensor.hacs', '1') %}
+ E' disponibile un aggiornamento per i moduli HACS:
+ {% else %}
+ Sono disponibili {{ update_number }} aggiornamenti per i moduli HACS:
+ {% endif %}
+ {% for update in states.sensor.hacs.attributes['repositories'] %}
+ - {{ update['display_name'] }}: {{ update['available_version'] }}
+ {%- endfor %}
+ notification_id: "update"
+ enable_persistent: true
+
+ - service: input_boolean.turn_on
+ entity_id: input_boolean.update_hacs
+
+######################################################################
+# Update: Aknowledge update
+#
+# Actions:
+# - persistent_notification.dismiss
+######################################################################
+- alias: "Update: Riconoscimento Aggiornamenti"
+
+ trigger:
+ platform: state
+ entity_id:
+ - input_boolean.update_homeassistant
+ - input_boolean.update_shelly
+ - input_boolean.update_hacs
+ to: 'off'
+
+ action:
+ - service: persistent_notification.dismiss
+ data_template:
+ notification_id: "update"
-######################################################################\r
-# Customization: Automations\r
-######################################################################\r
-\r
-automation.risveglio_giorgio:\r
- icon: mdi:alarm\r
-\r
-automation.home_assistant_startup_restart_on_error:\r
- icon: mdi:restart-alert\r
-\r
-automation.home_assistant_startup_google_sync:\r
- icon: mdi:google-assistant\r
+######################################################################
+# Customization: Automations
+######################################################################
+
+automation.risveglio_giorgio:
+ icon: mdi:alarm
+
+automation.home_assistant_startup_restart_on_error:
+ icon: mdi:restart-alert
+
+automation.home_assistant_startup_google_sync:
+ icon: mdi:google-assistant
-######################################################################\r
-# Customization: Certificates\r
-######################################################################\r
-\r
-sensor.cert_expiry_timestamp_server_giorgioravera_it:\r
- friendly_name: Scadenza Certificato SSL\r
+######################################################################
+# Customization: Certificates
+######################################################################
+
+sensor.cert_expiry_timestamp_server_giorgioravera_it:
+ friendly_name: Scadenza Certificato SSL
-######################################################################\r
-# Customization: Hacs\r
-######################################################################\r
-\r
-sensor.hacs:\r
- friendly_name: Aggiornamenti HACS\r
+######################################################################
+# Customization: Hacs
+######################################################################
+
+sensor.hacs:
+ friendly_name: Aggiornamenti HACS
-######################################################################\r
-# Customization: Person\r
-######################################################################\r
-\r
-person.giorgio:\r
- entity_picture: "https://lh5.googleusercontent.com/-XA71SeQatCE/AAAAAAAAAAI/AAAAAAABf8U/EWQJ3bwMgK8/photo.jpg"\r
-\r
-person.laura:\r
- entity_picture: "https://lh4.googleusercontent.com/-MzGTo7hJlzQ/AAAAAAAAAAI/AAAAAAAAHBg/enCMtB-4rrs/photo.jpg"\r
-\r
-person.anna:\r
- entity_picture: "https://lh3.googleusercontent.com/-jKAuS0EKCo0/AAAAAAAAAAI/AAAAAAAAIz4/Edk7vyRSPc4/photo.jpg"\r
-\r
-person.assunta:\r
- entity_picture: "https://lh6.googleusercontent.com/-4VDO1evGw1U/AAAAAAAAAAI/AAAAAAAAAC4/5BymNaSNWcc/photo.jpg"\r
+######################################################################
+# Customization: Person
+######################################################################
+
+person.giorgio:
+ entity_picture: "https://lh5.googleusercontent.com/-XA71SeQatCE/AAAAAAAAAAI/AAAAAAABf8U/EWQJ3bwMgK8/photo.jpg"
+
+person.laura:
+ entity_picture: "https://lh4.googleusercontent.com/-MzGTo7hJlzQ/AAAAAAAAAAI/AAAAAAAAHBg/enCMtB-4rrs/photo.jpg"
+
+person.anna:
+ entity_picture: "https://lh3.googleusercontent.com/-jKAuS0EKCo0/AAAAAAAAAAI/AAAAAAAAIz4/Edk7vyRSPc4/photo.jpg"
+
+person.assunta:
+ entity_picture: "https://lh6.googleusercontent.com/-4VDO1evGw1U/AAAAAAAAAAI/AAAAAAAAAC4/5BymNaSNWcc/photo.jpg"
-######################################################################\r
-# Update: Home Assistant\r
-######################################################################\r
-\r
-update_homeassistant:\r
- name: Aggiornamento Home Assistant\r
- initial: off\r
- icon: mdi:cellphone-arrow-down\r
-\r
-######################################################################\r
-# Update: Shelly\r
-######################################################################\r
-\r
-update_shelly:\r
- name: Aggiornamento Shelly\r
- initial: off\r
- icon: mdi:cellphone-arrow-down\r
-\r
-######################################################################\r
-# Update: HACS\r
-######################################################################\r
-\r
-update_hacs:\r
- name: Aggiornamenti HACS\r
- initial: off\r
- icon: mdi:cellphone-arrow-down\r
+######################################################################
+# Update: Home Assistant
+######################################################################
+
+update_homeassistant:
+ name: Aggiornamento Home Assistant
+ initial: off
+ icon: mdi:cellphone-arrow-down
+
+######################################################################
+# Update: Shelly
+######################################################################
+
+update_shelly:
+ name: Aggiornamento Shelly
+ initial: off
+ icon: mdi:cellphone-arrow-down
+
+######################################################################
+# Update: HACS
+######################################################################
+
+update_hacs:
+ name: Aggiornamenti HACS
+ initial: off
+ icon: mdi:cellphone-arrow-down
# Alarm Automation: Aknowledge Alarms\r
#\r
# Actions:\r
- # - persistent_notification.dismiss\r
# - script.stop_alarm\r
######################################################################\r
- alias: "Allarmi: Riconoscimento Allarmi"\r
-######################################################################\r
-# QNAP Package - Switch\r
-######################################################################\r
-\r
-switch:\r
- - platform: wake_on_lan\r
- mac: !secret nas_mac\r
- name: NAS\r
- host: !secret nas_host\r
- turn_off: \r
- service: shell_command.nas_turn_off\r
- data:\r
- nas_host: !secret nas_host\r
- nas_username: !secret nas_username\r
-\r
-######################################################################\r
-# QNAP Package - Shell Command\r
-######################################################################\r
-\r
-shell_command:\r
- nas_turn_off: 'ssh {{ nas_username }}@{{ nas_host }} -oStrictHostKeyChecking=no -i /config/credentials/id_rsa halt'\r
- plex_start: 'ssh {{ nas_username }}@{{ nas_host }} -oStrictHostKeyChecking=no -i /config/credentials/id_rsa /share/CACHEDEV1_DATA/.qpkg/PlexMediaServer/plex.sh start'\r
- plex_restart: 'ssh {{ nas_username }}@{{ nas_host }} -oStrictHostKeyChecking=no -i /config/credentials/id_rsa /share/CACHEDEV1_DATA/.qpkg/PlexMediaServer/plex.sh restart'\r
- plex_stop: 'ssh {{ nas_username }}@{{ nas_host }} -oStrictHostKeyChecking=no -i /config/credentials/id_rsa /share/CACHEDEV1_DATA/.qpkg/PlexMediaServer/plex.sh stop'\r
-\r
-######################################################################\r
-# QNAP Package - Script\r
-######################################################################\r
-\r
-script:\r
- plex_start:\r
- alias: "Avvia Plex"\r
- sequence:\r
- - service: shell_command.plex_start\r
- data:\r
- nas_host: !secret nas_host\r
- nas_username: !secret nas_username\r
-\r
- plex_restart:\r
- alias: "Riavvia Plex"\r
- sequence:\r
- - service: shell_command.plex_restart\r
- data:\r
- nas_host: !secret nas_host\r
- nas_username: !secret nas_username\r
-\r
- plex_stop:\r
- alias: "Ferma Plex"\r
- sequence:\r
- - service: shell_command.plex_stop\r
- data:\r
- nas_host: !secret nas_host\r
- nas_username: !secret nas_username\r
-\r
-######################################################################\r
-# QNAP Package - Google Assistant\r
-######################################################################\r
-\r
-google_assistant:\r
- entity_config:\r
- switch.nas:\r
- name: NAS\r
- expose: true\r
- room: Studio\r
- script.plex_start:\r
- name: Avvia Plex\r
- expose: true\r
- room: Routine\r
- script.plex_stop:\r
- name: Ferma Plex\r
- expose: true\r
- room: Routine\r
-\r
-######################################################################\r
-# QNAP Package - Customizations\r
-######################################################################\r
-\r
-homeassistant:\r
- customize:\r
- switch.nas:\r
- icon: mdi:nas\r
- script.plex_start:\r
- icon: mdi:plex\r
- script.plex_restart:\r
- icon: mdi:plex\r
- script.plex_stop:\r
- icon: mdi:plex\r
+######################################################################
+# QNAP Package - Switch
+######################################################################
+
+switch:
+ - platform: wake_on_lan
+ mac: !secret nas_mac
+ name: NAS
+ host: !secret nas_host
+ turn_off:
+ service: shell_command.nas_turn_off
+ data:
+ nas_host: !secret nas_host
+ nas_username: !secret nas_username
+
+######################################################################
+# QNAP Package - Shell Command
+######################################################################
+
+shell_command:
+ nas_turn_off: 'ssh {{ nas_username }}@{{ nas_host }} -oStrictHostKeyChecking=no -i /config/credentials/id_rsa halt'
+ plex_start: 'ssh {{ nas_username }}@{{ nas_host }} -oStrictHostKeyChecking=no -i /config/credentials/id_rsa /share/CACHEDEV1_DATA/.qpkg/PlexMediaServer/plex.sh start'
+ plex_restart: 'ssh {{ nas_username }}@{{ nas_host }} -oStrictHostKeyChecking=no -i /config/credentials/id_rsa /share/CACHEDEV1_DATA/.qpkg/PlexMediaServer/plex.sh restart'
+ plex_stop: 'ssh {{ nas_username }}@{{ nas_host }} -oStrictHostKeyChecking=no -i /config/credentials/id_rsa /share/CACHEDEV1_DATA/.qpkg/PlexMediaServer/plex.sh stop'
+
+######################################################################
+# QNAP Package - Script
+######################################################################
+
+script:
+ plex_start:
+ alias: "Avvia Plex"
+ sequence:
+ - service: shell_command.plex_start
+ data:
+ nas_host: !secret nas_host
+ nas_username: !secret nas_username
+
+ plex_restart:
+ alias: "Riavvia Plex"
+ sequence:
+ - service: shell_command.plex_restart
+ data:
+ nas_host: !secret nas_host
+ nas_username: !secret nas_username
+
+ plex_stop:
+ alias: "Ferma Plex"
+ sequence:
+ - service: shell_command.plex_stop
+ data:
+ nas_host: !secret nas_host
+ nas_username: !secret nas_username
+
+######################################################################
+# QNAP Package - Google Assistant
+######################################################################
+
+google_assistant:
+ entity_config:
+ switch.nas:
+ name: NAS
+ expose: true
+ room: Studio
+ script.plex_start:
+ name: Avvia Plex
+ expose: true
+ room: Routine
+ script.plex_stop:
+ name: Ferma Plex
+ expose: true
+ room: Routine
+
+######################################################################
+# QNAP Package - Customizations
+######################################################################
+
+homeassistant:
+ customize:
+ switch.nas:
+ icon: mdi:nas
+ script.plex_start:
+ icon: mdi:plex
+ script.plex_restart:
+ icon: mdi:plex
+ script.plex_stop:
+ icon: mdi:plex
-######################################################################\r
-# Zigbee2mqtt Package - Input select\r
-######################################################################\r
-\r
-input_select:\r
- # Zigbee2mqtt log level\r
- zigbee2mqtt_log_level:\r
- name: "Zigbee2MQTT: Log Level"\r
- options:\r
- - debug\r
- - info\r
- - warn\r
- - error\r
- initial: info\r
- icon: mdi:format-list-bulleted\r
-\r
-######################################################################\r
-# Zigbee2mqtt Package - Input Number\r
-######################################################################\r
-\r
-# Input number for joining time remaining (in minutes)\r
-input_number:\r
- zigbee2mqtt_join_minutes:\r
- name: "Zigbee2MQTT: Tempo per il join"\r
- initial: 2\r
- min: 1\r
- max: 5\r
- step: 1\r
- mode: slider\r
-\r
-######################################################################\r
-# Zigbee2mqtt Package - Input Text\r
-######################################################################\r
-\r
-input_text:\r
- zigbee2mqtt_old_name:\r
- name: "Device da Rinominare"\r
- initial: ""\r
-\r
- zigbee2mqtt_new_name:\r
- name: "Nuovo nome Device"\r
- initial: ""\r
-\r
- zigbee2mqtt_remove:\r
- name: "Device da Rimuovere"\r
- initial: ""\r
-\r
-######################################################################\r
-# Zigbee2mqtt Package - Input boolean\r
-######################################################################\r
-\r
-input_boolean:\r
- zigbee2mqtt_force_remove:\r
- name: "Zigbee2MQTT: Rimozione Forzata"\r
- initial: false\r
- icon: mdi:alert-remove\r
-\r
-######################################################################\r
-# Zigbee2mqtt Package - Script\r
-######################################################################\r
-\r
-script:\r
- ######################################################################\r
- # Restart Bridge\r
- ######################################################################\r
- zigbee2mqtt_restart:\r
- alias: "Zigbee2MQTT: Riavvia Bridge"\r
- sequence:\r
- - service: shell_command.zigbee2mqtt_restart\r
- data:\r
- docker_host: !secret docker_host\r
- docker_username: !secret docker_username\r
- icon: mdi:restart\r
-\r
- ######################################################################\r
- # Rename Device\r
- ######################################################################\r
- zigbee2mqtt_rename:\r
- alias: "Zigbee2MQTT: Rinomina Device"\r
- sequence:\r
- service: mqtt.publish\r
- data_template:\r
- topic: zigbee2mqtt/bridge/request/device/rename\r
- payload_template: >-\r
- {\r
- "from": "{{ states.input_text.zigbee2mqtt_old_name.state | string }}",\r
- "to": "{{ states.input_text.zigbee2mqtt_new_name.state | string }}"\r
- }\r
- icon: mdi:form-textbox\r
-\r
- ######################################################################\r
- # Delete Device\r
- ######################################################################\r
- zigbee2mqtt_remove:\r
- alias: "Zigbee2MQTT: Rimuovi Device"\r
- sequence:\r
- service: mqtt.publish\r
- data_template:\r
- topic: zigbee2mqtt/bridge/request/device/remove\r
- payload_template: >-\r
- {\r
- "id": "{{ states.input_text.zigbee2mqtt_remove.state | string }}",\r
- "force": {% if states.input_boolean.zigbee2mqtt_force_remove.state == "off" %}false{% else %}true{% endif %}\r
- }\r
- icon: mdi:link-variant-remove\r
-\r
-######################################################################\r
-# Zigbee2mqtt Package - Timer\r
-######################################################################\r
-\r
-timer:\r
- # Timer for joining time remaining (120 sec = 2 min)\r
- zigbee_permit_join:\r
- name: Tempo rimasto per il join\r
- duration: 120\r
-\r
-######################################################################\r
-# Zigbee2mqtt Package - Sensor\r
-######################################################################\r
-\r
-mqtt:\r
- sensor:\r
- ######################################################################\r
- # MQTT Sensor for monitoring the bridge state\r
- ######################################################################\r
- - name: "Zigbee2MQTT: Stato Bridge"\r
- state_topic: "zigbee2mqtt/bridge/state"\r
- icon: mdi:router-wireless\r
-\r
- ######################################################################\r
- # MQTT Sensor for Showing the Zigbee2MQTT Version\r
- ######################################################################\r
- - name: "Zigbee2MQTT: Versione Bridge"\r
- state_topic: "zigbee2mqtt/bridge/info"\r
- value_template: "{{ value_json.version }}"\r
- icon: mdi:zigbee\r
-\r
- ######################################################################\r
- # MQTT Sensor for Showing the Coordinator Type\r
- ######################################################################\r
- #- name: "Zigbee2MQTT: Tipo Coordinator"\r
- # state_topic: "zigbee2mqtt/bridge/info"\r
- # value_template: "{{ value_json.coordinator.type }}"\r
- # icon: mdi:chip\r
-\r
- ######################################################################\r
- # MQTT Sensor for Showing the Coordinator Version\r
- ######################################################################\r
- - name: "Zigbee2MQTT: Versione Coordinator"\r
- state_topic: "zigbee2mqtt/bridge/info"\r
- value_template: "{{ value_json.coordinator.meta.revision }}"\r
- icon: mdi:chip\r
-\r
- ######################################################################\r
- # MQTT Sensor for monitoring the permit_join state\r
- ######################################################################\r
- - name: "Zigbee2MQTT: Stato permit join"\r
- state_topic: "zigbee2mqtt/bridge/info"\r
- value_template: "{{ value_json.permit_join }}"\r
- icon: mdi:link-lock\r
-\r
- ######################################################################\r
- # MQTT Sensor for monitoring the log_level state\r
- ######################################################################\r
- - name: "Zigbee2MQTT: Stato log level"\r
- state_topic: "zigbee2mqtt/bridge/info"\r
- value_template: "{{ value_json.log_level }}"\r
- icon: mdi:file-document-outline\r
-\r
- ######################################################################\r
- # MQTT Sensor for Showing the Channel\r
- ######################################################################\r
- - name: "Zigbee2MQTT: Canale"\r
- state_topic: "zigbee2mqtt/bridge/info"\r
- value_template: "{{ value_json.network.channel }}"\r
- icon: mdi:access-point-network\r
-\r
- ######################################################################\r
- # MQTT Sensor for Showing the PanID\r
- ######################################################################\r
- - name: "Zigbee2MQTT: PanID"\r
- state_topic: "zigbee2mqtt/bridge/info"\r
- value_template: "{{ value_json.network.pan_id }}"\r
- icon: mdi:lan\r
-\r
- ######################################################################\r
- # MQTT Sensor for Showing the Extended PanID\r
- ######################################################################\r
- #- name: "Zigbee2mqtt: Extended PanID"\r
- # state_topic: "zigbee2mqtt/bridge/info"\r
- # value_template: "{{ value_json.network.extended_pan_id }}"\r
- # icon: mdi:lan\r
-\r
- ######################################################################\r
- # Zigbee2mqtt Networkmap\r
- ######################################################################\r
- - name: Zigbee2MQTT Networkmap\r
- state_topic: zigbee2mqtt/bridge/response/networkmap\r
- value_template: >-\r
- {{ now().strftime('%Y-%m-%d %H:%M:%S') }}\r
- json_attributes_topic: zigbee2mqtt/bridge/response/networkmap\r
- json_attributes_template: "{{ value_json.data.value | tojson }}"\r
-\r
- ######################################################################\r
- # Zigbee2mqtt Package - Switch\r
- ######################################################################\r
- switch:\r
- # Switch for enabling joining\r
- - name: "Zigbee2MQTT: Abilita join"\r
- state_topic: "zigbee2mqtt/bridge/info"\r
- value_template: '{{ value_json.permit_join | lower }}'\r
- command_topic: "zigbee2mqtt/bridge/request/permit_join"\r
- payload_on: "true"\r
- payload_off: "false"\r
- icon: mdi:link-lock\r
-\r
-######################################################################\r
-# Zigbee2mqtt Package - Shell Command\r
-######################################################################\r
-\r
-shell_command:\r
- zigbee2mqtt_restart: 'ssh {{ docker_username }}@{{ docker_host }} -oStrictHostKeyChecking=no -i /config/credentials/id_rsa docker container restart zigbee2mqtt'\r
-\r
-######################################################################\r
-# Zigbee2mqtt Package - Automation\r
-######################################################################\r
-\r
-automation:\r
- ######################################################################\r
- # Automation to change log level\r
- ######################################################################\r
- - id: zigbee2mqtt_change_log_level\r
- alias: "Zigbee2MQTT: Cambia Log Level"\r
- trigger:\r
- platform: state\r
- entity_id: input_select.zigbee2mqtt_log_level\r
- action:\r
- - service: mqtt.publish\r
- data:\r
- payload_template: "{{ states('input_select.zigbee2mqtt_log_level') }}"\r
- topic: zigbee2mqtt/bridge/request/config/log_level\r
-\r
- ######################################################################\r
- # Automation to start timer when enable join is turned on\r
- ######################################################################\r
- - id: zigbee2mqtt_join_enabled\r
- alias: "Zigbee2MQTT: Abilita Join"\r
- trigger:\r
- platform: state\r
- entity_id: switch.zigbee2mqtt_abilita_join\r
- to: "on"\r
- action:\r
- service: timer.start\r
- entity_id: timer.zigbee_permit_join\r
- data_template:\r
- duration: "{{ '00:0%i:00' % (states('input_number.zigbee2mqtt_join_minutes') | int ) }}"\r
-\r
- ######################################################################\r
- # Automation to stop timer when switch turned off and turn off switch when timer finished\r
- ######################################################################\r
- - id: zigbee2mqtt_join_disabled\r
- alias: "Zigbee2MQTT: Disabilita Join"\r
- trigger:\r
- - platform: event\r
- event_type: timer.finished\r
- event_data:\r
- entity_id: timer.zigbee_permit_join\r
- - platform: state\r
- entity_id: switch.zigbee2mqtt_abilita_join\r
- to: "off"\r
- action:\r
- - service: timer.cancel\r
- data:\r
- entity_id: timer.zigbee_permit_join\r
- - service: switch.turn_off\r
- entity_id: switch.zigbee2mqtt_abilita_join\r
-\r
- ######################################################################\r
- # Automation to notify when a device joined zigbee2mqtt network\r
- ######################################################################\r
- - id: "zigbee2mqtt_notification_on_successfull_interview"\r
- alias: "Zigbee2MQTT: Device aggiunto alla rete Zigbee2mqtt"\r
- trigger:\r
- platform: mqtt\r
- topic: 'zigbee2mqtt/bridge/event'\r
- condition:\r
- condition: template\r
- value_template: '{{trigger.payload_json.type == "device_interview" and trigger.payload_json.data.status == "successful" and trigger.payload_json.data.supported}}'\r
- action:\r
- - service: persistent_notification.create\r
- data_template:\r
- title: "Device aggiunto alla rete Zigbee2mqtt"\r
- message: "Name: {{trigger.payload_json.data.friendly_name}},\r
- Vendor: {{trigger.payload_json.data.definition.vendor}},\r
- Model: {{trigger.payload_json.data.definition.model}},\r
- Description: {{trigger.payload_json.data.definition.description}}"\r
-\r
- ######################################################################\r
- # Automation to restart zigbee2mqtt to refresh sensor state\r
- ######################################################################\r
- - id: zigbee2mqtt_startup_automation\r
- alias: "Zigbee2MQTT: Startup Automation"\r
- trigger:\r
- - platform: homeassistant\r
- event: start\r
- action:\r
- - service: script.zigbee2mqtt_restart\r
-\r
- ######################################################################\r
- # Automation to restart zigbee2mqtt in case of bridge offline for 1m\r
- ######################################################################\r
- - id: zigbee2mqtt_restart_automation\r
- alias: "Zigbee2MQTT: Restart Automation"\r
- trigger:\r
- - platform: state\r
- entity_id: sensor.zigbee2mqtt_stato_bridge\r
- to: "offline"\r
- for: "00:01:00"\r
- action:\r
- - service: script.zigbee2mqtt_restart\r
- - service: script.notify_text\r
- data:\r
- title: "Restart Zigbee2mqtt"\r
- message: "Zigbee2mqtt bridge offline: force restart"\r
-\r
-######################################################################\r
-# Zigbee2mqtt Package - Logbook\r
-######################################################################\r
-\r
-logbook:\r
- exclude:\r
- entities:\r
- - sensor.zigbee2mqtt_stato_bridge\r
- - sensor.zigbee2mqtt_stato_permit_join\r
- - sensor.zigbee2mqtt_stato_log_level\r
- - sensor.zigbee2mqtt_versione_bridge\r
- - sensor.zigbee2mqtt_versione_coordinator\r
- - sensor.zigbee2mqtt_tipo_coordinator\r
- - sensor.zigbee2mqtt_canale\r
- - sensor.zigbee2mqtt_panid\r
- - sensor.zigbee2mqtt_extended_panid\r
- - sensor.zigbee2mqtt_networkmap\r
- - timer.zigbee_permit_join\r
-\r
-######################################################################\r
-# Zigbee2mqtt Package - Recorder\r
-######################################################################\r
-\r
-recorder:\r
- exclude:\r
- entities:\r
- - sensor.zigbee2mqtt_stato_bridge\r
- - sensor.zigbee2mqtt_stato_permit_join\r
- - sensor.zigbee2mqtt_stato_log_level\r
- - sensor.zigbee2mqtt_versione_bridge\r
- - sensor.zigbee2mqtt_versione_coordinator\r
- - sensor.zigbee2mqtt_tipo_coordinator\r
- - sensor.zigbee2mqtt_canale\r
- - sensor.zigbee2mqtt_panid\r
- - sensor.zigbee2mqtt_extended_panid\r
- - sensor.zigbee2mqtt_networkmap\r
- - timer.zigbee_permit_join\r
+######################################################################
+# Zigbee2mqtt Package - Input select
+######################################################################
+
+input_select:
+ # Zigbee2mqtt log level
+ zigbee2mqtt_log_level:
+ name: "Zigbee2MQTT: Log Level"
+ options:
+ - debug
+ - info
+ - warn
+ - error
+ initial: info
+ icon: mdi:format-list-bulleted
+
+######################################################################
+# Zigbee2mqtt Package - Input Number
+######################################################################
+
+# Input number for joining time remaining (in minutes)
+input_number:
+ zigbee2mqtt_join_minutes:
+ name: "Zigbee2MQTT: Tempo per il join"
+ initial: 2
+ min: 1
+ max: 5
+ step: 1
+ mode: slider
+
+######################################################################
+# Zigbee2mqtt Package - Input Text
+######################################################################
+
+input_text:
+ zigbee2mqtt_old_name:
+ name: "Device da Rinominare"
+ initial: ""
+
+ zigbee2mqtt_new_name:
+ name: "Nuovo nome Device"
+ initial: ""
+
+ zigbee2mqtt_remove:
+ name: "Device da Rimuovere"
+ initial: ""
+
+######################################################################
+# Zigbee2mqtt Package - Input boolean
+######################################################################
+
+input_boolean:
+ zigbee2mqtt_force_remove:
+ name: "Zigbee2MQTT: Rimozione Forzata"
+ initial: false
+ icon: mdi:alert-remove
+
+######################################################################
+# Zigbee2mqtt Package - Script
+######################################################################
+
+script:
+ ######################################################################
+ # Restart Bridge
+ ######################################################################
+ zigbee2mqtt_restart:
+ alias: "Zigbee2MQTT: Riavvia Bridge"
+ sequence:
+ - service: shell_command.zigbee2mqtt_restart
+ data:
+ docker_host: !secret docker_host
+ docker_username: !secret docker_username
+ icon: mdi:restart
+
+ ######################################################################
+ # Rename Device
+ ######################################################################
+ zigbee2mqtt_rename:
+ alias: "Zigbee2MQTT: Rinomina Device"
+ sequence:
+ service: mqtt.publish
+ data_template:
+ topic: zigbee2mqtt/bridge/request/device/rename
+ payload_template: >-
+ {
+ "from": "{{ states.input_text.zigbee2mqtt_old_name.state | string }}",
+ "to": "{{ states.input_text.zigbee2mqtt_new_name.state | string }}"
+ }
+ icon: mdi:form-textbox
+
+ ######################################################################
+ # Delete Device
+ ######################################################################
+ zigbee2mqtt_remove:
+ alias: "Zigbee2MQTT: Rimuovi Device"
+ sequence:
+ service: mqtt.publish
+ data_template:
+ topic: zigbee2mqtt/bridge/request/device/remove
+ payload_template: >-
+ {
+ "id": "{{ states.input_text.zigbee2mqtt_remove.state | string }}",
+ "force": {% if states.input_boolean.zigbee2mqtt_force_remove.state == "off" %}false{% else %}true{% endif %}
+ }
+ icon: mdi:link-variant-remove
+
+######################################################################
+# Zigbee2mqtt Package - Timer
+######################################################################
+
+timer:
+ # Timer for joining time remaining (120 sec = 2 min)
+ zigbee_permit_join:
+ name: Tempo rimasto per il join
+ duration: 120
+
+######################################################################
+# Zigbee2mqtt Package - Sensor
+######################################################################
+
+mqtt:
+ sensor:
+ ######################################################################
+ # MQTT Sensor for monitoring the bridge state
+ ######################################################################
+ - name: "Zigbee2MQTT: Stato Bridge"
+ state_topic: "zigbee2mqtt/bridge/state"
+ icon: mdi:router-wireless
+
+ ######################################################################
+ # MQTT Sensor for Showing the Zigbee2MQTT Version
+ ######################################################################
+ - name: "Zigbee2MQTT: Versione Bridge"
+ state_topic: "zigbee2mqtt/bridge/info"
+ value_template: "{{ value_json.version }}"
+ icon: mdi:zigbee
+
+ ######################################################################
+ # MQTT Sensor for Showing the Coordinator Type
+ ######################################################################
+ #- name: "Zigbee2MQTT: Tipo Coordinator"
+ # state_topic: "zigbee2mqtt/bridge/info"
+ # value_template: "{{ value_json.coordinator.type }}"
+ # icon: mdi:chip
+
+ ######################################################################
+ # MQTT Sensor for Showing the Coordinator Version
+ ######################################################################
+ - name: "Zigbee2MQTT: Versione Coordinator"
+ state_topic: "zigbee2mqtt/bridge/info"
+ value_template: "{{ value_json.coordinator.meta.revision }}"
+ icon: mdi:chip
+
+ ######################################################################
+ # MQTT Sensor for monitoring the permit_join state
+ ######################################################################
+ - name: "Zigbee2MQTT: Stato permit join"
+ state_topic: "zigbee2mqtt/bridge/info"
+ value_template: "{{ value_json.permit_join }}"
+ icon: mdi:link-lock
+
+ ######################################################################
+ # MQTT Sensor for monitoring the log_level state
+ ######################################################################
+ - name: "Zigbee2MQTT: Stato log level"
+ state_topic: "zigbee2mqtt/bridge/info"
+ value_template: "{{ value_json.log_level }}"
+ icon: mdi:file-document-outline
+
+ ######################################################################
+ # MQTT Sensor for Showing the Channel
+ ######################################################################
+ - name: "Zigbee2MQTT: Canale"
+ state_topic: "zigbee2mqtt/bridge/info"
+ value_template: "{{ value_json.network.channel }}"
+ icon: mdi:access-point-network
+
+ ######################################################################
+ # MQTT Sensor for Showing the PanID
+ ######################################################################
+ - name: "Zigbee2MQTT: PanID"
+ state_topic: "zigbee2mqtt/bridge/info"
+ value_template: "{{ value_json.network.pan_id }}"
+ icon: mdi:lan
+
+ ######################################################################
+ # MQTT Sensor for Showing the Extended PanID
+ ######################################################################
+ #- name: "Zigbee2mqtt: Extended PanID"
+ # state_topic: "zigbee2mqtt/bridge/info"
+ # value_template: "{{ value_json.network.extended_pan_id }}"
+ # icon: mdi:lan
+
+ ######################################################################
+ # Zigbee2mqtt Networkmap
+ ######################################################################
+ - name: Zigbee2MQTT Networkmap
+ state_topic: zigbee2mqtt/bridge/response/networkmap
+ value_template: >-
+ {{ now().strftime('%Y-%m-%d %H:%M:%S') }}
+ json_attributes_topic: zigbee2mqtt/bridge/response/networkmap
+ json_attributes_template: "{{ value_json.data.value | tojson }}"
+
+ ######################################################################
+ # Zigbee2mqtt Package - Switch
+ ######################################################################
+ switch:
+ # Switch for enabling joining
+ - name: "Zigbee2MQTT: Abilita join"
+ state_topic: "zigbee2mqtt/bridge/info"
+ value_template: '{{ value_json.permit_join | lower }}'
+ command_topic: "zigbee2mqtt/bridge/request/permit_join"
+ payload_on: "true"
+ payload_off: "false"
+ icon: mdi:link-lock
+
+######################################################################
+# Zigbee2mqtt Package - Shell Command
+######################################################################
+
+shell_command:
+ zigbee2mqtt_restart: 'ssh {{ docker_username }}@{{ docker_host }} -oStrictHostKeyChecking=no -i /config/credentials/id_rsa docker container restart zigbee2mqtt'
+
+######################################################################
+# Zigbee2mqtt Package - Automation
+######################################################################
+
+automation:
+ ######################################################################
+ # Automation to change log level
+ ######################################################################
+ - id: zigbee2mqtt_change_log_level
+ alias: "Zigbee2MQTT: Cambia Log Level"
+ trigger:
+ platform: state
+ entity_id: input_select.zigbee2mqtt_log_level
+ action:
+ - service: mqtt.publish
+ data:
+ payload_template: "{{ states('input_select.zigbee2mqtt_log_level') }}"
+ topic: zigbee2mqtt/bridge/request/config/log_level
+
+ ######################################################################
+ # Automation to start timer when enable join is turned on
+ ######################################################################
+ - id: zigbee2mqtt_join_enabled
+ alias: "Zigbee2MQTT: Abilita Join"
+ trigger:
+ platform: state
+ entity_id: switch.zigbee2mqtt_abilita_join
+ to: "on"
+ action:
+ service: 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
+ ######################################################################
+ - id: zigbee2mqtt_join_disabled
+ alias: "Zigbee2MQTT: Disabilita Join"
+ trigger:
+ - platform: event
+ event_type: timer.finished
+ event_data:
+ entity_id: timer.zigbee_permit_join
+ - platform: state
+ entity_id: switch.zigbee2mqtt_abilita_join
+ to: "off"
+ action:
+ - service: timer.cancel
+ data:
+ entity_id: timer.zigbee_permit_join
+ - service: switch.turn_off
+ entity_id: switch.zigbee2mqtt_abilita_join
+
+ ######################################################################
+ # Automation to notify when a device joined zigbee2mqtt network
+ ######################################################################
+ - id: "zigbee2mqtt_notification_on_successfull_interview"
+ alias: "Zigbee2MQTT: Device aggiunto alla rete Zigbee2mqtt"
+ trigger:
+ platform: 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:
+ - service: persistent_notification.create
+ data_template:
+ title: "Device aggiunto alla rete Zigbee2mqtt"
+ message: "Name: {{trigger.payload_json.data.friendly_name}},
+ Vendor: {{trigger.payload_json.data.definition.vendor}},
+ Model: {{trigger.payload_json.data.definition.model}},
+ Description: {{trigger.payload_json.data.definition.description}}"
+
+ ######################################################################
+ # Automation to restart zigbee2mqtt to refresh sensor state
+ ######################################################################
+ - id: zigbee2mqtt_startup_automation
+ alias: "Zigbee2MQTT: Startup Automation"
+ trigger:
+ - platform: homeassistant
+ event: start
+ action:
+ - service: script.zigbee2mqtt_restart
+
+ ######################################################################
+ # Automation to restart zigbee2mqtt in case of bridge offline for 1m
+ ######################################################################
+ - id: zigbee2mqtt_restart_automation
+ alias: "Zigbee2MQTT: Restart Automation"
+ trigger:
+ - platform: state
+ entity_id: sensor.zigbee2mqtt_stato_bridge
+ to: "offline"
+ for: "00:01:00"
+ action:
+ - service: script.zigbee2mqtt_restart
+ - service: script.notify_text
+ data:
+ title: "Restart Zigbee2mqtt"
+ message: "Zigbee2mqtt bridge offline: force restart"
+
+######################################################################
+# Zigbee2mqtt Package - Logbook
+######################################################################
+
+logbook:
+ exclude:
+ entities:
+ - sensor.zigbee2mqtt_stato_bridge
+ - sensor.zigbee2mqtt_stato_permit_join
+ - sensor.zigbee2mqtt_stato_log_level
+ - sensor.zigbee2mqtt_versione_bridge
+ - sensor.zigbee2mqtt_versione_coordinator
+ - sensor.zigbee2mqtt_tipo_coordinator
+ - sensor.zigbee2mqtt_canale
+ - sensor.zigbee2mqtt_panid
+ - sensor.zigbee2mqtt_extended_panid
+ - sensor.zigbee2mqtt_networkmap
+ - timer.zigbee_permit_join
+
+######################################################################
+# Zigbee2mqtt Package - Recorder
+######################################################################
+
+recorder:
+ exclude:
+ entities:
+ - sensor.zigbee2mqtt_stato_bridge
+ - sensor.zigbee2mqtt_stato_permit_join
+ - sensor.zigbee2mqtt_stato_log_level
+ - sensor.zigbee2mqtt_versione_bridge
+ - sensor.zigbee2mqtt_versione_coordinator
+ - sensor.zigbee2mqtt_tipo_coordinator
+ - sensor.zigbee2mqtt_canale
+ - sensor.zigbee2mqtt_panid
+ - sensor.zigbee2mqtt_extended_panid
+ - sensor.zigbee2mqtt_networkmap
+ - timer.zigbee_permit_join
-######################################################################\r
-# Speech Engine Message\r
-######################################################################\r
-\r
->-\r
- {# *********************************************** #}\r
- {# ***************** Check Input ***************** #}\r
- {# *********************************************** #}\r
- {% if enable_greeting is not defined %}\r
- {% set enable_greeting=false %}\r
- {% endif %}\r
- {% if enable_status is not defined %}\r
- {% set enable_status=false %}\r
- {% endif %}\r
- {% if enable_consumption is not defined %}\r
- {% set enable_consumption=false %}\r
- {% endif %}\r
- {% if enable_location is not defined %}\r
- {% set enable_location=false %}\r
- {% endif %}\r
- {% if location_people_start is not defined %}\r
- {% set location_people_start=1 %}\r
- {% endif %}\r
- {% if location_people_num is not defined %}\r
- {% set location_people_num=2 %}\r
- {% endif %}\r
- {% if enable_car is not defined %}\r
- {% set enable_car=false %}\r
- {% endif %}\r
-\r
- {# *********************************************** #}\r
- {# ******************** Macro ******************** #}\r
- {# *********************************************** #}\r
-\r
- {# Greeting Message #}\r
- {%- macro greeting() -%}\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
- {%- endmacro -%}\r
-\r
- {# Time & Date #}\r
- {%- macro time_and_date() -%}\r
- {% set hour = now().strftime('%H') %}\r
- {% set min = now().strftime('%M') %}\r
- {% set day = now().strftime('%d') %}\r
- {% set mounth = now().strftime('%B')|replace('January', 'Gennaio')\r
- |replace('February', 'Febbraio')\r
- |replace('March', 'Marzo')\r
- |replace('April', 'Aprile')\r
- |replace('May', 'Maggio')\r
- |replace('June', 'Giugno')\r
- |replace('July', 'Luglio')\r
- |replace('August', 'Agosto')\r
- |replace('September', 'Settembre')\r
- |replace('October', 'Ottobre')\r
- |replace('November', 'Novembre')\r
- |replace('December', 'Dicembre') %}\r
- {% set year = now().strftime('%Y') %}\r
- Sono le {{ hour }} e {{ min }} del {{ day }} {{ mounth }} {{ year }}\r
- {%- endmacro -%}\r
-\r
- {# Door Status #}\r
- {%- macro status_door() -%}\r
- {% for entity_id in states.group.doors.attributes.entity_id %}\r
- {% set name = state_attr(entity_id, 'friendly_name') %}\r
- {% if is_state(entity_id, 'off') %}\r
- La {{ name }} è chiusa.\r
- {% else %}\r
- La {{ name }} è aperta.\r
- {% endif %}\r
- {%- endfor %}\r
- {%- endmacro -%}\r
-\r
- {# Lights Status #}\r
- {%- macro status_lights() -%}\r
- {% for entity_id in states.group.lights.attributes.entity_id %}\r
- {% set name = state_attr(entity_id, 'friendly_name') %}\r
- {% if is_state(entity_id, 'off') %}\r
- La {{ name }} è spenta.\r
- {% else %}\r
- La {{ name }} è accesa.\r
- {% endif %}\r
- {%- endfor %}\r
- {%- endmacro -%}\r
-\r
- {# Covers Status #}\r
- {%- macro status_covers() -%}\r
- {% for entity_id in states.group.covers.attributes.entity_id %}\r
- {% set name = state_attr(entity_id, 'friendly_name') %}\r
- {% set perc = state_attr(entity_id, 'current_position') %}\r
- {% if perc | int < 25 %}\r
- La {{ name }} è chiusa.\r
- {% else %}\r
- La {{ name }} è aperta al {{ perc }} percento.\r
- {% endif %}\r
- {%- endfor %}\r
- {%- endmacro -%}\r
-\r
- {# Temperature Status #}\r
- {%- macro status_temperature() -%}\r
- {% for entity_id in states.group.temperature.attributes.entity_id %}\r
- {% set name = state_attr(entity_id, 'friendly_name') %}\r
- {% set temp = states(entity_id) %}\r
- La {{ name }} è {{ temp }} gradi.\r
- {%- endfor %}\r
- {%- endmacro -%}\r
-\r
- {# Consumption Status #}\r
- {%- macro status_consumption() -%}\r
- "Il consumo istantaneo è pari a {{ states.sensor.shelly_em_channel_1_power.state }} watt"\r
- {%- endmacro -%}\r
-\r
- {# Location Status #}\r
- {%- macro status_location(start, num) -%}\r
- {% for entity_id in states.group.people.attributes.entity_id %}\r
- {% set name = state_attr(entity_id, 'friendly_name') %}\r
- {% if is_state(entity_id, 'not_home') %}\r
- {% set source = state_attr(entity_id, 'source') %}\r
- {% set position = state_attr(source, 'address')|replace('Province of', 'Provincia di') %}\r
- {% elif is_state(entity_id, 'home') %}\r
- {% set position = "casa" %}\r
- {% else %}\r
- {% set position = states(entity_id) %}\r
- {% endif %}\r
-\r
- {% if (loop.index >= start|int) and (loop.index < num|int+start|int) %}\r
- La posizione di {{ name }} è {{ position }}.\r
- {% endif %}\r
- {%- endfor %}\r
- {%- endmacro -%}\r
-\r
- {# Car Status #}\r
- {%- macro status_car() -%}\r
- {% if is_state('device_tracker.ff590mr_device_tracker', 'home') %}\r
- {% set car_position = "in garage" %}\r
- {% else %}\r
- {% set car_position = "fuori" %}\r
- {% endif %}\r
- {% if is_state('binary_sensor.ff590mr_locked', 'off') %}\r
- {% set car_lock = "chiusa" %}\r
- {% else %}\r
- {% set car_lock = "aperta" %}\r
- {% endif %}\r
- {% if is_state('binary_sensor.ff590mr_windows_closed_2', 'off') %}\r
- {% set car_windows = "chiusi" %}\r
- {% else %}\r
- {% set car_windows = "aperti" %}\r
- {% endif %}\r
- La Mercedes si trova {{ car_position }}. è {{ car_lock }} con i finestrini {{ car_windows }}.\r
- Il livello del carburante è {{ states('sensor.ff590mr_fuel_level') }} percento.\r
- {% if is_state('binary_sensor.ff590mr_low_brake_fluid_warning', 'on') or\r
- is_state('binary_sensor.ff590mr_low_coolant_level_warning', 'on') or\r
- is_state('binary_sensor.ff590mr_low_wash_water_warning', 'on') or\r
- is_state('binary_sensor.ff590mr_tire_warning', 'on') %}\r
- Sono inoltre presenti allarmi.\r
- {% endif %}\r
- {%- endmacro -%}\r
-\r
- {# End Message #}\r
- {%- macro end_message() -%}\r
- {% if enable_status == true %}\r
- {{ [\r
- "Spero che il report ti abbia soddisfatto!",\r
- "Il report è concluso.",\r
- "Alla prossima!",\r
- "Buon proseguimento!",\r
- "Non ho altro da comunicare."\r
- ] | random }}\r
- {% endif %}\r
- {%- endmacro -%}\r
-\r
- {# *********************************************** #}\r
- {# ******************* Message ******************* #}\r
- {# *********************************************** #}\r
-\r
- {# Greeting Message #}\r
- {% if enable_greeting == true %}\r
- {{ greeting() }}\r
- {% endif %}\r
-\r
- {# Home Status #}\r
- {% if enable_status == true %}\r
-\r
- {{ time_and_date() }}\r
-\r
- {{ status_door() }}\r
-\r
- {{ status_lights() }}\r
-\r
- {{ status_covers() }}\r
-\r
- {{ status_temperature() }}\r
-\r
- {% endif %}\r
-\r
- {% if (enable_status == true) or (enable_consumption == true) %}\r
- {{ status_consumption() }}\r
- {% endif %}\r
-\r
- {# Location Status #}\r
- {% if (enable_status == true) or (enable_location == true) %}\r
- {{ status_location(location_people_start, location_people_num) }}\r
- {% endif %}\r
-\r
- {# Car Status #}\r
- {% if (enable_status == true) or (enable_car == true) %}\r
- {{ status_car() }}\r
- {% endif %}\r
-\r
- {# generic message #}\r
- {{ message }}\r
-\r
- {# end message #}\r
- {{ end_message() }}\r
+######################################################################
+# Speech Engine Message
+######################################################################
+
+>-
+ {# *********************************************** #}
+ {# ***************** Check Input ***************** #}
+ {# *********************************************** #}
+ {% if enable_greeting is not defined %}
+ {% set enable_greeting=false %}
+ {% endif %}
+ {% if enable_status is not defined %}
+ {% set enable_status=false %}
+ {% endif %}
+ {% if enable_consumption is not defined %}
+ {% set enable_consumption=false %}
+ {% endif %}
+ {% if enable_location is not defined %}
+ {% set enable_location=false %}
+ {% endif %}
+ {% if location_people_start is not defined %}
+ {% set location_people_start=1 %}
+ {% endif %}
+ {% if location_people_num is not defined %}
+ {% set location_people_num=2 %}
+ {% endif %}
+ {% if enable_car is not defined %}
+ {% set enable_car=false %}
+ {% endif %}
+
+ {# *********************************************** #}
+ {# ******************** Macro ******************** #}
+ {# *********************************************** #}
+
+ {# Greeting Message #}
+ {%- macro greeting() -%}
+ {% if now().strftime('%H')|int >= 7 and now().strftime('%H')|int < 12 %}
+ Buongiorno.
+ {% elif now().strftime('%H')|int >= 12 and now().strftime('%H')|int < 17 %}
+ Buonpomeriggio.
+ {% elif now().strftime('%H')|int >= 17 and now().strftime('%H')|int < 23 %}
+ Buonasera.
+ {% else %}
+ Buonanotte.
+ {% endif %}
+ {%- endmacro -%}
+
+ {# Time & Date #}
+ {%- macro time_and_date() -%}
+ {% set hour = now().strftime('%H') %}
+ {% set min = now().strftime('%M') %}
+ {% set day = now().strftime('%d') %}
+ {% set mounth = now().strftime('%B')|replace('January', 'Gennaio')
+ |replace('February', 'Febbraio')
+ |replace('March', 'Marzo')
+ |replace('April', 'Aprile')
+ |replace('May', 'Maggio')
+ |replace('June', 'Giugno')
+ |replace('July', 'Luglio')
+ |replace('August', 'Agosto')
+ |replace('September', 'Settembre')
+ |replace('October', 'Ottobre')
+ |replace('November', 'Novembre')
+ |replace('December', 'Dicembre') %}
+ {% set year = now().strftime('%Y') %}
+ Sono le {{ hour }} e {{ min }} del {{ day }} {{ mounth }} {{ year }}
+ {%- endmacro -%}
+
+ {# Door Status #}
+ {%- macro status_door() -%}
+ {% for entity_id in states.group.doors.attributes.entity_id %}
+ {% set name = state_attr(entity_id, 'friendly_name') %}
+ {% if is_state(entity_id, 'off') %}
+ La {{ name }} è chiusa.
+ {% else %}
+ La {{ name }} è aperta.
+ {% endif %}
+ {%- endfor %}
+ {%- endmacro -%}
+
+ {# Lights Status #}
+ {%- macro status_lights() -%}
+ {% for entity_id in states.group.lights.attributes.entity_id %}
+ {% set name = state_attr(entity_id, 'friendly_name') %}
+ {% if is_state(entity_id, 'off') %}
+ La {{ name }} è spenta.
+ {% else %}
+ La {{ name }} è accesa.
+ {% endif %}
+ {%- endfor %}
+ {%- endmacro -%}
+
+ {# Covers Status #}
+ {%- macro status_covers() -%}
+ {% for entity_id in states.group.covers.attributes.entity_id %}
+ {% set name = state_attr(entity_id, 'friendly_name') %}
+ {% set perc = state_attr(entity_id, 'current_position') %}
+ {% if perc | int < 25 %}
+ La {{ name }} è chiusa.
+ {% else %}
+ La {{ name }} è aperta al {{ perc }} percento.
+ {% endif %}
+ {%- endfor %}
+ {%- endmacro -%}
+
+ {# Temperature Status #}
+ {%- macro status_temperature() -%}
+ {% for entity_id in states.group.temperature.attributes.entity_id %}
+ {% set name = state_attr(entity_id, 'friendly_name') %}
+ {% set temp = states(entity_id) %}
+ La {{ name }} è {{ temp }} gradi.
+ {%- endfor %}
+ {%- endmacro -%}
+
+ {# Consumption Status #}
+ {%- macro status_consumption() -%}
+ "Il consumo istantaneo è pari a {{ states.sensor.shelly_em_channel_1_power.state }} watt"
+ {%- endmacro -%}
+
+ {# Location Status #}
+ {%- macro status_location(start, num) -%}
+ {% for entity_id in states.group.people.attributes.entity_id %}
+ {% set name = state_attr(entity_id, 'friendly_name') %}
+ {% if is_state(entity_id, 'not_home') %}
+ {% set source = state_attr(entity_id, 'source') %}
+ {% set position = state_attr(source, 'address')|replace('Province of', 'Provincia di') %}
+ {% elif is_state(entity_id, 'home') %}
+ {% set position = "casa" %}
+ {% else %}
+ {% set position = states(entity_id) %}
+ {% endif %}
+
+ {% if (loop.index >= start|int) and (loop.index < num|int+start|int) %}
+ La posizione di {{ name }} è {{ position }}.
+ {% endif %}
+ {%- endfor %}
+ {%- endmacro -%}
+
+ {# Car Status #}
+ {%- macro status_car() -%}
+ {% if is_state('device_tracker.ff590mr_device_tracker', 'home') %}
+ {% set car_position = "in garage" %}
+ {% else %}
+ {% set car_position = "fuori" %}
+ {% endif %}
+ {% if is_state('binary_sensor.ff590mr_locked', 'off') %}
+ {% set car_lock = "chiusa" %}
+ {% else %}
+ {% set car_lock = "aperta" %}
+ {% endif %}
+ {% if is_state('binary_sensor.ff590mr_windows_closed_2', 'off') %}
+ {% set car_windows = "chiusi" %}
+ {% else %}
+ {% set car_windows = "aperti" %}
+ {% endif %}
+ La Mercedes si trova {{ car_position }}. è {{ car_lock }} con i finestrini {{ car_windows }}.
+ Il livello del carburante è {{ states('sensor.ff590mr_fuel_level') }} percento.
+ {% if is_state('binary_sensor.ff590mr_low_brake_fluid_warning', 'on') or
+ is_state('binary_sensor.ff590mr_low_coolant_level_warning', 'on') or
+ is_state('binary_sensor.ff590mr_low_wash_water_warning', 'on') or
+ is_state('binary_sensor.ff590mr_tire_warning', 'on') %}
+ Sono inoltre presenti allarmi.
+ {% endif %}
+ {%- endmacro -%}
+
+ {# End Message #}
+ {%- macro end_message() -%}
+ {% if enable_status == true %}
+ {{ [
+ "Spero che il report ti abbia soddisfatto!",
+ "Il report è concluso.",
+ "Alla prossima!",
+ "Buon proseguimento!",
+ "Non ho altro da comunicare."
+ ] | random }}
+ {% endif %}
+ {%- endmacro -%}
+
+ {# *********************************************** #}
+ {# ******************* Message ******************* #}
+ {# *********************************************** #}
+
+ {# Greeting Message #}
+ {% if enable_greeting == true %}
+ {{ greeting() }}
+ {% endif %}
+
+ {# Home Status #}
+ {% if enable_status == true %}
+
+ {{ time_and_date() }}
+
+ {{ status_door() }}
+
+ {{ status_lights() }}
+
+ {{ status_covers() }}
+
+ {{ status_temperature() }}
+
+ {% endif %}
+
+ {% if (enable_status == true) or (enable_consumption == true) %}
+ {{ status_consumption() }}
+ {% endif %}
+
+ {# Location Status #}
+ {% if (enable_status == true) or (enable_location == true) %}
+ {{ status_location(location_people_start, location_people_num) }}
+ {% endif %}
+
+ {# Car Status #}
+ {% if (enable_status == true) or (enable_car == true) %}
+ {{ status_car() }}
+ {% endif %}
+
+ {# generic message #}
+ {{ message }}
+
+ {# end message #}
+ {{ end_message() }}
-######################################################################\r
-# Speech Engine Message\r
-######################################################################\r
-\r
->-\r
- {% set name = state_attr(trigger.entity_id, 'friendly_name') %}\r
- {%- macro greeting_sentence(name) -%}\r
- {{ [\r
- "Ciao " ~ name + " è un piacere rivederti a casa",\r
- "Finalmente a casa " ~ name + "!",\r
- "Indovina chi è a casa? " ~ name + "!",\r
- name + " è ora a casa!",\r
- "Che bello! " ~ name + " è a casa",\r
- name + " sei a casa!",\r
- "Il sistema di domotica Casa Ravera-Testa notifica che " ~ name + " è a casa!",\r
- "Annuncio: " ~ name + " è ora a casa!",\r
- "Rilevo una presenza! " ~ name + " è a casa!",\r
- "Ciao " ~ name + " che la forza sia con te",\r
- "Sento un tremito nella forza! " ~ name + " è a casa",\r
- "Sento un interferenza nella Forza! " ~ name + " è qui",\r
- "Menomale che sei qui " ~ name + "! Mi sentivo solo",\r
- "Menomale che sei qui " ~ name + "! La casa è vuota senza di te!",\r
- "Ciao " ~ name + "! Casa è sempre la casa!"\r
- ] | random }}\r
- {%- endmacro -%}\r
- {{ greeting_sentence(name) }}\r
+######################################################################
+# Speech Engine Message
+######################################################################
+
+>-
+ {% set name = state_attr(trigger.entity_id, 'friendly_name') %}
+ {%- 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) }}