воскресенье, 1 апреля 2018 г.

Получение и отправка показаний с датчиков Oregon Scientific на проект Народный мониторинг (narodmon.ru) с Ubuntu Server используя USB RTL-SDR приемник

Для получения данных с погодного датчика используется проект:
https://github.com/merbanan/rtl_433
Как собрать/установить и что для этого нужно написано по ссылке. Единственное собирать надо не из релиза а из основной ветки. Т.к. в релизе релиз, который не умеет в ключ: [-E] Stop after outputting successful event(s).
Попробуем все запустить с некоторыми ключами:
-q : Подавляет поток не важных сообщений от rtl_433;
-E : Завершает работу rtl_433 после получения пакета события(й) с данными от погодного датчика;
-R 12 : Т.к. у меня погодная станция и датчик Oregon, то и будем использовать проотокол: [12]  Oregon Scientific Weather Sensor;
-F json : Выбираем представеление декодированных данных в формате json;
-U : Значение в ключе time в json данных будет передаваться без учета локального часового пояса, в UTC;
Итак:

xstl@ubuntu:~$ rtl_433 -q -E -R 12 -F json -U
Found Elonics E4000 tuner
Exact sample rate is: 250000.000414 Hz
Sample rate set to 250000.
Bit detection level set to 0 (Auto).
Tuner gain set to Auto.
Tuned to 433920000 Hz.
{"time" : "2018-04-01 06:02:30", "brand" : "OS", "model" : "THN132N", "id" : 01 , "channel" : 1, "battery" : "OK", "temperature_C" : 2.200}
{"time" : "2018-04-01 06:02:30", "brand" : "OS", "model" : "THN132N", "id" : 01 , "channel" : 1, "battery" : "OK", "temperature_C" : 2.200}
xstl@ubuntu:~$

Вернулось 2 одинаковых строки. Существуют разные варианты почему так: для надежности премема метео-станцией. Так же есть мнение что при таком раскладе батарея у датчика совсем не ОК.
И если ее вынуть/вставить то станет "battery" : "low" и задвоение прекратится.
Для отправки данных на сервер народного мониторинга будем использовать уже готовый пример скрипта, со страницы https://narodmon.ru/#!devdoc под названием "Пример передачи показаний по TCP на Bash"
Код примера поместим в созданный у себя исполняемый файл: /etc/narodmon/narodmon.sh
В коде поправим значения mac сенсора на свой и вместо примера:
sensor_value_1=20
напишем следующее:
sensor_value_1=$(/usr/local/bin/rtl_433 -q -E -R 12 -F json -U | head -1 | awk '{print $22;}' | rev | cut -c 2- | rev)
Скрипт будем запускать планировщиком.
Запустим crontab -e
Добавим строку:
*/6 * * * *     /etc/narodmon/narodmon.sh
Сохраним файл планировщика.
На этом все.

Комментариев нет:

Отправить комментарий