Séquence de pièces pour Dreame dans Home Assistant

Intégrer un robot aspirateur dans Home Assistant, c’est pratique, mais pouvoir nettoyer pièce par pièce selon vos besoins rend l’expérience vraiment flexible. Dans cet article, je vous montre comment j’ai mis en place une séquence de nettoyage par segments pour mon Dreame, avec des boutons toggle dans le dashboard, un helper pour gérer les segments et un mode de nettoyage dynamique.


1️⃣ Principe général

L’idée est simple :

  • Chaque pièce correspond à un segment du plan de votre maison, à une séquence de pièces pour Dreame
  • L’utilisateur peut sélectionner les segments à nettoyer en activant ou désactivant les boutons correspondants.
  • Un script principal lance le nettoyage sur tous les segments sélectionnés, avec le mode choisi (balayage seul ou balayage + lavage).

On utilise pour cela :

  • input_text.dreame_segments → contient les segments sélectionnés (ex. "13,8").
  • input_select.dreame_cleaning_mode → permet de choisir le mode (sweeping ou sweeping_and_mopping).
  • Un script YAML nettoyage_segments_complet → exécute le nettoyage pour les segments sélectionnés.

2️⃣ Scripts et helpers

a) Helper pour les segments

input_text:
  dreame_segments:
    name: Segments Dreame

b) Helper pour le mode de nettoyage

input_select:
  dreame_cleaning_mode:
    name: Mode de nettoyage
    options:
      - sweeping
      - sweeping_and_mopping
    initial: sweeping

c) Script principal

nettoyage_segments_complet:
  alias: Nettoyage segments (complet)
  sequence:
    # 1️⃣ Sélection du mode de nettoyage
    - service: select.select_option
      target:
        entity_id: select.nono_cleaning_mode
      data:
        option: "{{ states('input_select.dreame_cleaning_mode') | default('sweeping') }}"

    # 2️⃣ Vérification des segments
    - choose:
        - conditions:
            - condition: template
              value_template: "{{ states('input_text.dreame_segments') | default('') != '' }}"
          sequence:
            - service: dreame_vacuum.vacuum_clean_segment
              data:
                entity_id: vacuum.nono
                segments: "{{ states('input_text.dreame_segments') | default('') }}"
      default: []

Ici, segments est passé comme chaîne CSV, ce qui est compatible avec le plugin Dreame et évite les erreurs de type.


3️⃣ Les boutons toggle pour sélectionner les segments

Chaque bouton ajoute ou retire le segment correspondant dans le helper input_text.dreame_segments. Exemple pour deux pièces :

type: custom:button-card
name: Ch2
tap_action:
  action: call-service
  service: script.toggle_segment_ch2
styles:
  card:
    - border-radius: 12px
    - height: 100px
    - display: grid
    - place-items: center

Le script script.toggle_segment_ch2 gère le toggle :

toggle_segment_ch2:
  alias: Toggle Ch2
  sequence:
    - service: input_text.set_value
      data:
        entity_id: input_text.dreame_segments
        value: >
          {% set segments = states('input_text.dreame_segments') | default('') | split(',') %}
          {% if '13' in segments %}
            {{ segments | reject('equalto','13') | join(',') }}
          {% else %}
            {{ (segments + ['13']) | reject('equalto','') | join(',') }}
          {% endif %}
  • La logique est la même pour toutes les pièces, il suffit de changer le chiffre du segment.

4️⃣ Bouton “Démarrer le nettoyage”

Le bouton final déclenche le script principal :

type: custom:button-card
name: Démarrer nettoyage
icon: mdi:robot-vacuum
tap_action:
  action: call-service
  service: script.nettoyage_segments_complet
styles:
  card:
    - background-color: >
        [[[ return (states['input_text.dreame_segments']?.state || '') === '' ? 'grey' : 'var(--primary-color)'; ]]]
    - opacity: >
        [[[ return (states['input_text.dreame_segments']?.state || '') === '' ? 0.4 : 1; ]]]
  • Bouton grisé si aucun segment sélectionné
  • Bouton coloré si au moins un segment est actif
  • Le script ne s’exécute pas si le helper est vide → plus d’erreurs.

5️⃣ Bonus UX

  • Affichage du helper input_text.dreame_segments dans le dashboard pour visualiser les segments sélectionnés.
  • Style dynamique des boutons pour montrer visuellement quelles pièces sont activées.
  • Possibilité de changer le mode de nettoyage à la volée via un bouton toggle (sweepingsweeping_and_mopping).

6️⃣ Résultat visuel

Séquence de nettoyage par pièce
  • Les pièces sont colorées selon leur sélection
  • Le robot suit la séquence définie
  • Interface moderne et lisible, avec un bouton principal pour lancer le nettoyage

Conclusion

Avec cette approche, Home Assistant devient un vrai centre de contrôle intelligent pour votre Dreame. Chaque pièce peut être nettoyée indépendamment, le mode de nettoyage est configurable, et le dashboard donne un retour visuel immédiat sur les sélections.

Cette architecture peut être étendue à toutes les pièces de votre maison, avec autant de scripts toggle que nécessaire, et le système reste robuste et facilement maintenable.



Cet article vous a plu ? Partagez-le 😉



Ceci pourrait vous intéresser :

Leave a Comment