mysmarthome/packages/batteries.yaml

508 lines
18 KiB
YAML

###############################################################################
# @author : Mahasri Kalavala
# @date : 04/15/2017
# @package : Batteries
# @description : Status about various baterries (iphones, sensors...etc)
###############################################################################
homeassistant:
customize:
group.batteries:
order: 2
sensor.suresh_iphone_battery_state:
hidden: true
sensor.mallika_iphone_battery_state:
hidden: true
sensor.srinika_iphone_battery_state:
hidden: true
sensor.hasika_iphone_battery_state:
hidden: true
sensor.suresh_iphone_battery_ot:
hidden: true
sensor.mallika_iphone_battery_ot:
hidden: true
sensor.srinika_iphone_battery_ot:
hidden: true
sensor.hasika_iphone_battery_ot:
hidden: true
sensor.hasika_iphone_wifi_state:
friendly_name: Hasika Phone Wi-Fi Status
sensor.mallika_iphone_wifi_state:
friendly_name: Mallika Phone Wi-Fi Status
sensor.srinika_iphone_wifi_state:
friendly_name: Srinika Phone Wi-Fi Status
sensor.suresh_iphone_wifi_state:
friendly_name: Suresh Phone Wi-Fi Status
sensor:
- platform: mqtt
state_topic: "owntracks/mallika/mallika"
name: "Mallika iPhone Battery (OT)"
unit_of_measurement: "%"
value_template: "{{ value_json.batt }}"
- platform: mqtt
state_topic: "owntracks/suresh/suresh"
name: "Suresh iPhone Battery (OT)"
unit_of_measurement: "%"
value_template: "{{ value_json.batt }}"
- platform: mqtt
state_topic: "owntracks/srinika/srinika"
name: "Srinika iPhone Battery (OT)"
unit_of_measurement: "%"
value_template: "{{ value_json.batt }}"
- platform: mqtt
state_topic: "owntracks/hasika/hasika"
name: "Hasika iPhone Battery (OT)"
unit_of_measurement: "%"
value_template: "{{ value_json.batt }}"
- platform: mqtt
state_topic: "owntracks/mallika/mallika"
name: "Mallika iPhone Battery State"
value_template: >
{% if value_json.charging == 1 %}
Charging
{% else %}
Not Charging
{% endif %}
icon: "mdi:battery-charging"
- platform: mqtt
state_topic: "owntracks/suresh/suresh"
name: "Suresh iPhone Battery State"
value_template: >
{% if value_json.charging == 1 %}
Charging
{% else %}
Not Charging
{% endif %}
icon: "mdi:battery-charging"
- platform: mqtt
state_topic: "owntracks/srinika/srinika"
name: "Srinika iPhone Battery State"
value_template: >
{% if value_json.charging == 1 %}
Charging
{% else %}
Not Charging
{% endif %}
icon: "mdi:battery-charging"
- platform: mqtt
state_topic: "owntracks/hasika/hasika"
name: "Hasika iPhone Battery State"
value_template: >
{% if value_json.charging == 1 %}
Charging
{% else %}
Not Charging
{% endif %}
icon: "mdi:battery-charging"
- platform: mqtt
state_topic: "owntracks/mallika/mallika"
name: "Mallika iPhone Wifi State"
value_template: >
{% if value_json.conn == "w" %}
Connected
{% else %}
Not Connected
{% endif %}
icon: "mdi:wifi"
- platform: mqtt
state_topic: "owntracks/suresh/suresh"
name: "Suresh iPhone Wifi State"
value_template: >
{% if value_json.conn == "w" %}
Connected
{% else %}
Not Connected
{% endif %}
icon: "mdi:wifi"
- platform: mqtt
state_topic: "owntracks/srinika/srinika"
name: "Srinika iPhone Wifi State"
value_template: >
{% if value_json.conn == "w" %}
Connected
{% else %}
Not Connected
{% endif %}
icon: "mdi:wifi"
- platform: mqtt
state_topic: "owntracks/hasika/hasika"
name: "Hasika iPhone Wifi State"
value_template: >
{% if value_json.conn == "w" %}
Connected
{% else %}
Not Connected
{% endif %}
icon: "mdi:wifi"
- platform: mqtt
state_topic: "owntracks/mallika/mallika"
name: "Mallika Driving Speed"
value_template: "{{ value_json.vel |int|round}}"
unit_of_measurement: miles
- platform: mqtt
state_topic: "owntracks/suresh/suresh"
name: "Suresh Driving Speed"
value_template: "{{ value_json.vel |int|round}}"
unit_of_measurement: miles
- platform: mqtt
state_topic: "owntracks/srinika/srinika"
name: "Srinika Driving Speed"
value_template: "{{ value_json.vel |int|round}}"
unit_of_measurement: miles
- platform: mqtt
state_topic: "owntracks/hasika/hasika"
name: "Hasika Driving Speed"
value_template: "{{ value_json.vel |int|round}}"
unit_of_measurement: miles
- platform: template
sensors:
suresh_iphone_battery_ot:
unit_of_measurement: "%"
value_template: >
{% if states('sensor.suresh_iphone_battery_ot') != "unknown" %}
{{ states('sensor.suresh_iphone_battery_ot')| int }}
{% else %}
0
{% endif %}
icon_template: >-
{% if states('sensor.suresh_iphone_battery_ot') != "unknown" %}
{% set battery_level = states('sensor.suresh_iphone_battery_ot')|int (-1)%}
{% set battery_round = (battery_level|int / 10)|int * 10 %}
{% if states('sensor.suresh_iphone_battery_state') | lower == "charging" %}
{% if battery_level == -1 %}
mdi:battery-unknown
{% else %}
{% if battery_round >= 100 %}
mdi:battery-charging-100
{% elif battery_round > 0 %}
mdi:battery-charging-{{ battery_round }}
{% else %}
mdi:battery-alert
{% endif %}
{% endif %}
{% else %}
{% if battery_level == -1 %}
mdi:battery-unknown
{% else %}
{% if battery_round >= 100 %}
mdi:battery
{% elif battery_round > 0 %}
mdi:battery-{{ battery_round }}
{% else %}
mdi:battery-alert
{% endif %}
{% endif %}
{% endif %}
{% else %}
mdi:battery-alert
{% endif %}
- platform: template
sensors:
mallika_iphone_battery_ot:
unit_of_measurement: "%"
value_template: "{{ states('sensor.mallika_iphone_battery_ot')|int(-1) }}"
icon_template: >-
{% if states('sensor.mallika_iphone_battery_ot') != "unknown" %}
{% set battery_level = states('sensor.mallika_iphone_battery_ot')|int (-1)%}
{% set battery_round = (battery_level|int / 10)|int * 10 %}
{% if states('sensor.mallika_iphone_battery_state') | lower == "charging" %}
{% if battery_level == -1 %}
mdi:battery-unknown
{% else %}
{% if battery_round >= 100 %}
mdi:battery-charging-100
{% elif battery_round > 0 %}
mdi:battery-charging-{{ battery_round }}
{% else %}
mdi:battery-alert
{% endif %}
{% endif %}
{% else %}
{% if battery_level == -1 %}
mdi:battery-unknown
{% else %}
{% if battery_round >= 100 %}
mdi:battery
{% elif battery_round > 0 %}
mdi:battery-{{ battery_round }}
{% else %}
mdi:battery-alert
{% endif %}
{% endif %}
{% endif %}
{% else %}
mdi:battery-alert
{% endif %}
- platform: template
sensors:
srinika_iphone_battery_ot:
unit_of_measurement: "%"
value_template: "{{ states('sensor.srinika_iphone_battery_ot')|int(-1) }}"
icon_template: >-
{% if states('sensor.srinika_iphone_battery_ot') != "unknown" %}
{% set battery_level = states('sensor.srinika_iphone_battery_ot')|int (-1)%}
{% set battery_round = (battery_level|int / 10)|int * 10 %}
{% if states('sensor.srinika_iphone_battery_state') | lower == "charging" %}
{% if battery_level == -1 %}
mdi:battery-unknown
{% else %}
{% if battery_round >= 100 %}
mdi:battery-charging-100
{% elif battery_round > 0 %}
mdi:battery-charging-{{ battery_round }}
{% else %}
mdi:battery-alert
{% endif %}
{% endif %}
{% else %}
{% if battery_level == -1 %}
mdi:battery-unknown
{% else %}
{% if battery_round >= 100 %}
mdi:battery
{% elif battery_round > 0 %}
mdi:battery-{{ battery_round }}
{% else %}
mdi:battery-alert
{% endif %}
{% endif %}
{% endif %}
{% else %}
mdi:battery-alert
{% endif %}
- platform: template
sensors:
hasika_iphone_battery_ot:
unit_of_measurement: "%"
value_template: "{{ states('sensor.hasika_iphone_battery_ot')|int(-1) }}"
icon_template: >-
{% if states('sensor.hasika_iphone_battery_ot') != "unknown" %}
{% set battery_level = states('sensor.hasika_iphone_battery_ot')|int (-1)%}
{% set battery_round = (battery_level|int / 10)|int * 10 %}
{% if states('sensor.hasika_iphone_battery_state') | lower == "charging" %}
{% if battery_level == -1 %}
mdi:battery-unknown
{% else %}
{% if battery_round >= 100 %}
mdi:battery-charging-100
{% elif battery_round > 0 %}
mdi:battery-charging-{{ battery_round }}
{% else %}
mdi:battery-alert
{% endif %}
{% endif %}
{% else %}
{% if battery_level == -1 %}
mdi:battery-unknown
{% else %}
{% if battery_round >= 100 %}
mdi:battery
{% elif battery_round > 0 %}
mdi:battery-{{ battery_round }}
{% else %}
mdi:battery-alert
{% endif %}
{% endif %}
{% endif %}
{% else %}
mdi:battery-alert
{% endif %}
###############################################################################
# _ _ _
# /\ | | | | (_)
# / \ _ _| |_ ___ _ __ ___ __ _| |_ _ ___ _ __ ___
# / /\ \| | | | __/ _ \| '_ ` _ \ / _` | __| |/ _ \| '_ \/ __|
# / ____ \ |_| | || (_) | | | | | | (_| | |_| | (_) | | | \__ \
# /_/ \_\__,_|\__\___/|_| |_| |_|\__,_|\__|_|\___/|_| |_|___/
#
###############################################################################
automation:
#
# This automation alerts family members when they are "moving" - meaning either in driving from work,
# kids got on the school bus, and bus is moving...etc
# This will only announces/ alert when someone is at home.
#
- alias: Alert When Moving
trigger:
platform: numeric_state
entity_id:
- sensor.suresh_driving_speed
- sensor.mallika_driving_speed
- sensor.srinika_driving_speed
- sensor.hasika_driving_speed
above: 8
condition:
- condition: template
value_template: >
{%- if state_attr('automation.alert_when_moving', 'last_triggered') -%}
{{ (as_timestamp(now()) - as_timestamp(state_attr('automation.alert_when_moving', 'last_triggered'))) > 300 }}
{%- else -%}
true
{%- endif -%}
- condition: template
value_template: "{{ states('input_boolean.home_mode_away') == 'off' }}"
- condition: template
value_template: "{{ states('alarm_control_panel.home') | lower != 'armed_away' }}"
action:
- service: script.voice_notify
data_template:
message: >-
{% set apostrophe = "\'" %}
{{ trigger.entity_id.split('.')[1].split('_')[0] |title ~ apostrophe ~ 's' }} vehicle is in motion.
- service: script.notify_me
data_template:
message: >-
{% set apostrophe = "\'" %}
{{ trigger.entity_id.split('.')[1].split('_')[0] |title ~ apostrophe ~ 's' }} vehicle is going at {{ trigger.to_state.state |round *2 }} mph.
###############################################################################
# Automation: Notify of iPhone Low Battery
###############################################################################
- alias: Notify Low battery
initial_state: true
trigger:
platform: numeric_state
entity_id:
- device_tracker.life360_suresh
- device_tracker.life360_mallika
- device_tracker.life360_srinika
- device_tracker.life360_hasika
value_template: "{{ state.attributes.battery }}"
below: 25
condition:
- condition: template
value_template: "{{ states('input_boolean.battery_notifications') == 'on' }}"
action:
- service: script.notify_me
data_template:
message: "{{ trigger.to_state.attributes.friendly_name.split(' ')[1] | title }}'s phone battery is : {{ trigger.to_state.attributes.battery }}%."
- service: script.voice_notify
data_template:
message: "{{ trigger.to_state.attributes.friendly_name.split(' ')[1] }}'s phone battery is : {{ trigger.to_state.attributes.battery }}%."
- 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 }}
condition:
- condition: template
value_template: "{{ ((trigger.to_state.state | int) < states('sensor.battery_alert_threshold') | int) }}"
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.
# ###############################################################################
# # Automation: Notify of Sensor's Low Battery
# ###############################################################################
# - alias: Alert Low Battery Level of Sensors
# initial_state: true
# trigger:
# platform: state
# entity_id:
# - binary_sensor.motion_sensor_158d00016c2d0e
# - binary_sensor.motion_sensor_158d00016db6d2
# - binary_sensor.motion_sensor_158d0001a25041
# - binary_sensor.motion_sensor_158d0001a662fe
# - sensor.illumination_158d00016c2d0e
# - sensor.illumination_158d00016db6d2
# - sensor.illumination_158d0001a25041
# - sensor.illumination_158d0001a662fe
# - zwave.audio_detector
# - zwave.back_door_sensor
# - zwave.basement_door_sensor
# - zwave.downstairs_multi_sensor
# - zwave.front_room_multi_sensor
# - zwave.front_room_window_sensor
# - zwave.garage_door_sensor
# - zwave.guest_bedroom_multi_sensor
# - zwave.kitchen_motion_sensor
# - zwave.single_car_garage_door_tilt_sensor
# - zwave.stairs_motion_sensor
# - zwave.tv_multi_sensor
# - zwave.two_car_garage_door_tilt_sensor
# - zwave.upstairs_multi_sensor
# - zwave.wallmote
# action:
# - service: script.voice_notify
# data_template:
# message: >-
# {%- for item in states if item.entity_id.split('.')[0] != "device_tracker" -%}
# {%- for attrib in item.attributes|sort() if 'battery' in attrib and item.attributes[attrib] | int < 10 %}
# {{ item.name }} Battery is at {{ item.attributes[attrib] }} percent
# {%- endfor -%}
# {%- endfor -%}
- alias: Check Wi-Fi Status of iPhones At Home
initial_state: true
trigger:
- platform: state
entity_id:
- device_tracker.life360_mallika
- device_tracker.life360_suresh
- device_tracker.life360_srinika
- device_tracker.life360_hasika
from: "not_home"
to: "home"
for: "00:05:00"
condition:
condition: or
conditions:
- condition: state
entity_id: sensor.hasika_iphone_wifi_state
state: "Not Connected"
- condition: state
entity_id: sensor.mallika_iphone_wifi_state
state: "Not Connected"
- condition: state
entity_id: sensor.srinika_iphone_wifi_state
state: "Not Connected"
- condition: state
entity_id: sensor.suresh_iphone_wifi_state
state: "Not Connected"
action:
- service: script.notify_me
data_template:
message: >
{% set member = trigger.entity_id.split('.')[1].split('_')[0] %}
{{ member | title }}'s iPhone is not connected to Wi-Fi at home!
- service: script.voice_notify
data_template:
message: >
{% set member = trigger.entity_id.split('.')[1].split('_')[0] %}
{{ member | title }}'s iPhone is not connected to Wi-Fi at home!