mysmarthome/packages/zwave_batteries.yaml

216 lines
8.9 KiB
YAML

###############################################################################
# @author : Mahasri Kalavala
# @date : 04/20/2018
# @package : zwave batteries
# @description : Zwave batteries using input_label & MQTT
###############################################################################
input_label:
audio_detector:
back_door_sensor:
basement_door_sensor:
downstairs_multi_sensor:
zwave_front_door_sensor:
front_room_multi_sensor:
garage_door_sensor:
guest_bedroom_multi_sensor:
kitchen_motion_sensor:
single_car_garage_door_tilt_sensor:
stairs_motion_sensor:
tv_multi_sensor:
two_car_garage_door_tilt_sensor:
upstairs_multi_sensor:
wallmote:
suresh_battery:
mallika_battery:
srinika_battery:
hasika_battery:
suresh_charging:
mallika_charging:
srinika_charging:
hasika_charging:
suresh_wifi:
mallika_wifi:
srinika_wifi:
hasika_wifi:
###############################################################################
# _ _ _
# /\ | | | | (_)
# / \ _ _| |_ ___ _ __ ___ __ _| |_ _ ___ _ __ ___
# / /\ \| | | | __/ _ \| '_ ` _ \ / _` | __| |/ _ \| '_ \/ __|
# / ____ \ |_| | || (_) | | | | | | (_| | |_| | (_) | | | \__ \
# /_/ \_\__,_|\__\___/|_| |_| |_|\__,_|\__|_|\___/|_| |_|___/
#
###############################################################################
automation:
- alias: Update ZWave Battery Levels
initial_state: true
trigger:
- platform: event
event_type: state_changed
condition:
- condition: template
value_template: "{{ trigger.event.data.entity_id is not none }}"
- condition: template
value_template: "{{ trigger.event.data.entity_id.split('.')[0] == 'zwave' }}"
- condition: template
value_template: "{{ trigger.event.data.new_state.attributes is not none }}"
- condition: template
value_template: "{{ trigger.event.data.new_state.attributes.battery_level | trim != '' }}"
- condition: template
value_template: "{{ trigger.event.data.new_state.attributes.battery_level | default(999) | int != 999 }}"
action:
- service: input_label.set_value
data_template:
entity_id: "input_label.{{- trigger.event.data.entity_id.split('.')[1] -}}"
value: "{{ trigger.event.data.new_state.attributes.battery_level }}"
- service: input_label.set_name
data_template:
entity_id: "input_label.{{- trigger.event.data.entity_id.split('.')[1] -}}"
value: "{{ trigger.event.data.new_state.attributes.friendly_name }}'s Battery"
- service: input_label.set_icon
data_template:
entity_id: "input_label.{{- trigger.event.data.entity_id.split('.')[1] -}}"
value: >
{% set battery_level = trigger.event.data.new_state.attributes.battery_level | int %}
{% set battery_round = (battery_level / 10)|int * 10 %}
{% if battery_round >= 100 %}
mdi:battery
{% elif battery_round > 0 %}
mdi:battery-{{ battery_round }}
{% else %}
mdi:battery-alert
{% endif %}
# - alias: Update Phone Battery Levels
# initial_state: true
# trigger:
# platform: mqtt
# topic: "owntracks/+/+"
# action:
# - service: input_label.set_value
# data_template:
# entity_id: "input_label.{{trigger.topic.split('/')[-1]}}_wifi"
# value: "{{ 'Yes' if trigger.payload_json.conn == 'w' else 'No' }}"
# - service: input_label.set_icon
# data_template:
# entity_id: "input_label.{{trigger.topic.split('/')[-1]}}_wifi"
# value: "{{ 'mdi:wifi' if trigger.payload_json.conn == 'w' else 'mdi:wifi-off' }}"
# - service: input_label.set_name
# data_template:
# entity_id: "input_label.{{trigger.topic.split('/')[-1]}}_wifi"
# value: "{{trigger.topic.split('/')[-1] | title }}'s phone wifi enabled?"
# - service: input_label.set_value
# data_template:
# entity_id: "input_label.{{trigger.topic.split('/')[-1]}}_battery"
# value: "{{ trigger.payload_json.batt | int }}"
# - service: input_label.set_name
# data_template:
# entity_id: "input_label.{{trigger.topic.split('/')[-1]}}_battery"
# value: "{{trigger.topic.split('/')[-1] | title }}'s Battery"
# - service: input_label.set_icon
# data_template:
# entity_id: "input_label.{{trigger.topic.split('/')[-1]}}_battery"
# value: >
# {% set battery_level = trigger.payload_json.batt | int %}
# {% set battery_round = (battery_level / 10)|int * 10 %}
# {% if trigger.payload_json.charging == 1 %}
# {% if battery_round >= 100 %}
# mdi:battery-charging-100
# {% elif battery_round > 0 %}
# mdi:battery-charging-{{ battery_round }}
# {% else %}
# mdi:battery-alert
# {% endif %}
# {% else %}
# {% if battery_round >= 100 %}
# mdi:battery
# {% elif battery_round > 0 %}
# mdi:battery-{{ battery_round }}
# {% else %}
# mdi:battery-alert
# {% endif %}
# {% endif %}
- alias: Update Phone Battery Levels From Life360
initial_state: true
trigger:
- platform: event
event_type: state_changed
condition:
- condition: template
value_template: "{{ trigger.event.data.entity_id is not none }}"
- condition: template
value_template: "{{ 'life360_' in trigger.event.data.entity_id }}"
- condition: template
value_template: "{{ trigger.event.data.new_state.attributes is not none }}"
action:
- service: input_label.set_name
data_template:
entity_id: "input_label.{{- trigger.event.data.entity_id.split('.')[1].split('_')[1] -}}_battery"
value: "{{- trigger.event.data.entity_id.split('.')[1].split('_')[1] |title -}}'s Battery"
- service: input_label.set_value
data_template:
entity_id: "input_label.{{- trigger.event.data.entity_id.split('.')[1].split('_')[1] -}}_battery"
value: "{{ trigger.event.data.new_state.attributes.battery }}"
- service: input_label.set_icon
data_template:
entity_id: "input_label.{{- trigger.event.data.entity_id.split('.')[1].split('_')[1] -}}_battery"
value: >
{% set battery_level = trigger.event.data.new_state.attributes.battery | int %}
{% set battery_round = (battery_level / 10)|int * 10 %}
{% if trigger.event.data.new_state.attributes.battery_charging == "true" %}
{% if battery_round >= 100 %}
mdi:battery-charging-100
{% elif battery_round > 0 %}
mdi:battery-charging-{{ battery_round }}
{% else %}
mdi:battery-alert
{% endif %}
{% else %}
{% if battery_round >= 100 %}
mdi:battery
{% elif battery_round > 0 %}
mdi:battery-{{ battery_round }}
{% else %}
mdi:battery-alert
{% endif %}
{% endif %}
- service: input_label.set_value
data_template:
entity_id: "input_label.{{- trigger.event.data.entity_id.split('.')[1].split('_')[1] -}}_wifi"
value: "{{ 'WiFi' if trigger.event.data.new_state.attributes.wifi_on |string |lower == 'true' else 'LTE' }}"
- service: input_label.set_value
data_template:
entity_id: "input_label.{{- trigger.event.data.entity_id.split('.')[1].split('_')[1] -}}_charging"
value: "{{ 'Charging' if trigger.event.data.new_state.attributes.battery_charging |string |lower == 'true' else 'Not Charging' }}"
- service: input_label.set_icon
data_template:
entity_id: "input_label.{{- trigger.event.data.entity_id.split('.')[1].split('_')[1] -}}_charging"
value: >
{% set battery_level = trigger.event.data.new_state.attributes.battery | int %}
{% set battery_round = (battery_level / 10)|int * 10 %}
{% if trigger.event.data.new_state.attributes.battery_charging == "true" %}
{% if battery_round >= 100 %}
mdi:battery-charging-100
{% elif battery_round > 0 %}
mdi:battery-charging-{{ battery_round }}
{% else %}
mdi:battery-alert
{% endif %}
{% else %}
{% if battery_round >= 100 %}
mdi:battery
{% elif battery_round > 0 %}
mdi:battery-{{ battery_round }}
{% else %}
mdi:battery-alert
{% endif %}
{% endif %}