Bosch Indego

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…

have you seen this? http://grauonline.de/alexwww/indego/indego.html

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

Hi, In terms of creating or modifying the custom component, would I copy your custom component and then call it indego,mow or would I edit the code you pasted on Github?

I tried to also use your python script but can’t seem to get this working either…

Any help would be much appreciated… I have the API working in Postman now, but just can’t seem to get it right in Home Assistant. I used this in Postman: https://www.dropbox.com/s/rrko8dx9s9eyj50/IndegoAPI.json.postman_collection?dl=0

from this forum: https://www.roboter-forum.com/index.php?thread/10567-bosch-indego-connect-anbindung-an-portal-ifttt/&pageNo=3

any progress with this?

none from me, I have been working on something else… I need some help from someone that knows how to build the custom component.

Anybody got this working in 92.0?

Get this error when checking config:

Invalid config for [sensor.indego]: required key not provided @ data[‘token’]. Got None. (See ?, line ?). Please check the docs at https://home-assistant.io/components/sensor.indego/

any help with creating manifest.json? :slight_smile:

I am also trying to get this component to work. I think that the custom_component requirements have changed somehow. Some syntax are wrong. Anyone with skills that can have a look at this component?

Try this:

{
        "domain": "indego",
        "name": "Bosch Indego",
        "documentation": "https://github.com/iMarkus/Indego",
        "requirements": [],
        "dependencies": [],
        "codeowners": ["@imarkus"]
}

I am not actually currently using this component though as all I could get it to do was report the status…

The person (@iMarkus ) that created this no longer has a mower, so without someone who has one who can create the component, I think we are stuck until someone can spend some time on it figuring it out…

I have tried your code, doesnt work either. I have tested the API with Insomnia Rest Client and the Bosch API is still working as described in https://github.com/jofleck/iot-device-bosch-indego-controller/blob/master/PROTOCOL.md. I havent tried all functions, just the basic ones like authenticate and send commands.

The website http://grauonline.de/wordpress/?page_id=219 is also working for controlling your Indego mover.

I have to analyze the code from Marcus and try to get an understanding in the custom component in Home Assistant. Any helping resources are welcome!

Kind regards Jens

Example for Authenticating:

Preparing request to https://api.indego.iot.bosch-si.com/api/v1/authenticate
* Using libcurl/7.57.0-DEV OpenSSL/1.0.2o zlib/1.2.11 libssh2/1.7.0_DEV
* Current time is 2019-06-15T10:02:18.499Z
* Disable timeout
* Enable automatic URL encoding
* Enable SSL validation
* Enable cookie sending with jar of 0 cookies
* Hostname api.indego.iot.bosch-si.com was found in DNS cache
* Trying 139.15.214.16…
* TCP_NODELAY set
* Connected to api.indego.iot.bosch-si.com (139.15.214.16) port 443 (#2)
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
* CAfile: C:\Users\jens\AppData\Local\Temp\insomnia_6.5.4\2017-09-20.pem
* CApath: none
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Client hello (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS change cipher, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / AES256-SHA256
* ALPN, server did not agree to a protocol
* Server certificate:
* subject: C=DE; ST=Berlin; L=Berlin (Charlottenburg); O=Bosch Software Innovations GmbH; CN=api.indego.iot.bosch-si.com
* start date: Jun 28 09:28:07 2018 GMT
* expire date: Jun 28 09:38:00 2020 GMT
* subjectAltName: host “api.indego.iot.bosch-si.com” matched cert’s “api.indego.iot.bosch-si.com
* issuer: C=BM; O=QuoVadis Limited; CN=QuoVadis Global SSL ICA G3
* SSL certificate verify ok.
* Server auth using Basic with user ‘<[email protected]>’

POST /api/v1/authenticate HTTP/1.1
Host: api.indego.iot.bosch-si.com
Authorization: Basic <<some obfuscated Base64encoded string of my username+password>>
User-Agent: insomnia/6.5.4
Content-Type: application/json
Accept: /
Content-Length: 116

{
   "device":"",
   "os_type":"Android",
   "os_version":"4.0",
   "dvc_manuf":"unknown",
   "dvc_type":"unknown"
}

* upload completely sent off: 116 out of 116 bytes

HTTP/1.1 200 

* cookie size: name/val 16 + 36 bytes
* cookie size: name/val 7 + 5 bytes
* cookie size: name/val 7 + 29 bytes
* cookie size: name/val 4 + 1 bytes
* cookie size: name/val 8 + 0 bytes

< Set-Cookie: BOSCH_INDEGO_SSO=<<MY SSO COOKIE>>>; Max-Age=11999; Expires=Sat, 15-Jun-2019 13:22:17 GMT; Path=/; HttpOnly
< X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
< Cache-Control: no-cache, no-store, max-age=0, must-revalidate
< Pragma: no-cache
< Expires: 0
< Content-Type: application/json;charset=UTF-8
< Transfer-Encoding: chunked
< Date: Sat, 15 Jun 2019 10:02:17 GMT


* Received 143 B chunk
* Received 5 B chunk
* Connection #2 to host api.indego.iot.bosch-si.com left intact
* Saved 1 cookie

So today I got the Custom Component to show states of my Bosch Indego. :slight_smile:

Tomorrow I will wrap it up (understand my code!) and try to make a pull request on iMarcus repository.

Kind Regards Jens

2 Likes

awesome work! can you share the repo? You may want to simply create your own new one as I am not sure how active @iMarkus is on this as he no longer has a bosch indego as far as I am aware…

I will share it as soon as I can get the code to work more like a component. I am struggling with reading the values from the conf-file at the moment…