Estou a assumir que o vosso aspirador já está integrado e que já tem os ids das divisões, caso contrário existe tuturiais no forum com essa informação, é ver esses tuturiais primeiro.
Vou deixar aqui a apresentação do que eu uso atualmente para controlar o meu roborock e vou colocar os passos necessarios para ter as mesmas funções.
O primeiro card tem uns comandos simples do robot e algumas informações uteis do mesmo, o segundo card tem o mapa em tempo real e tem a opção “go to target” e " zone cleanup ", já o terceiro card para mim é o mais importante de todos, nesse cartão podemos selecionar as divisões que queremos aspirar e o número de vezes que cada uma vai ser aspirada.
Agora vou tentar explicar como obter um setup igual, de qualquer forma vou assumir que já tem o vosso roborock adicionado no HA pronto a usar. Também quero deixar a nota que eu uso NodeRed para automações, e este tutorial vai-se basear no NR, também vou assumir que tem o HACS instalado.
1 - A instalar :
2 - Configuração Xiaomi Cloud Map Extractor
camera:
- platform: xiaomi_cloud_map_extractor
host: ip_do_teu_roborock
token: token_do_teu_roborock
username: username_da_tua_conta_xiaomi
password: password_da_tua_conta_xiaomi
auto_update: false
draw: ['all']
attributes:
- calibration_points
colors:
color_map_wall_v2: [0, 0, 0]
color_grey_wall: [160, 160, 160]
color_path: [0, 0, 0]
sizes:
charger_radius: 7
vacuum_radius: 6.5
map_transformation:
scale: 2
trim:
top: 27
bottom: 29
left: 18
right: 16
No que diz respeito as colors, sizes e map transformations, isto deve ser alterado a gosto de cada um, o auto update eu não uso, porque isto causa um load desnecessário na maquina que corre o HA, porque esta integração vai fazer update ao mapa a cada 5s estejam ou não a usar o robot, mais para frente vão ver como eu faço update ao mapa apenas quando o robot está a movimentar-se pela casa.
3 - Helpers
Para isto tudo funcionar é necessário criar vários helpers, eu crio os meus na UI, não o faço no configuration. Sendo assim é ir ao menu de Helpers e criar os seguintes. Um toggle que vai ser o botão de inicio da aspiração, e vários input numbers que vão ser usados para as divisões, exemplo em baixo.
4 - NodeRED
No nodered uso 2 flows, um deles faz update ao mapa quando o robot está a limpar ou a regressar a base, assim garanto que o mapa fica sempre atualizado apenas quando realmente faz falta, e o outro flow é o que gere as divisões o número de vezes a limpar quando eu seleciono para aspirar. (mais uma vez chamo a atenção para a necessidade de ajustar ao caso de cada um.
[{"id":"a63c9be1.ee95e8","type":"tab","label":"Roborock","disabled":false,"info":""},{"id":"bcbfcc5f.dec3d","type":"api-call-service","z":"a63c9be1.ee95e8","name":"Map Update","server":"48c6a047.be8eb","version":1,"debugenabled":false,"service_domain":"homeassistant","service":"update_entity","entityId":"camera.xiaomi_cloud_map_extractor","data":"","dataType":"jsonata","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":670,"y":240,"wires":[["ea8cb3eb.ca3dd","a843828c.34b51"]]},{"id":"bc974841.0bf828","type":"server-state-changed","z":"a63c9be1.ee95e8","name":"Robock Docked","server":"48c6a047.be8eb","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"vacuum.aspirador","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"x":120,"y":240,"wires":[["cd96eee1.fadce"]]},{"id":"d7b24b12.9306a8","type":"delay","z":"a63c9be1.ee95e8","name":"","pauseType":"delay","timeout":"4","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":440,"y":280,"wires":[["bcbfcc5f.dec3d"]]},{"id":"cd96eee1.fadce","type":"switch","z":"a63c9be1.ee95e8","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"cleaning","vt":"str"},{"t":"eq","v":"returning","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":270,"y":240,"wires":[["bcbfcc5f.dec3d"],["bcbfcc5f.dec3d"]]},{"id":"a843828c.34b51","type":"api-current-state","z":"a63c9be1.ee95e8","name":"cleaning","server":"48c6a047.be8eb","version":1,"outputs":2,"halt_if":"cleaning","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"vacuum.aspirador","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":440,"y":120,"wires":[["d7b24b12.9306a8"],[]]},{"id":"ea8cb3eb.ca3dd","type":"api-current-state","z":"a63c9be1.ee95e8","name":"returning","server":"48c6a047.be8eb","version":1,"outputs":2,"halt_if":"returning","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"vacuum.aspirador","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":440,"y":180,"wires":[["d7b24b12.9306a8"],[]]},{"id":"5f5c1f29.1e211","type":"comment","z":"a63c9be1.ee95e8","name":"Atualização do mapa do aspirador apenas quando está a funcionar","info":"","x":280,"y":40,"wires":[]},{"id":"5e914371.29870c","type":"comment","z":"a63c9be1.ee95e8","name":"Escolha de divisões e nr de limpezas","info":"","x":180,"y":360,"wires":[]},{"id":"6363998a.ea18e8","type":"server-state-changed","z":"a63c9be1.ee95e8","name":"Iniciar Aspiração","server":"48c6a047.be8eb","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_boolean.iniciar_aspiracao","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"on","halt_if_type":"str","halt_if_compare":"is","outputs":2,"output_only_on_state_change":true,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"x":120,"y":640,"wires":[["ef348a46.b23b78","593df705.73a1b8"],[]]},{"id":"ef348a46.b23b78","type":"ha-get-entities","z":"a63c9be1.ee95e8","server":"48c6a047.be8eb","name":"Divisões","rules":[{"property":"entity_id","logic":"starts_with","value":"input_number.asp","valueType":"str"},{"property":"state","logic":"is_not","value":"0.0","valueType":"str"}],"output_type":"split","output_empty_results":false,"output_location_type":"msg","output_location":"payload","output_results_count":1,"x":300,"y":640,"wires":[["f3b58e3f.5d0db"]]},{"id":"f3b58e3f.5d0db","type":"switch","z":"a63c9be1.ee95e8","name":"","property":"payload.entity_id","propertyType":"msg","rules":[{"t":"eq","v":"input_number.aspcozinha","vt":"str"},{"t":"eq","v":"input_number.lavandaria","vt":"str"},{"t":"eq","v":"input_number.aspsala_de_estar","vt":"str"},{"t":"eq","v":"input_number.aspsala_de_jantar","vt":"str"},{"t":"eq","v":"input_number.asphall_entrada","vt":"str"},{"t":"eq","v":"input_number.aspcorredor","vt":"str"},{"t":"eq","v":"input_number.asparrumos","vt":"str"},{"t":"eq","v":"input_number.aspwc_servico","vt":"str"},{"t":"eq","v":"input_number.aspwc_principal","vt":"str"},{"t":"eq","v":"input_number.aspquarto","vt":"str"},{"t":"eq","v":"input_number.aspescritorio","vt":"str"}],"checkall":"true","repair":false,"outputs":11,"x":450,"y":640,"wires":[["9796c6a7.a31598"],["44e4c357.169ccc"],["60673abc.d61cf4"],["490a7e26.19f3d"],["f9902da2.016b"],["3505310c.0970be"],["bdeda0e3.33c67"],["7de1adea.950f04"],["884dbe90.fb594"],["d57f8762.dee0f8"],["117475f1.2f23aa"]]},{"id":"44e4c357.169ccc","type":"function","z":"a63c9be1.ee95e8","name":"Lavandaria","func":"if (msg.payload.state == \"1.0\") {\n msg.payload = \"20\";\n return msg;\n} else if \n (msg.payload.state == \"2.0\") {\n msg.payload = \"20,20\";\n return msg;\n} else {\n msg.payload = \"20,20,20\";\n return msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":650,"y":480,"wires":[["1b75df14.f0f251"]]},{"id":"60673abc.d61cf4","type":"function","z":"a63c9be1.ee95e8","name":"Sala Estar","func":"if (msg.payload.state == \"1.0\") {\n msg.payload = \"19\";\n return msg;\n} else if \n (msg.payload.state == \"2.0\") {\n msg.payload = \"18,18\";\n return msg;\n} else {\n msg.payload = \"18,18,18\";\n return msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":650,"y":520,"wires":[["1b75df14.f0f251"]]},{"id":"490a7e26.19f3d","type":"function","z":"a63c9be1.ee95e8","name":"Sala Jantar","func":"if (msg.payload.state == \"1.0\") {\n msg.payload = \"17\";\n return msg;\n} else if \n (msg.payload.state == \"2.0\") {\n msg.payload = \"17,17\";\n return msg;\n} else {\n msg.payload = \"17,17,17\";\n return msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":650,"y":560,"wires":[["1b75df14.f0f251"]]},{"id":"f9902da2.016b","type":"function","z":"a63c9be1.ee95e8","name":"Hall","func":"if (msg.payload.state == \"1.0\") {\n msg.payload = \"16\";\n return msg;\n} else if \n (msg.payload.state == \"2.0\") {\n msg.payload = \"16,16\";\n return msg;\n} else {\n msg.payload = \"16,16,16\";\n return msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":630,"y":600,"wires":[["1b75df14.f0f251"]]},{"id":"3505310c.0970be","type":"function","z":"a63c9be1.ee95e8","name":"Corredor","func":"if (msg.payload.state == \"1.0\") {\n msg.payload = \"21\";\n return msg;\n} else if \n (msg.payload.state == \"2.0\") {\n msg.payload = \"21,21\";\n return msg;\n} else {\n msg.payload = \"21,21,21\";\n return msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":640,"y":640,"wires":[["1b75df14.f0f251"]]},{"id":"bdeda0e3.33c67","type":"function","z":"a63c9be1.ee95e8","name":"Arrumos","func":"if (msg.payload.state == \"1.0\") {\n msg.payload = \"4\";\n return msg;\n} else if \n (msg.payload.state == \"2.0\") {\n msg.payload = \"4,4\";\n return msg;\n} else {\n msg.payload = \"4,4,4\";\n return msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":640,"y":680,"wires":[["1b75df14.f0f251"]]},{"id":"7de1adea.950f04","type":"function","z":"a63c9be1.ee95e8","name":"Wc Serviço","func":"if (msg.payload.state == \"1.0\") {\n msg.payload = \"8\";\n return msg;\n} else if \n (msg.payload.state == \"2.0\") {\n msg.payload = \"8,8\";\n return msg;\n} else {\n msg.payload = \"8,8,8\";\n return msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":650,"y":720,"wires":[["1b75df14.f0f251"]]},{"id":"884dbe90.fb594","type":"function","z":"a63c9be1.ee95e8","name":"WC Principal","func":"if (msg.payload.state == \"1.0\") {\n msg.payload = \"1\";\n return msg;\n} else if \n (msg.payload.state == \"2.0\") {\n msg.payload = \"1,1\";\n return msg;\n} else {\n msg.payload = \"1,1,1\";\n return msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":650,"y":760,"wires":[["1b75df14.f0f251"]]},{"id":"d57f8762.dee0f8","type":"function","z":"a63c9be1.ee95e8","name":"Quarto","func":"if (msg.payload.state == \"1.0\") {\n msg.payload = \"2\";\n return msg;\n} else if \n (msg.payload.state == \"2.0\") {\n msg.payload = \"2,2\";\n return msg;\n} else {\n msg.payload = \"2,2,2\";\n return msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":630,"y":800,"wires":[["1b75df14.f0f251"]]},{"id":"117475f1.2f23aa","type":"function","z":"a63c9be1.ee95e8","name":"Escritório","func":"if (msg.payload.state == \"1.0\") {\n msg.payload = \"6\";\n return msg;\n} else if \n (msg.payload.state == \"2.0\") {\n msg.payload = \"6,6\";\n return msg;\n} else {\n msg.payload = \"6,6,6\";\n return msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":640,"y":840,"wires":[["1b75df14.f0f251"]]},{"id":"9796c6a7.a31598","type":"function","z":"a63c9be1.ee95e8","name":"Cozinha","func":"if (msg.payload.state == \"1.0\") {\n msg.payload = \"19\";\n return msg;\n} else if \n (msg.payload.state == \"2.0\") {\n msg.payload = \"19,19\";\n return msg;\n} else {\n msg.payload = \"19,19,19\";\n return msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":640,"y":440,"wires":[["1b75df14.f0f251"]]},{"id":"1b75df14.f0f251","type":"join","z":"a63c9be1.ee95e8","name":"","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"5","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":850,"y":640,"wires":[["e9552009.8ddce"]]},{"id":"e9552009.8ddce","type":"api-call-service","z":"a63c9be1.ee95e8","name":"Aspirar","server":"48c6a047.be8eb","version":1,"debugenabled":false,"service_domain":"vacuum","service":"send_command","entityId":"vacuum.aspirador","data":"{ \"command\": \"app_segment_clean\", \"params\": [ {{payload}} ]}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1000,"y":640,"wires":[[]]},{"id":"593df705.73a1b8","type":"delay","z":"a63c9be1.ee95e8","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":180,"y":760,"wires":[["93d9d7be.073918"]]},{"id":"93d9d7be.073918","type":"api-call-service","z":"a63c9be1.ee95e8","name":"Aspiração off","server":"48c6a047.be8eb","version":1,"debugenabled":false,"service_domain":"input_boolean","service":"turn_off","entityId":"input_boolean.iniciar_aspiracao","data":"","dataType":"jsonata","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":350,"y":760,"wires":[[]]},{"id":"48c6a047.be8eb","type":"server","name":"Home Assistant","addon":true}]
[{"id":"6363998a.ea18e8","type":"server-state-changed","z":"a63c9be1.ee95e8","name":"Iniciar Aspiração","server":"48c6a047.be8eb","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_boolean.iniciar_aspiracao","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"on","halt_if_type":"str","halt_if_compare":"is","outputs":2,"output_only_on_state_change":true,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"x":100,"y":640,"wires":[["ef348a46.b23b78"],[]]},{"id":"ef348a46.b23b78","type":"ha-get-entities","z":"a63c9be1.ee95e8","server":"48c6a047.be8eb","name":"Divisões","rules":[{"property":"entity_id","logic":"starts_with","value":"input_number.asp","valueType":"str"},{"property":"state","logic":"is_not","value":"0.0","valueType":"str"}],"output_type":"split","output_empty_results":false,"output_location_type":"msg","output_location":"payload","output_results_count":1,"x":280,"y":640,"wires":[["f3b58e3f.5d0db"]]},{"id":"f3b58e3f.5d0db","type":"switch","z":"a63c9be1.ee95e8","name":"","property":"payload.entity_id","propertyType":"msg","rules":[{"t":"eq","v":"input_number.aspcozinha","vt":"str"},{"t":"eq","v":"input_number.asplavandaria","vt":"str"},{"t":"eq","v":"input_number.aspsala_de_estar","vt":"str"},{"t":"eq","v":"input_number.aspsala_de_jantar","vt":"str"},{"t":"eq","v":"input_number.asphall_entrada","vt":"str"},{"t":"eq","v":"input_number.aspcorredor","vt":"str"},{"t":"eq","v":"input_number.asparrumos","vt":"str"},{"t":"eq","v":"input_number.aspwc_servico","vt":"str"},{"t":"eq","v":"input_number.aspwc_principal","vt":"str"},{"t":"eq","v":"input_number.aspquarto","vt":"str"},{"t":"eq","v":"input_number.aspescritorio","vt":"str"}],"checkall":"true","repair":false,"outputs":11,"x":430,"y":640,"wires":[["9796c6a7.a31598"],["44e4c357.169ccc"],["60673abc.d61cf4"],["490a7e26.19f3d"],["f9902da2.016b"],["3505310c.0970be"],["bdeda0e3.33c67"],["7de1adea.950f04"],["884dbe90.fb594"],["d57f8762.dee0f8"],["117475f1.2f23aa"]]},{"id":"44e4c357.169ccc","type":"function","z":"a63c9be1.ee95e8","name":"Lavandaria","func":"if (msg.payload.state == \"1.0\") {\n msg.payload = \"20\";\n return msg;\n} else if \n (msg.payload.state == \"2.0\") {\n msg.payload = \"20,20\";\n return msg;\n} else {\n msg.payload = \"20,20,20\";\n return msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":630,"y":480,"wires":[["1b75df14.f0f251"]]},{"id":"60673abc.d61cf4","type":"function","z":"a63c9be1.ee95e8","name":"Sala Estar","func":"if (msg.payload.state == \"1.0\") {\n msg.payload = \"18\";\n return msg;\n} else if \n (msg.payload.state == \"2.0\") {\n msg.payload = \"18,18\";\n return msg;\n} else {\n msg.payload = \"18,18,18\";\n return msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":630,"y":520,"wires":[["1b75df14.f0f251"]]},{"id":"490a7e26.19f3d","type":"function","z":"a63c9be1.ee95e8","name":"Sala Jantar","func":"if (msg.payload.state == \"1.0\") {\n msg.payload = \"17\";\n return msg;\n} else if \n (msg.payload.state == \"2.0\") {\n msg.payload = \"17,17\";\n return msg;\n} else {\n msg.payload = \"17,17,17\";\n return msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":630,"y":560,"wires":[["1b75df14.f0f251"]]},{"id":"f9902da2.016b","type":"function","z":"a63c9be1.ee95e8","name":"Hall","func":"if (msg.payload.state == \"1.0\") {\n msg.payload = \"16\";\n return msg;\n} else if \n (msg.payload.state == \"2.0\") {\n msg.payload = \"16,16\";\n return msg;\n} else {\n msg.payload = \"16,16,16\";\n return msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":610,"y":600,"wires":[["1b75df14.f0f251"]]},{"id":"3505310c.0970be","type":"function","z":"a63c9be1.ee95e8","name":"Corredor","func":"if (msg.payload.state == \"1.0\") {\n msg.payload = \"21\";\n return msg;\n} else if \n (msg.payload.state == \"2.0\") {\n msg.payload = \"21,21\";\n return msg;\n} else {\n msg.payload = \"21,21,21\";\n return msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":620,"y":640,"wires":[["1b75df14.f0f251"]]},{"id":"bdeda0e3.33c67","type":"function","z":"a63c9be1.ee95e8","name":"Arrumos","func":"if (msg.payload.state == \"1.0\") {\n msg.payload = \"4\";\n return msg;\n} else if \n (msg.payload.state == \"2.0\") {\n msg.payload = \"4,4\";\n return msg;\n} else {\n msg.payload = \"4,4,4\";\n return msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":620,"y":680,"wires":[["1b75df14.f0f251"]]},{"id":"7de1adea.950f04","type":"function","z":"a63c9be1.ee95e8","name":"Wc Serviço","func":"if (msg.payload.state == \"1.0\") {\n msg.payload = \"8\";\n return msg;\n} else if \n (msg.payload.state == \"2.0\") {\n msg.payload = \"8,8\";\n return msg;\n} else {\n msg.payload = \"8,8,8\";\n return msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":630,"y":720,"wires":[["1b75df14.f0f251"]]},{"id":"884dbe90.fb594","type":"function","z":"a63c9be1.ee95e8","name":"WC Principal","func":"if (msg.payload.state == \"1.0\") {\n msg.payload = \"1\";\n return msg;\n} else if \n (msg.payload.state == \"2.0\") {\n msg.payload = \"1,1\";\n return msg;\n} else {\n msg.payload = \"1,1,1\";\n return msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":630,"y":760,"wires":[["1b75df14.f0f251"]]},{"id":"d57f8762.dee0f8","type":"function","z":"a63c9be1.ee95e8","name":"Quarto","func":"if (msg.payload.state == \"1.0\") {\n msg.payload = \"2\";\n return msg;\n} else if \n (msg.payload.state == \"2.0\") {\n msg.payload = \"2,2\";\n return msg;\n} else {\n msg.payload = \"2,2,2\";\n return msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":610,"y":800,"wires":[["1b75df14.f0f251"]]},{"id":"117475f1.2f23aa","type":"function","z":"a63c9be1.ee95e8","name":"Escritório","func":"if (msg.payload.state == \"1.0\") {\n msg.payload = \"6\";\n return msg;\n} else if \n (msg.payload.state == \"2.0\") {\n msg.payload = \"6,6\";\n return msg;\n} else {\n msg.payload = \"6,6,6\";\n return msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":620,"y":840,"wires":[["1b75df14.f0f251"]]},{"id":"9796c6a7.a31598","type":"function","z":"a63c9be1.ee95e8","name":"Cozinha","func":"if (msg.payload.state == \"1.0\") {\n msg.payload = \"19\";\n return msg;\n} else if \n (msg.payload.state == \"2.0\") {\n msg.payload = \"19,19\";\n return msg;\n} else {\n msg.payload = \"19,19,19\";\n return msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":620,"y":440,"wires":[["1b75df14.f0f251"]]},{"id":"1b75df14.f0f251","type":"join","z":"a63c9be1.ee95e8","name":"","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"5","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":830,"y":640,"wires":[["e9552009.8ddce"]]},{"id":"e9552009.8ddce","type":"api-call-service","z":"a63c9be1.ee95e8","name":"Aspirar","server":"48c6a047.be8eb","version":1,"debugenabled":false,"service_domain":"vacuum","service":"send_command","entityId":"vacuum.aspirador","data":"{ \"command\": \"app_segment_clean\", \"params\": [ {{payload}} ]}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":980,"y":640,"wires":[["1c955e29.d4f2d2"]]},{"id":"1c955e29.d4f2d2","type":"delay","z":"a63c9be1.ee95e8","name":"","pauseType":"delay","timeout":"30","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1140,"y":640,"wires":[["4f7f44dd.9b173c"]]},{"id":"4f7f44dd.9b173c","type":"ha-wait-until","z":"a63c9be1.ee95e8","name":"","server":"48c6a047.be8eb","outputs":1,"entityId":"vacuum.aspirador","entityIdFilterType":"exact","property":"state","comparator":"is","value":"docked","valueType":"str","timeout":0,"timeoutType":"num","timeoutUnits":"seconds","entityLocation":"","entityLocationType":"none","checkCurrentState":true,"blockInputOverrides":true,"x":1300,"y":640,"wires":[["607d5067.ce499"]]},{"id":"607d5067.ce499","type":"ha-get-entities","z":"a63c9be1.ee95e8","server":"48c6a047.be8eb","name":"","rules":[{"property":"entity_id","logic":"starts_with","value":"input_number.asp","valueType":"str"},{"property":"state","logic":"is_not","value":"0.0","valueType":"str"}],"output_type":"split","output_empty_results":false,"output_location_type":"msg","output_location":"payload","output_results_count":1,"x":1470,"y":640,"wires":[["fa60c9aa.cb3448","9ef6cfbe.d2677"]]},{"id":"fa60c9aa.cb3448","type":"api-call-service","z":"a63c9be1.ee95e8","name":"zerar inputs","server":"48c6a047.be8eb","version":1,"debugenabled":false,"service_domain":"input_number","service":"set_value","entityId":"{{payload.entity_id}}, input_number.as","data":"{\"value\":\"0.0\"}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1650,"y":600,"wires":[[]]},{"id":"9ef6cfbe.d2677","type":"api-call-service","z":"a63c9be1.ee95e8","name":"Aspiração off","server":"48c6a047.be8eb","version":1,"debugenabled":false,"service_domain":"input_boolean","service":"turn_off","entityId":"input_boolean.iniciar_aspiracao","data":"","dataType":"jsonata","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1650,"y":680,"wires":[[]]},{"id":"48c6a047.be8eb","type":"server","name":"Home Assistant","addon":true}]
5 - Lovelace Card
type: vertical-stack
cards:
- type: 'custom:xiaomi-vacuum-card'
entity: vacuum.aspirador
image: /local/vacuum.png
name: Simba
vendor: xiaomi
- type: 'custom:xiaomi-vacuum-map-card'
entity: vacuum.aspirador
map_camera: camera.xiaomi_cloud_map_extractor
camera_calibration: true
- entities:
- entities:
- entity: input_number.aspcozinha
type: 'custom:numberbox-card'
icon_plus: 'mdi:chevron-up'
icon_minus: 'mdi:chevron-down'
style: |
.cur-num{font-size:25px !important}
- entity: input_number.asplavandaria
type: 'custom:numberbox-card'
icon_plus: 'mdi:chevron-up'
icon_minus: 'mdi:chevron-down'
style: |
.cur-num{font-size:25px !important}
- entity: input_number.aspsala_de_estar
type: 'custom:numberbox-card'
icon_plus: 'mdi:chevron-up'
icon_minus: 'mdi:chevron-down'
style: |
.cur-num{font-size:25px !important}
- entity: input_number.aspsala_de_jantar
type: 'custom:numberbox-card'
icon_plus: 'mdi:chevron-up'
icon_minus: 'mdi:chevron-down'
style: |
.cur-num{font-size:25px !important}
- entity: input_number.asphall_entrada
type: 'custom:numberbox-card'
icon_plus: 'mdi:chevron-up'
icon_minus: 'mdi:chevron-down'
style: |
.cur-num{font-size:25px !important}
- entity: input_number.aspcorredor
type: 'custom:numberbox-card'
icon_plus: 'mdi:chevron-up'
icon_minus: 'mdi:chevron-down'
style: |
.cur-num{font-size:25px !important}
- entity: input_number.asparrumos
type: 'custom:numberbox-card'
icon_plus: 'mdi:chevron-up'
icon_minus: 'mdi:chevron-down'
style: |
.cur-num{font-size:25px !important}
- entity: input_number.aspwc_servico
type: 'custom:numberbox-card'
icon_plus: 'mdi:chevron-up'
icon_minus: 'mdi:chevron-down'
style: |
.cur-num{font-size:25px !important}
- entity: input_number.aspwc_principal
type: 'custom:numberbox-card'
icon_plus: 'mdi:chevron-up'
icon_minus: 'mdi:chevron-down'
style: |
.cur-num{font-size:25px !important}
- entity: input_number.aspquarto
type: 'custom:numberbox-card'
icon_plus: 'mdi:chevron-up'
icon_minus: 'mdi:chevron-down'
style: |
.cur-num{font-size:25px !important}
- entity: input_number.aspescritorio
type: 'custom:numberbox-card'
icon_plus: 'mdi:chevron-up'
icon_minus: 'mdi:chevron-down'
style: |
.cur-num{font-size:25px !important}
head:
entity: input_boolean.iniciar_aspiracao
secondary_info: last-changed
icon: 'mdi:robot-vacuum'
type: 'custom:fold-entity-row'
show_header: true
type: entities
Quero deixar a informação importantíssima que eu não sou autor de nada disto, eu baseei-me na ajuda dos colegas aqui do fórum, no discord e na internet em geral, eles sabem quem são .