Seit einiger Zeit nutze ich fรผr meine Roborock Saugroboter Valetudo als Firmware. Natรผrlich habe ich meine Valetudos mittels MQTT auch an Home Assistant angebunden. In diesem Beitrag erklรคre ich, wie man mit sehr wenigen Zeilen Code automatische Benachrichtigungen erhรคlt, wenn die Consumables (also Verbrauchsteile des Saugroboters) Aufmerksamkeit benรถtigen. Sobald Home Assistant dies feststellt, erhรคltst du also eine Push-Benachrichtigung!
Tatsรคchlich nutze ich die folgende Automation bereits fรผr die Batterie-Zustรคnde verschiedener Sensoren. Das Vorgehen ist eigentlich immer das Gleiche: 1. Man legt eine Gruppe bestehend aus den zu รผberwachenden Entitรคten an. 2. Man erstellt eine Automation, die regelmรครig die Zustรคnde der Gruppenmitglieder prรผft.
Bei Batterie-betriebenen Gerรคten kann man entsprechend den Ladezustand der Batterien prรผfen (sofern die Entitรคt diesen รผbermittelt) und bei einem mit Valetudo geflashten Saugroboter kann man die noch verbleibende Zeit bis zum Wechsel eines Verbrauchteils รผberwachen.
Da ich meine Valetudos mittels MQTT an mein Home Assistant angebunden habe, erhalte ich je Valetudo Sensoren fรผr die verbleibenden Zeiten von:
- Hauptbรผrste
- rechte Bรผrste
- Hauptfilter
- Sensorreinigung
In Home Assistant heiรen diese Sensoren dann beispielsweise sensor.main_brush, sensor.main_filter, sensor.right_brush und sensor.sensor_cleaning. Jeder dieser Sensoren liefert einen Wert in Minuten, welcher fรผr die verbleibende Zeit bis zu einem Wechsel beziehungsweise einer notwendigen Reinigung steht.
Du magst Home Assistant? Dann abonniere kostenlos meine Beitrรคge mit Tipps, Tricks und Anleitungen rund um Home Assistant:
Follow Home Assistant
Garantiert kein Spam, keine Werbung und immer mit Abmelde-Link, solltest du es dir anders รผberlegen!
Diese Entitรคten packe ich zunรคchst in eine neue Gruppe:
valetudo_status:
name: Valetudo Zustรคnde
entities:
- sensor.sensor_cleaning_2
- sensor.right_brush_2
- sensor.main_filter_2
- sensor.main_brush_2
- sensor.main_brush
- sensor.main_filter
- sensor.right_brush
- sensor.sensor_cleaning
Da derzeit zwei unserer Saugroboter mit Valetudo geflasht sind, gibt es jeden Sensor zweimal („…_2“)!
Nun erstellen wir noch eine Automation, die die Zustรคnde (also Minutenangaben) der Mitglieder der Gruppe „Valetudo Zustรคnde“ รผberwacht. Anstelle jeden Sensor einzeln zu รผberprรผfen, „loopen“ wir durch die Gruppenmitglieder und prรผfen fรผr jedes Gruppenmitglied, ob ein Schwellwert unterschritten wird:
- id: notify_valetudo_status
alias: Notification-Alert for Valetudo Status
initial_state: 'on'
trigger:
- platform: time
at: '10:00:00'
condition:
condition: or
conditions:
- condition: template
value_template: >
{% set min_time = 10 -%}
{% set ns = namespace(found=false) -%}
{% for entity_id in states.group.valetudo_status.attributes.entity_id -%}
{% set parts = entity_id.split('.') -%}
{% if (states(entity_id) | replace("%","") | int) < min_time -%}
{% set ns.found = true -%}
{% endif -%}
{% endfor -%}
{{ ns.found }}
action:
- service: notify.telegram
data_template:
title: Valetudo-Alarm!
message: >
{%- set min_time = 10 -%}
{%- for entity_id in states.group.valetudo_status.attributes.entity_id -%}
{%- set parts = entity_id.split('.') -%}
{%- if (states(entity_id) | replace("%","") | int) < min_time -%}
{{ states[parts[0]][parts[1]].name }} remaining minutes: {{ states(entity_id) }}.{{ '\n' }}
{%- endif -%}
{%- endfor -%}
Jeden Tag um 10 Uhr wird die Automation abgefeuert und es ist eine Condition, dass mindestens ein Gruppenmitglied weniger als 10 Minuten รผbrig hat. Trifft dies auf ein Gruppenmitglied zu, wird der Name des Gruppenmitglieds sowie die verbleibenden Minuten ausgegeben „… remaining minutes: …“.
Das Ganze kann dann wie folgt aussehen, wenn man, wie in meinem Code-Beispiel, Telegram als Push-Kanal nutzt:
Produktempfehlungen
Sehr hilfreich, generell das ganze Konstrukt. Kann ich gut auf andere Sensoren anwenden!