407 lines
15 KiB
YAML
407 lines
15 KiB
YAML
#########################################################################################################
|
|
# Wrote this code for @norien, where he wanted to set specific color to all the bulbs based on holiday
|
|
#########################################################################################################
|
|
# homeassistant:
|
|
# customize:
|
|
|
|
# script.set_random_color_2_all_bulbs:
|
|
# hidden: false
|
|
# script.light_set_color:
|
|
# hidden: true
|
|
|
|
# input_label:
|
|
# hue_color_lamp_1_random_color:
|
|
# value: "no"
|
|
# hue_color_lamp_2_random_color:
|
|
# value: "no"
|
|
# hue_color_lamp_3_random_color:
|
|
# value: "no"
|
|
|
|
# group:
|
|
# Family Room Hue Bulbs:
|
|
# entities:
|
|
# - light.hue_color_lamp_1
|
|
# - light.hue_color_lamp_2
|
|
# - light.hue_color_lamp_3
|
|
# Input Labels:
|
|
# entities:
|
|
# - input_label.hue_color_lamp_1_random_color
|
|
# - input_label.hue_color_lamp_2_random_color
|
|
# - input_label.hue_color_lamp_3_random_color
|
|
|
|
# script:
|
|
# set_random_color_2_all_bulbs:
|
|
# sequence:
|
|
# - condition: template
|
|
# value_template: >
|
|
# {%- macro get_next_entity_id() -%}
|
|
# {%- for item in states.group.input_labels.attributes.entity_id if is_state(item, "no") -%}
|
|
# {{- "," if not loop.first-}}{{- item -}}{{-endif-}}
|
|
# {%- endfor -%}
|
|
# {%- endmacro -%}
|
|
# {%- set entity_ids = get_next_entity_id() -%}
|
|
# {% if entity_ids | trim != "" and entity_ids.split(',') | length | int == 0 %}
|
|
# false
|
|
# {% else %}
|
|
# true
|
|
# {% endif %}
|
|
# - delay: '00:00:01'
|
|
# - service: script.light_set_color
|
|
# data_template:
|
|
# entity_id: >-
|
|
# {%- macro get_next_entity_id() -%}
|
|
# {%- for item in states.group.input_labels.attributes.entity_id if is_state(item, "no") -%}
|
|
# {{- "," if not loop.first-}}{{- item -}}{{-endif-}}
|
|
# {%- endfor -%}
|
|
# {%- endmacro -%}
|
|
# {%- set entity_ids = get_next_entity_id() -%}
|
|
# {% if entity_ids | trim != "" %}
|
|
# {%- if entity_ids.split(',') | length > 0 -%}
|
|
# {{- 'light.' ~ entity_ids.split(',')[0].split('.')[1].replace('_random_color', '') -}}
|
|
# {%- endif -%}
|
|
# {% endif %}
|
|
# brightness: 254
|
|
# r: '{{ "{0:d}".format(range(210, 238)|random) }}'
|
|
# g: '{{ "{0:d}".format(range(100, 132)|random) }}'
|
|
# b: '{{ "{0:d}".format(range(240, 254)|random) }}'
|
|
|
|
# light_set_color:
|
|
# sequence:
|
|
# - condition: template
|
|
# value_template: '{{ entity_id | trim != "" }}'
|
|
# - condition: template
|
|
# value_template: '{{ brightness | trim != "" }}'
|
|
# - service: light.turn_on
|
|
# data_template:
|
|
# entity_id: '{{ entity_id }}'
|
|
# brightness: '{{ brightness }}'
|
|
# rgb_color: ['{{"{0:d}".format(range(210, 238)|random)|int}}', '{{"{0:d}".format(range(210, 238)|random)|int}}', '{{"{0:d}".format(range(210, 238)|random)|int}}']
|
|
# - service: input_label.set_value
|
|
# data_template:
|
|
# entity_id: "input_label.{{- entity_id.split('.')[1] -}}_random_color"
|
|
# value: 'yes'
|
|
# - delay: '00:00:01'
|
|
# - service: script.set_random_color_2_all_bulbs
|
|
|
|
#########################################################################################################
|
|
# Wrote this for @chags, to show how to raise and handle custom events with dynamic data using templates
|
|
#########################################################################################################
|
|
# automation:
|
|
# - alias: Fire Event
|
|
# trigger:
|
|
# platform: state
|
|
# entity_id: switch.kitchen
|
|
# action:
|
|
# event: my_test_event
|
|
# event_data:
|
|
# foo: "bar"
|
|
|
|
# - alias: Capture Event
|
|
# trigger:
|
|
# platform: event
|
|
# event_type: my_test_event
|
|
# action:
|
|
# - service: script.notify_me
|
|
# data_template:
|
|
# message: "Test Event Captured with data foo: {{ trigger.event.data.foo }}"
|
|
|
|
#########################################################################################################
|
|
# Wrote this code for @roystervi, where it turns on a group of media players/speakers based on where
|
|
# the motion is detected, and when there is no motion, it turns off the speakers
|
|
#########################################################################################################
|
|
|
|
# automation:
|
|
# - alias: Speakers On During Presence
|
|
# trigger:
|
|
# - platform: state
|
|
# entity_id:
|
|
# - binary_sensor.masterbed_motion
|
|
# - binary_sensor.masterbath_motion
|
|
# - binary_sensor.bathroom_motion
|
|
# - binary_sensor.kitchen_motion
|
|
# - binary_sensor.den_motion
|
|
# action:
|
|
# - service_template: 'switch.turn_{{ trigger.to_state.state }}'
|
|
# data_template:
|
|
# entity_id: '{{ trigger.entity_id.replace("binary_sensor", "group") }}'
|
|
|
|
#########################################################################################################
|
|
# Wrote this code for someone, to help set scenes based on sun elevation and time combination
|
|
#########################################################################################################
|
|
|
|
#- id: Sunset_if_home
|
|
# automation:
|
|
# - alias: 'Hemkomst'
|
|
# trigger:
|
|
# platform: state
|
|
# entity_id: 'group.telefoner'
|
|
# state: 'home'
|
|
# condition:
|
|
# - condition: time
|
|
# after: '12:00:00'
|
|
# before: '02:00:00'
|
|
# action:
|
|
# - service_template: scene.turn_on
|
|
# data_template:
|
|
# entity_id: >-
|
|
# {%set elevation = states.sun.sun.attributes.elevation | int %}
|
|
# {% if elevation > -10 and elevation | int < 5 %}
|
|
# scene.normalvit
|
|
# {% elif elevation | int > 5 %}
|
|
# scene.dimmad_vit
|
|
# {% endif %}
|
|
|
|
#########################################################################################################
|
|
# Wrote this code for someone, to show servcie_template example
|
|
#########################################################################################################
|
|
|
|
# automation:
|
|
# - alias: Run every 15 seconds
|
|
# hide_entity: false
|
|
# initial_state: true
|
|
# trigger:
|
|
# - platform: time_pattern
|
|
# seconds: '/15'
|
|
# action:
|
|
# - service_template: >-
|
|
# {% if states.switch.kitchen.state == 'on' %}
|
|
# switch.turn_off
|
|
# {% else %}
|
|
# switch.turn_on
|
|
# {% endif %}
|
|
# entity_id: switch.kitchen
|
|
|
|
|
|
#########################################################################################################
|
|
# Wrote this code for someone, where they wanted to drop a message to MQTT with topic name based on sensor
|
|
#########################################################################################################
|
|
|
|
# automation:
|
|
# - alias: ResetMotionSensors
|
|
# trigger:
|
|
# - platform: state
|
|
# entity_id: binary_sensor.hallway_motion
|
|
# to: 'on'
|
|
# for:
|
|
# seconds: 30
|
|
# - platform: state
|
|
# entity_id: binary_sensor.livingroom_motion
|
|
# to: 'on'
|
|
# for:
|
|
# seconds: 30
|
|
# - platform: state
|
|
# entity_id: binary_sensor.kitchen_motion
|
|
# to: 'on'
|
|
# for:
|
|
# seconds: 30
|
|
# action:
|
|
# - service: mqtt.publish
|
|
# data_template:
|
|
# payload: '{"state": "open"}'
|
|
# topic: >-
|
|
# {% set mapping = '{ "hallway": "985335", "livingroom": "854267", "kitchen": "699555" }' %}
|
|
# {{ 'Hassio/433/Honeywell/Honeywell_Door/Window_Sensor/' ~ mapping[trigger.entity_id.split('.')[1].split('_')[0] ~ ''] }}
|
|
|
|
|
|
#########################################################################################################
|
|
# Wrote code for @chags - to pass a list of variables from an automation to a script
|
|
#########################################################################################################
|
|
|
|
# automation:
|
|
# - alias: 'Pass list to script'
|
|
# trigger:
|
|
# - platform: state
|
|
# entity_id: switch.kitchen
|
|
# action:
|
|
# - service: script.test_script
|
|
# data:
|
|
# entities_list:
|
|
# - light.hue_color_lamp_1
|
|
# - light.hue_color_lamp_2
|
|
# - light.hue_color_lamp_3
|
|
# script:
|
|
# test_script:
|
|
# sequence:
|
|
# - service_template: light.turn_on
|
|
# data_template:
|
|
# entity_id: >
|
|
# {% for e in entities_list %}
|
|
# {%- if loop.first %}{% elif loop.last %}, {% else %}, {% endif -%}
|
|
# {{ e }}
|
|
# {%- endfor %}
|
|
|
|
#########################################################################################################
|
|
# Wrote code for @IxsharpxI#4883 - he wanted to call REST api and extract various values for APCUPS!
|
|
#########################################################################################################
|
|
|
|
# https://raw.githubusercontent.com/awesome-automations/home/master/apcups.html
|
|
|
|
# sensor:
|
|
# - platform: rest
|
|
# resource: https://raw.githubusercontent.com/awesome-automations/home/master/apcups.html
|
|
# name: BATTERY_MODEL
|
|
# scan_interval: 60
|
|
# value_template: >
|
|
# {%- macro GetValue(str) -%}
|
|
# {%- if str in value -%}
|
|
# {%- set index = value.split(str)[0]|length -%}
|
|
# {{ value[index+str|length:value|length].split('\n')[0] }}
|
|
# {%- endif -%}
|
|
# {%- endmacro %}
|
|
# {{ GetValue('MODEL : ') }}
|
|
|
|
|
|
#########################################################################################################
|
|
# Wrote this code for someone, where they wanted to have an input_boolean that controls effects
|
|
#########################################################################################################
|
|
|
|
# input_boolean:
|
|
# color_loop:
|
|
# initial: off
|
|
|
|
# automation:
|
|
# - alias: Colorloop Automation
|
|
# trigger:
|
|
# - platform: state
|
|
# entity_id: input_boolean.color_loop
|
|
# action:
|
|
# - service_template: script.color_loop_ "{{- trigger.to_state.state -}}"
|
|
|
|
# script:
|
|
# color_loop_on:
|
|
# sequence:
|
|
# - service: light.turn_on
|
|
# data:
|
|
# entity_id: light.xxx
|
|
# effect: colorloop
|
|
|
|
# color_loop_off:
|
|
# sequence:
|
|
# - service: light.turn_off
|
|
# entity_id: light.xxx
|
|
|
|
#########################################################################################################
|
|
# @xxKira wanted to call a service in a loop by passing an alphabet each time from a string,
|
|
# so that the service inserts that alphabet using remote on TV
|
|
#########################################################################################################
|
|
|
|
# homeassistant:
|
|
|
|
# input_number:
|
|
# text_index:
|
|
# name: "Text Index"
|
|
# initial: 0
|
|
# min: 0
|
|
# max: 255
|
|
|
|
# script:
|
|
# input_text:
|
|
# alias: Text to Enter on Remote
|
|
# sequence:
|
|
# - service_template: script.text_loop
|
|
# data_template:
|
|
# text: "Netflix"
|
|
|
|
# text_loop:
|
|
# alias: Loops Text
|
|
# sequence:
|
|
# - condition: template
|
|
# value_template: "{{ 'true' if (states.input_number.text_index.state |int < text|length | int) else 'false' }}"
|
|
# - service_template: script.key_input
|
|
# data_template:
|
|
# command: >-
|
|
# {%- set index = states.input_number.text_index.state | int -%}
|
|
# {{ text[index:index+1] }}
|
|
# text: "{{ text }}"
|
|
|
|
# key_input:
|
|
# alias: Send Key Input
|
|
# sequence:
|
|
# - service: media_player.firetv_adb_shell
|
|
# data_template:
|
|
# entity_id: media_player.televisione_camera
|
|
# cmd: "input keyevent {{ command | upper }}"
|
|
# - delay: '00:00:01'
|
|
# - service: input_number.set_value
|
|
# data_template:
|
|
# entity_id: input_number.text_index
|
|
# value: "{{ (states.input_number.text_index.state | int + 1) }}"
|
|
# - service: script.text_loop
|
|
# data_template:
|
|
# text: "{{ text }}"
|
|
|
|
#########################################################################################################
|
|
# Wrote this for @quadflight - automation alerts when any of the sensor's battery is less than 25
|
|
# it announces in the house!
|
|
#########################################################################################################
|
|
# automation:
|
|
# - alias: Alert Low Battery
|
|
# trigger:
|
|
# - platform: template
|
|
# value_template: >
|
|
# {% set ns = namespace(lowBattery=false) %}
|
|
# {%- for x in states if x.attributes and x.attributes.battery_level and x.attributes.battery_level |int <= 24 %}
|
|
# {% set ns.lowBattery = true %}{% endfor %}
|
|
# {{ ns.lowBattery }}
|
|
# action:
|
|
# - service: script.voice_notify
|
|
# data_template:
|
|
# message: >
|
|
# {% set ns = namespace(lowBattery) %}
|
|
# {%- for x in states if x.attributes and x.attributes.battery_level and x.attributes.battery_level |int <= 24 %}
|
|
# {% set ns.lowBattery = ns.lowBattery ~ ',' ~ x.name %}
|
|
# {%- endfor %}
|
|
# {{ ns.lowBattery -}}
|
|
# {{- ' battery is ' if ns.lowBattery.split(',')|count == 1 else ' batteries are ' -}} less than 25 percent.
|
|
|
|
|
|
##############################################################################################################################
|
|
# Wrote this for @marmar63#0271 - he wanted to run a script `x` number of times
|
|
# - reduce volume, restore volume level...etc
|
|
#
|
|
##############################################################################################################################
|
|
input_number:
|
|
loop_index:
|
|
initial: 0
|
|
min: 0
|
|
step: 1
|
|
max: 9999
|
|
|
|
script:
|
|
run_x_times:
|
|
alias: Run X Times
|
|
sequence:
|
|
- service: input_number.set_value
|
|
data_template:
|
|
entity_id: input_number.loop_index
|
|
value: 0
|
|
- service_template: script.loop_one
|
|
data_template:
|
|
count: "{{ count }}"
|
|
|
|
loop_one:
|
|
alias: Loops X times
|
|
sequence:
|
|
- condition: template
|
|
value_template: "{{ 'true' if (states.input_number.loop_index.state |int < count | int) else 'false' }}"
|
|
- service: mqtt.publish
|
|
data_template:
|
|
topic: "/loop/test"
|
|
payload: "{{ states.input_number.loop_index.state | int }}"
|
|
retain: false
|
|
- delay: '00:00:00'
|
|
- service: script.loop_two
|
|
data_template:
|
|
count: "{{ count |int}}"
|
|
|
|
loop_two:
|
|
alias: A loop that calls first loop
|
|
sequence:
|
|
- delay: '00:00:00'
|
|
- service: input_number.set_value
|
|
data_template:
|
|
entity_id: input_number.loop_index
|
|
value: "{{ (states.input_number.loop_index.state | int + 1) |int }}"
|
|
- service: script.loop_one
|
|
data_template:
|
|
count: "{{ count|int }}" |