Радиоэфир > APRS
Direwolf APRS
UT3BW:
Питання від Ів.- Франківських аматорів
------------------------------------------------------
Маємо Direwolf на діджі, маємо декілька термодатчиків.
Температуру з них отримуємо такою командою:
cat /sys/bus/w1/devices/28-030079a29357/w1_slave | sed -n 's/^.*\\(t=[^ ]*\\).*/\\1/p' | sed 's/t=//' | awk '{x=$1}END{print "T#MIC" int(x/1000)}'
(де 28-030079a29357 - номер датчика)
Всього датчиків п'ять, що як раз корелює із п'ятьма можливими значеннями в одній передачі телеметрії.
Якщо наведену команду виконати в командній строці, вона повертає температуру з датчика із бажаним округленням.
Як зробити так, щоб п'ять (бо в нас п'ять датчиків) команд виконувались послідовно, а поверненні значенні температури відсилались як телеметрія?
Я так розумію, що то має бути окремий скріпт, що опитує датчики та формує пакет так, щоб віддавати Direwolf'ові вже готову строку.
Або складніше: послідновно спочатку передавати нйменування параметрів, потім одиниці виміру, а потім, власне, значення - як це дозволяє стандарт APRS.
https://t.me/APRS_UA
koval:
Я б не заморочувався з Direwolf, а формував пакет bash скриптом і потім посилав через curl кожні n-хвилин через Cron.
UT7UX:
Перепрошую, а можна, будь ласка, попросити приклад, якого я б зміг скопіпастити?
koval:
В Лінуксі кладемо в папку:
--- Код: ---/usr/local/bin/
--- End code ---
Файли з назвою:
--- Код: ---sensor1.sh
sensor2.sh
sensor3.sh
sensor4.sh
sensor5.sh
--- End code ---
Кожний файл це команда для запиту температури з кодом:
--- Код: ---
#!/bin/bash
cat /sys/bus/w1/devices/28-030079a29357/w1_slave | sed -n 's/^.*\\(t=[^ ]*\\).*/\\1/p' | sed 's/t=//' | awk '{x=$1}END{print "T#MIC" int(x/1000)}'
--- End code ---
Відповідно в кожному файлі змінюємо назви датчиків на потрібний
--- Код: ---28-030079a29357
--- End code ---
Робимо файл executive:
--- Код: ---
chmod +x /usr/local/bin/sensor1.sh
chmod +x /usr/local/bin/sensor2.sh
chmod +x /usr/local/bin/sensor3.sh
chmod +x /usr/local/bin/sensor4.sh
chmod +x /usr/local/bin/sensor5.sh
--- End code ---
Переходимо в конфіг Direwolf і додаємо наступний код до вже існуючого конфігу:
--- Код: ---
CBEACON sendto=IG delay=0:12 every=1:00 infocmd="telem-parm.pl UR3PHP-8 TempDTX,TempDRX,TempETX,TempERX,TempDIGI,None,None,None,None,None,None,None,None"
CBEACON sendto=IG delay=0:13 every=1:00 infocmd="telem-unit.pl UR3PHP-8 Deg.C,Deg.C,Deg.C,Deg.C,Deg.C"
CBEACON sendto=IG delay=0:14 every=1:00 infocmd="telem-data.pl `telem-seq.sh` `sensor1.sh` `sensor2.sh` `sensor3.sh` `sensor4.sh` `sensor5.sh` `echo '00000000' `"
--- End code ---
--- Цитувати ---sendto=IG => маяк в Інтернет
--- End quote ---
--- Цитувати ---delay=0:13 => на 13 секунді після запуску системи
--- End quote ---
--- Цитувати ---every=1:00 => виконувати кожну звилину
--- End quote ---
--- Цитувати ---CBEACON sendto=IG delay=0:12 every=1:00 infocmd="telem-parm.pl UR3PHP-8 TempDTX,TempDRX,TempETX,TempERX,TempDIGI,None,None,None,None,None,None,None,None" => генерація назв датчиків
--- End quote ---
--- Цитувати ---CBEACON sendto=IG delay=0:13 every=1:00 infocmd="telem-unit.pl UR3PHP-8 Deg.C,Deg.C,Deg.C,Deg.C,Deg.C" => генерація значень одиниць
--- End quote ---
--- Цитувати ---infocmd="telem-data.pl `telem-seq.sh` `sensor1.sh` `sensor2.sh` `sensor3.sh` `sensor4.sh` `sensor5.sh` `echo '00000000' `" => генерація телеметрії
--- End quote ---
Перезапускаємо софт і все має запрацювати.
UT7UX:
Дякую! *THUMBS UP* *DRINK*
Навігація
Go to full version