Mam bin szukający rozwiązania dla mojego pytania, ale nie znalazłem ani lepiej powiedział, że nie dostałem go z tym, co znalazłem. Porozmawiajmy więc o tym, o czym jest mój problem. Korzystam z oprogramowania Smart Home Control na Raspberry Pi i jak się dowiedziałem w ten weekend za pomocą pilota, mogę przechwycić dane z mojego czujnika temperatury zewnętrznej. Wyjście pilight-receive wygląda następująco:
{
"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
}
Teraz moje pytanie do ciebie: jak do cholery mogę wyodrębnić temperaturę i wilgotność, z których identyfikator wynosi 1490. I jak poleciłbyś mi to sprawdzać często? Za pomocą zadania cron, które jest uruchamiane co 10 minut, tworzy dane wyjściowe polecenia pilight-receive, wyodrębnia dane wyjściowe i przekazuje je do interfejsu API Smart Home Control.
Ktoś ma pomysł - wielkie dzięki
awk
i sed
pod warunkiem, że wyjście JSON zachowuje formatowanie pokazane tutaj, czego nie musi - białe znaki nie mają znaczenia dla JSON. Na przykład to awk
polecenie: awk '/temperature|humidity/ {print $2}'
jest zamknięte.