Bosch Indego

@onkelfarmor: In order to get something to calculate battery percentage with, I would need the max and min voltage tat you observer on your mower.

Maybe Bosch plans to change the API call, but for now we have to calculate the percentage (if we want that kind of sensor).

I will implement the S+ 350 model in the next release.

It seems like only 1000-1300 reports actual voltage 36.9-29.7 (means 4.1-3.3V per cell, but it could be a bit different for higher lifespan) and percentage is “calculated” as 369-297. On the other hand, 350 and 400 series reports only percentage 100-0 and voltage is “calculated” as 10-0 (nonsense because it uses about 20.5-16.5V).

So for 350 and 400 you can show percentage righ away. For the first gen it needs to be calculated from the voltage.

That’s what i’ve missed from @ltjessem post. :grin:

Btw: You can use the “discharge” value as well. Because that probably stands for Ah(amperehour) and about how much charge you are able to “push” into battery you should get about the same (it’s not accurate but in combination with voltage the overall “capacity meter” could be more accurate). Just a tip for future development. :nerd_face:

as @nath writes, voltage on mine S+ 350 is always 0-10 and percent is 10 times more (10-100). But when battery goes to 50% it starts going back to dock for charging.

That’s interesting. And while it reports 50% does the display indicator shows half-battery icon or it’s empty?

Btw: I have 1200 and absolutely no experience with 2nd gen. :slightly_smiling_face:

Just checked, was just went to the dock and the battery on the display was 18%.

The API told me this two minutes later:

 "battery" : {
    "voltage" : 6.0,
    "cycles" : 3,
    "discharge" : 0.0,
    "ambient_temp" : 26,
    "battery_temp" : 26,
    "percent" : 60
  }

5 minuttes before it was 50 percent in the API …

Looks like the battery percent is going a bit up and down in the API, but it always starts at 100 and stops around 50.

Interesting observations. I have a feeling that Bosch maybe experimenting a bit with their API and the sensors they have in the mowers.

I am currently rewriting the API as bad coding from a non-programmer (thats me!!!) flooded the API. Now I have reduced the traffic to the API to like 2-3 percent of the first version of the API. When this i done, I can begin experimenting with your readings for the battery percentage.

1 Like

Sounds good!

If you find a way to show, that my Indego has finished it’s work, it would be nice. When my mower is on 90% I now don’t know if it is finished or if it is just waiting on better weather.

I think that the Nextcutting-command could give us a clue. Wait until I give you the component with this data exposed. Then we can discover its values together and perhaps figure out what it does.

As I have seen it either shows:
Why it is cutting right now (last mowe send command)
Next planned cutting session (waiting due to time/clendar restictions or maybe weather)

All my spare time right now is focused on getting the API and the component working better. I havent had much time in experimenting with the mower itself…

2 Likes

My battery percentage doesn’t match the Indegos display either, but I think it’s the display that’s inaccurate. Mine Usually starts going back to the dock at 40-50 % (API) and I’ve seen it as low as 25% when it got lost and did several perimeter laps. At that point the display on the mower was showing 0%
It makes sense that it leaves a lot of reserve power to be sure it gets back to the dock, but interesting that they fudged the battery % info on the mower.

I think you are right :+1:

I got down to 2% shown by the API today, it was being a real idiot trying to get back to the dock for a full 45 minutes. So I think it’s safe to assume the API is returning good data.

1 Like

I have release a beta on Github: 0.4b. Due to my shortage of time right now, I feel that I release this beta for you guys to try out the battery sensors. The big difference is that this beta doesnt flood the API with calls.

A couple of you have already began figuring out the API calls running directly against Bosch API server. But for the rest of you guys theese sensors may help us all to understand the numbers of our different models.

I am really struggling with learning the HA layout and programming. The API calls from python is simple, it is the HA part that is hard. There are progress, but it takes some more time for me to learn HA.

I am on vacation a few days this week, but keep posting here if you try the 0.4b and see bugs.

https://github.com/jm-73/Indego/tree/0.4b

1 Like

Thanks, get an error during setup with the new files, have made an issue in tre repo.

As I wrote on Github, no more time will be spent on this beta. I will spend the time on releasing the new version of the component instead.

Edit: new version will be released this weekend. I have been on fire and solved all the structural parts that I have been struggling with. I have e some testing to do and to release a new pypi package. Will be called 0.5.

2 Likes

Today Bosch released a new version of their app (on IOS). The app now show last complete mowing and battery status.

