Fazendo o GH ou a Alexa falarem a temperatura em números inteiros!

Quando colocamos um sensor de temperatura tanto da Sonoff ou da Aqara (marca de ótima qualidade e ótimo padrão), não sei o resultado da outras marcas, para que tenhamos o resultado no Home Assistant, recebemos o resultado com duas casas decimais após o número inteiro (ex 26.76 graus). Depois de criado um fluxo, a resposta que se obtém utilizando o TTS (retorno em áudio) no Node-Red, é uma a resposta com as 2 (duas) casas decimais. Buscando ajuda no grupo do telegram o @danielsaraujo me deu uma solução, de como o TTS no Node-Red iria responder a temperatura do ar, somente com os graus inteiros.

foto

  • Resultado de como as casas decimais aparecem no sensor de temperatura (Aqara)

  • Como era o fluxo anterior

Para obter o resultado desejado o @danielsaraujo sugeriu para que fosse criado um node de “function” .

Qualquer dúvida pode pergunta, espero ter contribuído.

Para configurar o node call service é só ver nesse tutorial para o Google Home a Alexa falarem: Como fazer o Google Assistant ou a Alexa nos dizer o status de qualquer sensor pelo Node-red! - Node-Red - Fórum Home Assistant Brasil

Valeu…

5 Likes

Muito bom seu post. Estou precisando de algo parecido. Tenho uma string que pega 3 casas decimais (R$7.333) mas preciso reduzir para apenas 2 casas. Não saco nada de javascript e tudo que tentei deu erro. Vou tentar o nó ui_template com Angular para ver se consigo. Se alguém tiver uma dica já ajuda.

Tenta usar o parseFloat("123.456").toFixed(2);

Como eu disse, não entendo nada de javascript. Vou explicar.

Criei um fluxo para obter um valor dinâmico (atualiza de tempos em tempos), de um website.
image
Contudo, eu gostaria de reduzir para apenas (2) duas casas decimais “R$7.64”.

Os nós “http request” e “selector”, são as configurações de url e código html.

Este é o nó de função, que obtive pesquisando na web.
image

Se eu não tratar antes e remover o “R$” através de um nó change, não funciona.

Como exibir R$7.64 sem precisar tratar antes, removendo R$ ???

Poderia fazer o export do JSON deste fluxo do NodeRed?

1 Like

Claro, aí está.

