26.04.2018

Помощь National Geografic

Продолжение. Начало смотреть тут.
  Как я писал ранее, перед совместным запуском оба элемента должны быть готовы и опробованы отдельно.  Командная строка для rti_433.exe  rtl_433.exe -R57 -R42 -F csv:log.csv -E должна быть опробована и при каждом однократном запуске в файле log.csv должна появляться строка с данными и актуальным временем, а программа выходить из периода выполнения.  
   Теперь нужно создать и проверить скрипт, который преобразует данные из формата метеостанции в формат APRS. Ранее я описывал процесс и разницу для тех, кто будет писать свой скрипт, и как установить Perl для Windows для тех, кто будет идти по предложенному мною пути. Итак, запускаем Padre Perl  и вписываем туда текст скрипта.

#!/usr/bin/perl
$filename="d:\/rtl_433\/log.csv";    # Описывает имя файла созданного приёмником
$filenameout="d:\/aprsis32\/wxnow.txt";   # Имя файла куда будет записан результат преобразования
 start:
open (text, "<$filename"); # Открыть файл для чтения

#@LINES=;    # При желании можно обрабатывать несколько строк. Вычисление количества строк
#$size=@LINES;
#close (text);
#print "$size \n";


open (text, "<$filename");    # открыть файл с данными от приёмника 
$stroka=;
#chomp ( $stroka );
$msg = $stroka;    # Уложить строку из файла в переменную
# разложить строку на отдельные параметры. Для вариантов Kedsum и Hideki
if ($msg =~ /HIDEKI/) {
 ($date, $call, $zz, $qq, $xx, $temp, $hum, $aa, $bb, $cc) = split(/,/,$msg);
 $tc=int($temp);
 $tf=int($temp*1.8+32);
 $temp="0"."$tf";
                  }
if ($msg =~ /Kedsum/) {
($date, $call, $aa, $temp, $hum) = split(/,/,$msg);
$tc=int($temp-32)*0.56;
$t=int($temp);
$temp="0".$t;
     }
# Переформатирование даты и времени
$dd = substr($date,8,2);
$yy = substr($date,0,4);
$mm = substr($date,5,2);
$time = substr($date,11,5);
if ($mm =="01") {$mm="Jan"};
if ($mm =="02") {$mm="Feb"};
if ($mm =="03") {$mm="Mar"};
if ($mm =="04") {$mm="Apr"};
if ($mm =="05") {$mm="May"};
if ($mm =="06") {$mm="Jun"};
if ($mm =="07") {$mm="Jan"};
if ($mm =="08") {$mm="Jul"};
if ($mm =="09") {$mm="Aug"};
if ($mm =="10") {$mm="Sep"};
if ($mm =="11") {$mm="Nov"};
if ($mm =="12") {$mm="Dec"};
$wxdata ="$mm $dd $yy";
# Формирование строки даты и времени в формате wxnow.txt. Обратите внимание на перенос строки
$out="$wxdata $time
";

# Формирование строки погодных данных для wxnow.txt. При желании раскоментируйте текстовую часть
$out1=".../...g...t$temp"."r...p...P...h$hum"."b.....";
$out2="
# Temp=$tc Deg.Cel. Hum=$hum% Bar=753mm $call";

  open ( OUT, ">$filenameout" );  #Открыть файл wxnow.txt для записи
  print OUT "$out";                          #Записать первую строку
  print OUT "$out1";                        #Записать вторую строку
 # print OUT "$out2";                      # При желании записать текстовый формат
  close ( OUT );                               #Закрыть файл записи
  close (text);                                   #Закрыть файл чтения

 unlink ($filename);  # Удалить файл с данными из приёмника   log.ssv
 exit;        # Завершить выполнение скрипта и выйти

Сохраняем скрипт под именем log.pl. По умолчанию он ляжет в папку для исполняемых скриптов :\Dwimperl\perl\site\lib\auto\share\dist\Padre\examples\wx\log.pl     
 Проверьте правильно ли работает скрипт и если правильно, переходим к завершающей стадии работы - соединения всех частей в систему. Для этого проверяем пути для самого Perl.exe и для скрипта log.pl .
Теперь нужно написать командный файл (bat) чтобы им запускать последовательное выполнение программы приёмника и скрипта преобразования текста.  Файл назовём log.bat и поместим его в папку rtl_433  Вот текст этого файла

rtl_433.exe -R57 -R42 -F csv:log.csv -E
C:\Dwimperl\perl\bin\perl.exe C:\Dwimperl\perl\site\lib\auto\share\dist\Padre\examples\wx\log.pl

Проверим работу этого файла однократным ручным запуском. Данные из файла D:\log.csv должны перекочевать в файл D:\aprsis32\wxnow.txt  в правильном формате. Если всё правильно, APRS клиент тут же выдаст в канал связи (у меня это и радио и интернет) нужные данные. Если нет - ищите ошибку. После того, как всё заработает с помощью планировщика Windows создаём задание на исполнение командного файла один раз в пять минут. Ну или с другим интервалом. Теперь
Пуск-Панельуправления-Назначенные задания-Добавить задание.
Теперь (ОБЯЗАТЕЛЬНО) нажимаем дополнительно и выставляем параметры ежедневно с 00:00 до 23:59 с этого дня и до 2030 года. Запускаем  задание на исполнение и проверяем работу нашей метеостанции в интернете.