-
Notifications
You must be signed in to change notification settings - Fork 0
Error Codes & States
This page provides a comprehensive reference for mower firmware states, hardware fault codes, API error suffixes, and composite HTTP patterns. The integration uses an O(1) lookup engine to convert raw numeric/string codes into readable diagnostics and Home Assistant entity attributes.
These are returned by GET /api/v1/alms/{alm}/state and mapped to UI-friendly names and Home Assistant activities.
| Code | Name | Display |
|---|---|---|
| 257 | IN_DOCK_CHARGING |
Charging |
| 258 | IN_DOCK_DOCKED |
Docked |
| 259 | IN_DOCK_SOFTWARE_UPDATE |
Software update |
| 260 | IN_DOCK_CHARGING2 |
Charging |
| 261 | IN_DOCK_DOCKED2 |
Docked |
| 262 | IN_DOCK_LOADING_MAP |
Docked β loading map |
| 263 | IN_DOCK_SAVING_MAP |
Docked β saving map |
| 266 | IN_DOCK_LEAVING_DOCK |
Leaving dock |
| Code | Name | Display |
|---|---|---|
| 512 | IN_LAWN_LEAVING_DOCK |
Leaving dock |
| 513 | IN_LAWN_MOWING |
Mowing |
| 514 | IN_LAWN_RELOCALISING |
Relocalising |
| 515 | IN_LAWN_LOADING_MAP |
Loading map |
| 516 | IN_LAWN_MAPPING |
Learning lawn |
| 517 | IN_LAWN_PAUSED |
Paused |
| 518 | IN_LAWN_BORDER_CUT |
Border cut |
| 519 | IN_LAWN_IDLE |
Idle in lawn |
| 520 | IN_LAWN_MAPPING_PAUSED |
Learning lawn (paused) |
| 521 | IN_LAWN_BORDER_CUTTING |
Border cutting |
| 522 | IN_LAWN_UNUSED |
Border cutting |
| 523 | IN_LAWN_SPOT_MOWING |
Spot mowing |
| 524 | IN_LAWN_RANDOM_MOWING |
Random mowing |
| 525 | IN_LAWN_SPOT_MOWING_COMPLETE |
Spot mowing complete |
| 526 | IN_LAWN_RANDOM_MOWING_COMPLETE |
Random mowing complete |
| Code | Name | Display |
|---|---|---|
| 768 | RET_DOCK |
Returning to dock |
| 769 | RET_DOCK_HMI |
Returning to dock |
| 770 | RET_DOCK_BS |
Returning to dock |
| 771 | RET_DOCK_BATTERY_LOW |
Returning to dock β battery low |
| 772 | RET_DOCK_CALENDAR |
Returning to dock β calendar |
| 773 | RET_DOCK_BATTERY_TEMP |
Returning to dock β battery temp |
| 774 | RET_DOCK_APP |
Returning to dock |
| 775 | RET_DOCK_GARDEN_COMPLETE |
Returning to dock β lawn complete |
| 776 | RET_DOCK_RELOCALISING |
Returning to dock β relocalising |
| Code | Name | Display |
|---|---|---|
| 1025 | SERVICE_DIAGNOSTIC_MODE |
Diagnostic mode |
| 1026 | SERVICE_EOL_MODE |
EOL mode |
| 1027 | SERVICE_REQUESTING_STATUS |
Getting status |
| 1281 | SW_UPDATE_MODE |
Firmware update |
| 1537 | LOW_POWER_MODE |
Low power mode |
| 1792 | LEAVING_DOCK |
Leaving dock |
| Code | Name | Display |
|---|---|---|
| 0 | GETTING_STATUS |
Getting status |
| 1 | OFFLINE |
Offline |
| 2 | UNPAIRED |
No mower paired |
| 3 | NOT_MAPPED |
Mower not mapped |
| 4 | NO_PIN |
PIN not set |
| 5 | DISABLED |
Mower disabled |
| 64513 | WAKING_UP_INDEGO |
Getting status |
| 69420 | SYNTHETIC_COMMAND_SENT |
Command sent |
These appear in the error field of AlmStatusResponseBody and in alerts (error_code string).
| Code | Description | Severity |
|---|---|---|
| 0 | No error | INFO |
| 40β70 | Internal system errors | ERROR |
| 100β220 | Wheel / motor / sensor errors | ERROR |
| 149β194 | Perimeter wire errors | WARNING |
| 216 | Drive error | ERROR |
| 700β799 | Navigation / stuck errors | WARNING |
| 800β805 | Communication errors (e.g., 802 = WiFi lost) | ERROR |
| 900β999 | Firmware / software errors | ERROR |
| 1000β1156 | Battery / system errors | ERROR |
Refer to the integration source error_codes.py for the full list (50+ codes).
Returned in ApiErrorResponseBody.error on HTTP 500 responses. Format: {endpoint_prefix}{http_status_code}{suffix}.
| Suffix | Name | Description |
|---|---|---|
_1 |
GENERAL_CHECKSUM_FRAME |
Checksum frame error |
_2 |
GENERAL_NOT_SUPPORTED_ID |
ID not supported |
_3 |
GENERAL_INVALID_COMMAND_LENGTH |
Invalid command length |
_5 |
GENERAL_ALM_DISABLED |
ALM disabled |
_6 |
GENERAL_SOFTWARE_UPDATE |
Software update in progress |
_8 |
GENERAL_INVALID_ITEM_IDENTIFIER |
Invalid item identifier |
_9 |
GENERAL_INVALID_DATA_VALUE |
Invalid data value |
| Suffix | Name | Description |
|---|---|---|
_12288 |
MOW_BATT_NOT_OK |
Battery not OK / low temperature |
_12289 |
MOW_UNKNOWN_GARDEN |
Unknown garden β not mapped |
_12290 |
MOW_PIN_ERROR |
PIN error β follow display instructions |
_12291 |
MOW_GOING_HOME |
Mower returning to dock |
_12292 |
MOW_PIN_NOT_SET |
PIN not set β unable to mow |
_12293 |
MOW_MANUAL_INTERVENTION |
Manual intervention required |
_12543 |
MOW_OTHER |
Other mow error |
| Suffix | Name | Description |
|---|---|---|
_12544 |
DOCK_ALREADY_DOCKED |
Mower already docked |
_12545 |
DOCK_GARDEN_ERROR |
Garden error β follow instructions |
_12546 |
DOCK_MOWER_LEARNING |
Mower is learning the lawn |
_12547 |
DOCK_UNKNOWN_GARDEN |
Unknown garden |
| Suffix | Name | Description |
|---|---|---|
_12800 |
PAUSE_MOWER_NOT_MOWING |
Cannot pause β mower not mowing |
_12801 |
PAUSE_MOWER_LEARNING |
Cannot pause β mower learning lawn |
_12802 |
PAUSE_LOW_BATTERY |
Cannot pause β battery low |
| Suffix | Name | Description |
|---|---|---|
_10752 |
GET_MAP_NOT_AVAILABLE |
Map not available |
_10497 |
MAP_BATTERY_NOT_OK |
Battery not OK |
_10498 |
MAP_NOT_IN_DOCK |
Mower not in dock β unable to map |
_10499 |
MAP_ALREADY_EXISTS |
Map already exists |
_10500 |
MAP_PIN_ERROR |
PIN error β unable to map |
_10502 |
MAP_PIN_NOT_SET |
PIN not set β unable to map |
| Suffix | Name | Description |
|---|---|---|
_16896 |
PIN_NOT_IN_DOCK |
Mower not in dock β cannot change PIN |
_17152 |
AUTOLOCK_INVALID_VALUE |
Invalid autolock value |
_17153 |
AUTOLOCK_CANNOT_BE_CHANGED |
Already locked/unlocked |
The integration maps patterns like {endpoint_index}_{http_code}[_{suffix}] into user messages.
| Pattern | Trigger | User Message |
|---|---|---|
00_401 |
POST /authenticate β 401 | Wrong credentials |
04_409 |
POST /users β 409 | Email already in use |
09_409 |
POST /alms/{alm}/pair β 409 | Mower already paired |
16_500_* |
PUT /state β 500 + suffix | See mow/dock/pause errors above |
17_500_* |
GET /map β 500 | Map error |
150_401 |
Any β 401 (pattern) | Login required |
XX_5XX (regex) |
Any 5xx with suffix _5
|
Mower disabled |
The alert binary sensor (binary_sensor.indego_<SERIAL>_alert) exposes detailed attributes:
-
last_alert_error_codeβ most recent error code -
last_alert_messageβ humanβreadable description -
last_alert_severityβINFO/WARNING/ERROR/CRITICAL -
error_0,error_1, β¦ β complete error strings with timestamp -
error_0_code,error_0_description,error_0_timestamp,error_0_severity
Example automation β Notify when a critical error occurs:
alias: "Indego: Critical Error Alert"
trigger:
platform: state
entity_id: binary_sensor.indego_12345678_alert
to: "on"
condition:
condition: template
value_template: "{{ state_attr('binary_sensor.indego_12345678_alert', 'last_alert_severity') == 'CRITICAL' }}"
action:
service: notify.mobile_app_your_phone
data:
message: "β οΈ Indego mower: {{ state_attr('binary_sensor.indego_12345678_alert', 'last_alert_message') }}"This integration is an independent openβsource project and is not affiliated with or endorsed by Bosch.
| Maintainers | @whylev Β· @kimzeuner Β· @sander1988 |
|---|---|
| Source Code | GitHub Repository |
| Issue Tracker | Report a bug / Request a feature |
| Community Chat | Discord |
| License | MIT License |
π‘ Tip: Found an error or missing detail? Open an issue on GitHub