Automatische Valetudo Consumables Benachrichtigungen in Home Assistant

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
( 390 Followers )
X

Follow Home Assistant

E-mail : *
* Ich stimme der Datenschutzerklärung zu!

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:

Valeduto Push-Notification mit Home Assistant

Dieser Beitrag ist Teil einer kleinen Beitrags-Serie rund um den hass.io Home Assistant.

Foto des Autors
Autor
Olli
Ca. Ende 30, seit Windows 3.1 Fan von Computern, Gadgets, Handys und allem, was sich irgendwie programmieren lässt. Ich mag es gerne individuell und möglichst einfach, probiere aber auch gerne neue Dinge sofort aus. :) Konnte ich dir helfen? Dann würde ich mich über ein Bier freuen ;) Bier-Spende

1 Gedanke zu „Automatische Valetudo Consumables Benachrichtigungen in Home Assistant“

Schreibe einen Kommentar