Merci, je vais certainement essayer, mais en attendant, j’ai fait quelques recherches et préparé une configuration manuelle. Je peux désormais contrôler mon aspirateur Rowenta Explorer 130 depuis HA sans intégration directe, en utilisant simplement le modèle d’aspirateur et l’intégration REST.
image
image
746 × 556 22,5 Ko
Si quelqu’un est intéressé par les détails, vous pouvez ajouter le code suivant dans votre configuration.yaml pour faire la même chose
Tout d’abord, vous devrez obtenir quelques détails de l’application RobEey (qui s’exécute sur le port 8080 de l’IP de votre aspirateur)
This is the configuration part
input_text:
vacuum_cleaner_ip:
name: “Vacuum cleaner IP”
# You need to set your local IP
initial: “192.168.X.X”
vacuum_cleaner_map_id:
name: “Vacuum cleaner map ID”
# You need to set Map ID from RobEye app
initial: “3”
This is the are mapping with human names and internal IDs from RobEey app
input_select:
vacuum_cleaner_area:
icon: mdi:map-marker
options:
- Bed room-1
- Kitchen-3
- Bathroom-6
- Living room-10
- Hall-11
- Toilet-14
- Hall and Bathroom-11,6
Vous pouvez obtenir votre identifiant de carte à partir d’ici
image
Et puis à partir de l’image de la carte, vous pouvez obtenir l’ID des zones :
image
image
871 × 600 91,5 Ko
Ensuite, vous pouvez simplement ajouter une configuration préparée comme je l’ai fait et vous assurer de redémarrer l’ensemble du HA dans le menu des outils de développement.
APIs for the sensors values
rest:
resource_template: http://{{states(‘input_text.vacuum_cleaner_ip’)}}:8080/get/status
sensor:
- name: Vacuum battery level
value_template: “{{ value_json.battery_level | int }}”
unit_of_measurement: “%”
icon: mdi:battery
- name: Vacuum mode
value_template: “{{ value_json.mode }}”
icon: mdi:robot-vacuum
- name: Vacuum charging
value_template: “{{ value_json.charging }}”
icon: mdi:battery-charging
- name: Vacuum fan speed
value_template: “{{ value_json.cleaning_parameter_set }}”
icon: mdi:speedometer
Commands to control the Vacuum cleaner
rest_command:
rowenta_return_to_base:
url: “http://{{states(‘input_text.vacuum_cleaner_ip’)}}:8080/set/go_home”
rowenta_stop:
url: “http://{{states(‘input_text.vacuum_cleaner_ip’)}}:8080/set/stop”
rowenta_clean_all:
url: “http://{{states(‘input_text.vacuum_cleaner_ip’)}}:8080/set/clean_all?cleaning_parameter_set={{cleaning_parameter_set}}&cleaning_strategy_mode=1&pump_volume=none”
rowenta_clean_spot:
url: “http://{{states(‘input_text.vacuum_cleaner_ip’)}}:8080/set/clean_map?map_id={{states(‘input_text.vacuum_cleaner_map_id’)}}&area_ids={{area_ids}}&cleaning_parameter_set={{cleaning_parameter_set}}&cleaning_strategy_mode=1&pump_volume=none”
rowenta_set_fan_speed:
url: “http://{{states(‘input_text.vacuum_cleaner_ip’)}}:8080/set/switch_cleaning_parameter_set?cleaning_parameter_set={{cleaning_parameter_set}}”
rowenta_status:
url: “http://{{states(‘input_text.vacuum_cleaner_ip’)}}:8080/get/status”
Vacuum template
vacuum:
- platform: template
vacuums:
rowenta_vacuum:
# Change to yours SN
unique_id: “aicu-123345909090”
friendly_name: “Vacuum cleaner”
battery_level_template: “{{states(‘sensor.vacuum_battery_level’)}}”
fan_speed_template: “{{states(‘sensor.vacuum_fan_speed’)}}”
value_template: >-
{% if states(‘sensor.vacuum_mode’) == “cleaning” %}
cleaning
{% elif states(‘sensor.vacuum_mode’) == “ready” and ( states(‘sensor.vacuum_charging’) == “charging” or states(‘sensor.vacuum_charging’) == “connected” ) %}
docked
{% elif states(‘sensor.vacuum_mode’) == “ready” and states(‘sensor.vacuum_charging’) == “unconnected” %}
paused
{% elif states(‘sensor.vacuum_mode’) == “go_home” %}
returning
{% else %}
error
{% endif %}
attribute_templates:
cleaning_area: >-
{% set parts = states(‘input_select.vacuum_cleaner_area’).split(‘-’) %}
{{ parts[0] }}
start:
service: rest_command.rowenta_clean_all
data:
cleaning_parameter_set: >-
{% set fan_speed_reverse_map = { ‘Normal’:‘1’, ‘Eco’:‘2’, ‘High’:‘3’, ‘Silent’: ‘4’ } %}
{{ fan_speed_reverse_map[states(‘input_select.vacuum_cleaner_fan_speed’)] }}
stop:
service: rest_command.rowenta_stop
return_to_base:
service: rest_command.rowenta_return_to_base
clean_spot:
service: rest_command.rowenta_clean_spot
data:
area_ids: >-
{% set parts = states(‘input_select.vacuum_cleaner_area’).split(‘-’) %}
{{ parts[1] }}
cleaning_parameter_set: >-
{% set fan_speed_reverse_map = { ‘Normal’:‘1’, ‘Eco’:‘2’, ‘High’:‘3’, ‘Silent’: ‘4’ } %}
{{ fan_speed_reverse_map[states(‘input_select.vacuum_cleaner_fan_speed’)] }}
set_fan_speed:
- service: rest_command.rowenta_set_fan_speed
data:
cleaning_parameter_set: >-
{% set fan_speed_reverse_map = { ‘Normal’:‘1’, ‘Eco’:‘2’, ‘High’:‘3’, ‘Silent’: ‘4’ } %}
{{ fan_speed_reverse_map[fan_speed] }}
- service: input_select.select_option
data:
option: “{{ fan_speed }}”
target:
entity_id: input_select.vacuum_cleaner_fan_speed
fan_speeds:
- Normal
- Eco
- High
- Silent
#Helper input select with fan speed
input_select:
vacuum_cleaner_fan_speed:
icon: mdi:speedometer
options:
- Normal
- Eco
- High
- Silent
Helper button to start area cleaning
input_button:
vacuum_cleaner_start_area_cleaning:
name: Start area cleaning
icon: mdi:vacuum
Automation to start the spot cleaning
automation:
- id: ‘1700602293259’
alias: Vacuum start area cleaning
description: ‘’
trigger:
- platform: state
entity_id:
- input_button.vacuum_cleaner_start_area_cleaning
condition:
action:
- service: vacuum.clean_spot
data: {}
target:
entity_id: vacuum.rowenta_vacuum
Vous pouvez également créer des boutons de raccourci pour nettoyer une pièce spécifique comme ceci :
Helper button to start kitchen cleaning
input_button:
vacuum_cleaner_start_kitcheb_cleaning:
name: Start kitchen cleaning
icon: mdi:vacuum
automation:
- id: ‘1700636942173’
alias: 'Clean kitchen ’
description: ‘’
trigger:
- platform: state
entity_id:
- input_button.clean_kitchen
condition:
action:
- service: input_select.select_option
data:
You need to specify the option from the area-ids mapping selector
option: Kitchen-3
target:
entity_id: input_select.vacuum_cleaner_area
- service: vacuum.clean_spot
data: {}
target:
entity_id: vacuum.rowenta_vacuum
mode: single
Et voici mon exemple de configuration de carte de tableau de bord, qui ressemble à ceci :
image
type: entities
entities:
- entity: vacuum.rowenta_vacuum
- entity: sensor.vacuum_battery_level
name: Battery
- entity: input_select.vacuum_cleaner_area
name: Area
icon: mdi:map-marker
- entity: input_select.vacuum_cleaner_fan_speed
name: Cleaning mode
icon: mdi:speedometer
- entity: input_button.vacuum_cleaner_start_area_cleaning
title: Vacuum cleaner
footer:
type: buttons
entities:
- entity: input_button.clean_kitchen
show_icon: true
show_name: true
Hello
I’m new to HA, and your integration interests me and perfectly meets my expectations! I tried copying and pasting your code into my configuration.yaml file, and I’m getting an error message.
Could you tell me why this isn’t working? Maybe I didn’t copy it to the right place? Can you tell me where to copy each part of your code (config.yaml, etc.)?
Sorry, but I’m a beginner.
Thank you very much!