nachdem ich nun einige Zeit damit verbracht habe meinen Dreame X40 über Loxone steuern zu können, möchte ich mit euch ein kleines How-To teilen.
Ich gehe davon aus, dass Home Assistant bereits auf einem RasPi o.ä. läuft und ihr auch die Integration "Dreame Vacuum" installiert habt und diese funktioniert.
Zusätzlich benötigt ihr noch MQTT Statestream auf dem HA und einen MQTT-Broker, z.B. auf einem Loxberry.
1. Sensor-Daten von HA an Loxone senden
Zuerst wollen wir verschiedene Sensor-Daten des Robots in Loxone erhalten. Hierfür lassen wir HA die Daten mittels MQTT Statestream publishen. Nach der Installation von MQTT Statestream geschieht dies automatisch. Bitte beachten, dass ihr in der configuration.yaml noch folgendes ergänzen müsst:
# Example configuration.yaml entry mqtt_statestream: base_topic: homeassistant publish_attributes: true publish_timestamps: true
Beispiel: Status
Hierfür müsst ihr einen "Virtuellen UDP Eingang" erstellen mit der IP eures Loxberry (bzw. MQTT-Broker). Der Standard UDP Empfangsport ist 11883.
Nun erstellt ihr einen "Virtuellen UDP Eingang Befehl". In das Feld Befehlserkennung schreibt ihr für den Status-Wert folgendes
MQTT:\ihomeassistant/sensor/x40_ultra_complete_state/value=\i\v
2. Werte von Loxone an HA senden
Um den Robot über Loxone steuern zu können, müssen wir die entsprechenden Befehle an HA senden. Hierzu erstellen wir in Loxone zunächst einen "Virtuellen Ausgang". Bei Adresse geben wir die IP des HA ein mit dem Port 8123 (falls nicht manuell geändert).
http://192.168.178.50:8123
Als nächstes erstellen wir einen "Virtuellen Ausgang Befehl". In den HTTP header bei EIN kommt immer folgendes:
Authorization: Bearer {Long Life Token}
Befehl bei EIN und HTTP body bei EIN ist je nach Entität unterschiedlich. Weiter unten füge ich eine Liste an, welche Kombinationen mir aktuell bekannt sind. An dieser Stelle nun aber als Beispiel der Befehl zum Starten der Reinigung:
Befehl bei EIN:
Es sollte dann in etwa so aussehen
Zum Testen kann nun der Virtuelle Ausgang Befehl z.B. mit einem Taster verbunden werden und der Saugroboter gestartet werden.
3. Liste der Befehle
Um die Kombinationen der Befehle bei EIN und den HTTP body bei EIN herauszufinden, muss man in HA in die Entwicklerwerkzeuge wechseln. Dort kann man unter Aktionen eine Entität suchen und verschiedene Parameter herauslesen, die helfen die Befehle zu erstellen. Aber vieles ist trotzdem Try&Error. Daher hier eine Liste mit Befehlskombinationen, die ich bereits getestet habe.
Funktion | Befehl bei EIN | HTTP body bei EIN |
Reinigung starten | /api/services/vacuum/start | { "entity_id": "vacuum.x40_ultra_complete" } |
Reinigung pausieren | /api/services/vacuum/pause | { "entity_id": "vacuum.x40_ultra_complete" } |
Reinigung stoppen | /api/services/vacuum/stop | { "entity_id": "vacuum.x40_ultra_complete" } |
Zurück zur Station | /api/services/vacuum/return_to_base | { "entity_id": "vacuum.x40_ultra_complete" } |
Saugstufe Stark | /api/services/vacuum/set_fan_speed | { "entity_id": "vacuum.x40_ultra_complete", "fan_speed": "Strong" } |
Saugstufe Turbo | /api/services/vacuum/set_fan_speed | { "entity_id": "vacuum.x40_ultra_complete", "fan_speed": "Turbo" } |
Saugstufe Leise | /api/services/vacuum/set_fan_speed | { "entity_id": "vacuum.x40_ultra_complete", "fan_speed": "Silent" } |
Saugstufe Standard | /api/services/vacuum/set_fan_speed | { "entity_id": "vacuum.x40_ultra_complete", "fan_speed": "Standard" } |
Einezlraumreinigung (Beispiel: Raum 6) |
/api/services/dreame_vacuum/vacuum_clean_segment | { "entity_id": "vacuum.x40_ultra_complete", "segments": "6" } |
Reset Sensoren | /api/services/button/press | { "entity_id": "button.x40_ultra_complete_reset_sensor" } |
Reset Filter | /api/services/button/press | { "entity_id": "button.x40_ultra_complete_reset_filter" } |
Reset Sidebrush | /api/services/button/press | { "entity_id": "button.x40_ultra_complete_reset_side_brush" } |
Reset Mainbrush | /api/services/button/press | { "entity_id": "button.x40_ultra_complete_reset_main_brush" } |
Robot lokalisieren | /api/services/vacuum/locate | { "entity_id": "vacuum.x40_ultra_complete" } |
Bei mir funktioniert es nun endlich wieder, dass der Saugroboter bei Abwesenheit die Bewegungserkennung der Alarmanlage deaktiviert und selbstständig los fährt. Somit ist alles geputzt und auch die Wischer sind bereits getrocknet, wenn wir nach Hause kommen.
Ich hoffe, ich konnte auch dem ein oder anderen damit helfen.
Viele Grüße
Andreas
Kommentar