25.04.2018

Поможем National Geografic?

   Считается что я пишу для тех кто "в теме". Поэтому когда я произнесу "APRS" то в обморок никто не упадёт. В крайнем случае спросят у Гугла про детали которых не знали. Надо сказать, что парой постов назад я как раз писал про то что даже в Славутиче это уже работает и можно посылать через неё короткие сообщения, реплики и наблюдать передвижение подвижных объектов на карте в интернете. Будь то машина или пешеход с Baofeng и мобилой. А поскольку эти фишки используют канал не каждые 20 секунд, появляется возможность в этот же канал "заряжать" данные телеметрии репитеров, данные погодных станций и т.д.  Даже если у вас нет радиостанции, APRS на вашем компьютере сделает своё дело и ваши погодные данные появятся на карте в интернете. То есть из оборудования достаточно одного  RTL свистка. Так как репитера у нас в городе нет, а метеостанций  только вокруг моего дома принимается штук пять ( как принимать то что работает вокруг вас - см. "Свисток. Еще одна жизнь"), я решил попробовать подключить к своему APRS диджипитеру еще и метеостанцию. Покупать для этого метеостанцию было не обязательно, у соседей их навалом :-)  2-х часовое наблюдение за датчиками соседей показало что:
а) Датчиков одной фирмы и соответственно протокола может быть несколько.  Нужно принимать от таких еще и ID чтобы понимать кто мне нужен.
б) Передатчики всех этих устройств бегают по частоте как хотят и мешают друг другу настолько что некоторые устройства пропадают с экрана на часы
в) Барометры популярностью не пользуются, вокруг ни одного который бы передавал значение атмосферного давления;
г) у половины датчики температуры не калиброваны (а может стоят в погребе или у батареи - врут безбожно;
д) датчик атмосферных осадков только один и настроен на передачу данных один раз в час; *  И у каждого  свой подход: уровень то в мм, но у кого-то  в день, а у кого-то за месяц...
    С учётом этого план был такой: принимать данные с датчиков соседей, температуру усреднять, влажность усреднять, датчиком осадков пренебречь так же как и датчиком давления (ну потому что у соседей нету :-), передавать полученное в APRS канал один раз в пять минут. Но, как все хорошо знают, легко в учёбе.
Как это работает. APRS клиент имеет возможность создавать внутри себя объекты. Например встроенную метеостанцию. Она с указанным при создании интервалом времени (у меня 5 минут) просматривает файл wxnow.txt и если он обновился, передаёт строку с данными в канал связи. Это может быть интернет или пакетрадио канал. Для этого выбираем пункт меню Configure- Objects-New Weather.  Там ставим галки Enable, Via-IS(интернет), Via RF(радиоканал), выставляем время Interval  5 минут, прописываем алиас станции (объекта) UY2RA-13 и выбираем значок для отображения на карте. Алиса по умолчанию всегда -13 а значок - WX. После Accept ваш клиент первый раз передаст сводку погоды из файла wxnow.txt

 Первое что вышло легко - заменить Linux cron планировщиком задач в Windows. Пришлось написать командный (bat) файл чтобы им запускать специфическую строку запуска rtl_433  и Perl скрипт для обработки данных полученных от метеостанций по соседству и уложения результата в файл wxnow.txt  который и использует сам APRS клиент.

       Допустим мы указали APRS метеостанции передавать сводку раз в пять минут. Тогда файл wxnow.txt должен обновляться один раз за пять минут. В эти пять минут надо получить данные из радиоканала как минимум от двух датчиков, посчитать Цельсий-Фаренгейт, влажность, сформировать текст, передать его APRS клиенту и обнулить исходные  строки полученные от приёмника-декодера rtl_433 для того чтобы в следующие пять минут "мозги" были пустые. Но формат данных разный, поэтому нужно еще и помудрить с форматированием строк.  За день сложился алгоритм:
Первое. Запускать rtl_433.exe один раз в пять минут, ждать получения строки от датчика погоды, записать данные в строке в файл и по окончанию выйти, так как если не закрыть программу дочерние файлы обрабатывать будет нельзя.  Всё это делаем в строке запуска программы. Она же будет первой строкой нашего командного bat файла  который мы будем запускать раз в пять минут планировщиком Windows/
rtl_433.exe -R57 -R42 -F csv:log.csv -E
  Ключи -R57 и -R42 означают принимать пакеты данных только от двух метеостанций (для надёжности, так как одна или обе могут пропадать надолго) HIDEKI и  Kedsum (то что слышно на мою антенну в ближайшем окружении).
   Ключ -F csv:log.csv  указывает что полученные строки записывать в формате csv (Excel) во временный файл log.csv. Этому файлу нужно дать права (разрешения) как временному - писать в него и читать из него можно всем программам. 
   Ключ -Е сообщает программе что как только данные благополучно запишутся в файл, работу программы  rtl_433.exe надо прекратить, чтобы можно было прочесть оттуда данные скрипту на Perl, после чего файл очистить. При  запуске этой строки в работу на экране будет отражаться состояние запуска.



В папке rtl_433 появиться файл log.csv в котором будет одна или две строки типа
2018-04-25 22:55:30,HIDEKI TS04 sensor,2,1,OK,15.500,53,,,,    
где 15.500 это температура в градусах Цельсия, а 53 - влажность в процентах. Дата, марка станции и проч. без перевода :-)
А в DOS окне промелькнёт строка запуска скрипта Perl (об этом позже)  и окно погаснет. 
Это значит скрипт своё отработал и в файле wxnow.txt появилась две нужные строки
Apr 25 2018 23:00
.../...g...t059r...p...P...h53b.....
 Так как же получить две нижних (нужных) строки из одной верхней?  При кажущейся сложности даже в Windows это означает преобразование текста, с чем может справиться любая программная среда позволяющая работу с файлами (а можно вообще в "мозгах") поддерживаемая вашей операционной системой.  Это  может быть Piton или даже Perl. Я поставил Perl только потому что работаю с ним и на сайтах. И он достаточно гибок и могуч чтобы решать ваши нестандартные задачи и в дальнейшем.
Для красоты (windows интерфейс) я рекомендую Dwimperl Padre - https://code.google.com/archive/p/dwimperl/downloads   После установки образуется стандартный виндовозный интерфейс среды программирования в котором можно создавать скрипты любой сложности. Наш - простой, поэтому я приведу написанный руками с ноля текст в качестве образца. Вы сможете модифицировать его под свои метеостанции и APRS клиент.
Продолжение: Помощь National Geografic