sensor:
vacuum_area_limpeza_total:
friendly_name: Área Total Aspirada
value_template: '{{ states.vacuum.xiaomi_vacuum_cleaner.attributes.total_cleaned_area }}'
unit_of_measurement: 'm ²'
m2_lixo:
friendly_name: "nivel deposito de lixo"
value_template: >
{%- if ((float(states.sensor.vacuum_area_limpeza_total.state) - float(states.input_number.m2_vazio.state))) | int == 200 %}
100
{% elif ((float(states.sensor.vacuum_area_limpeza_total.state) - float(states.input_number.m2_vazio.state))) | int >= 180 %}
90
{% elif ((float(states.sensor.vacuum_area_limpeza_total.state) - float(states.input_number.m2_vazio.state))) | int >= 160 %}
80
{% elif ((float(states.sensor.vacuum_area_limpeza_total.state) - float(states.input_number.m2_vazio.state))) | int >= 140 %}
70
{% elif ((float(states.sensor.vacuum_area_limpeza_total.state) - float(states.input_number.m2_vazio.state))) | int >= 120 %}
60
{% elif ((float(states.sensor.vacuum_area_limpeza_total.state) - float(states.input_number.m2_vazio.state))) | int >= 100 %}
50
{% elif ((float(states.sensor.vacuum_area_limpeza_total.state) - float(states.input_number.m2_vazio.state))) | int >= 80 %}
40
{% elif ((float(states.sensor.vacuum_area_limpeza_total.state) - float(states.input_number.m2_vazio.state))) | int >= 60 %}
30
{% elif ((float(states.sensor.vacuum_area_limpeza_total.state) - float(states.input_number.m2_vazio.state))) | int >= 40 %}
20
{% elif ((float(states.sensor.vacuum_area_limpeza_total.state) - float(states.input_number.m2_vazio.state))) | int >= 20 %}
10
{% elif ((float(states.sensor.vacuum_area_limpeza_total.state) - float(states.input_number.m2_vazio.state))) | int >= 0 %}
0
{% else %}
{% endif %}
unit_of_measurement: '%'
#### inicio peretence ao automatismo de medir m2 para achar balde cheio
input_number:
m2_vazio:
name: m2 vazio
mode: box
min: 0
max: 999999999
automation:
- alias: activar despejar lixo
trigger:
- platform: state
entity_id: person.ricardo_costa
to: home
condition:
condition: and
conditions:
- condition: template
value_template: "{{ states.sensor.m2_lixo.state >= '90' }}"
action:
- delay: 600
- service: script.turn_on
data:
entity_id: script.despejar_lixo
script:
despejar_lixo:
sequence:
# ir para a frente do caixote do lixo
- service: vacuum.send_command
data:
entity_id: vacuum.xiaomi_vacuum_cleaner
command: app_goto_target
params: [17900,26350]
#Wait untill done
- wait_template: "{{ states.vacuum.xiaomi_vacuum_cleaner.attributes.status == 'Idle'}}"
- service: notify.alexa_media
data_template:
target: 'media_player.echo_dot_de_ricardo'
data:
type: announce
message: "<voice name='Ines'><lang xml:lang='pt-PT'> Despejar lixo do panquéca !</lang></voice>"
- delay: '00:00:30'
#regressar à base
- service: vacuum.return_to_base
data:
entity_id: vacuum.xiaomi_vacuum_cleaner
- service: input_number.set_value
data_template:
entity_id: input_number.m2_vazio
value: "{{ states('sensor.vacuum_area_limpeza_total') }}"
@maskiopt
Bem acho que não me esqueci de nada. Os dois sensores podem ser simplificados, na verdade o primeiro só serve para tirar o atributo do aspirador e torná-lo num sensor.
Para o sensor m2 lixo começar a contar é preciso ou activar o script e ele correr completamente ou colocar à mão o valor actual da arêa total limpa no input_number.
qualquer duvida é só apitar.