@Gabriele_Mandalari any idea on how to fix it?
Hi Stefano,
sorry I missed something…what are you referring to?
UI is ready to manage selection of multiple rooms and number of times with buttons and input_booleans…
I also have the code to feed rooms and cleanings parameters… but it doesn’t seem to work…
cleanings: >
{%- if is_state('input_boolean.deebot_times', 'on')
-%}2{%- else -%}1{%- endif -%}
rooms: >
{%- if is_state('input_boolean.deebot_cucina', 'on')
-%}1,{% endif %}{%- if
is_state('input_boolean.deebot_sala', 'on')-%}0,{% endif
%}{%- if is_state('input_boolean.deebot_camera',
'on')-%}3,{% endif %}{%- if
is_state('input_boolean.deebot_bagno_grande','on')
-%}5,{% endif %} {%- if
is_state('input_boolean.deebot_bagno_piccolo','on')
-%}8,{% endif %}{%- if
is_state('input_boolean.deebot_corridoio', 'on')-%}2,{%
endif %} {%- if is_state('input_boolean.deebot_aurora',
'on')-%}7,{% endif %}{%- if
is_state('input_boolean.deebot_giovanni', 'on') -%}6,{%
endif %}
In general… it seems that I’m not able to transform parametric values, code included in {{, % or whatever else… into the final result value inside the lovelace.yaml…
Am I missing something?
I’m very close to the solution…
With notify.notify I can read the value of x, and it’s correct… but it doesn’t work with rooms…
- type: 'custom:config-template-card'
entities:
- input_boolean.deebot_times
- input_boolean.deebot_cucina
- input_boolean.deebot_sala
- input_boolean.deebot_camera
- input_boolean.deebot_bagno_grande
- input_boolean.deebot_bagno_piccolo
- input_boolean.deebot_corridoio
- input_boolean.deebot_aurora
- input_boolean.deebot_giovanni
card:
type: 'custom:button-card'
color: white
entity: null
icon: 'mdi:view-dashboard-outline'
name: Stanze
styles:
card:
- font-size: 12px
- background-color: black
- color: white
tap_action:
action: call-service
service: vacuum.send_command
#service: notify.notify
service_data:
command: spot_area
entity_id: vacuum.aspirapolvere
params:
cleanings: >-
{%- if is_state('input_boolean.deebot_times', 'on') -%}2{%- else
-%}1{%- endif -%}
rooms: >-
{%- set x = "" %}
{% if is_state('input_boolean.deebot_cucina', 'on') %}
{% set x = x + "1," %}
{% endif %}
{% if is_state('input_boolean.deebot_sala', 'on') %}
{% set x = x + "0," %}
{% endif %}
{% if is_state('input_boolean.deebot_camera', 'on') %}
{% set x = x + "3," %}
{% endif %}
{% if is_state('input_boolean.deebot_bagno_grande','on') %}
{% set x = x + "5," %}
{% endif %}
{% if is_state('input_boolean.deebot_bagno_piccolo','on') %}
{% set x = x + "8," %}
{% endif %}
{% if is_state('input_boolean.deebot_corridoio', 'on') %}
{% set x = x + "2," %}
{% endif %}
{% if is_state('input_boolean.deebot_aurora', 'on') %}
{% set x = x + "7," %}
{% endif %}
{% if is_state('input_boolean.deebot_giovanni', 'on') %}
{% set x = x + "6," %}
{% endif %}
{{x[:-1]}}
Ok! I solved it in this way:
vacuum_clean_zone:
alias: Pulisci zona
sequence:
- service: vacuum.send_command
data_template:
command: "{{command}}"
entity_id: "{{entity_id}}"
params:
act: start
content: >
{%- set x = "" %}
{% if is_state('input_boolean.clean_kitchen_boolean', 'on') %}
{% set x = x + "0," %}
{% endif %}
{% if is_state('input_boolean.clean_living_boolean', 'on') %}
{% set x = x + "2," %}
{% endif %}
{% if is_state('input_boolean.clean_lunch_boolean', 'on') %}
{% set x = x + "10," %}
{% endif %}
{% if is_state('input_boolean.clean_disimpegno_boolean', 'on') %}
{% set x = x + "3," %}
{% endif %}
{% if is_state('input_boolean.clean_little_bathroom_boolean', 'on') %}
{% set x = x + "5," %}
{% endif %}
{% if is_state('input_boolean.clean_bathroom_boolean', 'on') %}
{% set x = x + "4," %}
{% endif %}
{% if is_state('input_boolean.clean_bedroom_boolean', 'on') %}
{% set x = x + "6," %}
{% endif %}
{% if is_state('input_boolean.clean_little_bedroom_boolean', 'on') %}
{% set x = x + "9," %}
{% endif %}
{{x[:-1]}}
count: "{{count}}"
type: "{{type}}"
- service: input_boolean.turn_off
data:
entity_id: input_boolean.clean_kitchen_boolean
- service: input_boolean.turn_off
data:
entity_id: input_boolean.clean_living_boolean
- service: input_boolean.turn_off
data:
entity_id: input_boolean.clean_lunch_boolean
- service: input_boolean.turn_off
data:
entity_id: input_boolean.clean_disimpegno_boolean
- service: input_boolean.turn_off
data:
entity_id: input_boolean.clean_little_bathroom_boolean
- service: input_boolean.turn_off
data:
entity_id: input_boolean.clean_bathroom_boolean
- service: input_boolean.turn_off
data:
entity_id: input_boolean.clean_bedroom_boolean
- service: input_boolean.turn_off
data:
entity_id: input_boolean.clean_little_bedroom_boolean
UI:
cards:
- color: auto
entity: null
icon: 'mdi:map-marker-radius'
name: Localizza
styles:
card:
- font-size: 12px
tap_action:
action: call-service
service: vacuum.locate
service_data:
entity_id: vacuum.robi
type: 'custom:button-card'
- type: entity-button
icon: 'mdi:robot-vacuum-variant'
name: Pulisci
tap_action:
action: call-service
service: script.vacuum_clean_zone
service_data:
command: clean
entity_id: vacuum.robi
count: 1
type: spotArea
- color: auto
entity: null
icon: 'mdi:robot-vacuum'
name: Dock
styles:
card:
- font-size: 12px
tap_action:
action: call-service
service: vacuum.return_to_base
service_data:
entity_id: vacuum.robi
type: 'custom:button-card'
type: horizontal-stack
Firstly I select the rooms and the “Pulisci” button.
Thanks!!! I will try it…
Why do you repeat this for each room?
` - service: input_boolean.turn_off
data:`
It works now!!! Even if I don’t understand the use of input_boolean.turn_off…
I was also able to change the color of the fan/water level to indicate the selected one
- type: 'custom:config-template-card'
entities:
- sensor.deebot_water_level
variables:
- states['sensor.deebot_water_level'].state
card:
color: "${vars[0] === 'ultrahigh' ? 'yellow' : 'white'}"
entity: null
icon: 'mdi:flask-empty-plus'
name: Altissima
styles:
card:
- font-size: 12px
- background-color: black
- color: white
tap_action:
action: call-service
service: vacuum.send_command
service_data:
command: set_water
entity_id: vacuum.aspirapolvere
params:
amount: ultrahigh
type: 'custom:button-card'
My last two problems and I can consider this integration completed
- How to make the number of cleanings a parameter in the script you provided
- How to read the status of the vacuum (in dock, charging, cleaning… etc…)
Because I prefer to reset the status of all inputs after the cleeaning
For the number of cleanings you should just pass the number dynamically from the script using a spicific input to read that… for instance an input_select
Hello. is it possible to have a detailed guide do i have files to set up for your identities? I also have a 950
I fixed your script. The parameters name were wrong. I added a debug line in the code vacuum.py to check the parameters passed. Now cleanings/rooms should be ok (my error was that I inverted them silly one…). Your error was about the name of parameters (not count/content, but they must be rooms/cleanings).
Please check if it works with 2 times cleaning… I didn’t have time for it. I saw that rooms are passed properly if I call the service from HA and then open the app (but in the app there’s no way to check the number of times it should clean…)
vacuum_clean_zone:
alias: Pulisci zona
sequence:
- service: vacuum.send_command
data_template:
command: spot_area
entity_id: vacuum.aspirapolvere
params:
rooms: >-
{%- set x = "" %}
{% if is_state('input_boolean.deebot_cucina', 'on') %}
{% set x = x + "1," %}
{% endif %}
{% if is_state('input_boolean.deebot_sala', 'on') %}
{% set x = x + "0," %}
{% endif %}
{% if is_state('input_boolean.deebot_camera', 'on') %}
{% set x = x + "3," %}
{% endif %}
{% if is_state('input_boolean.deebot_bagno_grande','on') %}
{% set x = x + "5," %}
{% endif %}
{% if is_state('input_boolean.deebot_bagno_piccolo','on') %}
{% set x = x + "8," %}
{% endif %}
{% if is_state('input_boolean.deebot_corridoio', 'on') %}
{% set x = x + "2," %}
{% endif %}
{% if is_state('input_boolean.deebot_aurora', 'on') %}
{% set x = x + "7," %}
{% endif %}
{% if is_state('input_boolean.deebot_giovanni', 'on') %}
{% set x = x + "6," %}
{% endif %}
{{x[:-1]}}
cleanings: >-
{%- if is_state('input_boolean.deebot_times', 'on') -%}2{%- else
-%}1{%- endif -%}
- service: input_boolean.turn_off
data:
entity_id: input_boolean.deebot_cucina
- service: input_boolean.turn_off
data:
entity_id: input_boolean.deebot_sala
- service: input_boolean.turn_off
data:
entity_id: input_boolean.deebot_camera
- service: input_boolean.turn_off
data:
entity_id: input_boolean.deebot_bagno_grande
- service: input_boolean.turn_off
data:
entity_id: input_boolean.deebot_bagno_piccolo
- service: input_boolean.turn_off
data:
entity_id: input_boolean.deebot_corridoio
- service: input_boolean.turn_off
data:
entity_id: input_boolean.deebot_aurora
- service: input_boolean.turn_off
data:
entity_id: input_boolean.deebot_giovanni
- service: input_boolean.turn_off
data:
entity_id: input_boolean.deebot_times
It’s not my mistake … the integration comes with that configuration and it works properly for me.
+1
Can someone please share a more detail step by step guide in using the custom component ?
Thanks.
This is the code snippet inside the custom component
if command == 'spot_area':
return self.device.SpotArea(params['rooms'], params['cleanings'])
So rooms and cleanings are the parameters he expects I dunno why with content and count it works, but the number of cleanings was not working for me before
Hi,
I wanted to inform that I installed “And3rsL / Deebot-for-hassio” via HACS and that it also works correctly with Deebot 960, thanks @Andrea_Liosi
I was able to configure everything, including zone cleaning.
At the moment, just for my ignorance, I’ve problem to load the map (last_clean_image) of the last cleaning in the right way into frontend.
I tried to make a simple image card and pass them the last_clean_image attribute or the sensor created specifically
platform: template
sensors:
vacuum_last_clean_image:
friendly_name: "Vacuum Last Clean Image"
value_template: "{{ state_attr('vacuum.robi', 'last_clean_image') }}"
entity_picture_template: "{{ state_attr('vacuum.robi', 'last_clean_image') }}"
but it probably doesn’t work because image/picture card doesn’t take the templates as URL or I don’t know the right solution.
The only way I managed to load the image (last_clean_image) was to create a camera in configuration.yaml and then create an image entity as a card.
Can anyone tell me a simpler and less invasive way to load the last_clean_image map?
Thanks.
- card:
entity: sensor.deebot_last_clean_image
image: '${states[''sensor.deebot_last_clean_image''].state}'
type: 'custom:hui-image-element'
entities:
- sensor.deebot_last_clean_image
style:
height: 5%
left: 35%
top: 45%
transform: 'translate(0%,2%)'
width: 5%
type: 'custom:config-template-card'
- platform: template
sensors:
deebot_last_clean_image:
friendly_name: "Immagine Ultima Pulizia"
unit_of_measurement: ''
value_template: "{{ state_attr('vacuum.aspirapolvere', 'last_clean_image') }}"
I lost hours and hours of testing instead I just had to write here to get the solution. Thanks a lot @StefanoGiu
Do you know if there is a way to also have the map in real time while the vacuum is cleaning?
A map where you can see the vacuum that moves through all the rooms. To understand the map in real time as seen on the official Ecovacs mobile application. Thanks.