Eu tenho bin procurando uma solução para a minha pergunta, mas não encontrei uma ou melhor, disse que não a obtive com o que encontrei. Então, vamos falar sobre o que é o meu problema. Estou usando um software de controle doméstico inteligente em um Raspberry Pi e, como descobri neste final de semana usando o pilight-receive, posso pegar os dados do meu sensor de temperatura externo. A saída do pilight-receive é assim:
{
"message": {
"id": 4095,
"temperature": 409.5
},
"origin": "receiver",
"protocol": "alecto_wsd17",
"uuid": "0000-b8-27-eb-0f3db7",
"repeats": 3
}
{
"message": {
"id": 1490,
"temperature": 25.1,
"humidity": 40.0,
"battery": 1
},
"origin": "receiver",
"protocol": "alecto_ws1700",
"uuid": "0000-b8-27-eb-0f3db7",
"repeats": 3
}
{
"message": {
"id": 2039,
"temperature": 409.5
},
"origin": "receiver",
"protocol": "alecto_wsd17",
"uuid": "0000-b8-27-eb-0f3db7",
"repeats": 4
}
Agora, minha pergunta é: como diabos posso extrair a temperatura e a umidade de onde o id é 1490. E como você recomendaria que eu fizesse isso com freqüência? Por um trabalho cron que é executado a cada 10 minutos, cria uma saída do pilight-receive, extrai os dados da saída e os envia para a API do Smart Home Control.
Alguém tendo uma ideia - muito obrigado
awk
e sed
desde que a saída JSON retenha a formatação mostrada aqui, o que não é necessário - espaço em branco não importa para JSON. Por exemplo, este awk
comando: awk '/temperature|humidity/ {print $2}'
está próximo.