Este flow permite utilizar um botão de dim (tipo IKEA E1743) para controlar o volume de um Google Nest através de um cast node.
Precisam de ter instaladas as seguintes palettes:
- node-red-contrib-cast
- node-red-contrib-time-based-dimmer
Os 3 inject nodes dentro do círculo estão a simular o interruptor. Dependendo da plataforma zigbee que estejam a utilizar a informação que chega ao NR será diferente e terão de adaptar dentro do node “dimmer”.
Esta configuração está feita para responder ao comportamento do E1743 em long press que envia sinalização dim-up ou dim-down enquanto está pressionado e dim-stop quando deixamos de pressionar.
No inicio do flow temos um StateNode para obter o volume actual do Nest e actualizar o node dimmer caso exista uma alteração de volume externa ao flow.
O function node pega no valor do atributo volume e coloca-o no msg.payload para ser lido pelo dimmer node. Pelo meio faz a conversão do volume 0-1 para 0-100 de forma a ser aceite pelo cast node.
var nestlevel = Number(((msg.data.new_state.attributes.volume_level * 100)).toFixed(0))
msg.payload = nestlevel
return msg;
No dimmer node têm de configurar os comandos de up/down/stop para que correspondam ao que o vosso comando envia.
O dimmer node está a incrementar o volume de 5 em 5. Podem alterar este valor no campo Step e também podem alterar o intervalo.
Por fim temos de mover o payload para msg.payload.volume para o Cast node o assumir.
https://gist.github.com/tmarquespt/20674700769c7d4ba60c96bca22f9fd8.js