Released version 0.5 of the component today. Please give me feedback on bugs!

Finally I am where I though i were in the devlopment two weeks ago. A big step backwards when the API was not working out as planned. Now I am ready to challenge the new battery percentage sensor and other feature requests.

Edit: Released version 0.6 also, with some error handling (due to unknown answers from API) and better Mower State handling!

1 Like

I have created a swipe card which toggles between a picture card and a static map card: This card assumes the exact sample config used in the repo.

type: 'custom:swipe-card'
parameters:
  spaceBetween: 8
  scrollbar:
    hide: false
    draggable: true
    snapOnRelease: true
cards:
  - image: /local/icons/larry.png
    type: picture-elements
    elements:
      - type: state-label
        entity: sensor.indego_mower_alert
        suffix: ' Alerts'
        style:
          top: 12%
          left: 12%
          font-size: 15px
      - type: state-label
        entity: sensor.indego_lawn_mowed
        suffix: ' Complete'
        style:
          top: 26%
          left: 16%
          font-size: 15px
      - type: state-label
        entity: sensor.indego_battery
        prefix: 'Battery : '
        style:
          top: 40%
          left: 16%
          font-size: 15px
      - type: state-label
        entity: sensor.indego_mower_state_detail
        style:
          top: 54%
          left: 12%
          font-size: 15px
      - type: state-label
        entity: sensor.indego_runtime_total
        prefix: 'Runtime : '
        style:
          top: 82%
          left: 17%
          font-size: 15px
      - type: state-label
        entity: sensor.indego_mowing_mode
        prefix: 'Mode : '
        style:
          top: 68%
          left: 18%
          font-size: 15px
      - type: icon
        title: Mow
        icon: 'mdi:play'
        entity: input_boolean.indego_mow
        tap_action:
          action: call-service
          service: indego.mower_command
          service_data:
            command: mow
        style:
          top: 15%
          left: 70%
          '--iron-icon-fill-color': '#FFFFFF'
          '--iron-icon-height': 40px
          '--iron-icon-width': 40px
      - type: icon
        title: Pause
        icon: 'mdi:pause'
        entity: input_boolean.indego_pause
        tap_action:
          action: call-service
          service: indego.mower_command
          service_data:
            command: pause
        style:
          top: 15%
          left: 83%
          '--iron-icon-fill-color': '#FFFFFF'
          '--iron-icon-height': 40px
          '--iron-icon-width': 40px
      - type: icon
        title: Home
        icon: 'mdi:home'
        entity: input_boolean.indego_home
        tap_action:
          action: call-service
          service: indego.mower_command
          service_data:
            command: returnToDock
        style:
          top: 15%
          left: 95%
          '--iron-icon-fill-color': '#FFFFFF'
          '--iron-icon-height': 40px
          '--iron-icon-width': 40px
      - type: state-label
        entity: sensor.indego_mower_state
        prefix: 'State : '
        style:
          top: 32%
          left: 88%
          font-size: 15px
  - image: /local/icons/garden_map.png
    type: picture-elements
    aspect_ratio: 50%
    elements:
      - type: state-label
        entity: sensor.indego_battery_v
        prefix: 'Battery v : '
        style:
          top: 52%
          left: 18%
          font-size: 15px

Here is the image I used (you will nee to get your own map image - I took a screenshot of the app)

TAKE NOTE OF type: 'custom:swipe-card' REQUIREMENT

TO DO:

Ensure status rendering does not break layout of sensors info.

WOULD BE GREAT:

Live map

2 Likes

Hi @jm_73,

I am trying to pull the attributes through as individual sensors with a template sensor. However the naming convention does not seem to work. For example:

in the sensor.indego_battery there is an attribute Battery temp. Surely this should be either Battery_temp or Batterytemp? My template sensors looks like this but is failing I think beacuse of the name of the attribute

    indego_battery_temp:
      friendly_name: 'Battery Temperature'
      value_template: '{{ states.sensor.indego_battery.attributes.Batterytemp }}'
      unit_of_measurement: %

Any pointers?

Hello!

If you want, I can make the temp as a sensor entity. I have thought about this and maybe it would be easier for you and more interesting for others to have an own sensor for this?

/Jens

I think it would be good to get the naming convention right, but having said this, if you think you have the time, individual sensors would be fantastic! - Did you deploy the card in lovelace? Use the code in this thread as opposed to the one I sent you on github…