# ###############################################################################
# #   @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!
