Продолжение. Начало смотреть тут.
Как я писал ранее, перед совместным запуском оба элемента должны быть готовы и опробованы отдельно. Командная строка для 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";
}
($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;
}
($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";
# Temp=$tc Deg.Cel. Hum=$hum% Bar=753mm $call";
open ( OUT, ">$filenameout" ); #Открыть файл wxnow.txt для записи
print OUT "$out"; #Записать первую строку
print OUT "$out1"; #Записать вторую строку
# print OUT "$out2"; # При желании записать текстовый формат
# 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 создаём задание на исполнение командного файла один раз в пять минут. Ну или с другим интервалом. Теперь
Пуск-Панельуправления-Назначенные задания-Добавить задание.