Ajuda para criar sensor de Weather com http request (tipo o de gasolina e preços)

Fala pessoal!
Estou tentando tentando utilizar o mesmo método criado em outros posts pelo @Choske (Sensor - Monitorar o preço médio da Gasolina na sua cidade e esse Faça seu próprio acompanhador de preços no HA usando Node-Red! mas para pegar as condições do tempo da minha cidade no site Weather.com. Mas estou enrolado com o código javascript e como criar o sensor.

Segue os passo:
Meu objetivo é criar um card no lovelace onde apareça apenas com o status marcado na imagem abaixo (Parcial. nublado):
image

Meu fluxo no node-red :

O nó “http request” é:

https://weather.com/pt-BR/clima/hoje/l/3bb50bd74fd3af08dcd0829a57c463bc4c6dc8f394eb7edb6459c62238d4a669

Nó “seletor”:

 div > div > section > div > div > div.CurrentConditions--primary--2SVPh > div 

Aqui a parte que eu “empaco”, node Function. Gostaria de entender como criar o sensor de exibição no lovelace
image

Este é o meu debug

O “sensor.cond_niteroi” não está sendo criado porque falta algo.
Dicas?

Não é melhor usar as integrações de clima nativas do Home Assistant?

Uso a AccuWeatherw e a Meteorologisk institutt (Met.no) e me atendem bem.

@douglasit não, para o meu caso é melhor usar da forma como descrevi.

Olá, tinha um erro na sua primeira linha.

msg.payload = msg.payload[0]

msg.entity_id = 'sensor.teste_niteroi'

msg.payload = {
    data: {
        state: msg.payload,
        attributes: {
            friendly_name: 'teste niteroi'
        }
    }
};
return msg;
1 Like

@IvanMB obrigado pela resposta
Mas a principio o sensor.teste_niteroi não está sendo criado. Dei um deploy, restartei o HA e cliquei no inject, mas não aparece o sensor na lista dos sensores.

No seu print não tem o node API, ele que cria (tem no exemplo do post do @Choske )

1 Like

Opa. Maravilha. Consegui @IvanMB !!!
Estou super feliz cara.
image

Muito obrigado mesmo.

2 Likes

Estou com problema de formatação. Acentos e caracteres estão truncados.
Alguém sabe como faço para corrigir isso?
image

Temperatura:

msg.payload = msg.payload[0]

msg.entity_id = 'sensor.tempo_weather_niteroi'

msg.payload = {
    data: {
        state: msg.payload,
        attributes: {
            friendly_name: 'weather niteroi',
            unit_of_measurement: 'C'
        }
    }
};
return msg;

Prob. de chuva:

msg.payload = msg.payload[0]

msg.entity_id = 'sensor.weather_condicoes_niteroi'

msg.payload = {
    data: {
        state: msg.payload,
        attributes: {
            friendly_name: 'Condições climáticas'
        }
    }
};
return msg;

normalmente isso está associado ao tipo de codificação. Eu não uso o node-red então não sei exatamente o que vc precisa fazer, mas procure por funções que façam a conversão de (por exemplo) ISO-8859 para UTF-8 (ou o contrário) e aplique elas à msg.

[{"id":"6602a545acc359fb","type":"inject","z":"65c372f4ca062286","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":300,"y":1280,"wires":[["10193a0c21ac13a4"]]},{"id":"0a7dbb15c784bdf8","type":"debug","z":"65c372f4ca062286","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":910,"y":1280,"wires":[]},{"id":"10193a0c21ac13a4","type":"http request","z":"65c372f4ca062286","name":"","method":"GET","ret":"bin","paytoqs":"ignore","url":"https://weather.com/pt-BR/clima/hoje/l/3bb50bd74fd3af08dcd0829a57c463bc4c6dc8f394eb7edb6459c62238d4a669","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"credentials":{},"x":490,"y":1280,"wires":[["0e8a3c4c756fea5c"]]},{"id":"0e8a3c4c756fea5c","type":"html","z":"65c372f4ca062286","name":"selector","property":"payload","outproperty":"payload","tag":"#WxuCurrentConditions-main-b3094163-ef75-4558-8d9a-e35e6b9b1034 > div > section > div > div.CurrentConditions--body--8sQIV > div.CurrentConditions--messaging--14YdW > a","ret":"text","as":"single","x":700,"y":1280,"wires":[["0a7dbb15c784bdf8"]]}]
1 Like

A solução do @IvanMB funcionou.

O nó http request eu troquei para “a binary buffer”

O nó seletor ficou assim
image

Resultado !
image

Obrigado @IvanMB !

1 Like

Olá. Poderia compartilhar como ficou o nó function?
Aqui parece tudo certo, mas está retornando este erro e não aparece no Dashboard.
image

Difícil entender o que você fez. Compartilha todo o seu fluxo.