type: grid square: false columns: 1 cards: - type: markdown content: > {% set trackers = [ { "counter": states("counter.days_since_fridge_water_filter") | int, "threshold": state_attr("binary_sensor.threshold_for_days_since_fridge_water_filter", "upper"), "percent": (int(states("counter.days_since_fridge_water_filter")) / state_attr("binary_sensor.threshold_for_days_since_fridge_water_filter", "upper")), "name": "Fridge Water Filter Replaced" }, { "counter": states("counter.days_since_litter_boxes_cleaned") | int, "threshold": state_attr("binary_sensor.threshold_for_days_since_litter_boxes_cleaned", "upper"), "percent": (int(states("counter.days_since_litter_boxes_cleaned")) / state_attr("binary_sensor.threshold_for_days_since_litter_boxes_cleaned", "upper")), "name": "Litter Boxes Cleaned" }, { "counter": states("counter.days_since_cat_water_fountain_cleaned") | int, "threshold": state_attr("binary_sensor.threshold_for_days_since_cat_water_fountain_cleaned", "upper"), "percent": (int(states("counter.days_since_cat_water_fountain_cleaned")) / state_attr("binary_sensor.threshold_for_days_since_cat_water_fountain_cleaned", "upper")), "name": "Cat Water Fountain Cleaned" }, { "counter": states("counter.days_since_kitchen_cleaned") | int, "threshold": state_attr("binary_sensor.threshold_for_days_since_kitchen_cleaned", "upper"), "percent": (int(states("counter.days_since_kitchen_cleaned")) / state_attr("binary_sensor.threshold_for_days_since_kitchen_cleaned", "upper")), "name": "Kitchen Cleaned" }, { "counter": states("counter.days_since_kitchen_counters_cleaned") | int, "threshold": state_attr("binary_sensor.threshold_for_days_since_kitchen_counters_cleaned", "upper"), "percent": (int(states("counter.days_since_kitchen_counters_cleaned")) / state_attr("binary_sensor.threshold_for_days_since_kitchen_counters_cleaned", "upper")), "name": "Kitchen Counters Cleaned" }, { "counter": states("counter.days_since_living_room_cleaned") | int, "threshold": state_attr("binary_sensor.threshold_for_days_since_living_room_cleaned", "upper"), "percent": (int(states("counter.days_since_living_room_cleaned")) / state_attr("binary_sensor.threshold_for_days_since_living_room_cleaned", "upper")), "name": "Living Room Cleaned" }, { "counter": states("counter.days_since_upstairs_vacuumed") | int, "threshold": state_attr("binary_sensor.threshold_for_days_since_upstairs_vacuumed", "upper"), "percent": (int(states("counter.days_since_upstairs_vacuumed")) / state_attr("binary_sensor.threshold_for_days_since_upstairs_vacuumed", "upper")), "name": "Upstairs Vacuumed" }, { "counter": states("counter.days_since_bathroom_counters_cleaned") | int, "threshold": state_attr("binary_sensor.threshold_for_days_since_bathroom_counters_cleaned", "upper"), "percent": (int(states("counter.days_since_bathroom_counters_cleaned")) / state_attr("binary_sensor.threshold_for_days_since_bathroom_counters_cleaned", "upper")), "name": "Bathroom Counters Cleaned" }, { "counter": states("counter.days_since_bedroom_vacuumed") | int, "threshold": state_attr("binary_sensor.threshold_for_days_since_bedroom_vacuumed", "upper"), "percent": (int(states("counter.days_since_bedroom_vacuumed")) / state_attr("binary_sensor.threshold_for_days_since_bedroom_vacuumed", "upper")), "name": "Bedroom Vacuumed" }, { "counter": states("counter.days_since_toilets_cleaned") | int, "threshold": state_attr("binary_sensor.threshold_for_days_since_toilets_cleaned", "upper"), "percent": (int(states("counter.days_since_toilets_cleaned")) / state_attr("binary_sensor.threshold_for_days_since_toilets_cleaned", "upper")), "name": "Toilets Cleaned" }, ]%} {% for tracker in (trackers | sort(reverse=true, attribute='percent')) %} {% set days_left = ((tracker.threshold - tracker.counter) | int | string) %} {% set message = tracker.name + " completed " + tracker.counter | string + " days ago. Due again in " + days_left + " days." %} {% if tracker.percent > 1 %} {{ message }} {% elif tracker.percent > 0.8 %} {{ message }} {% else %} {{ message }} {% endif %} {% endfor %} - type: grid square: false columns: 2 title: Days Since Fridge Water Filter Replaced cards: - type: button name: Reset entity: input_button.reset_days_since_fridge_water_filter tap_action: action: toggle - type: button entity: input_button.undo_reset_days_since_fridge_water_filter name: Undo tap_action: action: toggle - type: entity entity: counter.days_since_fridge_water_filter name: Days Since - type: entity entity: counter.last_non_zero_days_since_fridge_water_filter name: Last Non-Zero - type: grid square: false columns: 2 title: Days Since Litter Boxes Cleaned cards: - type: button name: Reset entity: input_button.reset_days_since_litter_boxes_cleaned tap_action: action: toggle - type: button entity: input_button.undo_reset_days_since_litter_boxes_cleaned name: Undo tap_action: action: toggle - type: entity entity: counter.days_since_litter_boxes_cleaned name: Days Since - type: entity entity: counter.last_non_zero_days_since_litter_boxes_cleaned name: Last Non-Zero - type: grid square: false columns: 2 title: Days Since Cat Water Fountain Cleaned cards: - type: button name: Reset entity: input_button.reset_days_since_cat_water_fountain_cleaned tap_action: action: toggle - type: button entity: input_button.undo_reset_days_since_cat_water_fountain_cleaned name: Undo tap_action: action: toggle - type: entity entity: counter.days_since_cat_water_fountain_cleaned name: Days Since - type: entity entity: counter.last_non_zero_days_since_cat_water_fountain_cleaned name: Last Non-Zero - type: grid square: false columns: 2 title: Days Since Kitchen Cleaned cards: - type: button name: Reset entity: input_button.reset_days_since_kitchen_cleaned tap_action: action: toggle - type: button entity: input_button.undo_reset_days_since_kitchen_cleaned name: Undo tap_action: action: toggle - type: entity entity: counter.days_since_kitchen_cleaned name: Days Since - type: entity entity: counter.last_non_zero_days_since_kitchen_cleaned name: Last Non-Zero - type: grid square: false columns: 2 title: Days Since Kitchen Counters Cleaned cards: - type: button name: Reset entity: input_button.reset_days_since_kitchen_counters_cleaned tap_action: action: toggle - type: button entity: input_button.undo_reset_days_since_kitchen_counters_cleaned name: Undo tap_action: action: toggle - type: entity entity: counter.days_since_kitchen_counters_cleaned name: Days Since - type: entity entity: counter.last_non_zero_days_since_kitchen_counters_cleaned name: Last Non-Zero - type: grid square: false columns: 2 title: Days Since Living Room Cleaned cards: - type: button name: Reset entity: input_button.reset_days_since_living_room_cleaned tap_action: action: toggle - type: button entity: input_button.undo_reset_days_since_living_room_cleaned name: Undo tap_action: action: toggle - type: entity entity: counter.days_since_living_room_cleaned name: Days Since - type: entity entity: counter.last_non_zero_days_since_living_room_cleaned name: Last Non-Zero - type: grid square: false columns: 2 title: Days Since Upstairs Vacuumed cards: - type: button name: Reset entity: input_button.reset_days_since_upstairs_vacuumed tap_action: action: toggle - type: button entity: input_button.undo_reset_days_since_upstairs_vacuumed name: Undo tap_action: action: toggle - type: entity entity: counter.days_since_upstairs_vacuumed name: Days Since - type: entity entity: counter.last_non_zero_days_since_upstairs_vacuumed name: Last Non-Zero - type: grid square: false columns: 2 title: Days Since Bathroom Counters Cleaned cards: - type: button name: Reset entity: input_button.reset_days_since_bathroom_counters_cleaned tap_action: action: toggle - type: button entity: input_button.undo_reset_days_since_bathroom_counters_cleaned name: Undo tap_action: action: toggle - type: entity entity: counter.days_since_bathroom_counters_cleaned name: Days Since - type: entity entity: counter.last_non_zero_days_since_bathroom_counters_cleaned name: Last Non-Zero - type: grid square: false columns: 2 title: Days Since Bedroom Vacuumed cards: - type: button name: Reset entity: input_button.reset_days_since_bedroom_vacuumed tap_action: action: toggle - type: button entity: input_button.undo_reset_days_since_bedroom_vacuumed name: Undo tap_action: action: toggle - type: entity entity: counter.days_since_bedroom_vacuumed name: Days Since - type: entity entity: counter.last_non_zero_days_since_bedroom_vacuumed name: Last Non-Zero - type: grid square: false columns: 2 title: Days Since Toilets Cleaned cards: - type: button name: Reset entity: input_button.reset_days_since_toilets_cleaned tap_action: action: toggle - type: button entity: input_button.undo_reset_days_since_toilets_cleaned name: Undo tap_action: action: toggle - type: entity entity: counter.days_since_toilets_cleaned name: Days Since - type: entity entity: counter.last_non_zero_days_since_toilets_cleaned name: Last Non-Zero