From 14f5be1b05d129ea249a37e655aff5c1ce861ddb Mon Sep 17 00:00:00 2001 From: ha-newbie <143764064+ha-newbie@users.noreply.github.com> Date: Sun, 26 Oct 2025 14:40:46 +0900 Subject: [PATCH 1/8] Add WASH_MOP constant to command module --- deebot_client/commands/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/deebot_client/commands/__init__.py b/deebot_client/commands/__init__.py index 4c2635bc3..a3fc21563 100644 --- a/deebot_client/commands/__init__.py +++ b/deebot_client/commands/__init__.py @@ -36,3 +36,4 @@ class StationAction(IntEnum): EMPTY_DUSTBIN = 1 DRY_MOP = 2 CLEAN_BASE = 3 + WASH_MOP = 4 From 78f7762668525e09c459676019c08b55764f04ef Mon Sep 17 00:00:00 2001 From: ha-newbie <143764064+ha-newbie@users.noreply.github.com> Date: Sun, 26 Oct 2025 14:41:45 +0900 Subject: [PATCH 2/8] Add fd60kt.py by copying 9eamof.py --- deebot_client/hardware/fd60kt.py | 296 +++++++++++++++++++++++++++++++ 1 file changed, 296 insertions(+) create mode 100644 deebot_client/hardware/fd60kt.py diff --git a/deebot_client/hardware/fd60kt.py b/deebot_client/hardware/fd60kt.py new file mode 100644 index 000000000..0a85bc26c --- /dev/null +++ b/deebot_client/hardware/fd60kt.py @@ -0,0 +1,296 @@ +"""Deebot DEEBOT T80 OMNI Capabilities.""" + +from __future__ import annotations + +from deebot_client.capabilities import ( + Capabilities, + CapabilityClean, + CapabilityCleanAction, + CapabilityCustomCommand, + CapabilityEvent, + CapabilityExecute, + CapabilityExecuteTypes, + CapabilityLifeSpan, + CapabilityMap, + CapabilitySet, + CapabilitySetEnable, + CapabilitySettings, + CapabilitySetTypes, + CapabilityStation, + CapabilityStats, + CapabilityWater, + DeviceType, +) +from deebot_client.commands import StationAction +from deebot_client.commands.json import station_action +from deebot_client.commands.json.advanced_mode import GetAdvancedMode, SetAdvancedMode +from deebot_client.commands.json.auto_empty import GetAutoEmpty, SetAutoEmpty +from deebot_client.commands.json.battery import GetBattery +from deebot_client.commands.json.carpet import ( + GetCarpetAutoFanBoost, + SetCarpetAutoFanBoost, +) +from deebot_client.commands.json.charge import Charge +from deebot_client.commands.json.charge_state import GetChargeState +from deebot_client.commands.json.child_lock import GetChildLock, SetChildLock +from deebot_client.commands.json.clean import ( + CleanAreaV2, + CleanV2, + GetCleanInfoV2, +) +from deebot_client.commands.json.clean_count import GetCleanCount, SetCleanCount +from deebot_client.commands.json.clean_logs import GetCleanLogs +from deebot_client.commands.json.clean_preference import ( + GetCleanPreference, + SetCleanPreference, +) +from deebot_client.commands.json.continuous_cleaning import ( + GetContinuousCleaning, + SetContinuousCleaning, +) +from deebot_client.commands.json.custom import CustomCommand +from deebot_client.commands.json.efficiency import GetEfficiencyMode, SetEfficiencyMode +from deebot_client.commands.json.error import GetError +from deebot_client.commands.json.fan_speed import GetFanSpeed, SetFanSpeed +from deebot_client.commands.json.life_span import GetLifeSpan, ResetLifeSpan +from deebot_client.commands.json.map import ( + GetCachedMapInfo, + GetMajorMap, + GetMapInfoV2, + GetMapSetV2, + GetMapTrace, + GetMinorMap, + SetMajorMap, +) +from deebot_client.commands.json.multimap_state import ( + GetMultimapState, + SetMultimapState, +) +from deebot_client.commands.json.network import GetNetInfo +from deebot_client.commands.json.ota import GetOta, SetOta +from deebot_client.commands.json.play_sound import PlaySound +from deebot_client.commands.json.pos import GetPos +from deebot_client.commands.json.relocation import SetRelocationState +from deebot_client.commands.json.station_state import GetStationState +from deebot_client.commands.json.stats import GetStats, GetTotalStats +from deebot_client.commands.json.sweep_mode import GetSweepMode, SetSweepMode +from deebot_client.commands.json.true_detect import GetTrueDetect, SetTrueDetect +from deebot_client.commands.json.voice_assistant_state import ( + GetVoiceAssistantState, + SetVoiceAssistantState, +) +from deebot_client.commands.json.volume import GetVolume, SetVolume +from deebot_client.commands.json.water_info import GetWaterInfo, SetWaterInfo +from deebot_client.commands.json.work_mode import GetWorkMode, SetWorkMode +from deebot_client.const import DataType +from deebot_client.events import ( + AdvancedModeEvent, + AvailabilityEvent, + BatteryEvent, + CachedMapInfoEvent, + CarpetAutoFanBoostEvent, + ChildLockEvent, + CleanCountEvent, + CleanLogEvent, + CleanPreferenceEvent, + ContinuousCleaningEvent, + CustomCommandEvent, + EfficiencyModeEvent, + ErrorEvent, + FanSpeedEvent, + FanSpeedLevel, + LifeSpan, + LifeSpanEvent, + MajorMapEvent, + MapChangedEvent, + MapTraceEvent, + MultimapStateEvent, + NetworkInfoEvent, + OtaEvent, + PositionsEvent, + ReportStatsEvent, + RoomsEvent, + StateEvent, + StationEvent, + StatsEvent, + SweepModeEvent, + TotalStatsEvent, + TrueDetectEvent, + VoiceAssistantStateEvent, + VolumeEvent, + WorkMode, + WorkModeEvent, + auto_empty, + water_info, +) +from deebot_client.events.auto_empty import AutoEmptyEvent +from deebot_client.events.efficiency_mode import EfficiencyMode +from deebot_client.models import StaticDeviceInfo + + +def get_device_info() -> StaticDeviceInfo: + """Get device info for this model.""" + return StaticDeviceInfo( + DataType.JSON, + Capabilities( + device_type=DeviceType.VACUUM, + availability=CapabilityEvent( + AvailabilityEvent, [GetBattery(is_available_check=True)] + ), + battery=CapabilityEvent(BatteryEvent, [GetBattery()]), + charge=CapabilityExecute(Charge), + clean=CapabilityClean( + action=CapabilityCleanAction(command=CleanV2, area=CleanAreaV2), + continuous=CapabilitySetEnable( + ContinuousCleaningEvent, + [GetContinuousCleaning()], + SetContinuousCleaning, + ), + count=CapabilitySet(CleanCountEvent, [GetCleanCount()], SetCleanCount), + log=CapabilityEvent(CleanLogEvent, [GetCleanLogs()]), + preference=CapabilitySetEnable( + CleanPreferenceEvent, [GetCleanPreference()], SetCleanPreference + ), + work_mode=CapabilitySetTypes( + event=WorkModeEvent, + get=[GetWorkMode()], + set=SetWorkMode, + types=( + WorkMode.MOP, + WorkMode.MOP_AFTER_VACUUM, + WorkMode.VACUUM, + WorkMode.VACUUM_AND_MOP, + ), + ), + ), + custom=CapabilityCustomCommand( + event=CustomCommandEvent, get=[], set=CustomCommand + ), + error=CapabilityEvent(ErrorEvent, [GetError()]), + fan_speed=CapabilitySetTypes( + event=FanSpeedEvent, + get=[GetFanSpeed()], + set=SetFanSpeed, + types=( + FanSpeedLevel.QUIET, + FanSpeedLevel.NORMAL, + FanSpeedLevel.MAX, + FanSpeedLevel.MAX_PLUS, + ), + ), + life_span=CapabilityLifeSpan( + types=( + LifeSpan.BRUSH, + LifeSpan.FILTER, + LifeSpan.HAND_FILTER, + LifeSpan.SIDE_BRUSH, + LifeSpan.UNIT_CARE, + LifeSpan.CLEANING_SOLUTION, + LifeSpan.SEWAGE_BOX, + ), + event=LifeSpanEvent, + get=[ + GetLifeSpan( + [ + LifeSpan.BRUSH, + LifeSpan.FILTER, + LifeSpan.HAND_FILTER, + LifeSpan.SIDE_BRUSH, + LifeSpan.CLEANING_SOLUTION, + LifeSpan.SEWAGE_BOX, + ] + ) + ], + reset=ResetLifeSpan, + ), + map=CapabilityMap( + cached_info=CapabilityEvent(CachedMapInfoEvent, [GetCachedMapInfo()]), + changed=CapabilityEvent(MapChangedEvent, []), + info=CapabilityExecute(GetMapInfoV2), + major=CapabilitySet(MajorMapEvent, [GetMajorMap()], SetMajorMap), + minor=CapabilityExecute(GetMinorMap), + multi_state=CapabilitySetEnable( + MultimapStateEvent, [GetMultimapState()], SetMultimapState + ), + position=CapabilityEvent(PositionsEvent, [GetPos()]), + relocation=CapabilityExecute(SetRelocationState), + rooms=CapabilityEvent(RoomsEvent, [GetCachedMapInfo()]), + set=CapabilityExecute(GetMapSetV2), + trace=CapabilityEvent(MapTraceEvent, [GetMapTrace()]), + ), + network=CapabilityEvent(NetworkInfoEvent, [GetNetInfo()]), + play_sound=CapabilityExecute(PlaySound), + settings=CapabilitySettings( + advanced_mode=CapabilitySetEnable( + AdvancedModeEvent, [GetAdvancedMode()], SetAdvancedMode + ), + carpet_auto_fan_boost=CapabilitySetEnable( + CarpetAutoFanBoostEvent, + [GetCarpetAutoFanBoost()], + SetCarpetAutoFanBoost, + ), + child_lock=CapabilitySetEnable( + ChildLockEvent, [GetChildLock()], SetChildLock + ), + efficiency_mode=CapabilitySetTypes( + event=EfficiencyModeEvent, + get=[GetEfficiencyMode()], + set=SetEfficiencyMode, + types=( + EfficiencyMode.ENERGY_EFFICIENT_MODE, + EfficiencyMode.STANDARD_MODE, + ), + ), + ota=CapabilitySetEnable(OtaEvent, [GetOta()], SetOta), + sweep_mode=CapabilitySetEnable( + SweepModeEvent, [GetSweepMode()], SetSweepMode + ), + true_detect=CapabilitySetEnable( + TrueDetectEvent, [GetTrueDetect()], SetTrueDetect + ), + voice_assistant=CapabilitySetEnable( + VoiceAssistantStateEvent, + [GetVoiceAssistantState()], + SetVoiceAssistantState, + ), + volume=CapabilitySet(VolumeEvent, [GetVolume()], SetVolume), + ), + state=CapabilityEvent(StateEvent, [GetChargeState(), GetCleanInfoV2()]), + station=CapabilityStation( + action=CapabilityExecuteTypes( + station_action.StationAction, types=(StationAction.EMPTY_DUSTBIN,) + ), + auto_empty=CapabilitySetTypes( + event=AutoEmptyEvent, + get=[GetAutoEmpty()], + set=SetAutoEmpty, + types=( + auto_empty.Frequency.AUTO, + auto_empty.Frequency.SMART, + ), + ), + state=CapabilityEvent(StationEvent, [GetStationState()]), + ), + stats=CapabilityStats( + clean=CapabilityEvent(StatsEvent, [GetStats()]), + report=CapabilityEvent(ReportStatsEvent, []), + total=CapabilityEvent(TotalStatsEvent, [GetTotalStats()]), + ), + water=CapabilityWater( + amount=CapabilitySetTypes( + event=water_info.WaterAmountEvent, + get=[GetWaterInfo()], + set=SetWaterInfo, + types=( + water_info.WaterAmount.LOW, + water_info.WaterAmount.MEDIUM, + water_info.WaterAmount.HIGH, + water_info.WaterAmount.ULTRAHIGH, + ), + ), + mop_attached=CapabilityEvent( + water_info.MopAttachedEvent, [GetWaterInfo()] + ), + ), + ), + ) From b2ebdd50c193b33f713b8ee4236bd26a13327392 Mon Sep 17 00:00:00 2001 From: ha-newbie <143764064+ha-newbie@users.noreply.github.com> Date: Sun, 26 Oct 2025 14:43:29 +0900 Subject: [PATCH 3/8] Modify fd60kt.py to match T50 OMNI --- deebot_client/hardware/fd60kt.py | 62 ++++++++++++++++---------------- 1 file changed, 32 insertions(+), 30 deletions(-) diff --git a/deebot_client/hardware/fd60kt.py b/deebot_client/hardware/fd60kt.py index 0a85bc26c..34b15cf09 100644 --- a/deebot_client/hardware/fd60kt.py +++ b/deebot_client/hardware/fd60kt.py @@ -1,4 +1,4 @@ -"""Deebot DEEBOT T80 OMNI Capabilities.""" +"""Deebot DEEBOT T50 OMNI Capabilities.""" from __future__ import annotations @@ -12,6 +12,7 @@ CapabilityExecuteTypes, CapabilityLifeSpan, CapabilityMap, + CapabilityNumber, CapabilitySet, CapabilitySetEnable, CapabilitySettings, @@ -23,7 +24,6 @@ ) from deebot_client.commands import StationAction from deebot_client.commands.json import station_action -from deebot_client.commands.json.advanced_mode import GetAdvancedMode, SetAdvancedMode from deebot_client.commands.json.auto_empty import GetAutoEmpty, SetAutoEmpty from deebot_client.commands.json.battery import GetBattery from deebot_client.commands.json.carpet import ( @@ -40,10 +40,6 @@ ) from deebot_client.commands.json.clean_count import GetCleanCount, SetCleanCount from deebot_client.commands.json.clean_logs import GetCleanLogs -from deebot_client.commands.json.clean_preference import ( - GetCleanPreference, - SetCleanPreference, -) from deebot_client.commands.json.continuous_cleaning import ( GetContinuousCleaning, SetContinuousCleaning, @@ -62,6 +58,10 @@ GetMinorMap, SetMajorMap, ) +from deebot_client.commands.json.mop_auto_wash_frequency import ( + GetMopAutoWashFrequency, + SetMopAutoWashFrequency, +) from deebot_client.commands.json.multimap_state import ( GetMultimapState, SetMultimapState, @@ -84,7 +84,6 @@ from deebot_client.commands.json.work_mode import GetWorkMode, SetWorkMode from deebot_client.const import DataType from deebot_client.events import ( - AdvancedModeEvent, AvailabilityEvent, BatteryEvent, CachedMapInfoEvent, @@ -92,7 +91,6 @@ ChildLockEvent, CleanCountEvent, CleanLogEvent, - CleanPreferenceEvent, ContinuousCleaningEvent, CustomCommandEvent, EfficiencyModeEvent, @@ -125,6 +123,7 @@ ) from deebot_client.events.auto_empty import AutoEmptyEvent from deebot_client.events.efficiency_mode import EfficiencyMode +from deebot_client.events.mop_auto_wash_frequency import MopAutoWashFrequencyEvent from deebot_client.models import StaticDeviceInfo @@ -148,9 +147,6 @@ def get_device_info() -> StaticDeviceInfo: ), count=CapabilitySet(CleanCountEvent, [GetCleanCount()], SetCleanCount), log=CapabilityEvent(CleanLogEvent, [GetCleanLogs()]), - preference=CapabilitySetEnable( - CleanPreferenceEvent, [GetCleanPreference()], SetCleanPreference - ), work_mode=CapabilitySetTypes( event=WorkModeEvent, get=[GetWorkMode()], @@ -180,24 +176,25 @@ def get_device_info() -> StaticDeviceInfo: ), life_span=CapabilityLifeSpan( types=( + LifeSpan.SIDE_BRUSH, LifeSpan.BRUSH, LifeSpan.FILTER, - LifeSpan.HAND_FILTER, - LifeSpan.SIDE_BRUSH, LifeSpan.UNIT_CARE, + LifeSpan.ROUND_MOP, + LifeSpan.DUST_BAG, LifeSpan.CLEANING_SOLUTION, - LifeSpan.SEWAGE_BOX, ), event=LifeSpanEvent, get=[ GetLifeSpan( [ + LifeSpan.SIDE_BRUSH, LifeSpan.BRUSH, LifeSpan.FILTER, - LifeSpan.HAND_FILTER, - LifeSpan.SIDE_BRUSH, + LifeSpan.UNIT_CARE, + LifeSpan.ROUND_MOP, + LifeSpan.DUST_BAG, LifeSpan.CLEANING_SOLUTION, - LifeSpan.SEWAGE_BOX, ] ) ], @@ -221,9 +218,6 @@ def get_device_info() -> StaticDeviceInfo: network=CapabilityEvent(NetworkInfoEvent, [GetNetInfo()]), play_sound=CapabilityExecute(PlaySound), settings=CapabilitySettings( - advanced_mode=CapabilitySetEnable( - AdvancedModeEvent, [GetAdvancedMode()], SetAdvancedMode - ), carpet_auto_fan_boost=CapabilitySetEnable( CarpetAutoFanBoostEvent, [GetCarpetAutoFanBoost()], @@ -241,6 +235,13 @@ def get_device_info() -> StaticDeviceInfo: EfficiencyMode.STANDARD_MODE, ), ), + mop_auto_wash_frequency=CapabilityNumber( + event=MopAutoWashFrequencyEvent, + get=[GetMopAutoWashFrequency()], + set=SetMopAutoWashFrequency, + min=0, + max=60, + ), ota=CapabilitySetEnable(OtaEvent, [GetOta()], SetOta), sweep_mode=CapabilitySetEnable( SweepModeEvent, [GetSweepMode()], SetSweepMode @@ -258,7 +259,12 @@ def get_device_info() -> StaticDeviceInfo: state=CapabilityEvent(StateEvent, [GetChargeState(), GetCleanInfoV2()]), station=CapabilityStation( action=CapabilityExecuteTypes( - station_action.StationAction, types=(StationAction.EMPTY_DUSTBIN,) + station_action.StationAction, + types=( + StationAction.EMPTY_DUSTBIN, + StationAction.DRY_MOP, + StationAction.WASH_MOP, + ), ), auto_empty=CapabilitySetTypes( event=AutoEmptyEvent, @@ -277,16 +283,12 @@ def get_device_info() -> StaticDeviceInfo: total=CapabilityEvent(TotalStatsEvent, [GetTotalStats()]), ), water=CapabilityWater( - amount=CapabilitySetTypes( - event=water_info.WaterAmountEvent, + amount=CapabilityNumber( + event=water_info.WaterCustomAmountEvent, get=[GetWaterInfo()], - set=SetWaterInfo, - types=( - water_info.WaterAmount.LOW, - water_info.WaterAmount.MEDIUM, - water_info.WaterAmount.HIGH, - water_info.WaterAmount.ULTRAHIGH, - ), + set=lambda custom_amount: SetWaterInfo(custom_amount=custom_amount), + min=0, + max=50, ), mop_attached=CapabilityEvent( water_info.MopAttachedEvent, [GetWaterInfo()] From 674b0661c86616dd7d7a34d45f1db79dcc503051 Mon Sep 17 00:00:00 2001 From: ha-newbie <143764064+ha-newbie@users.noreply.github.com> Date: Sun, 2 Nov 2025 22:36:32 +0900 Subject: [PATCH 4/8] =?UTF-8?q?fd60kt.py=20=E3=82=92=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deebot_client/hardware/fd60kt.py | 1 + 1 file changed, 1 insertion(+) diff --git a/deebot_client/hardware/fd60kt.py b/deebot_client/hardware/fd60kt.py index 34b15cf09..0918afa11 100644 --- a/deebot_client/hardware/fd60kt.py +++ b/deebot_client/hardware/fd60kt.py @@ -273,6 +273,7 @@ def get_device_info() -> StaticDeviceInfo: types=( auto_empty.Frequency.AUTO, auto_empty.Frequency.SMART, + auto_empty.Frequency.MANUAL, ), ), state=CapabilityEvent(StationEvent, [GetStationState()]), From 9459fba9f0fa38f59a69c9c1b2a8b80d9a149472 Mon Sep 17 00:00:00 2001 From: ha-newbie <143764064+ha-newbie@users.noreply.github.com> Date: Sun, 2 Nov 2025 22:37:24 +0900 Subject: [PATCH 5/8] =?UTF-8?q?auto=5Fempty.py=20=E3=82=92=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deebot_client/events/auto_empty.py | 1 + 1 file changed, 1 insertion(+) diff --git a/deebot_client/events/auto_empty.py b/deebot_client/events/auto_empty.py index b9936c302..7ef3171d5 100644 --- a/deebot_client/events/auto_empty.py +++ b/deebot_client/events/auto_empty.py @@ -19,6 +19,7 @@ class Frequency(StrEnum): MIN_25 = "25" AUTO = "auto" SMART = "smart" + MANUAL = "manual" @dataclass(frozen=True) From 30ccf42459ae07f425510e91b60fe5f1de8b627c Mon Sep 17 00:00:00 2001 From: ha-newbie <143764064+ha-newbie@users.noreply.github.com> Date: Sun, 2 Nov 2025 22:51:25 +0900 Subject: [PATCH 6/8] =?UTF-8?q?fd60kt.py=20=E3=82=92=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deebot_client/hardware/fd60kt.py | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/deebot_client/hardware/fd60kt.py b/deebot_client/hardware/fd60kt.py index 0918afa11..1e8bf52e8 100644 --- a/deebot_client/hardware/fd60kt.py +++ b/deebot_client/hardware/fd60kt.py @@ -45,7 +45,6 @@ SetContinuousCleaning, ) from deebot_client.commands.json.custom import CustomCommand -from deebot_client.commands.json.efficiency import GetEfficiencyMode, SetEfficiencyMode from deebot_client.commands.json.error import GetError from deebot_client.commands.json.fan_speed import GetFanSpeed, SetFanSpeed from deebot_client.commands.json.life_span import GetLifeSpan, ResetLifeSpan @@ -73,7 +72,6 @@ from deebot_client.commands.json.relocation import SetRelocationState from deebot_client.commands.json.station_state import GetStationState from deebot_client.commands.json.stats import GetStats, GetTotalStats -from deebot_client.commands.json.sweep_mode import GetSweepMode, SetSweepMode from deebot_client.commands.json.true_detect import GetTrueDetect, SetTrueDetect from deebot_client.commands.json.voice_assistant_state import ( GetVoiceAssistantState, @@ -93,7 +91,6 @@ CleanLogEvent, ContinuousCleaningEvent, CustomCommandEvent, - EfficiencyModeEvent, ErrorEvent, FanSpeedEvent, FanSpeedLevel, @@ -111,7 +108,6 @@ StateEvent, StationEvent, StatsEvent, - SweepModeEvent, TotalStatsEvent, TrueDetectEvent, VoiceAssistantStateEvent, @@ -122,7 +118,6 @@ water_info, ) from deebot_client.events.auto_empty import AutoEmptyEvent -from deebot_client.events.efficiency_mode import EfficiencyMode from deebot_client.events.mop_auto_wash_frequency import MopAutoWashFrequencyEvent from deebot_client.models import StaticDeviceInfo @@ -226,15 +221,6 @@ def get_device_info() -> StaticDeviceInfo: child_lock=CapabilitySetEnable( ChildLockEvent, [GetChildLock()], SetChildLock ), - efficiency_mode=CapabilitySetTypes( - event=EfficiencyModeEvent, - get=[GetEfficiencyMode()], - set=SetEfficiencyMode, - types=( - EfficiencyMode.ENERGY_EFFICIENT_MODE, - EfficiencyMode.STANDARD_MODE, - ), - ), mop_auto_wash_frequency=CapabilityNumber( event=MopAutoWashFrequencyEvent, get=[GetMopAutoWashFrequency()], @@ -243,9 +229,6 @@ def get_device_info() -> StaticDeviceInfo: max=60, ), ota=CapabilitySetEnable(OtaEvent, [GetOta()], SetOta), - sweep_mode=CapabilitySetEnable( - SweepModeEvent, [GetSweepMode()], SetSweepMode - ), true_detect=CapabilitySetEnable( TrueDetectEvent, [GetTrueDetect()], SetTrueDetect ), From 9dd0449c66dcb49c77576f7d3b02a4cf1fff660a Mon Sep 17 00:00:00 2001 From: Robert Resch Date: Sun, 2 Nov 2025 16:59:19 +0100 Subject: [PATCH 7/8] Update deebot_client/hardware/fd60kt.py --- deebot_client/hardware/fd60kt.py | 1 - 1 file changed, 1 deletion(-) diff --git a/deebot_client/hardware/fd60kt.py b/deebot_client/hardware/fd60kt.py index 1e8bf52e8..ef18b84bd 100644 --- a/deebot_client/hardware/fd60kt.py +++ b/deebot_client/hardware/fd60kt.py @@ -256,7 +256,6 @@ def get_device_info() -> StaticDeviceInfo: types=( auto_empty.Frequency.AUTO, auto_empty.Frequency.SMART, - auto_empty.Frequency.MANUAL, ), ), state=CapabilityEvent(StationEvent, [GetStationState()]), From f328142f13dd8cddd8619144c5d83e3f05a2247a Mon Sep 17 00:00:00 2001 From: Robert Resch Date: Sun, 2 Nov 2025 16:59:25 +0100 Subject: [PATCH 8/8] Update deebot_client/events/auto_empty.py --- deebot_client/events/auto_empty.py | 1 - 1 file changed, 1 deletion(-) diff --git a/deebot_client/events/auto_empty.py b/deebot_client/events/auto_empty.py index 7ef3171d5..b9936c302 100644 --- a/deebot_client/events/auto_empty.py +++ b/deebot_client/events/auto_empty.py @@ -19,7 +19,6 @@ class Frequency(StrEnum): MIN_25 = "25" AUTO = "auto" SMART = "smart" - MANUAL = "manual" @dataclass(frozen=True)