API for Bosch Indego mower
Project description
API for the Bosch Indego lawnmowers
Usage with Home Assistant
For source files and version handling: https://github.com/jm-73/pyIndego
For PYPI package: https://pypi.org/project/pyIndego/
Basic information needed
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 and the mower
Call the API:
IndegoApi_Instance = IndegoAPI(username=your_mail@gmail.com, password=your_password, serial=your_serial)
get-functions
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 | |||
getGenericData | |||
getNextCutting | |||
getOperatingData | X | X | X |
getState | X | ||
getUpdates | X | ||
getUsers | |||
login | X |
List of get-functions
getAlerts()
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
}
getGenericData()
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'
}
getNextcutting()
Collects data on next cutting. Seems to get the last command sent to the mower.
Response:
{
'lastMowSent': '2019-08-20T05:09:51.842+01:00',
'lastMowCode': 200
}
getOperatingData()
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
}
getState()
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
}
getUpdates()
Check if there are any updates apllicable to the mower.
Response:
{
'available': False
}
getUsers()
Collect user data.
Response:
{
'email': 'mail@gmail.com',
'display_name': 'Indego',
'language': 'sv',
'country': 'GB',
'optIn': True,
'optInApp': True
}
Functions for reading data from locally cached API data
All functions that doesnt contain "get" first in name is collecting data from locally stored variables. No API calls to Bosch or mower.
AlertsCount()
Counts the current alarms on mower.
Response:
1
AlertsDescription()
Get detailed list of alerts
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
}
]
AlmFirmwareVersion()
Gets the mower firmware version.
Response:
smart
AlmMode()
Gets the mower mode.
Response:
smart
AlmName()
Gets the mower instance name.
Response:
Indego
BareToolNumber()
Show the model number of the mower.
Response:
3600HA2300
Battery()
Get battery information.
Response:
???
BatteryPercent()
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:
???
BatteryPercentAdjusted()
Get the adjusted value for percentage left. Calculated for Gen 1 mowers, and the actual percentage value for Gen 2.
Response:
85
BatteryVoltage()
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
BatteryCycles()
Dont know what this value is?
Response:
0
BatteryDischarge()
Seems to be the Ah the mower is currently drawing.
Response:
1.2
BatteryAmbientTemp()
Seems to be the ambient temp of the battery.
Response:
28
BatteryTemp()
Seems to be the temp of the battery.
Response:
29
Country()
Show country for the Bosch account.
Response:
GB
Displayname()
Show name for the Bosch account.
Response:
mowername
Email()
Show email adress for the Bosch account.
Response:
mail@gmail.com
FriendlyAlertErrorCode()
Get user friendly alert error code description to be shown in HA GUI.
Response:
Reminder blade life
Garden()
Dont know what this is?
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
}
}
HmiKeysn()
Dont know what this is?
Response:
1344
Language()
Show language for the Bosch account.
Response:
sv
MapSvgCacheTs()
Dont know what this is...
Response:
1565416077642
MapUpdateAvailable()
Show if there is an update of the map image.
Response:
True
ModelDescription()
Get user friendly model name.
Response:
Indego Connect 1000
ModelVoltage()
Get the predefined voltage limits in order to calculate battery percentage.
Response:
{
'min': '297',
'max': '369'
}
ModelVoltageMin()
Get the minimum predefined voltage limits in order to calculate battery percentage.
Response:
297
ModelVoltageMax()
Get the maximum predefined voltage limits in order to calculate battery percentage.
Response:
369
Mowed()
Show percentage of lawn mowed
Response:
95
MowerState()
Show current state of mower
Response:
258
MowerStateDescription()
Show simple description of current state of mower. States available are Docked, Mowing, Stuck, Diagnostics mode, End of life, Software update.
Response:
Docked
MowerStateDescriptionDetailed()
Show description in detail of current state of mower.
Response:
Sleeping
MowingModeDescription()
Get the user friendly mowing mode description.
Response:
Smart
NeedsService()
Gets the needs service flag. Dont know when it is used.
Response:
False
NextCutting()
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
}
OptIn()
Dont know what this are for?
Response:
True
OptInApp()
Dont know what this are for?
Response:
True
Runtime()
Get session and total rutime and charge time in minutes.
Response:
{
'total': {
'operate': 86389,
'charge': 25891
},
'session': {
'operate': 0,
'charge': 0
}
}
RuntimeSession()
Get session runtime and charge time in minutes
Response:
{
'operate': 4,
'charge': 1
}
RuntimeTotal()
Get total runtime and charge time in hours
Response:
{
'operate': 86389,
'charge': 25891
}
Serial()
Get the serial number
Response:
123456789
ServiceCounter()
Get service counter for knives
Response:
73275
SvgxPos()
Show svg x-position of mower.
Response:
928
FirmwareAvailable()
Checks if there are any firmware updates available for the mower.
Response:
false
SvgyPos()
Show svg y-position of mower.
Response:
264
xPos()
Show x-position of mower.
Response:
85
yPos()
Show y-position of mower.
Response:
48
Sending commands
putCommand(command)
Send command. Accepted commands:
Command | Description |
---|---|
mow | Start mowing |
pause | Pause mower |
returnToDock | Return mower to dock |
Not working
Not properly implemented yet
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
API CALLS
https://api.indego.iot.bosch-si.com:443/api/v1
get
/authenticate
/alerts
/alms/<serial>
/alms/<serial>/automaticUpdate
/alms/<serial>/updates
/alms/<serial>/calendar
/alms/<serial>/map
/alms/<serial>/operatingData
/alms/<serial>/predictive/nextcutting?withReason=true
/alms/<serial>/predictive/nextcutting?last=YYYY-MM-DDTHH:MM:SS%2BHH:MM (Not working)
/alms/<serial>/predictive/location
/alms/<serial>/predictive/calendar
/alms/<serial>/predictive/useradjustment (What is this for?)
/alms/<serial>/security
/alms/<serial>/state
put
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pyIndego-0.7.10-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0de95842c12ba087b7302e2fd9eed323f628d8578743d3db6c46b279cb5ee14a |
|
MD5 | a5e984eec47f1956d65a708c6a5148de |
|
BLAKE2b-256 | aa92c967f447413a3004a7834d281b83cd87975af8124b31f90e975842fb92e4 |