AutomationDataset/danVnest/danVnest_automations.yaml

127 lines
5.8 KiB
YAML

- alias: Turn TV on if not already on
id: turn_tv_on_if_not_already_on
description: Required to turn the TV on from Home Assistant - sends a wake on lan
magic packet
triggers:
- trigger: webostv.turn_on
entity_id: media_player.tv
actions:
- action: wake_on_lan.send_magic_packet
data:
mac: secret tv_mac
- alias: Renew LG TV developer mode session weekly
id: renew_lgtv_developer_mode_session_weekly
description: Required to use TV app launcher and media state reporter
actions:
- action: rest_command.renew_lgtv_developer_mode_session
triggers:
- trigger: time
at: 01:01:01
conditions:
- condition: time
weekday:
- sun
mode: single
- alias: Reset security monitoring start time
id: reset_security_monitoring_start_time
triggers:
trigger: state
entity_id: sensor.security_monitoring
condition:
condition: template
value_template: '{{ trigger.from_state.state == ''off'' }}'
actions:
- action: input_datetime.set_datetime
target:
entity_id: input_datetime.security_monitoring_start_time
data:
datetime: '{{ now() }}'
- alias: Update device issue and battery groups
id: update_device_issue_and_battery_groups
description: Update device issue and battery groups
mode: single
max_exceeded: silent
triggers:
- trigger: event
event_type: call_service
event_data:
domain: group
service: reload
- trigger: time_pattern
minutes: /5
actions:
- action: group.set
data:
object_id: unavailable_entities
entities: "{% set allowed_entities = [\n 'sensor.power_meter_relative_self_consumption',\n\
] + integration_entities('iBeacon Tracker') + integration_entities('netgear')|select('search',\
\ '_ssid$')|list %} {% set unknown_allowed_entities =\n [\n states.sensor.extreme_forecast,\n\
\ ]\n |selectattr('state', 'eq', 'unknown')\n |map(attribute='entity_id')|list\n\
%} {% set long_delay_hours = 3 %} {% set long_unknown_allowed_entities =\n\
\ [\n states.sensor.rachel_s_phone_detected_activity,\n states.binary_sensor.rachel_s_phone_still,\n\
\ ]\n |selectattr('state', 'eq', 'unknown')\n |selectattr('last_changed',\
\ 'ge', (now().timestamp() - long_delay_hours*60*60)|as_datetime)\n |map(attribute='entity_id')|list\n\
%} {% set disabled_entities = state_attr('sensor.disabled_device_entities',\
\ 'entities')\n |regex_replace(find='\\[|\\]|\\{|\\}|\\'entity_id\\':',\
\ replace='')\n |map(attribute='entity_id')|list\n%} {% set delay_minutes\
\ = 5 %} {{ states\n |rejectattr('entity_id', 'in', allowed_entities +\
\ unknown_allowed_entities + long_unknown_allowed_entities + disabled_entities)\n\
\ |rejectattr('entity_id', 'has_value')\n |rejectattr('domain', 'in',\
\ ['button', 'event', 'group', 'image', 'select'])\n |rejectattr('last_changed',\
\ 'ge', (now().timestamp() - delay_minutes * 60)|as_datetime)\n |map(attribute='entity_id')|list\n\
}}\n"
- action: group.set
data:
object_id: frozen_entities
entities: "{% set frozen_entities_10_minute_check_entities =\n [\n states.sensor.outside_apparent_temperature,\n\
\ states.sensor.bedroom_presence_sensor_esp_temperature,\n states.sensor.kitchen_presence_sensor_esp_temperature,\n\
\ states.sensor.nursery_presence_sensor_esp_temperature,\n states.sensor.office_presence_sensor_esp_temperature,\n\
\ states.sensor.smart_meter_real_power,\n states.sensor.power_meter_power_load_consumed,\n\
\ ]\n |selectattr('entity_id', 'has_value')\n |selectattr('last_updated',\
\ 'le', (now().timestamp() - 10 * 60)|as_datetime)\n |map(attribute='entity_id')|list\n\
%} {% set frozen_entities_12_hour_check_entities =\n (\n states.sensor|selectattr('entity_id',\
\ 'search', 'r_temperature$|feels_like|voltage$|last_seen')|list +\n \
\ [\n states.sensor.nursery_heater_uncalibrated_temperature,\n \
\ ]\n )\n |selectattr('entity_id', 'has_value')\n |selectattr('last_updated',\
\ 'le', (now().timestamp() - 12 * 60 * 60)|as_datetime)\n |map(attribute='entity_id')|list\n\
%} {{ frozen_entities_10_minute_check_entities + frozen_entities_12_hour_check_entities\
\ }}\n"
- action: group.set
data:
object_id: low_batteries
entities: '{% set low_battery_threshold = 25 %} {% set entities = states.sensor|selectattr(''entity_id'',
''search'', ''battery_level$'')|map(attribute=''entity_id'')|list|sort %}
{% set battery_levels = entities|map(''states'')|map(''float'', 0)|list %}
{{ zip(entities, battery_levels)|selectattr(1, ''<='', low_battery_threshold)|map(attribute=0)|list
}}
'
- action: group.set
data:
object_id: charging_batteries
entities: '{% set entities = states.sensor|selectattr(''entity_id'', ''search'',
''charging_status$|battery_state$'')|map(attribute=''entity_id'')|list|sort
%} {% set status = entities|map(''states'')|list %} {% set entities = zip(entities,
status)|selectattr(1, ''in'', [''charging'', ''Charging'', ''full'', ''Full''])|map(attribute=0)|list
%} {{ entities|map(''replace'', ''battery_state'', ''battery_level'')|map(''replace'',
''charging_status'', ''battery_level'')|list }}
'
- alias: Reset plants last watered
id: reset_plants_last_watered
triggers:
trigger: state
entity_id: sensor.dry_plants
to: '0'
not_from:
- '0'
- unknown
- unavaiable
- none
actions:
- action: input_datetime.set_datetime
target:
entity_id: input_datetime.plants_last_watered
data:
datetime: '{{ now() }}'