A Eufy RoboVac integration for Home Assistant that includes a Config Flow to add your RoboVac(s) and the local key and ID required. All you need to do is enter your Eufy app credentials and the Config Flow will look up the details for you. After the initial config use the configuration button on the Integration to enter the RoboVac IP address when prompted.
This work has evolved from the original work by Richard Mitchell and the countless others who have contributed over the last couple of years. It also builds on the work done by Andre Borie to get the required local ID and key.
This is yet another Eufy fork, this time based on work from CodeFoodPixels.
- Make sure your Home Assistant Core is up to date
- Remove any previous Eufy or RoboVac installation including entries in the configuration.yaml
- In HACS add this repo as an integration additional repository.
- Then install it.
- Restart Home Assistant
- Go to the Integrations Page and Click +Add Integration button
- Search for Eufy RoboVac and select it
- Enter your Eufy username and password (The ones you use to login to the add with) and submit
- If you've done it correctly you should get a success dialog and option to enter an Area for each RoboVac you have
- Click Finish
- On the Integrations Screen Locate your Eufy RoboVac card and click the configure button
- Select the Radio button beside the Vacuum name and type its IP address in the box and press Submit (You need to repeat steps 9 and 10 for each RoboVac you have)
- Enjoy
Please note: You may have to get a new version of the access key for your vacuum from time to time if Eufy change it. Worst case you have to Delete the integration and re add it to get the new key.
The integration includes debug logging statements that can provide valuable insights into component operations. These logs can be accessed through the Home Assistant System Log.
For real-time log monitoring, consider using the Log Viewer Add-on available in the Home Assistant store.
To enable detailed debug logging, add the following configuration to your configuration.yaml file:
logger:
default: warning
logs:
custom_components.robovac.vacuum: debug
custom_components.robovac.tuyalocalapi: debug
custom_components.robovac.robovac: debugBefore setting up the integration, you can validate if your RoboVac model is supported by using the included CLI tool:
python -m custom_components.robovac.model_validator_cli <YOUR_MODEL_CODE>For example:
python -m custom_components.robovac.model_validator_cli T2278To see a full list of all supported models, use the --list flag:
python -m custom_components.robovac.model_validator_cli --listThis integration follows best practices for code quality and maintainability:
- Case-Insensitive Matching: Device responses are matched case-insensitively, handling variations in capitalization automatically.
- Logging Strategy: Debug logs provide diagnostic information for troubleshooting, while warnings are reserved for actual issues.
- Type Hints: Full type annotations throughout the codebase for improved IDE support and type checking.
- Test Coverage: Dedicated tests for each vacuum model with full coverage.
# Run all tests
task test
# Run specific test file
pytest tests/test_vacuum/test_t2251_command_mappings.py -v
# Check code style
task lint
# Verify type hints
task type-checkAll vacuum models follow consistent conventions for command mappings:
- Keys: Lowercase snake_case (e.g.,
"auto","small_room") - Values: PascalCase (e.g.,
"Auto","SmallRoom") - Matching: Device responses are matched case-insensitively
Example from T2250.py:
RobovacCommand.MODE: {
"code": 5,
"values": {
"auto": "Auto",
"small_room": "SmallRoom",
"spot": "Spot",
"edge": "Edge",
"nosweep": "Nosweep",
},
},