Радиоэфир > APRS

Direwolf APRS

<< < (3/4) > >>

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*

Навігація

[0] Сторінка Повідомлень

[#] Наступна сторінка

[*] Попередня сторінка

Помилка під час натискання Дякую
Дякую...
Go to full version