############################################################################### # @author : Mahasri Kalavala # @date : 09/20/2018 # @package : scripts # @description : All my scripts are here in one place! ################################################################################ # _____ _ _ # / ____| (_) | | # | (___ ___ _ __ _ _ __ | |_ ___ # \___ \ / __| '__| | '_ \| __/ __| # ____) | (__| | | | |_) | |_\__ \ # |_____/ \___|_| |_| .__/ \__|___/ # | | # |_| ################################################################################ homeassistant: customize: script.all_indoor_lights_off: friendly_name: All Indoor Lights & Switches OFF script.home_status: friendly_name: Home Status (Hourly Report) script.home_mode_away: friendly_name: Set Home Mode to AWAY script.good_night_tts: friendly_name: Good Night TTS Report script: toggle_do_not_disturb: sequence: - service: input_boolean.toggle entity_id: input_boolean.do_not_disturb play_ringtone: sequence: - service: xiaomi_aqara.play_ringtone data: gw_mac: !secret xiaomi_mac ringtone_id: 10 ringtone_vol: 30 play_fav_song: sequence: - service: media_player.volume_set entity_id: media_player.living_room, media_player.upstairs data: volume_level: "0.15" - service: media_player.play_media data: entity_id: media_player.living_room, media_player.upstairs media_content_id: !secret fav_song_url media_content_type: "music" play_dog_sounds: sequence: - service: media_player.volume_set entity_id: media_player.living_room, media_player.upstairs data: volume_level: "1.0" - service: media_player.play_media data: entity_id: media_player.living_room, media_player.upstairs media_content_id: !secret dog_sound_url media_content_type: "music" - delay: "00:00:05" - service: media_player.play_media data: entity_id: media_player.living_room, media_player.upstairs media_content_id: !secret dog_sound_url media_content_type: "music" - delay: "00:00:05" - service: media_player.play_media data: entity_id: media_player.living_room, media_player.upstairs media_content_id: !secret dog_sound_url media_content_type: "music" home_mode_away: sequence: - service: script.all_indoor_lights_off - service: input_boolean.turn_on entity_id: input_boolean.notify_camera_alerts - service: alarm_control_panel.alarm_arm_away data: entity_id: alarm_control_panel.home - service: script.notify_me data: message: > No one is at home. Cameras rolling, Indoor lights are OFF. Your home security system is turned ON! ############################################################################### # The following script runs when no one is home. It excludes some lights # and switches like front porch and backyard lights...etc for safety reasons. ############################################################################### all_indoor_lights_off: sequence: - service: light.turn_off data_template: entity_id: - light.family_room_lights - light.hue_color_lamp_1 - light.hue_color_lamp_2 - light.hue_color_lamp_3 - light.master_bedroom_1 - light.master_bedroom_2 - light.master_bedroom_lights - service: switch.turn_off data_template: entity_id: - switch.basement_left - switch.basement_right - switch.front_room - switch.garage - switch.garage_shop_lights - switch.srinika_bedroom - switch.hasika_bed_accent - switch.hasika_bedroom - switch.kitchen_switch - switch.office_room - switch.guest_room - switch.officeroom_accent_lights - switch.chromecast_monitor - switch.master_bathroom_lights xiaomi_red: sequence: - service: light.turn_on data: entity_id: light.gateway_light_34ce008ad65d brightness: 255 rgb_color: [255, 0, 0] xiaomi_blue: sequence: - service: light.turn_on data: entity_id: light.gateway_light_34ce008ad65d brightness: 255 rgb_color: [0, 0, 255] xiaomi_green: sequence: - service: light.turn_on data: entity_id: light.gateway_light_34ce008ad65d brightness: 255 rgb_color: [0, 255, 0] ############################################################################### # A script that toggles Nest Thermostat between eco/away & non-eco/away modes ############################################################################### toggle_climate: sequence: - service: climate.set_away_mode data_template: entity_id: climate.dining_room away_mode: "{{ false if state_attr('climate.dining_room', 'away_mode') == 'on' else true }}" ############################################################################### # _ _ _ _ __ # | \ | | | | (_)/ _| # | \| | ___ | |_ _| |_ _ _ # | . ` |/ _ \| __| | _| | | | # | |\ | (_) | |_| | | | |_| | # |_| \_|\___/ \__|_|_| \__, | # __/ | # |___/ # Notify Related Scripts ############################################################################### notify_me_with_picture: sequence: - condition: state entity_id: input_boolean.text_alerts state: "on" - condition: template value_template: '{{- message | trim != "" -}}' - service: telegram_bot.send_message data: title: "{{- title -}}" message: "{{- message -}}" data: photo: - file: "{{- file -}}" caption: "{{- caption -}}" notify_tv: sequence: - service: notify.android_tv_fire_tv data: message: "{{ message }}" title: Mahasri Bot data: color: red duration: 7 transparency: 1% icon: path: /config/www/{{- [ "suresh.jpg", "srinika.jpg", "mallika.jpg", "hasika.jpg" ] | random -}} notify_me: sequence: - condition: state entity_id: input_boolean.text_alerts state: "on" - condition: template value_template: '{{ message | trim != "" }}' - service: telegram_bot.send_message data: message: "{{ message }}" - service: script.notify_tv data: message: "{{ message }}" good_night_tts: sequence: - service: script.voice_notify data_template: message: !include ../templates/goodnight.yaml ############################################################################### # Voice Notify # Conditions: # => Only Announce when people are home. Except in emergency mode! # => Only Announce when Music is NOT being played ############################################################################### voice_notify: sequence: - condition: template value_template: "{{ states('input_boolean.voice_notifications') == 'on' }}" - condition: template value_template: "{{ states('input_boolean.do_not_disturb') | lower == 'off' }}" - condition: template value_template: "{{ message | trim != '' }}" - condition: template value_template: "{{ states('input_boolean.home_mode_away') == 'off' }}" - condition: template value_template: > {% if only_at_night | default('no', true ) == "yes" %} {% if states('sun.sun') == "above_horizon" %} false {% else %} true {% endif %} {% else %} true {% endif %} - service: media_player.volume_set entity_id: media_player.living_room, media_player.upstairs data_template: volume_level: > {% if states('input_boolean.emergency_mode') == "on" %} {{ states('input_number.tts_volume_level_alert') }} {% else %} {% if now().hour | int < 12 and now().hour | int > 6 %} {{ states('input_number.tts_volume_level_morning') }} {% elif now().hour|int > 12 and now().hour|int < 20 %} {{ states('input_number.tts_volume_level_afternoon') }} {% else %} {{ states('input_number.tts_volume_level_evening') }} {% endif %} {% endif %} - service: tts.amazon_polly_say entity_id: media_player.living_room, media_player.upstairs data_template: cache: true message: > {% set msg = "" %} {% macro getGreeting() %} {% if greeting | default('yes', true ) == "yes" %} {% if now().hour|int < 12 %} Good morning. {% elif now().hour|int < 18 %} Good afternoon. {% else %} Good evening. {% endif %} {% endif %} {% endmacro %} {%- macro getEndGreeting() -%} {%- if greeting |default('yes', true ) == "yes" -%} Thank you! {%- endif -%} {%- endmacro -%} {% set msg = msg + " " %} {% set msg = msg + getGreeting() %} {% set msg = msg + ". " + message %} {% set msg = msg.replace(".", " ") %} {% set msg = msg + " " + getEndGreeting() %} {% set msg = msg + " " %} {{ msg }} ############################################################################### # Greeting ############################################################################### voice_greeting: sequence: - service: tts.amazon_polly_say entity_id: media_player.living_room, media_player.upstairs data_template: cache: true message: > {% set msg = "" %} {% macro getGreeting() %} {% if greeting | default('yes', true ) == "yes" %} {% if now().hour|int < 12 %} Good morning. {% elif now().hour|int < 18 %} Good afternoon. {% else %} Good evening. {% endif %} {% endif %} {% endmacro %} {% set msg = msg + " " %} {% set msg = msg + " " + getGreeting() %} {% set msg = msg.replace(".", " ") %} {% set msg = msg + " " %} {{ msg }} ############################################################################### # Status around the house ############################################################################### home_status: sequence: - service: script.voice_notify data_template: message: !include ../templates/home_status.yaml ############################################################################### # Display message on LED Matrix Screen ############################################################################### led_message: sequence: - condition: state entity_id: input_boolean.led_alerts state: "on" - service: mqtt.publish data_template: topic: messageboard/messages payload: "{{ message }}" ############################################################################### # Notifies to take pills, starts timer again! # Voice notifications at home - only if the option is selected. ############################################################################### remind_pill: sequence: - service: script.notify_me data: message: "ALERT: PLEASE TAKE YOUR TABLETS!" - service: timer.start entity_id: timer.timer_pill_reminder - condition: template value_template: "{{ states('input_boolean.pill_voice_notification') == 'on' }}" - service: script.voice_notify data_template: message: > Please take the tablets. It looks like you have forgotten to take today's dose of tablets... Once again, this is a reminder for you to take the tablets. ############################################################################### # Stops timer, Records that the pills are taken, and notifies! ############################################################################### pill_taken: sequence: - service: timer.cancel entity_id: timer.timer_pill_reminder - service: input_boolean.turn_on entity_id: input_boolean.pill_taken - service: script.notify_me data_template: message: > Thank you for taking tablets. {%- if state_attr('sensor.allergy_index_today', 'rating') != None %} {{- " Today's pollen level is : " ~ state_attr('sensor.allergy_index_today', 'rating') }}. {%- endif -%} - condition: template value_template: "{{ states('input_boolean.pill_voice_notification') == 'on' }}" - service: script.voice_notify data: message: "Thank you for taking tablets on time!"