Automatischer Xiaomi Mi Mop Pro mit Homeassistant

Wir haben uns zu beginn von Corona einen Staubsaugroboter zugelegt. Einen Mi Mop Pro von Xiaomi. Bisher haben wir diesen immer nach Bedarf gestartet. So langsam vergesse ich aber immer häufiger den Roboter zu starten. Man kann in der App zwar automatische Startzeiten einstellen, dies ist aber nervig wenn man gerade im gleichen Raum ist.

Da ich unsere Smarthome Geräte mittels Homeassistant verwalte, nutze ich dies um den Roboter automatisch zu starten sobald alle Bewohner nicht zuhause sind.

Xiaomi Cloud Map Extractor

Als ich das letzte mal den Roboter in Homeassitant einbinden wollte war unser Modell noch nicht unterstützt. Dies ist nun aber der Fall. Also schnell über den HACS die Integration hinzugefügt.

Auch der Token Extractor funktioniert mittlerweile einwandfrei. Nachdem ich die configuration.yml aktualisiert habe, muss Homeassitant nur noch neugestartet werden. Hoffentlich.

Fast. Es fehlt noch die Xiaomi Vaccum Map Card, welche es ermöglicht den Staubsaubroboter über Homeassistant zu steuern. Nachdem ich Homeassistant erneut neugestartet habe, konnte ich die Karte hinzufügen.

Jetzt fehlt nur noch der automatische Start sobald niemand Zuhause ist.

Presence Detection

Für die Presence Detection wähle ich die NMap Integration. Diese überprüft regelmäßig die Geräte im lokalen Netzwerk. Der einzige Faktor welche Präsenz bestimmt, ist also das eigene Handy welches mit dem WLAN verbunden ist. Dies müsste ausreichen, da es nicht wichtig ist, den genauen Standort in der Wohnung zu tracken.

Die Integration liefert recht schnell eine Liste mit allen verbundenen Geräten. Nun muss ich nur noch die Automatisierung erstellen, welche den Roboter startet, sobald keines unserer Handys mit dem WLAN verbunden ist.

Dies erwies sich als schwieriger als gedacht. Mir wird die Karte zwar angezeigt, ich kann den Roboter noch nicht bedienen. Es existiert lediglich eine “Kamera”, welche den Grundriss unserer Wohnung zeigt. Um mich mit dem Roboter zu verbinden, teste ich als erstes die Miio2 Custom Integration von nqkdev. Mit dieser habe ich recht schnell eine Entität, welche es mir erlaubt den Staubsaugroboter zu starten.

Die Automatisierung ist auch schnell geschrieben:

alias: James Autostart
description: ''
trigger:
  - platform: state
    entity_id: device_tracker.nmap_handy_1
    from: home
    to: not_home
  - platform: state
    entity_id: device_tracker.nmap_handy_2
    from: home
    to: not_home
condition:
  - condition: device
    device_id: DEVICE_ID
    domain: device_tracker
    entity_id: device_tracker.nmap_handy_1
    type: is_not_home
  - condition: device
    device_id: DEVICE_ID
    domain: device_tracker
    entity_id: device_tracker.nmap_handy_2
    type: is_not_home
action:
  - service: vacuum.start
    target:
      entity_id: vacuum.james
  - service: automation.turn_off
    target:
      entity_id: automation.james_autostart
mode: single

Die Automatisierung prüft, ob der alle Geräte abwesend sind. Falls ja, so wir der Roboter gestartet und die Automatisierung anschließend deaktiviert. Auf diese Art kann der Roboter nicht mehrfach in Folge gestartet werden. Ich benutze eine weitere Automatisierung, welche einmal am Tag diese Automatisierung wieder reaktiviert.