alias: "Battery Alert" id: automation_battery_alert initial_state: off trigger: - platform: time at: "10:00:00" - platform: time at: "18:00:00" condition: condition: or conditions: - condition: template value_template: >- {%- set threshold = 40 -%} {%- for item in states.light if (item.attributes.battery_level is defined and item.attributes['battery_level'] | int < threshold) or ("battery" in item.name | lower and ((item.state | int < threshold and item.state|int != 0) or item.state | lower == "low" or item.state | lower == "unknown")) -%} {%- if loop.first -%} {{ true }} {%- endif -%} {%- endfor -%} - condition: template value_template: >- {%- set threshold = 40 -%} {%- for item in states.switch if (item.attributes.battery_level is defined and item.attributes['battery_level'] | int < threshold) or ("battery" in item.name | lower and ((item.state | int < threshold and item.state|int != 0) or item.state | lower == "low" or item.state | lower == "unknown")) -%} {%- if loop.first -%} {{ true }} {%- endif -%} {%- endfor -%} - condition: template value_template: >- {%- set threshold = 40 -%} {%- for item in states.sensor if (item.attributes.battery_level is defined and item.attributes['battery_level'] | int < threshold) or ("battery" in item.name | lower and ((item.state | int < threshold and item.state|int != 0) or item.state | lower == "low" or item.state | lower == "unknown")) -%} {%- if loop.first -%} {{ true }} {%- endif -%} {%- endfor -%} - condition: template value_template: >- {%- set threshold = 40 -%} {%- for item in states.zwave if (item.attributes.battery_level is defined and item.attributes['battery_level'] | int < threshold) or ("battery" in item.name | lower and ((item.state | int < threshold and item.state|int != 0) or item.state | lower == "low" or item.state | lower == "unknown")) -%} {%- if loop.first -%} {{ true }} {%- endif -%} {%- endfor -%} - condition: template value_template: >- {%- set threshold = 40 -%} {%- for item in states.lock if (item.attributes.battery_level is defined and item.attributes['battery_level'] | int < threshold) or ("battery" in item.name | lower and ((item.state | int < threshold and item.state|int != 0) or item.state | lower == "low" or item.state | lower == "unknown")) -%} {%- if loop.first -%} {{ true }} {%- endif -%} {%- endfor -%} action: - service: notify.mobile_app_pixel_7 data: message: >- {% set threshold = 1 %} {%- for item in states.light if (item.attributes.battery_level is defined and item.attributes['battery_level'] | int / 5 < threshold) or ("battery" in item.name | lower and ((item.state | int < threshold and item.state|int != 0) or item.state | lower == "low" or item.state | lower == "unknown")) -%} {%- if loop.first -%} {% for lobat in states.light if (lobat.attributes.battery_level is defined and lobat.attributes['battery_level'] | int / 5 < threshold) or ("battery" in lobat.name | lower and ((item.state | int < threshold and lobat.state|int != 0) or lobat.state | lower == "low" or lobat.state | lower == "unknown")) %} {%- if loop.first %}Lights:{% endif %} {{ lobat.name }} {{ lobat.state }}% {%- endfor -%} {% endif %} {%- endfor %} {% set threshold = 1 %} {%- for item in states.switch if (item.attributes.battery_level is defined and item.attributes['battery_level'] | int / 5 < threshold) or ("battery" in item.name | lower and ((item.state | int < threshold and item.state|int != 0) or item.state | lower == "low" or item.state | lower == "unknown")) -%} {%- if loop.first -%} {% for lobat in states.switch if (lobat.attributes.battery_level is defined and lobat.attributes['battery_level'] | int / 5 < threshold) or ("battery" in lobat.name | lower and ((item.state | int < threshold and lobat.state|int != 0) or lobat.state | lower == "low" or lobat.state | lower == "unknown")) %} {%- if loop.first %}Switches:{% endif %} {{ lobat.name }} {{ lobat.state }}% {%- endfor -%} {% endif %} {%- endfor %} {% set threshold = 1 %} {%- for item in states.sensor if (item.attributes.battery_level is defined and item.attributes['battery_level'] | int / 5 < threshold) or ("battery" in item.name | lower and ((item.state | int < threshold and item.state|int != 0) or item.state | lower == "low" or item.state | lower == "unknown")) -%} {%- if loop.first -%} {% for lobat in states.sensor if (lobat.attributes.battery_level is defined and lobat.attributes['battery_level'] | int / 5 < threshold) or ("battery" in lobat.name | lower and ((item.state | int < threshold and lobat.state|int != 0) or lobat.state | lower == "low" or lobat.state | lower == "unknown")) %} {%- if loop.first %}Sensors:{% endif %} {{ lobat.name }} {{ lobat.state }}% {%- endfor -%} {% endif %} {%- endfor %} {% set threshold = 1 %} {%- for item in states.zwave if (item.attributes.battery_level is defined and item.attributes['battery_level'] | int / 5 < threshold) or ("battery" in item.name | lower and ((item.state | int < threshold and item.state|int != 0) or item.state | lower == "low" or item.state | lower == "unknown")) -%} {%- if loop.first -%} {% for lobat in states.zwave if (lobat.attributes.battery_level is defined and lobat.attributes['battery_level'] | int / 5 < threshold) or ("battery" in lobat.name | lower and ((item.state | int < threshold and lobat.state|int != 0) or lobat.state | lower == "low" or lobat.state | lower == "unknown")) %} {%- if loop.first %}Zwaves:{% endif %} {{ lobat.name }} {{ lobat.state }}% {%- endfor -%} {% endif %} {%- endfor %} {% set threshold = 1 %} {%- for item in states.lock if (item.attributes.battery_level is defined and item.attributes['battery_level'] | int / 5 < threshold) or ("battery" in item.name | lower and ((item.state | int < threshold and item.state|int != 0) or item.state | lower == "low" or item.state | lower == "unknown")) -%} {%- if loop.first -%} {% for lobat in states.lock if (lobat.attributes.battery_level is defined and lobat.attributes['battery_level'] | int / 5 < threshold) or ("battery" in lobat.name | lower and ((item.state | int < threshold and lobat.state|int != 0) or lobat.state | lower == "low" or lobat.state | lower == "unknown")) %} {%- if loop.first %}Locks:{% endif %} {{ lobat.name }} {{ lobat.state }}% {%- endfor -%} {% endif %} {%- endfor %}