跳到内容

Direwolf的APRS遥测功能

之前博文中介绍过Direwolf的网关和Tracker功能,博主也在不断研读DirewolfAPRS的官方文档,力求发掘更多有用功能和创新玩法,这次带大家了解一下APRS的遥测数据包和其在Direwolf中的应用。

APRS最常见的活动是使用GPS信息绘制移动物体的位置信标,除此之外还可以使用短信息、遥测这些方式为信标附加公告和状态信息。APRS短信息大家应该都接触过,但对于遥测可能会有一些陌生,遥测和之前介绍的气象站类似,就是APRS台站通过脚本或传感器收集一些状态数据(如温度、电压、信号强度、开关状态等)发送给APRS-IS,而APRS-IS会以历史数据及图表的方式展示给我们。遥测数据包和普通位置数据包一样也有自己的格式标准,我们可以通过APRS官方文档68页第13章节以及Direwolf遥测实例文档来学习,下面博主就用自己APRS中继网关BG9EGA-10的遥测数据包举个栗子:

 

————————————————————-

数据

BG9EGA-10>APDW17:T#073,048,008,015,268,000,00000000

前面黑色部分为发送者呼号-SSID+软件版本、红色T(Telemetry)表示这是一个遥测数据包、蓝色部分是数据包编号(000~999)、绿色部分是要传递的5组遥测数据值(3位,空值用000表示),紫色部分本文暂不讨论

————————————————————-

 

那么收到这条遥测数据包的台站可能会一脸茫然:这5组数值代表什么?单位又是什么?

那么接下来,我们只需将名称和单位分别以短信息(APRS Message)的方式发送过去,接收台站将其一一对应来解读那几组遥测数据值,例如:

 

————————————————————-

名称

BG9EGA-10>APDW17::BG9EGA-10:PARM.CPUTemp,DiGi,Tx,Rx

黑色部分为发送者呼号-SSID+软件版本+接收者呼号-SSID、红色“:”表示这是一个短信息(APRS Message)数据包、橙色用途是定义数值名称,绿色是数据名称内容,因为上文只传递了4组数据,所以这里只用写4个名称(博主传递的分别是APRS中继网关的:CPU温度、已中继信标个数、发送信标个数、接收信标个数)。

————————————————————-

 

————————————————————-

单位

BG9EGA-10>APDW17::BG9EGA-10:UNIT.C,p,p,p

格式和上面那条类似,这条定义了单位(例如博主定义的是:摄氏度°C和包个数packets)。

————————————————————-

 

 

遥测数据包的标准格式就是这样:数据值、名称、单位,希望博主的描述大家能够看懂。。。

APRS-IS接收如下:

 

那么我们如何获取这些数值并组装出这三个数据包呢?Direwolf附带了相应数据包生成命令工具,工具是Perl语言编写,需要安装语言环境(sudo apt-get install perl)。

参照Direwolf遥测实例文档,在Direwolf配置文件中分别用telem-parm.pl、telem-unit.pl、telem-data.pl工具创建三个自定义信标(CBEACON参照Direwolf官方文档第119页),例如博主的:

CBEACON SENDTO=IG DELAY=1:10 EVERY=20 INFOCMD="telem-parm.pl BG9EGA-10 CPUTemp DiGi Tx Rx"
CBEACON SENDTO=IG DELAY=1:11 EVERY=20 INFOCMD="telem-unit.pl BG9EGA-10 C p p p"
CBEACON SENDTO=IG DELAY=1:15 EVERY=20 INFOCMD="telem-data.pl `/root/shell/seq.sh` `/root/shell/telem.sh`,0,0"

解释:以IG网络方式发送给APRS-IS、启动1分钟后发送、而后每隔20分钟发送一次、内容是双引号内命令的执行结果。

前两条是上文提到的用来定义数值名称和单位的短信息(APRS Message),第三条就是遥测数据,其中seq.sh(000~999序号循环Shell脚本)和telem.sh(数值获取Shell脚本)是博主自己写的,给大家提供借鉴,根据自己的情况修改吧。

seq.sh

#!/bin/sh
SEQ=`touch /tmp/seq`
SEQ=$(expr \( $SEQ + 1 \) % 1000)
SEQ=`printf "%03d\n" $SEQ`
echo $SEQ | tee /tmp/seq

telem.sh

#!/bin/bash

TP=`cat /etc/armbianmonitor/datasources/soctemp | awk '{printf("%d",$1/1000)}'`
DG=`cat /var/log/direwolf.log | grep "\[0H\]" | wc -l`
TX=`cat /var/log/direwolf.log | grep "\[0L\]" | wc -l`
RX=`cat /var/log/direwolf.log | grep "audio level =" | wc -l`

echo "$TP $DG $TX $RX"

编辑完配置文件重启Direwolf就可以去地图上看了。

目前只有aprs.fi可以显示遥测数据,但其使用谷歌地图导致我们无法打开首页,没有关系,直接访问遥测页面即可:https://aprs.fi/telemetry/a/BG9EGA-10,把结尾呼号-SSID改成自己然后访问吧。

APRS-IS为你保存一年的数据(每个SSID),是不是很爽!

博主调出了月数据,四个图表依次为:
主机CPU温度(天变冷了)
转发信标数量(设置的过滤器生效了,偶尔会有符合规则的信标被转发)
发射信标数量(每小时发射一个自身信标,每天共发射24个)
接收信标数量(看来最近几天周围的HAM很活跃啊)。

发表于无线电

9 条评论

  1. BI9ABS BI9ABS

    先评论再研究学习。

  2. BG9ITI BG9ITI

    老铁,请教您这边有没有direwolf的详细搭建流程,IT小白想折腾一下,哈哈。。。

    • 之前有篇“IGate网关”的博文,可以参照那个。

      • BG9ITI BG9ITI

        我手头有个优酷盒子+单工板,刷了openWRT固件可以玩MMDVM,就缺个aprs的玩法,看了您的iGATE博文,这个Armbian系统的电视盒子+SDR;请教一下,我的这一套有没有办法实现?

        • 优酷盒子是ARM架构CPU可以运行,但Direwolf不支持OpenWrt系统,虽然可以在Docker下跑,但稳定性不好。

  3. bh3frk bh3frk

    回头教教紫色的注释怎么弄呗,感觉挺个性哈。

    • 配置文件里加一条
      CBEACON SENDTO=IG DELAY=1 EVERY=30 INFO=”>文字”

      • BH3FRK BH3FRK

        哈哈。非常感谢,我也可以骚气起来了

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注