Intégration de mon aspirateur robot Ecovacs Deebot

Bonjour à tous,

J’essaie d’intégrer mon robot Ecovacs. Comme il ne semble plus y avoir d’intégration officielle, je suis parti sur celle-ci : GitHub - DeebotUniverse/Deebot-4-Home-Assistant: Home Assistant integration for deebot vacuums

J’arrive à intégrer certaines données. Je me suis donc lancé dans la procédure de création de la carte comme présenté dans la doc: Advanced - DeebotUniverse
mais j’obtiens plusieurs erreurs (à mon avis lié aux sensors qui n’existent pas): j’ai l’impression de ne pas avoir tous les sensors notamment celui des pièces…

Est-ce que vous avez déjà réalisé cette intégration ? Pour ceux qui auraient réussi, avez-vous pu remonter les informations des pièces car moi je n’y arrive pas ?

Merci
smilorel


System Information

version core-2022.10.0
installation_type Home Assistant Supervised
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.10.5
os_name Linux
os_version 5.10.0-18-arm64
arch aarch64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 4883
Installed Version 1.27.2
Stage running
Available Repositories 1120
Downloaded Repositories 17
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Debian GNU/Linux 11 (bullseye)
update_channel stable
supervisor_version supervisor-2022.09.1
agent_version 1.2.2
docker_version 20.10.18
disk_total 229.1 GB
disk_used 13.2 GB
healthy true
supported failed to load: Unsupported
supervisor_api ok
version_api ok
installed_addons File editor (5.4.1), InfluxDB (4.5.0), Samba share (10.0.0), SQLite Web (3.6.1), deCONZ (6.16.0), MariaDB (2.5.1), Node-RED (13.4.0), Nginx Proxy Manager (0.12.2), WireGuard (0.7.0), AdGuard Home (4.7.4)
Dashboards
dashboards 1
resources 12
views 10
mode storage
Recorder
oldest_recorder_run 26 septembre 2022 à 16:53
current_recorder_run 6 octobre 2022 à 11:15
estimated_db_size 260.54 MiB
database_engine sqlite
database_version 3.38.5
___

Bonsoir,

Débutant dans Home Assistant, j’ai aussi un peu galéré avec ça jusqu’à temps que je remarque que la plupart des sensors de l’aspirateur étaient désactivés :sweat_smile:
Paramètres, Appareils Services, intégration « Deebot 4 Home Assistant », cliquer sur les entités ( j’en ai 23), cliquer sur l’entité désactivé, paramètres avancés, activée, mise à jour

Et cela pour chaques entités désactivées.

Pour les cartes sur Lovelace il me semble que j’utilise vacuum card trouvé sur Hacs.

Voilà une 1ere piste !

Salut @Akira21,

Yes je l’ai fait dès le début pour le coup.

Mais j’ai finalement bien avancé: en fait, il s’avère que j’avais 2 entités ‹ vaccum › pour le même robot aspirateur: vacuum.NOM_ROBOT (lui étant annoncé comme indisponible) et vacuum.NOM_ROBOT_2.

Ce qui est étonnant c’est que tous les sensors sont avec le NOM_ROBOT mais l’entité ‹ vacuum › qui est à utiliser est celle avec le nom NOM_ROBOT_2.

Je ne sais pas si c’est un problème d’intégration mais j’ai réglé beaucoup de soucis.

Il ne me reste plus qu’à voir comment gérer les noms de pièces. J’ai suivi la procédure de la doc Advanced - DeebotUniverse mais je ne trouve pas du tout comment cela est géré.

Concernant le tuto, je ne le connaissais pas. Mais il est très intéressant.
Je jetterai un œil demain :blush:
Pour l’instant j’ai la carte de l’aspirateur, la map et les options.
Mais effectivement c’est intéressant d’avoir la sélection des pièces :blush:
Si j’arrive à intégrer ce tuto, je reviendrai vers vous !

1 « J'aime »

Bonjour,
Je me suis lancer dans cette intégration également mais c’est un peu compliqué, je voulais savoir si vous étiez parvenu à vos fins?
Je n’ai pas trouvé la solution pour créer mes pièces.
Si vous avez une piste je suis preneur.
Merci :grinning:

Bonjour,

De mon côté, je n’ai pas avancé concernant la création (ou au minimum la sélection) des pièces.

Peut-être que @Akira21 a pu avancer ?

Bonjour, pour ma part elle est terminée si je peux aider … je ne viens pas tout le temps sur le forum donc si je répond pas —> patienter :wink:

Salut @Seth3d85,

Merci pour ta proposition d’aide.
Je veux bien la marche à suivre pour la création des pièces ?

Je te remercie par avance.
A+

