Forked from sbyx/low-battery-level-detection-notification-for-all-battery-sensors.yaml
Last active
September 21, 2024 11:15
-
-
Save Firerouge/3a4121a113246119629d29d5c9b3c48e to your computer and use it in GitHub Desktop.
Home Assistant Blueprint: Low toner level detection & notification for all IPP printers
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
blueprint: | |
name: Low toner level detection & notification for all IPP printers | |
description: Regularly test all sensors with 'toner' marker_type for crossing | |
a certain toner level threshold and if so execute an action. | |
domain: automation | |
input: | |
threshold: | |
name: Toner warning level threshold | |
description: Toner sensors below threshold are assumed to be low-toner. | |
default: 20 | |
selector: | |
number: | |
min: 5.0 | |
max: 100.0 | |
unit_of_measurement: '%' | |
mode: slider | |
step: 5.0 | |
time: | |
name: Time to test on | |
description: Test is run at configured time | |
default: '10:00:00' | |
selector: | |
time: {} | |
day: | |
name: Weekday to test on | |
description: 'Test is run at configured time either everyday (0) or on a given | |
weekday (1: Monday ... 7: Sunday)' | |
default: 0 | |
selector: | |
number: | |
min: 0.0 | |
max: 7.0 | |
mode: slider | |
step: 1.0 | |
actions: | |
name: Actions | |
description: Notifications or similar to be run. {{sensors}} is replaced with | |
the names of sensors being low on toner. | |
selector: | |
action: {} | |
source_url: https://gist.github.com/Firerouge/3a4121a113246119629d29d5c9b3c48e | |
variables: | |
day: !input 'day' | |
threshold: !input 'threshold' | |
sensors: >- | |
{% set result = namespace(sensors=[]) %} | |
{% for state in states.sensor | selectattr('attributes.marker_type', '==', 'toner') %} | |
{% if 0 <= state.state | int(-1) < threshold %} | |
{% set result.sensors = result.sensors + [state.name ~ ' (' ~ state.state ~ ' %)'] %} | |
{% endif %} | |
{% endfor %} | |
{{result.sensors|join(', ')}} | |
trigger: | |
- platform: time | |
at: !input 'time' | |
condition: | |
- '{{ sensors != '''' and (day | int == 0 or day | int == now().isoweekday()) }}' | |
action: | |
- choose: [] | |
default: !input 'actions' | |
mode: single |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I suggest to change in line 47 the statement
selectattr('attributes.marker_type', '==', 'toner')
toselectattr('attributes.marker_type', 'search', '(toner|inkCartridge|ink-cartridge)')
to also work with inkjet printers.