- Fix navigation service schema #223
- Adjust vacuum state to HA v2025.1 standard and support docked, cleaning, returning (cleaning + pickup mode) and error
- Replace vacuum STOP service with PAUSE service
- Refactor service declaration to use HA services instead of local
- Change interval of calling API to once an hour (instead of a minute)
- Change interval of calling publishing websocket message to every 5 minutes (instead of 30 seconds)
- Add status of connectivity - Expired Token to reset all tokens once HTTP Error 401 is being returned by the API
- Remove duplicate names of constants and duplicate storage of parameters
- Validate AWS token is being generated as valid base64 token instead retry mechanism of get token API (another deduction of calls to API from 5 to single)
- Align test API to the same standard of configuration storage of HA
- Clean entity creation / update log (no actions within logged data)
-
Optimized login request and store tokens to avoid abuse of the login API
#221 - Thousands of requests Maytronics login API per user
HA #117751 - Block older versions of custom integration mydolphin_plus since they cause crashes
- Add email validation on setup and every startup
- Add reset account password flow from setup or configure (when integration already connected but OTP is required)
- Refactor new client initialization process to non-blocking call
- Improved log messages of status changes
- Removed vacuum actions
- Turn on - not supported
- Turn off - not supported
- Pause - acts as stop, calls stop, no need for duplicate functionality
- Toggle - Non turn on / off, no need
- Clean unused constants
- Refactor calculated status
- Move to dedicated class
- Adjust tests
- Remove on state, instead introduce idle state, off state remain
Power Supply State | Robot State | Calculated State |
---|---|---|
error | * | error |
* | fault | error |
holdDelay | notConnected, programming, init. scanning, finished | holddelay |
holdWeekly | notConnected, programming, init. scanning, finished | holdweekly |
on | init | init |
on | programming, scanning | cleaning |
programming | notConnected, init, scanning | cleaning |
programming | programming | programming |
programming | finished | off |
off | * (but fault) | off |
Unmatched matching, will be treated as off.
- Remove startup blocking call
- Improve reconnect process (cool-down between attempts)
- Handle timeouts as managed failure instead of general failure
- Ignore update request when the connection is not established
- Improved log messages of status changes
- Fix reset configuration on integration unload (HA restart)
- Fix support for temperature sensor only for M700
- Fix "detected blocking call to open inside the event loop by custom integration" error
- Fix reconnect process
- Fix threadsafe warning log messages
- Fix color more error log messages
- Remove typo of args in AWS client message handling
- Remove typo of args in AWS client message handling
- Add threadsafe handling for set status
- Add safe block for AWS client termination process
- Fix color mode warning on startup
- Fix light support modes warning
- Fix StrEnum warning
- Add thread safe handling for callbacks from AWS IoT client
- Remove sleep between terminating websocket connection and creating new one
- Fix IOT Broker disconnect
- Update manifest requirements to use only AWS IoT Device SDK v2
- Fix parameter of callback to the right convention
- Fix AWS IoT MQTT publish message validation and QoS
- Change clean_session parameter to start a new session on every attempt to connect
- Set the AWS Client ID to the entry ID instead of randomize on every attempt to connect
- Set message being sent while publishing empty message to empty JSON instead of empty string
- Switch publish to fully async implementation
- Upgrade AWS IoT Device SDK to v2
Minimum HA Version: 2024.1.0b0
- Set minimum HA version for component to 2024.1.0b0
Minimum HA Version: 2024.1.0
- Adjust code to HA 2024.1.0
- Redact sensitive information from diagnostic file
- Fix error while trying to parse AWS message
- Fix dynamic reporting into AWS Client data
- Fix reset data of robot type, is busy, turn on count and timezone reporting when message of pwsState doesn't contain data
- Reconnect when API returns 401 or 403 error code
- Improve AWS client connection recovery process (unsubscribe topics and disconnect before trying to connect again)
- Refactor password encryption flow
- Refactor integration loading (will be loaded only after HA is loaded, re-load will be performed immediately)
- Add to integration unload call to unsubscribe AWS client topics
- Integration setup
- Add support for edit integration details
- Add title to the form (Add / Edit), will set the integration name
- Breaking change: Renamed sensor of
Main Unit Status
toPower Supply Status
- Support for defining entities according to robot family (All, M600, M700)
- Add
Temperature
sensor for M700 - Add
Robot Error
andPower Supply Error
sensors- Presents error only when related to latest cycle (if error is available in data and not related to latest, treat as no-error)
- Fires event
mydolphin_plus_error
- Add feature to translation tool to complete gaps of missing translations with default values surrounded by asterisks (*)
- Breaking Change: Schedules removed (Sensors and services)
- Add clean mode number component to set cycle time (minutes) per clean mode, defaults:
- Regular (all): 120
- Fast mode (fast): 60
- Floor only (floor): 120
- Water line (water): 120
- Ultra clean (ultra): 120
- Pickup (pickup): 5
- Store clean mode cycle time in configuration file (per integration)
- Starting clean uses clean cycle time configuration
- Turn on / Start actions will start according to fan speed, default if not set: Regular (all)
- Fix actions (functionality, translations and attach to relevant services)
- Turn off
- Stop
- Pickup (return to dock / home)
- Set fan mode (change clean mode)
- Navigate (integration service)
- Stop navigation (integration service)
- Improve API test util
- Removed schedule delay / daily services (all functionality of robot available from integration, please use HA automation)
- Fix binary sensor loading
- Fix support for entities names
- Set default robot name when empty to "MyDolphin Plus"
- Italian translation by @tigers75
- Asynchronous device loading
- Add support to translate names of all components
- Fix parameters for read temperature request
Breaking Change
This version changes the approach of extracting encryption key, If the following error message available in log, please follow its instructions:
ERROR (MainThread) [custom_components.mydolphin_plus.managers.config_manager] Invalid encryption key, Please follow instructions in https://github.com/sh00t2kill/dolphin-robot#invalid-token
Changes:
- Fix unknown error while setting up integration
- Jumping version
- Fix integration setup process
- Fix integration setup process
- Refactor code to support HA coordinator
- Improve reconnection when AWS Broker gets disconnected
- Remove integration options (Edit configuration)
- Improve diagnostic data
- New components
- Sensor: Clean Mode
- Sensor: Cycle Count
- Sensor: Main Unit Status
- Sensor: Robot Status
- Sensor: Robot Type
- Sensor: RSSI
- Sensor: Network Name
- Sensor: Status (Calculated Status)
- Number: LED Intensity
- Support translation for
- Vacuum: Fan Speed
- Sensor: Filter Status
- Sensor: Robot Status
- Sensor: Main Unit Status
- Sensor: Clean Mode
- Sensor: Status
- Select: LED Mode
- Fix error upon restart caused by attempt to handle message from AWS MQTT Broker during restart of HA
- Fix Cycle Time sensor to represent minutes of the current program
- Fix Cycle Time Left sensor to represent seconds left for the current program to be completed
- Remove debugging API
- Add diagnostics support (Settings -> Devices & Services -> MyDolphin Plus -> 3 dots menu -> Download diagnostics)
- Fix LED Mode select values
- Add AWS Broker disconnection recovery process
- Collect the Motor Unit Serial Number from API instead of try to calculate it
- Fix Filter Bag sensor
- Core fix: wrongfully reported logs of entities getting updated when no update perform
- Replaced
store debug data
switch and the feature of storing debug data to/config/.storage
with debug API
Endpoints
Endpoint Name | Method | Description |
---|---|---|
/api/mydolphin_plus/list | GET | List all the endpoints available (supporting multiple integrations), available once for integration |
/api/mydolphin_plus/{ENTRY_ID}/api | GET | JSON of all raw data from the MyDolphin Plus API, per integration |
/api/mydolphin_plus/{ENTRY_ID}/ws | GET | JSON of all raw data from the MyDolphin Plus WebSocket, per integration |
Authentication: Requires long-living token from HA
- Core alignment
- Constants cleanup
- Add retry mechanism for AWS token encryption process
- Fix get token API (API changed and new one requires encryption of data) #76
- Add generate AWS token test file
- Store encrypted data within config file to avoid re-generating the file on every startup
- Fix deleting components when being removed, wrong parameter was sent to be deleted
- Update
core
to latest - Separate API and WS to different classes
- Separate timers of update entities and data
- Update time remaining value
- IOT Class (
iot_class
) changed tocloud_push
- Removed time from cleaning mode select HA component (select, translations and services)
- Major refactor of HA Manager, Entity Manager and API (code cleanup)
- AWS IOT Broker works with asynchronous operations
- Publish all messages with QOS=1 (At least once)
- Add AWS Broker status binary sensor
- Override Time Left to 0 when robot is not cleaning
- Send explicit OFF command when toggling robot to off
- Vacuum state is being calculated from both states of head unit and the robot
- Add vacuum entity, replacing:
- Cleaning mode select
- Connection binary sensor
- Power switch
- All services
- Add locate to vacuum
- Major refactor to
Core
- all components are now part of the
Core
- Implementation should be done only in API, HA Manager and Configuration Manager
- all components are now part of the
- Added
init
to vacuum state to show something is happening when a cycle is started - Add {Robot Name} Store Debug Data switch - allows to set whether to store API and WebSocket the latest data for debugging
- Separate API / WS classes
- Separate timers for API / WS and Entities update
- Fix core issue while deleting entities
- Fix initialization order of API
- Fix cycle time left sensor - didn't take new vacuum states into account
- Fix storage API in case file doesn't exist
- Fix initialization order of API
- Removed unused files and code
- Core protect unsupported domains
- IOT Class (
iot_class
) changed tocloud_push
-
Add vacuum start,stop,locate,pause service calls
start
is equivalent toturn_on
(ie start a cleaning cycle)stop
andpause
are equivalent toturn_off
(ie stop a cleaning cycle)- locate turns the LED on for 10 seconds and off again
-
Major refactor to
Core
- all components are now part of the
Core
- Implementation should be done only in API, HA Manager and Configuration Manager
- all components are now part of the
-
Remapped vacuum status for each action - turn on, turn off, toggle, start, stop, pause
- Major refactor of HA Manager, Entity Manager and API (code cleanup)
- AWS IOT Broker works with asynchronous operations
- Publish all messages with QOS=1 (At least once)
- Add AWS Broker status binary sensor
- Override Time Left to 0 when robot is not cleaning
- Send explicit OFF command when toggling robot to off
- Vacuum state is being calculated from both states of head unit and the robot
- Add vacuum entity, replacing:
- Cleaning mode select
- Connection binary sensor
- Power switch
- All services
- Removed time from cleaning mode select HA component (select, translations and services)
- Moved the off_states of switch to constants
- Add a list of relevant states that also determine if a robot is not actively cleaning
- Added MyDolphin Plus to the standard HACS repo
- Cycle left time sensor: Add attribute of expected end time
- API: Add logs for server version, time and diff (compared to local time)
- API: change AWS connectivity request parameter of now, from UTC to local time
- API: Add connection validation on each step of the initialization process (for better debugging)
- Changed LED
switch
tolight
component
- Update the HA when
$aws/things/SERIAL/shadow/update/accepted
event received - Fix
select
andswitch
state extraction - Implement and test the following actions:
- Power on / off
- Led on / off
- Lef mode
- Cleaning mode
- HA is working with all components as READONLY (action not tested yet)
- Update todo in README
- Update
service.yaml
- On load call topic
$aws/things/SERIAL/shadow/get
to load all details, this simulates loading the mobile app - Add
get_accept.jsonc
file example file with all data being collected as part ofapi.initialize
orapi.async_update
from MQTT - Changed sensor
Connection Type
to binary_sensor ofConnection
- Removed remote entity, instead exposed 2 additional services
mydolphin_plus.drive
- Manually drive the robotmydolphin_plus.pickup
- Pickup
- Loading correct data for:
- Binary Sensors: Status, Connection, Filter Bag Status, Delayed Schedule, Daily Schedule (Per day)
- Select: Cleaning Mode, Led Mode
- Sensor: Cleaning Time, Cleaning Time Left
- Switch: Power, Led Enabled
- Create stub functions in MyDolphinPlusAPI and its proxy methods in MyDolphinPlusHomeAssistantManager
- Add HA components (More details in README)
- Binary Sensors: Status, Filter Bag Status, Delayed Schedule, Daily Schedule (Per day)
- Remote
- Select: Cleaning Mode, Led Mode
- Sensor: Connection Type, Cleaning Time, Cleaning Time Left
- Switch: Power, Led Enabled
Initial changes - functionality changes, refactor and restructuring of based code to match needs for HA custom component
Functionality:
- Add additional API call to retrieve robot details from
api/serialnumbers/getrobotdetailsbymusn
- Subscribe to following MQTT topic to get all details from device
- $aws/things/{}/shadow/get/#
- $aws/things/{}/shadow/update/#
- Maytronics/{}/main
Refactor / Restructure:
- Add boilerplate of HA custom component (based on Shinobi Video NVR)
- Add pre-commit
- Switch HTTP requests to async by changing all
requests
toaiohttp
- Cleanup string builders to more efficient approach
- Move constants to const file
- Move certificate
AmazonRootCA.pem
to API directory - Use
logging
component for logging to console instead ofprint
- Update test file to call
MyDolphinPlusAPI
that will be used by HA - Add testing environment variables
Environment Variable | Type | Default | Description |
---|---|---|---|
TEST_USERNANE | String | - | Username used for MyDolphin Plus |
TEST_PASSWORD | String | - | Password used for MyDolphin Plus |
DEBUG | Boolean | False | Setting to True will present DEBUG log level message while testing the code, False will set the minimum log level to INFO |
TODO: