Bom, adquiri o cubo da Aqara e demorei um tempinho até conseguir configura-lo. Utilizo o gateway 2 da Xiaomi com a integração nativa. Sei que diferentes formas de integra-lo influencia na forma que o Home Assistant reconhece e apresenta seus status, pelo gateway 2 da Xiaomi é da forma a seguir.
A forma que o Home Assistant reconhece o Cubo da Aqara é bem parecida de como reconhece os botões da Xiaomi. Vamos ao tutorial.
Em Ferramentas de desenvolvedor podemos ver que o cubo só retorna status de “off” mas as ações dele são reportadas em last_action e mesmo tentando filtrar o payload com um node switch dessa forma não é possível.
Então ao invés de pegar as informações das ações na entidade do cubo vamos pegar a partir do evento que é gerada.
Em Ferramentas de desenvolvedor na aba de eventos podemos ver o evento que é gerado pela ação do cubo, xiaomi_aqara.cube_action.
Agora vamos para o Node-red!
Para pegar as informações do evento do click do botão vamos utilizar os nodes:
1x events: all
2x switch
Vai ficar assim a organização dos nodes:
No node events: all em Event Type vamos preencher com xiaomi_aqara.cube_action
No primeiro node switch vamos filtrar pela entidade do Cubo da Aqara, se tiver só um cubo não é necessário esse node.
No segundo node switch é onde vamos filtrar as ações do cubo. É aqui que vai preencher as ações do cubo que você vai observar olhando o last_action.
No caso do meu cubo são só essas seis ações: move, flip90, flip180, rotate, shake_air, tap_twice e free_fall.
Ações:
shake_air: balançar o cubo no ar
flip90: girar o cubo em 90° (uma rodada)
flip180: girar o cubo em 180° (duas rodadas)
rotate: rotacionar o cubo
free_fall: jogar o cubo pra cima e pegar
move: mover o cubo pra frente
tap_twice: dar 2 batidas com o cubo rapidamente
É isso, um abraço!
PS. o colega @CLyra deu uma dica:
Você pode usar o rotate pra aumentar/diminuir o volume da tv ou subir/descer cortinas. Quando vc usa a ação rotate ele envia um parametro (action_value) que diz quanto que o cubo rodou.
A precisão é ruinzinha, então eu usava o valor 18 (ou -18). Se rodou menos que esse valor, sobe/desce 1 “unidade”, se rodou mais que isso sobe/desce 2 “unidades".