Je reviens vers toi avec des captures d’écran de ce que tu dois faire (car là je suis au boulot) ainsi que le code carte. As-tu bien fait les 2 script et l’automatisation qui va bien déjà dans un premier temps ? Ce que tu peux déjà faire, c’est aller dans paramètres puis appareils et services, prendre ton aspirateur (Ecovacs je suppose) et regarder dans ses attributs, le nom de tes pièces car tu en auras besoin. Voir screen ci-joint.

Désolé pour le retard, voici la carte utilisée sur mon dashboard. Tu remplace Merlin par ne nom de tom aspi. Pourrais-tu m’en dire plus sur ce qui ne va pas chez toi ? Merci

type: vertical-stack
cards:
  - type: custom:vacuum-card
    entity: vacuum.merlin
    stats:
      default:
        - entity_id: sensor.merlin_life_span_brush
          unit: '%'
          subtitle: Brosse Principale
        - entity_id: sensor.merlin_life_span_side_brush
          unit: '%'
          subtitle: Brosse Latérale
        - entity_id: sensor.merlin_life_span_filter
          unit: '%'
          subtitle: Filtre
      cleaning:
        - entity_id: sensor.merlin_stats_area
          unit: m²
          subtitle: Surface Nettoyée
        - entity_id: sensor.merlin_stats_time
          unit: Minutes
          subtitle: Durée De Nettoyage
    show_status: true
    show_toolbar: false
    compact_view: false
  - type: custom:button-card
    color: auto-no-temperature
    name: Sélectionnez les pièces à nettoyer
    styles:
      card:
        - font-size: 18px
        - height: 30px
      name:
        - color: var(--primary-color)
    tap_action: none
    double_tap_action: none
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        template:
          - vacuum_room
        entity: sensor.deebot_merlin_queue_living_room
        icon: mdi:sofa
        name: Salon
        tap_action:
          service_data:
            room: living_room
      - type: custom:button-card
        template:
          - vacuum_room
        entity: sensor.deebot_merlin_queue_kitchen
        icon: mdi:faucet-variant
        name: Cuisine
        tap_action:
          service_data:
            room: kitchen
      - type: custom:button-card
        template:
          - vacuum_room
        entity: sensor.deebot_merlin_queue_default
        icon: mdi:coat-rack
        name: Hall
        tap_action:
          service_data:
            room: default
      - type: custom:button-card
        template:
          - vacuum_room
        entity: sensor.deebot_merlin_queue_dining_room
        icon: mdi:silverware
        name: Salle à manger
        tap_action:
          service_data:
            room: dining_room
      - type: custom:button-card
        template:
          - vacuum_room
        entity: sensor.deebot_merlin_queue_bedroom
        icon: mdi:bed-king
        name: Chambre
        tap_action:
          service_data:
            room: bedroom
  - type: horizontal-stack
    cards:
      - type: conditional
        conditions:
          - entity: vacuum.merlin
            state_not: cleaning
          - entity: vacuum.merlin
            state_not: paused
        card:
          type: custom:button-card
          template: vacuum_service
          icon: mdi:play
          name: Start
          tap_action:
            action: call-service
            service: script.deebot_clean
          variables:
            enabled: |
              [[[ 
                return ((!states['input_text.deebot_merlin_queue'].state || 
                    states['input_text.deebot_merlin_queue'].state.length === 0)
                    && ['docked', 'idle', 'error', 'returning'].includes(entity.state))
              ]]]
      - type: conditional
        conditions:
          - entity: vacuum.merlin
            state: cleaning
        card:
          type: custom:button-card
          color: auto
          icon: mdi:pause
          name: Pause
          tap_action:
            action: call-service
            service: vacuum.pause
            service_data:
              entity_id: vacuum.merlin
          styles:
            card:
              - height: 80px
              - background-color: var(-color)
      - type: conditional
        conditions:
          - entity: vacuum.merlin
            state: paused
        card:
          type: custom:button-card
          color: auto
          icon: mdi:play-pause
          name: Resume
          tap_action:
            action: call-service
            service: vacuum.start
            service_data:
              entity_id: vacuum.merlin
          styles:
            card:
              - height: 80px
              - background-color: var(-color)
      - type: custom:button-card
        template: vacuum_service
        icon: mdi:stop
        name: Stop
        tap_action:
          service: vacuum.stop
        variables:
          enabled: |
            [[[ 
              return !(['cleaning', 'paused', 'returning'].includes(entity.state))
            ]]]
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        template: vacuum_service
        icon: mdi:home-map-marker
        name: Retour station de charge
        tap_action:
          service: vacuum.return_to_base
        variables:
          enabled: |
            [[[ 
              return ['docked', 'returning'].includes(entity.state)
            ]]]
      - type: custom:button-card
        color: auto
        icon: mdi:map-marker
        name: Localisation
        tap_action:
          action: call-service
          service: vacuum.locate
          service_data:
            entity_id: vacuum.merlin
        styles:
          card:
            - height: 80px
            - background-color: var(-color)
  - show_state: false
    show_name: false
    camera_view: auto
    type: picture-entity
    entity: camera.merlin_live_map
    tap_action:
      action: none
    hold_action:
      action: none


