APRSクライアントの作成

ここにはAPRSクライアントアプリケーション作成時に必要な技術的情報を掲載しています。

詳細は、下記URLに掲載されています。

APRS-ISサーバへの接続

任意のサーバの適切なポートに TCP で接続。 サーバとのインターネット接続は TCP になります。 (UDPでの接続も可能です)

接続先APRSの決定

国内から接続するAPRS Tier2 サーバは、japan.aprs2.net にすることが推奨されています。 japan.aprs2.net で指定するとDNSのラウンドロビンの機能により、国内に設置されているサーバにランダム接続します。これにより国内サーバの負荷分散を図ります。 (負荷のもっとも小さいサーバに接続する訳ではありません)

ワールドワイド向けに開発されているAPRSクライアントでは接続先を rotate.aprs2.net と推奨していますが、国内に限ってはこれよりも japan.aprs2.net の方がネットワーク的な効率がいいはずです。

接続先ポートの決定

得たい情報の種類によって接続ポートが異なりなります。詳細はこちらを御覧ください。

必要なデータのみを受けることが重要です。ネットワークのトラフィックの問題よりも、それを処理するプログラムの負荷が問題になってきます。 10152でフルフィードを受けると、資源の乏しいマシンでは処理が追い付かない可能性もあります。 14580に接続してフィルターをかけるか、あるいは 14579に接続して日本国内のみのフィードを受けるかがベストチョイスだと思います。

接続

TCPレベルでの接続に成功するとサーバから # javAPRSSrvr 3.14b03 と返ってきます。 この時点でjavAPRSSrvrのStatusページには、ポート番号、クライアントのIPアドレス、認証はNoの状態で表示されます(コールサインは空欄)。 ただし、この状態ではサーバからはまだなにも情報は送信されてきません。 次のステップ(ユーザ認証)が必要です。

ユーザ認証

ユーザ認証

クライアント側からサーバに次のような書式でコマンドを送ります。(ただし14580ポート以外の場合に限る)

user CALLSIGN pass PASSWORD vers AGENT_NAME AGENT_VERSION REMKS
CALLSIGNコールサイン with SSIDJG6YCL-10
PASSWORDValidation Number12345
AGENT_NAMEクライアントソフト名HOGEHOGE
AGENT_VERSIONクライアントバージョン1.23
REMKSコメント

成功するとサーバ側から # logresp CALLSIGN verified, server T2FUKUOKAのように返ってきます。

※AGENT_NAME以降はなくても受け付けてくれますが...

さらに受信だけであるなら、もっと簡単にすることもできます。

user CALLSIGN pass -1

この場合は サーバから # logresp CALLSIGN unverified, server T2FUKUOKAのように返ってきます。

接続ポートが 14580以外の場合は、これ以降サーバから情報が次々と送られて来ます。

フィルターの送信

接続ポートが 14680の場合(フィルター設定をクライアント側で行う場合)は、同時にフィルター値の送信が必要になります。

user CALLSIGN pass PASSWORD vers AGENT_NAME AGENT_VERSION filter FILTER REMKS

失敗した場合

何らかの都合で接続に認証に失敗した場合、サーバから # javAPRSSrvr 3.14b03 10 May 2008 12:00:00 GMT T2FUKUOKA xx.xx.xx.xx:14580 のように数十秒間隔で送信して来ます。

送受信

受信

APRSサーバからは順次データが送られて来ます。これをひたすら処理して行くだけですが次の点に注意が必要です。

  • 先頭が#の場合は、APRSサーバからの何かのメッセージである。
  • APRSのフォーマットに準拠したデータばかりではない。ワーストケースの想定を十分に行っておかないと後で大変なことになる。
  • AGWTrackerでは日本語の送信が可能であるが、UTF-8ではなく単純にSHIFT-JISである。(KetaiTrackerは UTF-8 で送受信します)

送信

  • フォーマット(書式)が間違ってるデータを送ってもAPRSサーバは特にエラーを返して来ない。他のAPRSクライアントでモニターしながら作業をおこなうしかない

終了処理

特に終了(断)のコマンドはなく、TCP(IP)レベルで断を行うだけでいいようです。

マルチバイトの利用

APRSの仕様上はマルチバイト文字は利用できません。仕様上はPrintable ASCIIのみとなっています。

しかし、いつくかのAPRSクライアントではマルチバイト文字が利用できます。 マルチバイトが利用できるAPRSクライアントはAGWTracker, LCW Messenger, KetaiTrackerなどです。利用できる場面としてはメッセージの交換のみです。ビーコンテキストには利用しない慣習になっています。 漢字コードはAGWTrackerではUNICODEと書いてありますが、実際はSHIFT-JISです。これに合わせてLCW MessengerやKetaiTrackerもSHIFT-JISになっています。

このままでは、マルチバイトを含む情報がマルチバイトを正常に表示できない海外まで到達してしまいます。 まったく無駄なトラフィックを発生させてしまいますので、これを防ぐためのgatewayを設置しています。 マルチバイトを利用するAPRSクライアントの場合は、その接続先を fukuoka.aprs2.net:15579 に限定する必要があります。(詳細)

[2010.03.01] KetaiTrackerからAPRS-ISに送出するメッセージのマルチバイトコードをUTF-8 に試験的に変更中

更新情報を的確にユーザに伝える手段を確保

クライアントのバージョンアップがユーザ自身の手によって必要なソフトウェアの場合、それが確実に行える仕組みを組み込んでおきましょう。 いつまでも古いバージョンを使い続けるユーザがいることも想定しなければいけません。 それも「更新されたことをしらない」「更新する気がない」など、理由も様々であることを考慮しましょう。

$Id: aprs-client.inc.tpl,v 1.12 2018/11/23 10:20:43 yahiro Exp $