127 lines
5.8 KiB
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() }}'
|