Je n’arrive pas du tout à remonter le nom des pièces …
Je viens de revérifier, impossible.

Pour cela il faut que tu crée ce template sensor. Il faut impérativement changer le nom de mes pieces par les tiennes + changer merlin par le nom de ton robot. Attention le input_text.deebot_nomdetonrobot_queue doit etre créé dans HA → paramètres → appareil et services → entrées → créé une entrée → texte si vraiment ca ne va pas, envoie moi le nom de tes pieces et de ton robot et je te ferai le fichier.

template:
  unique_id: deebot_merlin_queue
  trigger:
    - platform: state
      entity_id: input_text.deebot_merlin_queue
  sensor:
    # Add for each room the following. Change room_name accordingly
    - unique_id: deebot_merlin_queue_living_room
      name: deebot_merlin_queue_living_room
      # room_name must match the room name provided by the vacuum
      state: >
        {% set room_name = "living_room" %}
        {% set queue = trigger.to_state.state.split(",") %}
        {{ queue.index(room_name)+1 if room_name in queue else 0 }}
    - unique_id: deebot_merlin_queue_kitchen
      name: deebot_merlin_queue_kitchen
      # room_name must match the room name provided by the vacuum
      state: >
        {% set room_name = "kitchen" %}
        {% set queue = trigger.to_state.state.split(",") %}
        {{ queue.index(room_name)+1 if room_name in queue else 0 }}
    - unique_id: deebot_merlin_queue_default
      name: deebot_merlin_queue_default
      # room_name must match the room name provided by the vacuum
      state: >
        {% set room_name = "default" %}
        {% set queue = trigger.to_state.state.split(",") %}
        {{ queue.index(room_name)+1 if room_name in queue else 0 }}
    - unique_id: deebot_merlin_queue_dining_room
      name: deebot_merlin_queue_dining_room
      # room_name must match the room name provided by the vacuum
      state: >
        {% set room_name = "dining_room" %}
        {% set queue = trigger.to_state.state.split(",") %}
        {{ queue.index(room_name)+1 if room_name in queue else 0 }}
    - unique_id: deebot_merlin_queue_bedroom
      name: deebot_merlin_queue_bedroom
      # room_name must match the room name provided by the vacuum
      state: >
        {% set room_name = "bedroom" %}
        {% set queue = trigger.to_state.state.split(",") %}
        {{ queue.index(room_name)+1 if room_name in queue else 0 }}

Salut @Seth3d85,

J’ai bien tout cela.
En fait, je pense que mon problème provient du nom des pièces configurées dans l’appli du robot. Je ne peux pas donner le nom que je souhaite (appli ecovacshome sur iphone).
J’ai donc sélectionné pour chaque zone les noms préprogrammés (Salon, Chambre…).
Si je remplace « living_room » par « salon », cela ne fonctionne pas.

Quand je regarde la carte du robot je vois ceci :
image

As-tu la même chose ?
Merci.

J’ai la même application sur mon iPhone, en faite dans l’application tu sait leur donner le nom que tu veux mais dans HA ce nom sera toujours en anglais. Et les pièces avec un - à la place du nom dans HA c’est parce que il y a plusieurs pièces avec le même logo. Tu dois aller dans cartographie —> modifier les zones —> cliquer sur là pièces que tu veux —> étiquettes et là chaque pièce doit avoir un nom et une icône différentes. Et après ça tu recharges ton intégration Ecovacs sur HA et tu regarde si les attributs ont bien changé.




Et dans HA tu dois utiliser les noms anglais comme écrit dans les attributs

Salut,

Merci pour tes explications.
Ce n’est pas la même application/visuel car moi je ne peux pas éditer le nom des pièces.
Le problème principal vient de là.

J’ai déjà essayé de sélectionner la pièce “Salon” et d’indiquer “living_room” et ça n’a pas marché …

Peux-tu me faire un screen de ton application iOS ?

@Seth3d85,

Voici 2 screens:

  1. Différence 1: il n’y a pas de zone où saisir le nom de la zone
  2. Différence 2: les zones sont repérées par un symbole et il n’y a pas de nom de zone non plus.

Je vois que tu dois appuyer sur la zone pour modifier l’etiquette donc tu dois avoir moyen de leurs donner un nom prédéfini même si il ne s’affiche pas sur ton plan et au moins il auront tous un « nom » différents.

Je te confirme que c’est ce que j’ai fait.
Si je mets le nom prédéfini “Salon” sur l’appli, si j’utilise “living-room” dans la configuration HA, cela ne semble pas fonctionner.

Je regarderai encore une fois ce week-end, peut-être en rechargeant l’intégration.