# ############################################################################### # # @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 }}%." # - service: script.led_message # 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 %} # # {%- if loop.first %}The {% elif loop.last %} and the {% else %}, the {% endif -%} # # {% set ns.lowBattery = ns.lowBattery ~ ',' ~ x.name %} # # {%- endfor %} # # {{ ns.lowBattery -}} # # {{- ' battery is ' if ns.lowBattery.split(',')|count == 2 else ' batteries are ' -}} less than 25 percent. # # - service: script.led_message # # data_template: # # message: "{{ trigger.to_state.attributes.friendly_name.split(' ')[1] }}'s phone battery is : {{ trigger.to_state.attributes.battery }}%." # - 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!