Ich hab jetzt auch mal meine Ecovacs Schnittstelle bereinigt und auf github veröffentlicht:
https://github.com/next81/ecovacs2mqtt/
das Ganze ist dort als MQTT Bridge umgesetzt. Der Ecovacs2mqtt muss nur einmal installiert werden. Danach sollten in FHEM mit aktiviertem MQTT live Updates erfolgen und die Robots darüber zu steuern sein. Ich selbst hab nur die X12 und den Goat 1600 Lidar Pro. Deswegen ist feedback insbesondere bezüglich anderer Modelle willkommen ;) Wichtig ist, dass Python3.14 vorhanden ist. das lässt sich als alternative Installation parallel zur vom System installierten Version betreiben.
Python3.14:
sudo apt update
sudo apt install -y build-essential wget libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libffi-dev liblzma-dev libgdbm-dev libncursesw5-dev libexpat1-dev tk-dev uuid-dev
cd /tmp
wget https://www.python.org/ftp/python/3.14.6/Python-3.14.6.tgz
tar xzf Python-3.14.6.tgz
cd Python-3.14.6
./configure
make -j$(nproc)
sudo make altinstall
Dann weiter mit:
git clone https://github.com/next81/ecovacs2mqtt.git
cd ecovacs2mqtt
sudo ./install.sh
sudo PYTHON_BIN=python3.14 ./install.sh
sudo nano /etc/ecovacs2mqtt/config.yaml
sudo ecovacs2mqtt password
sudo ecovacs2mqtt devices
sudo ecovacs2mqtt auth
sudo systemctl enable --now ecovacs2mqtt
language: sollte man in der config auf DE stellen. ich hab hier DE/EN hinterlegt, wobei en default ist.
wenn ecovacs2mqtt läuft, müssen noch die fhem devices angepasst werden. hier mal ein beispiel meiner:
defmod Ecovacs.DG MQTT2_DEVICE ecovacs_7d758595-567f-4320-a8e8-7b3915a06667
attr Ecovacs.DG devStateIcon (0|1)\d?:measure_battery_0@red [2-3]\d+:measure_battery_25@orange [4-6]\d+:measure_battery_50@green [7-8]\d+:measure_battery_75@green (9\d+|100).*:measure_battery_100@green
attr Ecovacs.DG devicetopic ecovacs/<hier die deviceid rein>
attr Ecovacs.DG group Geräte
attr Ecovacs.DG oldreadings state,oldreadingsAlways
attr Ecovacs.DG readingList $DEVICETOPIC/json:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/battery:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/metadata:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/positions:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/availability:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/mapChanged:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/networkInfo:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/stats:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/continuousCleaning:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/cleanLog:.* cleanLog\
$DEVICETOPIC/event/cleanCount:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/error:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/fanSpeed:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/workMode:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/lifeSpan:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/cachedMapInfo:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/majorMap:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/multimapState:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/rooms:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/mapTrace:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/carpetAutoFanBoost:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/childLock:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/mopAutoWashFrequency:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/ota:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/trueDetect:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/voiceAssistantState:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/volume:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/autoEmpty:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/station:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/totalStats:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/waterCustomAmount:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/mopAttached:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/event/state:.* { json2nameValue($EVENT) }\
ecovacs/7d758595-567f-4320-a8e8-7b3915a06667/event/commandResult:.* { json2nameValue($EVENT) }
attr Ecovacs.DG room Dachgeschoss->Ankleide,Dachgeschoss->Bad groß,Dachgeschoss->Bad klein,Dachgeschoss->Flur,Dachgeschoss->Kinderzimmer groß,Dachgeschoss->Kinderzimmer klein,Dachgeschoss->Schlafen,Interfaces->Ecovacs,Interfaces->MQTT
attr Ecovacs.DG setList resume:noArg $DEVICETOPIC/resume 1\
stop:noArg $DEVICETOPIC/stop 1\
charge:noArg $DEVICETOPIC/charge 1\
dock:noArg $DEVICETOPIC/dock 1\
locate:noArg $DEVICETOPIC/locate 1\
refresh:noArg $DEVICETOPIC/refresh 1\
setFanSpeed:quiet,normal,max,max_plus $DEVICETOPIC/setFanSpeed\
setWaterAmount:slider,0,1,50 $DEVICETOPIC/setWaterAmount\
setVolume:slider,0,1,10 $DEVICETOPIC/setVolume\
setChildLock:off,on $DEVICETOPIC/setChildLock\
setTrueDetect:off,on $DEVICETOPIC/setTrueDetect\
setWorkMode:vacuum_and_mop,vacuum,mop,mop_after_vacuum $DEVICETOPIC/setWorkMode\
stationAction:empty_dustbin,dry_mop,wash_mop $DEVICETOPIC/stationAction\
clean:textField $DEVICETOPIC/clean \
cleanArea:textField $DEVICETOPIC/cleanArea\
custom:textField $DEVICETOPIC/custom\
attr Ecovacs.DG stateFormat battery\
state
im anschluss kann man die robots über fhem steuern, z.b.
set Ecovacs.DG clean Flur Schlafen Ankleide
Damit werden die Räume in der angegebenen Reihenfolge dann gereinigt. Steuerung über fhem ist ganz praktisch, wenn man das mit einer Anwesenheitserkennung versieht und die Reinigung starten lässt, wenn man das Haus verlässt etc.. Gibt ja viele Möglichkeiten :-)
Alles weitere steht in der Doku auf github
Ist aber mit ecovacs-Cloud und Fremdsoftware Python.
Da haben wir schon lange cloudfree und reine FHEM-Unterstützung per MQTT.
Allerdings habe ich nur einen alten Deebot Slim und kann nicht beurteilen, ob umfangreichere Funktionalitäten und neuere Modelle überhaupt funktionieren.
Grüße Markus
Dann sag mir bitte wie, ich kenne keine Option die Ecovacs direkt per mqtt ansprechen zu können, außer den hacks bei der wlan installation, aber das ging irgendwie nicht. Vielleicht ging das früher mal, aber bei den jetzigen hab ich einfach nichts gefunden.
Soweit ich das sehe ist die Einbindung über deebot-client jedenfalls robust und apps etc funktionieren weiterhin. Cloudlösungen mag ich auch nicht, aber wenns nicht anders geht.. Und ja, es ist alles in Python gehalten, weil deebot-client in Python gehalten ist. Ich hab deswegen auch nur eine bridge deebot-client <> mqtt gebaut und die errorcodes etc vereinheitlicht. Insofern bleibt fhem sauber, da alles nur über mqtt passiert.
hier https://forum.fhem.de/index.php?msg=974299 beginnts vor fast 7 Jahren mit bumper, pihole u. MQTT im LAN.
Am Ende blieben die Umleitung per pihole, die Zertifikate und MQTT in FHEM:
den weg über bumper kannte ich. das lief aber nicht richtig bei mir. war mir offen gesagt auch zu kompliziert, zumal es dann wartung etc alles auf meine seite geschoben hätte. ich wollte nur eine möglichkeit den ecovacs per fhem steuern zu können ohne das ganze ökosystem umzustellen. aber ja, das wäre eine alternative möglichkeit ohne cloud, wenns denn funktioniert
Zitatmöglichkeit ohne cloud, wenns denn funktioniert
bei mir bis heute....
die app geht dann aber nicht mehr. die möglichkeit der appsteuerung wollte ich jedenfalls behalten.
Hallo Guybrush!
Zitat von: Guybrush am 15 August 2026, 20:41:19Ich selbst hab nur die X12 und den Goat 1600 Lidar Pro. Deswegen ist feedback insbesondere bezüglich anderer Modelle willkommen ;)
Danke für das Modul!
Ich selbst habe einen Ecovacs Deebot T80 Omni.
Mit dem funktioniert Dein Modul auch tadellos!
Hier zur Info mein MQTT-Device:
define ecovacs2mqtt MQTT2_DEVICE ecovacs2mqtt
attr ecovacs2mqtt DbLogExclude .*
attr ecovacs2mqtt DbLogInclude state,battery
attr ecovacs2mqtt alias DEEBOT T80 OMNI
attr ecovacs2mqtt cmdIcon start:t80_start \
pause:t80_pause \
dock:t80_home \
Bad:t80_bath \
Kueche:t80_kitchen \
Flur:t80_door \
Wohnzimmer:t80_living \
Lagerraum:t80_storage \
locate:t80_locate
attr ecovacs2mqtt devStateIcon {\
my $state = ReadingsVal($name,"state","?");;\
my $bat = ReadingsVal($name,"battery","?");;\
my $station = ReadingsVal($name,"station","");;\
my $mode = ReadingsVal($name,"workMode","");;\
\
my $statusIcon = $state eq "cleaning" ? "t80_clean\@green" :\
$state eq "returning" ? "t80_return\@orange" :\
$state eq "paused" ? "t80_pause\@orange" :\
$state eq "error" ? "t80_error\@red" :\
$state eq "offline" ? "t80_offline\@red" :\
"t80_dock\@green";;\
\
my $status = FW_makeImage($statusIcon);;\
my $txt = "$state | Akku: $bat%";;\
$txt .= " | $station" if ($station ne "" && $station ne "idle");;\
\
my %modeMap = (\
"0" => "vacuum_and_mop",\
"1" => "vacuum",\
"2" => "mop",\
"3" => "mop_after_vacuum",\
"vacuum_and_mop" => "vacuum_and_mop",\
"vacuum" => "vacuum",\
"mop" => "mop",\
"mop_after_vacuum" => "mop_after_vacuum"\
);;\
\
my $currentMode = exists($modeMap{$mode}) ? $modeMap{$mode} : "";;\
\
my $selVM = $currentMode eq "vacuum_and_mop" ? " selected" : "";;\
my $selV = $currentMode eq "vacuum" ? " selected" : "";;\
my $selM = $currentMode eq "mop" ? " selected" : "";;\
my $selMAV = $currentMode eq "mop_after_vacuum" ? " selected" : "";;\
\
my $dropdown =\
"<select title='Reinigungsmodus wählen' ".\
"style='margin-left:6px;;padding:3px 6px;;border-radius:5px;;' ".\
"onchange=\\\"window.location.href='$FW_ME?cmd.$name=set%20$name%20setWorkMode%20'+this.value+'$FW_CSRF'\\\">".\
"<option value='vacuum_and_mop'$selVM>Saugen + Wischen</option>".\
"<option value='vacuum'$selV>Nur Saugen</option>".\
"<option value='mop'$selM>Nur Wischen</option>".\
"<option value='mop_after_vacuum'$selMAV>Erst Saugen, dann Wischen</option>".\
"</select>";;\
\
"<div style='display:flex;;align-items:center;;gap:14px;;'>".\
"<span>$status</span>".\
"<span>$txt</span>".\
$dropdown.\
"<a href=\"$FW_ME?cmd.$name=set $name start$FW_CSRF\" title=\"Reinigung starten\">".FW_makeImage("t80_start")."</a>".\
"<a href=\"$FW_ME?cmd.$name=set $name pause$FW_CSRF\" title=\"Reinigung pausieren\">".FW_makeImage("t80_pause")."</a>".\
"<a href=\"$FW_ME?cmd.$name=set $name dock$FW_CSRF\" title=\"Zur Station fahren\">".FW_makeImage("t80_home")."</a>".\
"<a href=\"$FW_ME?cmd.$name=set $name Bad$FW_CSRF\" title=\"Badezimmer reinigen\">".FW_makeImage("t80_bath")."</a>".\
"<a href=\"$FW_ME?cmd.$name=set $name Kueche$FW_CSRF\" title=\"Küche reinigen\">".FW_makeImage("t80_kitchen")."</a>".\
"<a href=\"$FW_ME?cmd.$name=set $name Flur$FW_CSRF\" title=\"Flur reinigen\">".FW_makeImage("t80_door")."</a>".\
"<a href=\"$FW_ME?cmd.$name=set $name Wohnzimmer$FW_CSRF\" title=\"Wohnzimmer reinigen\">".FW_makeImage("t80_living")."</a>".\
"<a href=\"$FW_ME?cmd.$name=set $name Lagerraum$FW_CSRF\" title=\"Lagerraum reinigen\">".FW_makeImage("t80_storage")."</a>".\
"<a href=\"$FW_ME?cmd.$name=set $name locate$FW_CSRF\" title=\"DEEBOT lokalisieren\">".FW_makeImage("t80_locate")."</a>".\
"</div>"\
}
attr ecovacs2mqtt devicetopic ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f
attr ecovacs2mqtt group Schalten
attr ecovacs2mqtt icon t80_dock
attr ecovacs2mqtt readingList ecovacs2mqtt:ecovacs/_bridge/serviceState:.* serviceState\
ecovacs2mqtt:ecovacs/_bridge/json:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/metadata:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/stats:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/availability:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/positions:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/mapChanged:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/networkInfo:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/battery:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/cleanLog:.* cleanLog\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/continuousCleaning:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/cleanCount:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/workMode:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/error:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/fanSpeed:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/lifeSpan:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/cachedMapInfo:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/majorMap:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/multimapState:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/rooms:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/mapTrace:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/advancedMode:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/carpetAutoFanBoost:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/efficiencyMode:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/childLock:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/ota:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/sweepMode:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/trueDetect:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/voiceAssistantState:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/volume:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/autoEmpty:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/totalStats:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/waterCustomAmount:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/mopAttached:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/state:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/station:.* { json2nameValue($EVENT) }\
ecovacs2mqtt:ecovacs/a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f/event/commandResult:.* { json2nameValue($EVENT) }
attr ecovacs2mqtt room Erdgeschoss->Flur
attr ecovacs2mqtt setList start:noArg $DEVICETOPIC/start 1\
pause:noArg $DEVICETOPIC/pause 1\
stop:noArg $DEVICETOPIC/stop 1\
charge:noArg $DEVICETOPIC/charge 1\
dock:noArg $DEVICETOPIC/dock 1\
locate:noArg $DEVICETOPIC/locate 1\
refresh:noArg $DEVICETOPIC/refresh 1\
Bad:noArg $DEVICETOPIC/clean Badezimmer\
Kueche:noArg $DEVICETOPIC/clean Küche\
Flur:noArg $DEVICETOPIC/clean Flur\
Wohnzimmer:noArg $DEVICETOPIC/clean Wohnzimmer\
Lagerraum:noArg $DEVICETOPIC/clean Lagerraum\
setFanSpeed:quiet,normal,max,max_plus $DEVICETOPIC/setFanSpeed\
setWaterAmount:slider,0,1,50 $DEVICETOPIC/setWaterAmount\
setVolume:slider,0,1,10 $DEVICETOPIC/setVolume\
setChildLock:off,on $DEVICETOPIC/setChildLock\
setTrueDetect:off,on $DEVICETOPIC/setTrueDetect\
setWorkMode:vacuum_and_mop,vacuum,mop,mop_after_vacuum $DEVICETOPIC/setWorkMode\
stationAction:empty_dustbin,dry_mop,wash_mop $DEVICETOPIC/stationAction\
clean:textField $DEVICETOPIC/clean\
cleanArea:textField $DEVICETOPIC/cleanArea\
custom:textField $DEVICETOPIC/custom
attr ecovacs2mqtt stateFormat {\
my $s=ReadingsVal($name,"state","?");;\
my $st=ReadingsVal($name,"station","");;\
my $bat=ReadingsVal($name,"battery","?");;\
$st && $st ne "idle" ? "$s / $st | Akku: $bat%" : "$s | Akku: $bat%"\
}
# CID ecovacs2mqtt
# DEF ecovacs2mqtt
# FUUID 6a8d7ced-f33f-326e-7cc9-185c4e0ad4e42fdd
# FVERSION 10_MQTT2_DEVICE.pm:0.305090/2025-11-09
# IODev mqttServer
# LASTInputDev mqttServer
# MSGCNT 76
# NAME ecovacs2mqtt
# NR 977
# STATE docked | Akku: 98%
# TYPE MQTT2_DEVICE
# eventCount 82
# mqttServer_CONN mqttServer_127.0.0.1_53283
# mqttServer_MSGCNT 76
# mqttServer_TIME 2026-08-25 15:04:34
# Helper:
# DBLOG:
# battery:
# logdb:
# TIME 1787663074.36013
# VALUE 98
# state:
# logdb:
# TIME 1787662905.09575
# VALUE docked
# READINGS:
# 2026-08-25 13:58:10 IODev mqttServer
# 2026-08-25 13:30:54 UILogicId keplerse_ww_h_keplerseh5
# 2026-08-25 13:30:55 advancedMode false
# 2026-08-25 13:30:56 autoEmpty true
# 2026-08-25 13:30:56 autoEmptyEnabled true
# 2026-08-25 13:30:56 autoEmptyFrequency smart
# 2026-08-25 13:30:54 availability true
# 2026-08-25 15:04:34 battery 98
# 2026-08-25 13:30:54 botName
# 2026-08-25 13:30:55 cachedMapInfo_1_angle RotationAngle.DEG_90
# 2026-08-25 13:30:55 cachedMapInfo_1_built true
# 2026-08-25 13:30:55 cachedMapInfo_1_id 683187553
# 2026-08-25 13:30:55 cachedMapInfo_1_name Erdgeschoss
# 2026-08-25 13:30:55 cachedMapInfo_1_using true
# 2026-08-25 13:30:55 carpetAutoFanBoost false
# 2026-08-25 13:30:56 childLock false
# 2026-08-25 13:30:54 class 02qwum
# 2026-08-25 13:30:55 cleanCount 2
# 2026-08-25 13:30:55 cleanLog {"cleanLog":[]}
# 2026-08-25 13:30:55 continuousCleaning true
# 2026-08-25 13:58:55 deebotClientVersion 18.5.1
# 2026-08-25 13:58:55 deviceCount 1
# 2026-08-25 13:30:54 deviceId a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f
# 2026-08-25 13:30:54 deviceName DEEBOT T80 OMNI
# 2026-08-25 13:30:54 deviceType vacuum
# 2026-08-25 13:58:55 discoveryInterval 0
# 2026-08-25 13:30:55 efficiencyMode 1
# 2026-08-25 13:58:55 error
# 2026-08-25 13:30:55 errorCode 0
# 2026-08-25 13:30:55 errorDescription Es wird kein aktiver Gerätefehler gemeldet.
# 2026-08-25 13:30:55 fanSpeed 2
# 2026-08-25 13:30:54 homeId 6807fb3c16956c0007f20ffa
# 2026-08-25 15:01:18 lastCommand dock
# 2026-08-25 14:48:23 lastCommandData_count 1
# 2026-08-25 15:01:18 lastCommandData_id unBe
# 2026-08-25 15:01:18 lastCommandData_payloadType j
# 2026-08-25 14:26:31 lastCommandData_requested 31
# 2026-08-25 15:01:18 lastCommandData_resp_body_code 0
# 2026-08-25 15:01:18 lastCommandData_resp_body_msg ok
# 2026-08-25 15:01:18 lastCommandData_resp_header_fwVer 1.69.0
# 2026-08-25 15:01:18 lastCommandData_resp_header_hwVer 0.1.1
# 2026-08-25 15:01:18 lastCommandData_resp_header_pri 1
# 2026-08-25 15:01:18 lastCommandData_resp_header_ts 1787662878032
# 2026-08-25 15:01:18 lastCommandData_resp_header_tzm 480
# 2026-08-25 15:01:18 lastCommandData_resp_header_ver 0.0.1
# 2026-08-25 15:01:18 lastCommandData_resp_header_wkVer 0.1.54
# 2026-08-25 14:48:23 lastCommandData_response_id oBYP
# 2026-08-25 14:48:23 lastCommandData_response_payloadType j
# 2026-08-25 14:48:23 lastCommandData_response_resp_body_code 0
# 2026-08-25 14:48:23 lastCommandData_response_resp_body_msg ok
# 2026-08-25 14:48:23 lastCommandData_response_resp_header_fwVer 1.69.0
# 2026-08-25 14:48:23 lastCommandData_response_resp_header_hwVer 0.1.1
# 2026-08-25 14:48:23 lastCommandData_response_resp_header_pri 1
# 2026-08-25 14:48:23 lastCommandData_response_resp_header_ts 1787662102360
# 2026-08-25 14:48:23 lastCommandData_response_resp_header_tzm 480
# 2026-08-25 14:48:23 lastCommandData_response_resp_header_ver 0.0.1
# 2026-08-25 14:48:23 lastCommandData_response_resp_header_wkVer 0.1.54
# 2026-08-25 14:48:23 lastCommandData_response_ret ok
# 2026-08-25 15:01:18 lastCommandData_ret ok
# 2026-08-25 14:48:23 lastCommandData_rooms_1_id 2
# 2026-08-25 14:48:23 lastCommandData_rooms_1_name Flur
# 2026-08-25 15:01:18 lastCommandError
# 2026-08-25 15:01:18 lastCommandResult ok
# 2026-08-25 15:01:18 lastCommandTime 2026-08-25T13:01:18.673015+00:00
# 2026-08-25 15:02:10 lifeSpanPercent 93.89
# 2026-08-25 15:02:10 lifeSpanRemaining 3380
# 2026-08-25 15:02:10 lifeSpanType waterSink
# 2026-08-25 13:31:55 majorMapMapId 683187553
# 2026-08-25 13:31:55 majorMapRequested true
# 2026-08-25 15:02:38 mapChanged 2026-08-25T13:01:44.988543+00:00
# 2026-08-25 15:01:44 mapTraceData XQAABAAFAAAAACIADZcB7wgAAA==
# 2026-08-25 15:01:44 mapTraceStart 88
# 2026-08-25 15:01:44 mapTraceTotal 89
# 2026-08-25 13:30:54 materialNo 110-2488-0801
# 2026-08-25 13:30:54 model KEPLER_SE_WHITE_INT
# 2026-08-25 13:30:56 mopAttached true
# 2026-08-25 13:30:55 multimapState true
# 2026-08-25 13:30:54 name E02636288G1FPP760801
# 2026-08-25 14:27:27 networkInfoIp 192.168.178.43
# 2026-08-25 14:27:27 networkInfoMac E8:5C:5F:8E:FE:67
# 2026-08-25 14:27:27 networkInfoRssi -56
# 2026-08-25 14:27:27 networkInfoSsid Torfmoorholm Ost
# 2026-08-25 13:30:56 ota 1.69.0
# 2026-08-25 13:30:56 otaAutoEnabled true
# 2026-08-25 13:30:56 otaProgress 0
# 2026-08-25 13:30:56 otaStatus done
# 2026-08-25 13:30:56 otaSupportAuto true
# 2026-08-25 13:30:56 otaVersion 1.69.0
# 2026-08-25 15:01:57 positions_1_a 87
# 2026-08-25 15:01:57 positions_1_type PositionType.DEEBOT
# 2026-08-25 15:01:57 positions_1_x -121
# 2026-08-25 15:01:57 positions_1_y -679
# 2026-08-25 15:01:57 positions_2_a 87
# 2026-08-25 15:01:57 positions_2_type PositionType.CHARGER
# 2026-08-25 15:01:57 positions_2_x -121
# 2026-08-25 15:01:57 positions_2_y -679
# 2026-08-25 13:30:54 product_category DEEBOT
# 2026-08-25 13:30:54 profile native
# 2026-08-25 13:58:55 publishInterval 60
# 2026-08-25 13:58:55 refreshInterval 0
# 2026-08-25 13:30:54 resource FSxfKLAK
# 2026-08-25 13:30:55 roomsMapId 683187553
# 2026-08-25 13:30:55 roomsRooms_1_coordinates
# 2026-08-25 13:30:55 roomsRooms_1_id 0
# 2026-08-25 13:30:55 roomsRooms_1_name Badezimmer
# 2026-08-25 13:30:55 roomsRooms_2_coordinates
# 2026-08-25 13:30:55 roomsRooms_2_id 1
# 2026-08-25 13:30:55 roomsRooms_2_name Küche
# 2026-08-25 13:30:55 roomsRooms_3_coordinates
# 2026-08-25 13:30:55 roomsRooms_3_id 2
# 2026-08-25 13:30:55 roomsRooms_3_name Flur
# 2026-08-25 13:30:55 roomsRooms_4_coordinates
# 2026-08-25 13:30:55 roomsRooms_4_id 3
# 2026-08-25 13:30:55 roomsRooms_4_name Wohnzimmer
# 2026-08-25 13:30:55 roomsRooms_5_coordinates
# 2026-08-25 13:30:55 roomsRooms_5_id 4
# 2026-08-25 13:30:55 roomsRooms_5_name Lagerraum
# 2026-08-25 13:58:55 serviceState online
# 2026-08-25 13:58:55 sets devices,discover,requestVerification,rooms,verifyCode
# 2026-08-25 15:01:45 state docked
# 2026-08-25 14:27:29 station idle
# 2026-08-25 15:01:31 statsArea 3
# 2026-08-25 15:01:31 statsTime 60
# 2026-08-25 15:01:31 statsType auto
# 2026-08-25 13:30:54 status 1
# 2026-08-25 13:59:06 subscriptions ecovacs/+/charge ecovacs/+/clean ecovacs/+/cleanArea ecovacs/+/custom ecovacs/+/dock ecovacs/+/locate ecovacs/+/pause ecovacs/+/refresh ecovacs/+/resume ecovacs/+/setAdvancedMode ecovacs/+/setBorderSwitch ecovacs/+/setChildLock ecovacs/+/setCutDirection ecovacs/+/setFanSpeed ecovacs/+/setSafeProtect ecovacs/+/setTrueDetect ecovacs/+/setVolume ecovacs/+/setWaterAmount ecovacs/+/setWorkMode ecovacs/+/start ecovacs/+/stationAction ecovacs/+/stop ecovacs/_bridge/devices ecovacs/_bridge/discover ecovacs/_bridge/requestVerification ecovacs/_bridge/rooms ecovacs/_bridge/verifyCode
# 2026-08-25 13:30:54 supported true
# 2026-08-25 13:58:55 supportedDeviceCount 1
# 2026-08-25 13:30:56 sweepMode false
# 2026-08-25 15:00:30 totalStatsArea 4547
# 2026-08-25 15:00:30 totalStatsCleanings 271
# 2026-08-25 15:00:30 totalStatsTime 439200
# 2026-08-25 13:30:56 trueDetect true
# 2026-08-25 13:58:55 version 0.2.2
# 2026-08-25 13:30:56 voiceAssistantState true
# 2026-08-25 13:30:56 volumeMaximum 10
# 2026-08-25 13:30:56 volumeVolume 5
# 2026-08-25 13:30:56 waterCustomAmount 30
# 2026-08-25 14:49:15 workMode 1
# hmccu:
#
setstate ecovacs2mqtt docked | Akku: 98%
setstate ecovacs2mqtt 2026-08-25 13:58:10 IODev mqttServer
setstate ecovacs2mqtt 2026-08-25 13:30:54 UILogicId keplerse_ww_h_keplerseh5
setstate ecovacs2mqtt 2026-08-25 13:30:55 advancedMode false
setstate ecovacs2mqtt 2026-08-25 13:30:56 autoEmpty true
setstate ecovacs2mqtt 2026-08-25 13:30:56 autoEmptyEnabled true
setstate ecovacs2mqtt 2026-08-25 13:30:56 autoEmptyFrequency smart
setstate ecovacs2mqtt 2026-08-25 13:30:54 availability true
setstate ecovacs2mqtt 2026-08-25 15:04:34 battery 98
setstate ecovacs2mqtt 2026-08-25 13:30:54 botName
setstate ecovacs2mqtt 2026-08-25 13:30:55 cachedMapInfo_1_angle RotationAngle.DEG_90
setstate ecovacs2mqtt 2026-08-25 13:30:55 cachedMapInfo_1_built true
setstate ecovacs2mqtt 2026-08-25 13:30:55 cachedMapInfo_1_id 683187553
setstate ecovacs2mqtt 2026-08-25 13:30:55 cachedMapInfo_1_name Erdgeschoss
setstate ecovacs2mqtt 2026-08-25 13:30:55 cachedMapInfo_1_using true
setstate ecovacs2mqtt 2026-08-25 13:30:55 carpetAutoFanBoost false
setstate ecovacs2mqtt 2026-08-25 13:30:56 childLock false
setstate ecovacs2mqtt 2026-08-25 13:30:54 class 02qwum
setstate ecovacs2mqtt 2026-08-25 13:30:55 cleanCount 2
setstate ecovacs2mqtt 2026-08-25 13:30:55 cleanLog {"cleanLog":[]}
setstate ecovacs2mqtt 2026-08-25 13:30:55 continuousCleaning true
setstate ecovacs2mqtt 2026-08-25 13:58:55 deebotClientVersion 18.5.1
setstate ecovacs2mqtt 2026-08-25 13:58:55 deviceCount 1
setstate ecovacs2mqtt 2026-08-25 13:30:54 deviceId a9feb0ca-3f9e-48d7-9211-c95eddd9ee4f
setstate ecovacs2mqtt 2026-08-25 13:30:54 deviceName DEEBOT T80 OMNI
setstate ecovacs2mqtt 2026-08-25 13:30:54 deviceType vacuum
setstate ecovacs2mqtt 2026-08-25 13:58:55 discoveryInterval 0
setstate ecovacs2mqtt 2026-08-25 13:30:55 efficiencyMode 1
setstate ecovacs2mqtt 2026-08-25 13:58:55 error
setstate ecovacs2mqtt 2026-08-25 13:30:55 errorCode 0
setstate ecovacs2mqtt 2026-08-25 13:30:55 errorDescription Es wird kein aktiver Gerätefehler gemeldet.
setstate ecovacs2mqtt 2026-08-25 13:30:55 fanSpeed 2
setstate ecovacs2mqtt 2026-08-25 13:30:54 homeId 6807fb3c16956c0007f20ffa
setstate ecovacs2mqtt 2026-08-25 15:01:18 lastCommand dock
setstate ecovacs2mqtt 2026-08-25 14:48:23 lastCommandData_count 1
setstate ecovacs2mqtt 2026-08-25 15:01:18 lastCommandData_id unBe
setstate ecovacs2mqtt 2026-08-25 15:01:18 lastCommandData_payloadType j
setstate ecovacs2mqtt 2026-08-25 14:26:31 lastCommandData_requested 31
setstate ecovacs2mqtt 2026-08-25 15:01:18 lastCommandData_resp_body_code 0
setstate ecovacs2mqtt 2026-08-25 15:01:18 lastCommandData_resp_body_msg ok
setstate ecovacs2mqtt 2026-08-25 15:01:18 lastCommandData_resp_header_fwVer 1.69.0
setstate ecovacs2mqtt 2026-08-25 15:01:18 lastCommandData_resp_header_hwVer 0.1.1
setstate ecovacs2mqtt 2026-08-25 15:01:18 lastCommandData_resp_header_pri 1
setstate ecovacs2mqtt 2026-08-25 15:01:18 lastCommandData_resp_header_ts 1787662878032
setstate ecovacs2mqtt 2026-08-25 15:01:18 lastCommandData_resp_header_tzm 480
setstate ecovacs2mqtt 2026-08-25 15:01:18 lastCommandData_resp_header_ver 0.0.1
setstate ecovacs2mqtt 2026-08-25 15:01:18 lastCommandData_resp_header_wkVer 0.1.54
setstate ecovacs2mqtt 2026-08-25 14:48:23 lastCommandData_response_id oBYP
setstate ecovacs2mqtt 2026-08-25 14:48:23 lastCommandData_response_payloadType j
setstate ecovacs2mqtt 2026-08-25 14:48:23 lastCommandData_response_resp_body_code 0
setstate ecovacs2mqtt 2026-08-25 14:48:23 lastCommandData_response_resp_body_msg ok
setstate ecovacs2mqtt 2026-08-25 14:48:23 lastCommandData_response_resp_header_fwVer 1.69.0
setstate ecovacs2mqtt 2026-08-25 14:48:23 lastCommandData_response_resp_header_hwVer 0.1.1
setstate ecovacs2mqtt 2026-08-25 14:48:23 lastCommandData_response_resp_header_pri 1
setstate ecovacs2mqtt 2026-08-25 14:48:23 lastCommandData_response_resp_header_ts 1787662102360
setstate ecovacs2mqtt 2026-08-25 14:48:23 lastCommandData_response_resp_header_tzm 480
setstate ecovacs2mqtt 2026-08-25 14:48:23 lastCommandData_response_resp_header_ver 0.0.1
setstate ecovacs2mqtt 2026-08-25 14:48:23 lastCommandData_response_resp_header_wkVer 0.1.54
setstate ecovacs2mqtt 2026-08-25 14:48:23 lastCommandData_response_ret ok
setstate ecovacs2mqtt 2026-08-25 15:01:18 lastCommandData_ret ok
setstate ecovacs2mqtt 2026-08-25 14:48:23 lastCommandData_rooms_1_id 2
setstate ecovacs2mqtt 2026-08-25 14:48:23 lastCommandData_rooms_1_name Flur
setstate ecovacs2mqtt 2026-08-25 15:01:18 lastCommandError
setstate ecovacs2mqtt 2026-08-25 15:01:18 lastCommandResult ok
setstate ecovacs2mqtt 2026-08-25 15:01:18 lastCommandTime 2026-08-25T13:01:18.673015+00:00
setstate ecovacs2mqtt 2026-08-25 15:02:10 lifeSpanPercent 93.89
setstate ecovacs2mqtt 2026-08-25 15:02:10 lifeSpanRemaining 3380
setstate ecovacs2mqtt 2026-08-25 15:02:10 lifeSpanType waterSink
setstate ecovacs2mqtt 2026-08-25 13:31:55 majorMapMapId 683187553
setstate ecovacs2mqtt 2026-08-25 13:31:55 majorMapRequested true
setstate ecovacs2mqtt 2026-08-25 15:02:38 mapChanged 2026-08-25T13:01:44.988543+00:00
setstate ecovacs2mqtt 2026-08-25 15:01:44 mapTraceData XQAABAAFAAAAACIADZcB7wgAAA==
setstate ecovacs2mqtt 2026-08-25 15:01:44 mapTraceStart 88
setstate ecovacs2mqtt 2026-08-25 15:01:44 mapTraceTotal 89
setstate ecovacs2mqtt 2026-08-25 13:30:54 materialNo 110-2488-0801
setstate ecovacs2mqtt 2026-08-25 13:30:54 model KEPLER_SE_WHITE_INT
setstate ecovacs2mqtt 2026-08-25 13:30:56 mopAttached true
setstate ecovacs2mqtt 2026-08-25 13:30:55 multimapState true
setstate ecovacs2mqtt 2026-08-25 13:30:54 name E02636288G1FPP760801
setstate ecovacs2mqtt 2026-08-25 14:27:27 networkInfoIp 192.168.178.43
setstate ecovacs2mqtt 2026-08-25 14:27:27 networkInfoMac E8:5C:5F:8E:FE:67
setstate ecovacs2mqtt 2026-08-25 14:27:27 networkInfoRssi -56
setstate ecovacs2mqtt 2026-08-25 14:27:27 networkInfoSsid Torfmoorholm Ost
setstate ecovacs2mqtt 2026-08-25 13:30:56 ota 1.69.0
setstate ecovacs2mqtt 2026-08-25 13:30:56 otaAutoEnabled true
setstate ecovacs2mqtt 2026-08-25 13:30:56 otaProgress 0
setstate ecovacs2mqtt 2026-08-25 13:30:56 otaStatus done
setstate ecovacs2mqtt 2026-08-25 13:30:56 otaSupportAuto true
setstate ecovacs2mqtt 2026-08-25 13:30:56 otaVersion 1.69.0
setstate ecovacs2mqtt 2026-08-25 15:01:57 positions_1_a 87
setstate ecovacs2mqtt 2026-08-25 15:01:57 positions_1_type PositionType.DEEBOT
setstate ecovacs2mqtt 2026-08-25 15:01:57 positions_1_x -121
setstate ecovacs2mqtt 2026-08-25 15:01:57 positions_1_y -679
setstate ecovacs2mqtt 2026-08-25 15:01:57 positions_2_a 87
setstate ecovacs2mqtt 2026-08-25 15:01:57 positions_2_type PositionType.CHARGER
setstate ecovacs2mqtt 2026-08-25 15:01:57 positions_2_x -121
setstate ecovacs2mqtt 2026-08-25 15:01:57 positions_2_y -679
setstate ecovacs2mqtt 2026-08-25 13:30:54 product_category DEEBOT
setstate ecovacs2mqtt 2026-08-25 13:30:54 profile native
setstate ecovacs2mqtt 2026-08-25 13:58:55 publishInterval 60
setstate ecovacs2mqtt 2026-08-25 13:58:55 refreshInterval 0
setstate ecovacs2mqtt 2026-08-25 13:30:54 resource FSxfKLAK
setstate ecovacs2mqtt 2026-08-25 13:30:55 roomsMapId 683187553
setstate ecovacs2mqtt 2026-08-25 13:30:55 roomsRooms_1_coordinates
setstate ecovacs2mqtt 2026-08-25 13:30:55 roomsRooms_1_id 0
setstate ecovacs2mqtt 2026-08-25 13:30:55 roomsRooms_1_name Badezimmer
setstate ecovacs2mqtt 2026-08-25 13:30:55 roomsRooms_2_coordinates
setstate ecovacs2mqtt 2026-08-25 13:30:55 roomsRooms_2_id 1
setstate ecovacs2mqtt 2026-08-25 13:30:55 roomsRooms_2_name Küche
setstate ecovacs2mqtt 2026-08-25 13:30:55 roomsRooms_3_coordinates
setstate ecovacs2mqtt 2026-08-25 13:30:55 roomsRooms_3_id 2
setstate ecovacs2mqtt 2026-08-25 13:30:55 roomsRooms_3_name Flur
setstate ecovacs2mqtt 2026-08-25 13:30:55 roomsRooms_4_coordinates
setstate ecovacs2mqtt 2026-08-25 13:30:55 roomsRooms_4_id 3
setstate ecovacs2mqtt 2026-08-25 13:30:55 roomsRooms_4_name Wohnzimmer
setstate ecovacs2mqtt 2026-08-25 13:30:55 roomsRooms_5_coordinates
setstate ecovacs2mqtt 2026-08-25 13:30:55 roomsRooms_5_id 4
setstate ecovacs2mqtt 2026-08-25 13:30:55 roomsRooms_5_name Lagerraum
setstate ecovacs2mqtt 2026-08-25 13:58:55 serviceState online
setstate ecovacs2mqtt 2026-08-25 13:58:55 sets devices,discover,requestVerification,rooms,verifyCode
setstate ecovacs2mqtt 2026-08-25 15:01:45 state docked
setstate ecovacs2mqtt 2026-08-25 14:27:29 station idle
setstate ecovacs2mqtt 2026-08-25 15:01:31 statsArea 3
setstate ecovacs2mqtt 2026-08-25 15:01:31 statsTime 60
setstate ecovacs2mqtt 2026-08-25 15:01:31 statsType auto
setstate ecovacs2mqtt 2026-08-25 13:30:54 status 1
setstate ecovacs2mqtt 2026-08-25 13:59:06 subscriptions ecovacs/+/charge ecovacs/+/clean ecovacs/+/cleanArea ecovacs/+/custom ecovacs/+/dock ecovacs/+/locate ecovacs/+/pause ecovacs/+/refresh ecovacs/+/resume ecovacs/+/setAdvancedMode ecovacs/+/setBorderSwitch ecovacs/+/setChildLock ecovacs/+/setCutDirection ecovacs/+/setFanSpeed ecovacs/+/setSafeProtect ecovacs/+/setTrueDetect ecovacs/+/setVolume ecovacs/+/setWaterAmount ecovacs/+/setWorkMode ecovacs/+/start ecovacs/+/stationAction ecovacs/+/stop ecovacs/_bridge/devices ecovacs/_bridge/discover ecovacs/_bridge/requestVerification ecovacs/_bridge/rooms ecovacs/_bridge/verifyCode
setstate ecovacs2mqtt 2026-08-25 13:30:54 supported true
setstate ecovacs2mqtt 2026-08-25 13:58:55 supportedDeviceCount 1
setstate ecovacs2mqtt 2026-08-25 13:30:56 sweepMode false
setstate ecovacs2mqtt 2026-08-25 15:00:30 totalStatsArea 4547
setstate ecovacs2mqtt 2026-08-25 15:00:30 totalStatsCleanings 271
setstate ecovacs2mqtt 2026-08-25 15:00:30 totalStatsTime 439200
setstate ecovacs2mqtt 2026-08-25 13:30:56 trueDetect true
setstate ecovacs2mqtt 2026-08-25 13:58:55 version 0.2.2
setstate ecovacs2mqtt 2026-08-25 13:30:56 voiceAssistantState true
setstate ecovacs2mqtt 2026-08-25 13:30:56 volumeMaximum 10
setstate ecovacs2mqtt 2026-08-25 13:30:56 volumeVolume 5
setstate ecovacs2mqtt 2026-08-25 13:30:56 waterCustomAmount 30
setstate ecovacs2mqtt 2026-08-25 14:49:15 workMode 1
Gerne stehe ich auch für Tests zur Verfügung, falls nötig.
Viele Grüße,
Peter