Join the Discord channel to discuss around this integration: https://discord.gg/aD33GsP
For source files and version handling: https://github.com/jm-73/pyIndego
For PYPI package: https://pypi.org/project/pyIndego/
Information | Description |
---|---|
your_username | Your username in the BoschSmartMove app |
your_password | Your password for the app |
your_serial | Your Bosch Indego serial (found on the mover, in the mover menu or in the app) |
The python library is written for the login method with username (email address) and password. Login with Facebook account is not supported.
Call the API:
IndegoApi_Instance = IndegoAPI(username='[email protected]', password='your_password', serial='your_serial')
Description for the functions updating data from API and mower. The functions collecting data from only Bosch API does not wake up mower. Functions collecting data from both Bosch API and mower does wake up mower from sleeping.
API Call | Bosch API | Mower | Mower needs to be online |
---|---|---|---|
getAlerts | X | ||
getGenericData | X | ||
getLastComletedCutting | X | ||
getOperatingData | X | X | |
getState | X | ||
getUpdates | X | X | |
getUsers | X | ||
login | X |
Collect alerts.
Response:
{
'alm_sn': '123456789',
'alert_id': '5d48171263c5345a75dbc017',
'error_code': 'ntfy_blade_life',
'headline': 'Underhållstips.',
'date': '2019-08-05T11:46:26.397Z',
'message': 'Kontrollera klippknivarna. Indego har klippt i 100 timmar. Ska den fungera optimalt, kontrollera klippknivarna så att de är i bra skick. Du kan beställa nya knivar via avsnittet Tillbehör.',
'read_status': 'unread',
'flag': 'warning',
'push': True
}
Collect serial, service counter, name, mowing mode, model number and firmware.
Response:
{
'alm_sn': '123456789',
'alm_name': 'Indego',
'service_counter': 60488,
'needs_service': False,
'alm_mode': 'manual',
'bareToolnumber': '3600HA2300',
'alm_firmware_version': '00837.01043'
}
Collects data on next cutting. Seems to get the last command sent to the mower.
Response:
{
'mow_next': '2020-05-25T10:00:00+02:00'
}
Collect operational data data: battery, runtime, garden data and temperature.
Response:
{
'runtime': {
'total': {
'operate': 86333,
'charge': 25845
},
'session': {
'operate': 0,
'charge': 0
}
},
'battery': {
'voltage': 33.5,
'cycles': 1,
'discharge': 0.0,
'ambient_temp': 17,
'battery_temp': 17,
'percent': 335
},
'garden': {
'id': 7,
'name': 1,
'signal_id': 1,
'size': 625,
'inner_bounds': 3,
'cuts': 26,
'runtime': 82197,
'charge': 24860,
'bumps': 4650,
'stops': 24,
'last_mow': 4
},
'hmiKeys': 1344
}
Collects state of mower, % lawn mowed, position, runtime, map coordinates.
Response:
{
'state': 64513,
'map_update_available': True,
'mowed': 95,
'mowmode': 0,
'xPos': 68,
'yPos': 30,
'runtime': {
'total': {
'operate': 86327,
'charge': 25845
},
'session': {
'operate': 4,
'charge': 0
}
},
'mapsvgcache_ts': 1565381013023,
'svg_xPos': 928,
'svg_yPos': 264
}
Check if there are any updates apllicable to the mower.
Response:
{
'available': False
}
Collect user data.
Response:
{
'email': '[email protected]',
'display_name': 'Indego',
'language': 'sv',
'country': 'GB',
'optIn': True,
'optInApp': True
}
All functions that doesnt contain "get" first in name is collecting data from locally stored variables in the function. No API calls to Bosch or mower.
Counts the current alarms on mower.
Response:
1
Response:
[
{
'alm_sn': '505703041',
'alert_id': '5d5c395c63c5346994440e60',
'error_code': 'ntfy_blade_life',
'headline': 'Underhållstips.',
'date': '2019-08-20T18:18:04.472Z',
'message': 'Kontrollera klippknivarna. Indego har klippt i 100 timmar. Ska den fungera optimalt, kontrollera klippknivarna så att de är i bra skick. Du kan beställa nya knivar via avsnittet Tillbehör.',
'read_status': 'unread',
'flag': 'warning',
'push': True
}
]
Gets the mower firmware version.
Response:
smart
Response:
smart
Response:
Indego
Show the model number of the mower.
Response:
3600HA2300
Response:
???
Get the raw value for percentage left. For Gen 1 this seems to be the battery voltage. For Gen 2 mowers it seems to be the actual percentage left in the battery.
Response:
???
Get the adjusted value for percentage left. Calculated for Gen 1 mowers, and the actual percentage value for Gen 2.
Response:
85
Get the voltage for the battery. For Gen 1 mowers this value seems to be correct. For Gen 2 it seems to be the same value as the percentage left in battery.
Response:
38.6
Response:
0
Seems to be the Ah the mower is currently drawing.
Response:
1.2
Seems to be the ambient temp of the battery.
Response:
28
Seems to be the temp of the battery.
Response:
29
Show country for the Bosch account.
Response:
GB
Show name for the Bosch account.
Response:
mowername
Show email adress for the Bosch account.
Response:
[email protected]
Get user friendly alert error code description to be shown in HA GUI.
Response:
Reminder blade life
Response:
{
'garden': {
'id': 7,
'name': 1,
'signal_id': 1,
'size': 625,
'inner_bounds': 3,
'cuts': 26,
'runtime': 82197,
'charge': 24860,
'bumps': 4650,
'stops': 24,
'last_mow': 4
}
}
Response:
1344
Show language for the Bosch account.
Response:
sv
Response:
1565416077642
Show if there is an update of the map image.
Response:
True
Response:
Indego Connect 1000
Get the predefined voltage limits in order to calculate battery percentage.
Response:
{
'min': '297',
'max': '369'
}
Get the minimum predefined voltage limits in order to calculate battery percentage.
Response:
297
Get the maximum predefined voltage limits in order to calculate battery percentage.
Response:
369
Response:
95
Response:
258
Show simple description of current state of mower. States available are Docked, Mowing, Stuck, Diagnostics mode, End of life, Software update.
Response:
Docked
Show description in detail of current state of mower.
Response:
Sleeping
Get the user friendly mowing mode description.
Response:
Smart
Gets the needs service flag. Dont know when it is used.
Response:
False
Should get the next planned cutting session. Seems to give the last sent mower command.
Response:
{
'lastMowSent': '2019-08-20T05:09:51.842+01:00',
'lastMowCode': 200
}
Response:
True
Response:
True
Get session and total rutime and charge time in minutes.
Response:
{
'total': {
'operate': 86389,
'charge': 25891
},
'session': {
'operate': 0,
'charge': 0
}
}
Get session runtime and charge time in minutes
Response:
{
'operate': 4,
'charge': 1
}
Get total runtime and charge time in hours
Response:
{
'operate': 86389,
'charge': 25891
}
Get the serial number
Response:
123456789
Get service counter for knives
Response:
73275
Response:
928
Checks if there are any firmware updates available for the mower.
Response:
false
Response:
264
Response:
85
Response:
48
Send command. Accepted commands:
Command | Description |
---|---|
mow | Start mowing |
pause | Pause mower |
returnToDock | Return mower to dock |
getLocation()
Get garden location (GPS coordinates?)
getPredicitiveCalendar()
Get the calender for predicted cutting sessions
getUserAdjustment()
Get the user adjustment of the cutting frequency
getCalendar()
Get the calendar for allowed cutting times
getSecurity()
Get the security settings
getAutomaticUpdate()
Get the automatic update settings
https://api.indego.iot.bosch-si.com:443/api/v1
post
/authenticate
get
/alerts
/alms/<serial>
/alms/<serial>/automaticUpdate
/alms/<serial>/calendar
/alms/<serial>/map
/alms/<serial>/updates
/alms/<serial>/operatingData
/alms/<serial>/predictive
/alms/<serial>/predictive/calendar
/alms/<serial>/predictive/lastcutting
/alms/<serial>/predictive/location
/alms/<serial>/predictive/nextcutting
/alms/<serial>/predictive/useradjustment
/alms/<serial>/predictive/weather
/alms/<serial>/security
/alms/<serial>/state
/users/<userid>
put
/alms/<serial>/automaticUpdate
/alms/<serial>/predictive/calendar
/alms/<serial>/predictive/location
/alms/<serial>/predictive
/alms/<serial>/state
/alms/<serial>/predictive/useradjustment
delete
/alerts/<alertid>