Hi,
I am not a developer but can have a go if you paste your work to date here?
Thanks
Hi,
I am not a developer but can have a go if you paste your work to date here?
Thanks
Sure, just use your Indegos serial, app username and password. This script reads the status and is able to send “mow”, “pause” and “returnToDock” (just uncomment the according lines).
Here you can find a full documentation of the API and status codes.
import json
import requests
from requests.auth import HTTPBasicAuth
serial = '123456789'
username = '[email protected]'
password = 'password'
api_url = 'https://api.indego.iot.bosch-si.com/api/v1/'
HTTP_HEADER_CONTENT_TYPE = 'Content-type'
CONTENT_TYPE_JSON = 'application/json'
header = {HTTP_HEADER_CONTENT_TYPE: CONTENT_TYPE_JSON}
body = {'device': '', 'os_type': 'Android', 'os_version': '4.0', 'dvc_manuf': 'unknown', 'dvc_type': 'unknown'}
jsonBody = json.dumps(body)
response = requests.post(api_url + 'authenticate', data=jsonBody, headers=header, auth=HTTPBasicAuth(username, password), timeout=30)
print(response.content)
print(response.status_code)
data = json.loads(response.content)
print(data)
contextId = data['contextId']
print(contextId)
header = {HTTP_HEADER_CONTENT_TYPE: CONTENT_TYPE_JSON, 'x-im-context-id': contextId}
response = requests.get(api_url + 'alms/' + serial + '/state', headers=header, timeout=30)
print(response.content)
print(response.status_code)
header = {HTTP_HEADER_CONTENT_TYPE: CONTENT_TYPE_JSON, 'x-im-context-id': contextId}
#body = {'state': 'mow'}
#body = {'state': 'pause'}
body = {'state': 'returnToDock'}
jsonBody = json.dumps(body)
response = requests.put(api_url + 'alms/' + serial + '/state', data=jsonBody, headers=header, timeout=30)
print(response.content)
print(response.status_code)
response = requests.delete(api_url + 'authenticate', headers=header, timeout=30)
print(response.status_code)
I managed to create a component for the indego. Currently it is still in development but reading the state is already possible
Hi @all,
I recently sold my Indego but want to share my latest custom component I made.
Best regards,
iMarkus
Hi,
I am sorry you sold yours. Was it giving you problems? Anyway, I just wanted to check. I assume when you say in the docs on github:
Add new platform to your configuration.yaml
- platform: indego
host: api.indego.iot.bosch-si.com
port: 443
username: !secret indego_username
password: !secret indego_password
id: !secret indego_id
That this is under the Sensors?
Also, where would you add this part:
Finally add your new sensor called indego_state:
sensor.indego_state
Thanks very much for this.
Incidentally, I have now finally received my replacement 350 connect (yesterday) after my original apparently “blew the circuit board” in March after only 3 months… best robot lawnmower in terms of performance (love the stripes) customer service is appaling, and well hopefully this one lasts…
Thanks again for all your hard work on this…
HI, this is the error in my logs:
Error while setting up platform indego
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/homeassistant/helpers/entity_platform.py", line 129, in _async_setup_platform
SLOW_SETUP_MAX_WAIT, loop=hass.loop)
File "/usr/local/lib/python3.6/asyncio/tasks.py", line 358, in wait_for
return fut.result()
File "/usr/local/lib/python3.6/concurrent/futures/thread.py", line 56, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/sensor/indego.py", line 63, in setup_platform
api_url=url, username=username, password=password, serial=serial)
File "/config/custom_components/sensor/indego.py", line 202, in __init__
_LOGGER.debug("JSON Response: %s", self.login.json())
File "/usr/local/lib/python3.6/site-packages/requests/models.py", line 896, in json
return complexjson.loads(self.text, **kwargs)
File "/usr/local/lib/python3.6/site-packages/simplejson/__init__.py", line 518, in loads
return _default_decoder.decode(s)
File "/usr/local/lib/python3.6/site-packages/simplejson/decoder.py", line 370, in decode
obj, end = self.raw_decode(s)
File "/usr/local/lib/python3.6/site-packages/simplejson/decoder.py", line 400, in raw_decode
return self.scan_once(s, idx=_w(s, idx).end())
simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
ohh… got it work. but as i understand there is no possibility yet to send commands to mower?
i just added this under sensors:
- platform: indego
host: api.indego.iot.bosch-si.com
port: 443
username: !secret indego_username
password: !secret indego_password
id: !secret indego_id
copied indego.py to config/custom_components/sensor
restart and after that i had sensor.indego_state under dev-state
When you signed in to the app, did you create an account directly or use facebook or a 3rd party service?
I have a feeling my error is down to the authentication…
i just added this and it worked for me.
I however did add the wrong password first time (just spelling error) and got a similar error message as you have here. sadly i fixed it and deleted the log so dont have the exakt error anymore to compare.
But i would guess you have authentication error.
I created my indego account in the app first time just with mail and password.
Not really a answer to your question, only some input. Hope it helps somhow
BINGO! I deleted the user account on my phone and then setup a new one directly with Bosch and hey presto!
Now we just need to unpick/rework the custom component to send commands like “mow” and “dock” and we are sorted!
Check this out: https://github.com/stuzfuz/bosch-indego-webinterface
you can then integrate via iframe…
Very nice, although it does not use https and I can’t see how to host it myself… my mower is called Larry. This is a bit of a hack, but at least I can mow/dock from within HA…
After reading a bit more on http://grauonline.de/alexwww/indego/indego.html I can see that you can host this locally and details are shared only with Bosch API servers…
You simply need to go to the page and then save the page locally. yoyu can then stick this into your www folder and hey presto!
I may just rework the html/css to get a “prettier” fit into HA, but otherwise, this is one way to manually start/stop the unit from within HA.
It would however still be good to be able to get more integration so that you can run automations etc…
Wow. For automations you can simply use my implementation, it should also be not that big deal to extend it.
Best regards,
iMarkus
Hi,
Could you point me where in your code to look to look to start adding mow, stop, pause, return home?
Sorry, I have 0 experience in coding a component or python…
Thanks for any help you could provide…
I am trying to create a restfu lswitch but am having some issues… anyone care to join me in trying to figure this out?
- platform: rest
name: Mow
resource: https://api.indego.iot.bosch-si.com/api/v1/alms/REDACTED/state
method: POST
authentication: basic
username: !secret indego_username
password: !secret indego_password
body_on: '{"state": "mow"}'
body_off: '{"state": "pause"}'
headers:
Accept: application/vnd.github.v3+json
Content-Type: application/x-www-form-urlencoded
x-im-context-id: !secret indego_context_id