[{"id":"9a8623629771dcd2","type":"http request","z":"13a11bc58fb374e4","name":"","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://precodoscombustiveis.com.br/pt-br/station/brasil/rio-de-janeiro/rio-bonito/district/posto-rio-estoril/20100","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"x":790,"y":4500,"wires":[["5ef74e77b3507f86"]]},{"id":"5ef74e77b3507f86","type":"html","z":"13a11bc58fb374e4","name":"Selector","property":"payload","outproperty":"payload","tag":"#Gasstation > div.row.py-5 > div.col-xl-3.p-5.p-md-3 > div:nth-child(2) > div > span:nth-child(5)","ret":"html","as":"single","x":960,"y":4500,"wires":[["5b418c753ac41dd8"]]},{"id":"ea0b6c882a2e4b35","type":"inject","z":"13a11bc58fb374e4","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":620,"y":4500,"wires":[["9a8623629771dcd2"]]},{"id":"5b418c753ac41dd8","type":"split","z":"13a11bc58fb374e4","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":1090,"y":4500,"wires":[["faa5708ccf648e3f"]]},{"id":"faa5708ccf648e3f","type":"change","z":"13a11bc58fb374e4","name":"Remove o 'R$'","rules":[{"t":"change","p":"payload","pt":"msg","from":"R$","fromt":"str","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1260,"y":4460,"wires":[["31ea28f336f193b7"]]},{"id":"31ea28f336f193b7","type":"function","z":"13a11bc58fb374e4","name":"função reduzir 2 casas","func":"msg.payload = Math.round(msg.payload * 100) / 100\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1460,"y":4500,"wires":[["73e3b73a93d298a8"]]},{"id":"73e3b73a93d298a8","type":"debug","z":"13a11bc58fb374e4","name":"Valor da gasolina","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1690,"y":4500,"wires":[]}]

Mexi um pouco no fluxo e consegui agrupar algumas coisas na função, vê se é isso que queria:

[{"id":"bf5451841f98cb67","type":"tab","label":"Flow 1","disabled":false,"info":"","env":[]},{"id":"9a8623629771dcd2","type":"http request","z":"bf5451841f98cb67","name":"","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://precodoscombustiveis.com.br/pt-br/station/brasil/rio-de-janeiro/rio-bonito/district/posto-rio-estoril/20100","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"x":350,"y":140,"wires":[["5ef74e77b3507f86"]]},{"id":"5ef74e77b3507f86","type":"html","z":"bf5451841f98cb67","name":"Selector","property":"payload","outproperty":"payload","tag":"#Gasstation > div.row.py-5 > div.col-xl-3.p-5.p-md-3 > div:nth-child(2) > div > span:nth-child(5)","ret":"html","as":"single","x":520,"y":140,"wires":[["31ea28f336f193b7"]]},{"id":"ea0b6c882a2e4b35","type":"inject","z":"bf5451841f98cb67","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":180,"y":140,"wires":[["9a8623629771dcd2"]]},{"id":"31ea28f336f193b7","type":"function","z":"bf5451841f98cb67","name":"função reduzir 2 casas","func":"value = msg.payload[0]\n\nvalue = value.replace('R$ ', '')\n\nmsg.payload = Math.round(value * 100) / 100\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":720,"y":140,"wires":[["73e3b73a93d298a8"]]},{"id":"73e3b73a93d298a8","type":"debug","z":"bf5451841f98cb67","name":"Valor da gasolina","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":950,"y":140,"wires":[]}]

Basicamente, removi o split e o replace que você adicionou e coloquei na função javascript

Testei aqui.
Então, eu acho que não expliquei bem. Não era necessário remover o “R$”, eu preciso apenas reduzir as casas decimais e trocar o ponto por virgula.

No seu fluxo eu tive que adicionar de volta o R$ em um template e usar o Change para colocar a virgula.

[{"id":"2c991387c1ab2d73","type":"http request","z":"6f31b96013481416","name":"","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://precodoscombustiveis.com.br/pt-br/station/brasil/rio-de-janeiro/rio-bonito/district/posto-rio-estoril/20100","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"x":590,"y":120,"wires":[["b6adc7c3b2dd22c0"]]},{"id":"b6adc7c3b2dd22c0","type":"html","z":"6f31b96013481416","name":"Selector","property":"payload","outproperty":"payload","tag":"#Gasstation > div.row.py-5 > div.col-xl-3.p-5.p-md-3 > div:nth-child(2) > div > span:nth-child(5)","ret":"html","as":"single","x":740,"y":120,"wires":[["b0f6b48096ba1255"]]},{"id":"7859d6980b3ea689","type":"inject","z":"6f31b96013481416","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":440,"y":120,"wires":[["2c991387c1ab2d73"]]},{"id":"b0f6b48096ba1255","type":"function","z":"6f31b96013481416","name":"\",00\"","func":"value = msg.payload[0]\n\nvalue = value.replace('R$ ', '')\n\nmsg.payload = Math.round(value * 100) / 100\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":870,"y":120,"wires":[["4515a6b9c88eaf86"]]},{"id":"b9cc0dfb646e52d4","type":"debug","z":"6f31b96013481416","name":"Valor da gasolina","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1450,"y":80,"wires":[]},{"id":"4515a6b9c88eaf86","type":"template","z":"6f31b96013481416","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"R${{payload}}","output":"str","x":1040,"y":80,"wires":[["f70751acaa3db9a0"]]},{"id":"f70751acaa3db9a0","type":"change","z":"6f31b96013481416","name":"Replace","rules":[{"t":"change","p":"payload","pt":"msg","from":".","fromt":"str","to":",","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1240,"y":80,"wires":[["b9cc0dfb646e52d4"]]},{"id":"a507b79455bf6fbd","type":"comment","z":"6f31b96013481416","name":"Troca \".\" por \",\"","info":"","x":1260,"y":120,"wires":[]},{"id":"f263d4726c4e9a82","type":"comment","z":"6f31b96013481416","name":"Adiciona \"R$\"","info":"","x":1050,"y":120,"wires":[]}]

Não daria para, em apenas um nó de função javascript, deixar desta forma R$7.64 ???

Veja se é isso:

[{"id":"bf5451841f98cb67","type":"tab","label":"Flow 1","disabled":false,"info":"","env":[]},{"id":"2c991387c1ab2d73","type":"http request","z":"bf5451841f98cb67","name":"","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://precodoscombustiveis.com.br/pt-br/station/brasil/rio-de-janeiro/rio-bonito/district/posto-rio-estoril/20100","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"x":290,"y":340,"wires":[["b6adc7c3b2dd22c0"]]},{"id":"b6adc7c3b2dd22c0","type":"html","z":"bf5451841f98cb67","name":"Selector","property":"payload","outproperty":"payload","tag":"#Gasstation > div.row.py-5 > div.col-xl-3.p-5.p-md-3 > div:nth-child(2) > div > span:nth-child(5)","ret":"html","as":"single","x":440,"y":340,"wires":[["b0f6b48096ba1255"]]},{"id":"7859d6980b3ea689","type":"inject","z":"bf5451841f98cb67","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":140,"y":340,"wires":[["2c991387c1ab2d73"]]},{"id":"b0f6b48096ba1255","type":"function","z":"bf5451841f98cb67","name":"Função","func":"value = msg.payload[0]\n\nvalue = value.replace('R$ ', '')\n\nvalue = Math.round(value * 100) / 100\n\nvalue = value.toString().replace('.', ',')\n\nmsg.payload = 'R$' + value\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":580,"y":340,"wires":[["b9cc0dfb646e52d4"]]},{"id":"b9cc0dfb646e52d4","type":"debug","z":"bf5451841f98cb67","name":"Valor da gasolina","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":750,"y":340,"wires":[]}]
1 Like

MARAVILHA. Funcionou sim!

Agora só estou tentando usar 1 só inject para a exibição de 3 valores diferentes, com Título.

Usei um template para nomear cada “Posto”, depois um Join após a sua função, e no fim um outro template para unir Topic e Payload.
O problema que apenas um (1) Topic é apresentado.

[{"id":"8b7118d1a2276b73","type":"http request","z":"6f31b96013481416","name":"","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://precodoscombustiveis.com.br/pt-br/station/brasil/rio-de-janeiro/rio-bonito/district/posto-rio-estoril/20100","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"x":710,"y":100,"wires":[["fba40c8b9c1249b3"]]},{"id":"fba40c8b9c1249b3","type":"html","z":"6f31b96013481416","name":"Selector","property":"payload","outproperty":"payload","tag":"#Gasstation > div.row.py-5 > div.col-xl-3.p-5.p-md-3 > div:nth-child(2) > div > span:nth-child(5)","ret":"html","as":"single","x":860,"y":100,"wires":[["053f4551ab283dc4"]]},{"id":"dacf5a076e69170e","type":"inject","z":"6f31b96013481416","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":480,"y":160,"wires":[["8b7118d1a2276b73","6319e45436482952","2f4abbb526441a4a"]]},{"id":"88bf2264bfb8c9dd","type":"function","z":"6f31b96013481416","name":"Função","func":"value = msg.payload[0]\n\nvalue = value.replace('R$ ', '')\n\nvalue = Math.round(value * 100) / 100\n\nvalue = value.toString().replace('.', ',')\n\nmsg.payload = 'R$' + value\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1200,"y":160,"wires":[["9505c84d5f6d510f"]]},{"id":"546f38b208c5c03a","type":"debug","z":"6f31b96013481416","name":"Valor da gasolina 3","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1530,"y":220,"wires":[]},{"id":"6319e45436482952","type":"http request","z":"6f31b96013481416","name":"","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://precodoscombustiveis.com.br/pt-br/station/brasil/rio-de-janeiro/itaborai/district/posto-amigao/3858","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"x":710,"y":160,"wires":[["6626f778c150ed87"]]},{"id":"6626f778c150ed87","type":"html","z":"6f31b96013481416","name":"Selector","property":"payload","outproperty":"payload","tag":"#Gasstation > div.row.py-5 > div.col-xl-3.p-5.p-md-3 > div:nth-child(2) > div > span:nth-child(5)","ret":"html","as":"single","x":860,"y":160,"wires":[["11ed54da9dbcc098"]]},{"id":"2f4abbb526441a4a","type":"http request","z":"6f31b96013481416","name":"","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://precodoscombustiveis.com.br/pt-br/station/brasil/rio-de-janeiro/rio-bonito/district/auto-posto-ferrovia/4074","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"x":710,"y":240,"wires":[["e637ce32055c28ef"]]},{"id":"e637ce32055c28ef","type":"html","z":"6f31b96013481416","name":"Selector","property":"payload","outproperty":"payload","tag":"#Gasstation > div.row.py-5 > div.offset-xl-1.col-xl-7.col-12.p-5.p-md-0 > div:nth-child(2) > div > div > div > div > div > span.price","ret":"html","as":"single","x":860,"y":240,"wires":[["dd6aa429a739dba6"]]},{"id":"9505c84d5f6d510f","type":"join","z":"6f31b96013481416","name":"","mode":"custom","build":"string","property":"payload","propertyType":"msg","key":"topic","joiner":"; ","joinerType":"str","accumulate":false,"timeout":"2","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":1210,"y":220,"wires":[["182c54b428da59bf"]]},{"id":"182c54b428da59bf","type":"template","z":"6f31b96013481416","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{{topic}} {{payload}}","output":"str","x":1360,"y":220,"wires":[["546f38b208c5c03a"]]},{"id":"053f4551ab283dc4","type":"template","z":"6f31b96013481416","name":"Posto1","field":"topic","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Posto 1","output":"str","x":1000,"y":100,"wires":[["88bf2264bfb8c9dd"]]},{"id":"11ed54da9dbcc098","type":"template","z":"6f31b96013481416","name":"Posto2","field":"topic","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Posto 2","output":"str","x":1000,"y":160,"wires":[["88bf2264bfb8c9dd"]]},{"id":"dd6aa429a739dba6","type":"template","z":"6f31b96013481416","name":"Posto3","field":"topic","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Posto 3","output":"str","x":1000,"y":240,"wires":[["88bf2264bfb8c9dd"]]},{"id":"08ad53f64753b15b","type":"comment","z":"6f31b96013481416","name":"Tentando colocar nome do posto","info":"","x":750,"y":60,"wires":[]}]

Isso?

[{"id":"931d8444bfcbd56a","type":"tab","label":"Flow 1","disabled":false,"info":"","env":[]},{"id":"8b7118d1a2276b73","type":"http request","z":"931d8444bfcbd56a","name":"","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://precodoscombustiveis.com.br/pt-br/station/brasil/rio-de-janeiro/rio-bonito/district/posto-rio-estoril/20100","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"x":330,"y":160,"wires":[["fba40c8b9c1249b3"]]},{"id":"fba40c8b9c1249b3","type":"html","z":"931d8444bfcbd56a","name":"Selector","property":"payload","outproperty":"payload","tag":"#Gasstation > div.row.py-5 > div.col-xl-3.p-5.p-md-3 > div:nth-child(2) > div > span:nth-child(5)","ret":"html","as":"single","x":480,"y":160,"wires":[["053f4551ab283dc4"]]},{"id":"dacf5a076e69170e","type":"inject","z":"931d8444bfcbd56a","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":100,"y":220,"wires":[["8b7118d1a2276b73","6319e45436482952","2f4abbb526441a4a"]]},{"id":"88bf2264bfb8c9dd","type":"function","z":"931d8444bfcbd56a","name":"Função","func":"topic = msg.topic\nvalue = msg.payload[0]\n\nvalue = value.replace('R$ ', '')\n\nvalue = Math.round(value * 100) / 100\n\nvalue = value.toString().replace('.', ',')\n\nmsg.payload = topic + ': R$' + value\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":820,"y":220,"wires":[["9505c84d5f6d510f"]]},{"id":"546f38b208c5c03a","type":"debug","z":"931d8444bfcbd56a","name":"Valor da gasolina 3","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1010,"y":280,"wires":[]},{"id":"6319e45436482952","type":"http request","z":"931d8444bfcbd56a","name":"","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://precodoscombustiveis.com.br/pt-br/station/brasil/rio-de-janeiro/itaborai/district/posto-amigao/3858","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"x":330,"y":220,"wires":[["6626f778c150ed87"]]},{"id":"6626f778c150ed87","type":"html","z":"931d8444bfcbd56a","name":"Selector","property":"payload","outproperty":"payload","tag":"#Gasstation > div.row.py-5 > div.col-xl-3.p-5.p-md-3 > div:nth-child(2) > div > span:nth-child(5)","ret":"html","as":"single","x":480,"y":220,"wires":[["11ed54da9dbcc098"]]},{"id":"2f4abbb526441a4a","type":"http request","z":"931d8444bfcbd56a","name":"","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://precodoscombustiveis.com.br/pt-br/station/brasil/rio-de-janeiro/rio-bonito/district/auto-posto-ferrovia/4074","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"x":330,"y":280,"wires":[["e637ce32055c28ef"]]},{"id":"e637ce32055c28ef","type":"html","z":"931d8444bfcbd56a","name":"Selector","property":"payload","outproperty":"payload","tag":"#Gasstation > div.row.py-5 > div.offset-xl-1.col-xl-7.col-12.p-5.p-md-0 > div:nth-child(2) > div > div > div > div > div > span.price","ret":"html","as":"single","x":480,"y":280,"wires":[["dd6aa429a739dba6"]]},{"id":"9505c84d5f6d510f","type":"join","z":"931d8444bfcbd56a","name":"","mode":"custom","build":"string","property":"payload","propertyType":"msg","key":"topic","joiner":"; ","joinerType":"str","accumulate":false,"timeout":"2","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":830,"y":280,"wires":[["546f38b208c5c03a"]]},{"id":"053f4551ab283dc4","type":"template","z":"931d8444bfcbd56a","name":"Posto1","field":"topic","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Posto 1","output":"str","x":620,"y":160,"wires":[["88bf2264bfb8c9dd"]]},{"id":"11ed54da9dbcc098","type":"template","z":"931d8444bfcbd56a","name":"Posto2","field":"topic","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Posto 2","output":"str","x":620,"y":220,"wires":[["88bf2264bfb8c9dd"]]},{"id":"dd6aa429a739dba6","type":"template","z":"931d8444bfcbd56a","name":"Posto3","field":"topic","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Posto 3","output":"str","x":620,"y":280,"wires":[["88bf2264bfb8c9dd"]]},{"id":"08ad53f64753b15b","type":"comment","z":"931d8444bfcbd56a","name":"Tentando colocar nome do posto","info":"","x":370,"y":120,"wires":[]}]
1 Like

Deu certo meu amigo. Muito obrigado mesmo pela ajuda, nosso forum precisa de mais pessoas como você!

2 Likes