Local-first Home Assistant integration for Yarbo — the multi-head outdoor robot platform (snow blower, lawn mower, leaf blower, SAM patrol). Connects via the robot's on-board MQTT broker. No cloud account required.
Status: Pre-release scaffold. See the roadmap for implementation milestones.
⚠️ Disclaimer: This is a community-driven integration for Home Assistant and is not affiliated with, endorsed by, or supported by Yarbo Inc. or any of its subsidiaries.
- Auto-discovery — Detects the Yarbo base station via DHCP MAC OUI
C8:FE:0F:*; no IP entry required - Push telemetry —
DeviceMSGstreamed at ~1–2 Hz; entities update in real time - Multi-head aware — Head-specific entities show as unavailable when the wrong module is attached
- Full controls — Beep, pause, resume, stop, return to dock, start plan, light control
- 7-channel LED — Individual control of head light, left/right white, body/tail red LEDs
- GPS device tracker — Parses GNGGA NMEA from RTK; robot appears on your HA map
- Automation blueprints — Rain pause, snow deployment, low battery alert, job complete notification
- Diagnostics — One-click download; PII redacted (GPS, serial numbers)
- HACS → Integrations → ⋮ → Custom repositories
- Add
https://github.com/markus-lassfolk/home-assistant-yarbo→ category Integration - Search Yarbo → Download
- Restart Home Assistant
- A) Wait for auto discovery to find your device. 1-5 minutes. OR
- B) Settings → Devices & Services → Add Integration → Yarbo
Copy custom_components/yarbo/ to your HA config/custom_components/yarbo/ and restart.
This integration depends on python-yarbo. Home Assistant installs dependencies from PyPI only. If python-yarbo is not yet published on PyPI, install it manually before adding the integration:
-
SSH or Terminal & SSH add-on: On the host where Home Assistant runs, use the same Python environment HA uses (e.g. the venv inside the HA install, or the container’s pip). Install the dependency from the GitHub repo (until it is published on PyPI):
source /path/to/homeassistant/bin/activate # if using a venv pip install "git+https://github.com/markus-lassfolk/python-yarbo.git@main#egg=python-yarbo"
Use
@developinstead of@mainif you need the development branch. -
Restart Home Assistant, then add the Yarbo integration again.
Long-term fix: Publishing python-yarbo to PyPI (e.g. as python-yarbo) will allow HA to install it automatically; no manual step needed.
The integration supports two setup paths:
Auto-discovery (recommended): If your Yarbo base station is on the same LAN as Home Assistant, it will be discovered automatically when its MAC (C8:FE:0F:*) appears on DHCP. Accept the notification in HA.
Manual: Go to Settings → Devices & Services → Add Integration → Yarbo and enter the base station IP.
The config flow connects to MQTT port 1883, waits for telemetry, extracts the robot serial number, and creates the device.
| Entity | Platform | Description |
|---|---|---|
sensor.{name}_battery |
sensor | Battery % |
sensor.{name}_activity |
sensor | Human-readable status (Charging / Working / Paused…) |
sensor.{name}_head_type |
sensor | Attached head (Snow Blower / Lawn Mower…) |
binary_sensor.{name}_charging |
binary_sensor | Charging state |
binary_sensor.{name}_problem |
binary_sensor | Error present |
button.{name}_beep |
button | Trigger buzzer |
button.{name}_return_to_dock |
button | Send to dock |
button.{name}_pause |
button | Pause current plan |
button.{name}_resume |
button | Resume plan |
button.{name}_stop |
button | Stop |
light.{name}_lights |
light | All-lights group (7 channels) |
event.{name}_events |
event | Job lifecycle events |
Extended (disabled by default) — see docs/entities.md
RTK status, heading, chute angle, rain sensor, satellite count, charging power, 7 individual LED channels, chute velocity, buzzer switch, planning binary sensor, emergency stop.
| Entity | Available when |
|---|---|
lawn_mower.{name} |
Lawn Mower / Pro head |
number.{name}_chute_velocity |
Snow Blower head |
switch.{name}_blower |
Snow Blower head |
number.{name}_roller_speed |
Leaf Blower head |
device_tracker.{name} |
Any head (RTK fix) |
| Service | Description | Milestone |
|---|---|---|
yarbo.send_command |
Send any raw MQTT command | v0.1.0 |
yarbo.pause |
Pause current job | v0.2.0 |
yarbo.resume |
Resume paused job | v0.2.0 |
yarbo.return_to_dock |
Return to dock | v0.2.0 |
yarbo.set_lights |
Set all 7 LED channels | v0.2.0 |
yarbo.set_chute_velocity |
Snow chute control | v0.2.0 |
yarbo.start_plan |
Start a saved work plan | v0.3.0 |
Four automation blueprints ship with the integration (available in blueprints/automation/yarbo/):
- Rain Pause — Pause and dock on rain, resume after dry delay
- Snow Deployment — Start snow clearing plan when snowfall threshold is exceeded
- Low Battery Alert — Notify when battery drops below threshold
- Job Complete — Notify when a work plan finishes
| Doc | Contents |
|---|---|
| Architecture | Design principles, data flow, coordinator |
| Config Flow | Setup steps, DHCP discovery, options |
| Entities | Full entity reference with MQTT sources |
| Services | Service definitions and examples |
| Events | HA event bus events and triggers |
| Multi-Head | Head types, availability gating |
| Blueprints | Automation blueprint reference |
| MQTT Protocol | Topic reference, encoding |
| Security | Hardening, credential storage |
| Development | Contributing, testing, linting |
| Roadmap | Milestone plan |
The Yarbo base station MQTT broker (port 1883) is unauthenticated. Anyone on your LAN can read telemetry and send commands. Place the base station on an isolated IoT VLAN and restrict MQTT access to your HA host. See docs/security.md.
See CONTRIBUTING.md. Issues and PRs welcome — please open an issue first for major changes.
MIT © Markus Lassfolk