Integrando en Home Assistant nuestro cortacésped Bosch Indego

Bueno, siguiendo los posts de integración de dispositivos IoT de nuestros hogares inteligentes con Home Assistant, cómo iba a ser menos el poder controlar, conocer el estado y hacer automatizaciones con nuestro cortacésped Bosh Indego.

 

Vamos a utilizar ‘Controller application and API for Bosch Indego Connect’ que ya vimos en este post cómo instalarlo e integrarlo con Grafana. En esta ocasión aprovecharemos este magnífico proyecto para utilizar un adaptador que trae y nos permitirá integrarlo en Home Assistant gracias a que puede hablar por MQTT con nuestro Broker. Pudiendo conocer el estado o enviar comandos mediante topics. Todo ello lo tendremos integrado con el resto de dispositivos de nuestra casa, en un interfaz sencillo y que como te imaginas mediante las automatizaciones podremos saber cuándo empieza el corte, si se atasca, cuándo acaba de segar; y por supuesto dependiendo si ha llovido/va a llover, pues que salga a cortar.

 

Tras instalarlo, levantaremos el adaptador de Indego con MQTT indicándole el fichero con los datos de conexión. Este adaptador lo podemos ejecutar desde un Windows o un Linux, en mi caso lo tengo montado en Linux, así que si quiero que se levante cada vez que esa máquina se inicia, lo meteremos en una tarea de cron:

@reboot /home/pi/indego/bin/IndegoMqttAdapter -c /home/pi/indego/IndegoMqttAdapterConfig.properties

 

Y el fichero IndegoMqttAdapterConfig.properties sería este, corregir cada uno sus datos de acceso a Indego (mail/contraseña), y los datos de MQTT:

# Base url of the Indego web service (if different from default)
# indego.mqtt.device.base-url=https://api.indego.iot.bosch-si.com/api/v1/
# Username for connecting to the Indego server (the same as in Indego app)

indego.mqtt.device.username=USUARIO_MAIL_DE_INDEGO
# Password for connecting to the Indego server (the same as in Indego app)
indego.mqtt.device.password=CONTRASEÑA_DE_INDEGO

# Connection to MQTT broker
indego.mqtt.broker.connection=tcp://DIRECCION_IP_BROKER_MQTT:1883
# Unique id of this client
indego.mqtt.broker.client-id=IndegoMqttAdapter
# Username for authenticating on the MQTT broker
indego.mqtt.broker.username=USUARIO_MOSQUITTO
# Password for authenticating on the MQTT broker
indego.mqtt.broker.password=CONTRASEÑA_MOSQUITTO
# Topic root (namespace) for Indego topics
indego.mqtt.broker.topic-root=test/device/indego

# Specifies how often the Indego state is queried and the MQTT topics should be updated
indego.mqtt.polling-interval-ms=30000

 

Cuando tengamos el servicio del adaptador ya corriendo en alguna máquina, ya podremos dar de alta nuestro cortacesped Bosch Indego en Home Assistant, ¿cómo? Como siempre, modificando el fichero configuration.yaml, añadiremos en la sección de los sensores el siguiente código:

sensor:
...
  - platform: mqtt
    name: "Indego 350 - Estado energia"
    state_topic: "test/device/indego/online"
    value_template: '{% if value == "Apagado" %}OFF{% else %}Encendido{% endif %}'
    icon: mdi:car-battery

  - platform: mqtt
    name: "Indego 350 - Estado"
    state_topic: "test/device/indego/stateMessage"
    icon: mdi:map-marker
    value_template: '{% if value == "Docked" %}En la base{% elif value == "Charging" %}Cargando{% elif value == "Mowing" %}Segando{% elif value == "Relocalising" %}Ubicandome{% elif value == "Returning to dock" %}Volviendo a casa{% elif value == "Border cut" %}Recortando los bordes{% elif value == "Idle in lawn" %}Ocioso en el jardin{% elif value == "Unknown" %}Desconocido{% elif value == "pause" %}Pausado{% elif value == "Returning to dock - Battery low" %}Bateria baja{% endif %}'

  - platform: mqtt
    name: "Indego 350 - Segado"
    state_topic: "test/device/indego/mowedPercent"
    unit_of_measurement: "%"
    icon: mdi:robot-mower

  - platform: mqtt
    name: "Indego 350 - Tiempo ultimo segado"
    state_topic: "test/device/indego/runtimeSessionOperationMins"
    icon: mdi:shovel
    value_template: '{{ (value | float / 60) | round(2, "ceil") }}'
    unit_of_measurement: "h"

  - platform: mqtt
    name: "Indego 350 - Tiempo trabajado"
    state_topic: "test/device/indego/runtimeTotalOperationMins"
    icon: mdi:timer
    value_template: '{{ (value | float / 60) | round(2, "ceil") }}'
    unit_of_measurement: "h"

 

 

Y tras reiniciar Home Assistant y recargar los cambios ya podremos añadir una tarjeta con todas estas entidades. En las que podremos ver el estado de energía, el estado del cortacésped (si está en la base, cargando, segando, ubicándose, volviendo a casa, recortando los bordes, ocioso en el jardín/atascado, con lateria baja… ), el porcentaje del corte, el tiempo del último segado, el tiempo total trabajado… El último segado lo saco con una query de mysql a la BD de Hassio.

 

Por cierto, si queréis añadir una tarjeta con 3 botones, un Play para que empiece a segar, un Pausa u otro para finalizar el segado, os dejo este ejemplo:

cards:
  - entity: sensor.indego_350_estado
    hold_action:
      action: none
    icon: 'mdi:play'
    icon_height: 30px
    name: A segar
    tap_action:
      action: call-service
      service: mqtt.publish
      service_data:
        payload: MOW
        topic: test/device/indego/command
    type: entity-button
  - entity: sensor.indego_350_estado
    hold_action:
      action: none
    icon: 'mdi:pause'
    icon_height: 30px
    name: Pausar
    tap_action:
      action: call-service
      service: mqtt.publish
      service_data:
        payload: PAUSE
        topic: test/device/indego/command
    type: entity-button
  - entity: sensor.indego_350_estado
    hold_action:
      action: none
    icon: 'mdi:home'
    icon_height: 30px
    name: A casa
    tap_action:
      action: call-service
      service: mqtt.publish
      service_data:
        payload: RETURN
        topic: test/device/indego/command
    type: entity-button
type: horizontal-stack

 

 

Os dejo este ejemplo de automatización, para que salga a regar a las 6am si no ha llovido o no va a llover, claro que la parte de detectar la lluvia dependerá de cada uno, podéis usar la integración de AccuWeather.

 

Esta automatización nos notifica por mensaje de Telegram o por los altavoces de la casa que empieza a segar. La idea de esto es por si segamos de día y queremos avisar que va a salir, para que no te pille 😉

 

Y esta última automatización nos mandará un mensaje de Telegram y nos notificará por los altavoces que el cortacésped Bosch Indego se ha atascado.

 

Esperando que os haya podido servir, os mando un saludo a tod@s y como siempre agradeceros que lo compartáis en redes sociales.

 

Héctor Herrero