RaspberryPiとDVB-TでADS-BのFlightradar24フィーダー Stretch版

提供: ディーズガレージ wiki
2018年1月6日 (土) 00:51時点におけるShogooda (トーク | 投稿記録)による版 (FR24 Feeder/Decoderのインストール)

(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索

航空機が発信してるADS-Bという信号を受信しFlightradar24に送信する試みです。この行為はFlightradar24公式では日本の電波法には問題ないとしています。違法状態になったら記事削除します。

環境

ボード Raspberry Pi3 ModelB
OS Raspbian Stretch 2017-11-29
microSDHC SanDisk Ultra microSDHC Class10 16GB
DVB-T シャフトコーポレーション TV28Tv2DVB-T(R820T)
シャフトコーポレーション 放熱プレート+小型ヒートシンク
アンテナ ダイヤモンド D555 120MHz/1090MHz帯受信専用
その他 シャフトコーポレーション MCX-P/SMA-J変換ケーブル 300mm
ダイヤモンド 2D1SR M-SMA変換ケーブル 1m または
ダイヤモンド 2D2SR M-SMA変換ケーブル 2m
ダイヤモンド BK10 モービルアンテナ取付金具

RPiReceiver-1-1170x429.jpg
引用 Flightradar24 Blog

Raspberry Piにモニター、マウス、キーボード、電源、有線LAN、DVB-T、アンテナが接続されている状態から作業をすすめます。

OSの準備

RaspberryPiのStretch Liteでデスクトップ環境を作ってみるの手順で準備
固定IPは192.168.1.183
hosts名はfr24

FlightAwareにフィード

FlightAware

参考: PiAware
Enterprise Account(USD89.95/月)が無料になります」だそうです。

インストール

$ wget http://ja.flightaware.com/adsb/piaware/files/packages/pool/piaware/p/piaware-support/piaware-repository_3.5.3_all.deb
$ sudo dpkg -i piaware-repository_3.5.3_all.deb
$ sudo apt-get update
$ sudo apt-get install piaware
$ sudo piaware-config allow-auto-updates yes
$ sudo piaware-config allow-manual-updates yes
$ sudo apt-get install dump1090-fa
$ sudo reboot

FlightAware.comでPiAwareクライアントを申し込む
ここから先、新規で申し込む挙動がわかりません。(既に登録済みで作業進めてますので。)

統計の確認

https://flightaware.com/adsb/stats/user/<username>

MLATが近所の数台のレシーバーと同期し測量しますので観測地の高度と緯度経度の設定はしておいたほうがいいと思います。

dump1090-faの動作確認

PiAware Skyview
RaspberryPiの場合 http://127.0.0.1:8080/
他のPCの場合 http://192.168.1.183:8080/

コンフィグを書き換える場合

$ sudo leafpad /usr/share/dump1090-fa/html/config.js

FR24 Feeder/Decoderのインストール

Flightradar24 Feeder/Decoder
FR24 Feeder Settings

参考: Share data with Flightradar24
インストールスクリプトの中で必要な情報を入力する必要があるので先に準備。

  • メールアドレス 例: abc@gmail.com
  • sharingkey(新規の場合は必要なし)
  • アンテナの緯度 例: 35.xxxx
  • アンテナの経度 例: 139.xxxx
  • アンテナの海抜 例: 海抜+設置高さ=xx (単位feet)

インストール

 $ sudo apt-get install dirmngr
 $ sudo wget -O /etc/udev/rules.d/rtl-sdr.rules "https://raw.githubusercontent.com/osmocom/rtl-sdr/master/rtl-sdr.rules"
 $ sudo bash -c "$(wget -O - http://repo.feed.flightradar24.com/install_fr24_rpi.sh)"

赤字が入力

[main][i]FR24 Feeder/Decoder
[main][i]Version: 1.0.18-9/generic
[main][i]Built on Apr 20 2017 09:25:30 (T201704200925/Linux/static_arm)
[main][i]Copyright 2012-2017 Flightradar24 AB
[main][i]http://flightradar24.com
[main][i]DNS mode: PING

Welcome to the FR24 Decoder/Feeder sign up wizard!

Before you continue please make sure that:

1 - Your ADS-B receiver is connected to this computer or is accessible over network
2 - You know your antenna's latitude/longitude up to 4 decimal points and the altitude in feet
3 - You have a working email address that will be used to contact you
4 - fr24feed service is stopped. If not, please run: sudo service fr24feed stop

To terminate - press Ctrl+C at any point


Step 1.1 - Enter your email address (username@domain.tld)
$:メールアドレス

Step 1.2 - If you used to feed FR24 with ADS-B data before enter your sharing key.
If you don't remember your sharing key, pelase use the retrival form:
http://feed.flightradar24.com/forgotten_key.php

Otherwise leave this field empty and continue.
$:既得のsharingkey(新規の場合は空エンター)

Verifying sharing key...OK



Step 1.3 - Would you like to participate in MLAT calculations? (yes/no)$:yes

IMPORTANT: For MLAT calculations the antenna's location should be entered very precise!

Step 3.A - Enter antenna's latitude (DD.DDDD)
$:35.xxxx

Step 3.B - Enter antenna's longitude (DDD.DDDD)
$:139.xxxx

Step 3.C - Enter antenna's altitude above the sea level (in feet)
$:xx.x

Using latitude: 35.xxxx, longitude: 139.xxxx, altitude: xxft above sea level

We have detected that you already have a dump1090 instance running. We can therefore automatically configure the FR24 feeder to use existing receiver configuration, or you can manually configure all the parameters.

Would you like to use autoconfig (*yes*/no)$:yes

Step 6A - Please select desired logfile mode:
0 -  Disabled
1 -  48 hour, 24h rotation
2 -  72 hour, 24h rotation
Select logfile mode (0-2)$:0

Step 6B - Please enter desired logfile path (/var/log):
$:空エンター

Submitting form data...OK

Congratulations! You are now registered and ready to share ADS-D data with Flightradar24.
+ Your radar id is T-RJTTxxx, please include it in all email communication with us.
+ Please make sure to start sharing data within the next 3 days as otherwise your ID/KEY will be deleted.

Thank you for supporting Flightradar24! We hope that you will enjoy our Premium services that will be available to you when you become an active feeder.

To start sending data now please execute:
sudo service fr24feed start

Saving settings to /etc/fr24feed.ini...OK
Settings saved, please run "sudo service fr24feed restart" to use new configuration.
Installation and configuration completed!

サービス再起動

$ sudo service fr24feed restart

再起動

$ sudo reboot

動作確認

RaspberryPiの場合 http://127.0.0.1:8754
他のPCの場合 http://192.168.1.183:8754

設定を間違えてるようなので変更
Settingsボタンを押し、

Receiver: ModeS Beast(TCP)
Host/IP: 127.0.0.1:30005

右下のSaveボタンを押し、Restartボタンを押す

Flightradar24 Premiumに登録

flightradar24 PREMIUM Stats

フィードデータを供給するお礼にプレミアムアカウントを無料でくれるようです。

https://www.flightradar24.com/premium/

ここから先、新規で申し込む挙動がわかりません。(既に登録済みで作業進めてますので。)

FR24Premiumというアプリも無料でくれるようです。
iPhone/iPad/Android/WindowsPhone/Windows8対応だそうです。

PlaneFinderにフィード

PlaneFinderClient
PlaneFinderClient

参考: Plane Finder Sharing

最新版のバージョン確認

https://planefinder.net/sharing/client

Linux ARMHF (Raspberry Pi, BeagleBone, Radarcape etc.)のDebian Package(.deb)のURL

インストール バージョンは適宜変更

$ wget http://client.planefinder.net/pfclient_x.x.xx_armhf.deb
$ sudo dpkg -i pfclient_x.x.xx_armhf.deb

ブラウザで設定

RaspberryPiの場合 http://127.0.0.1:30053
他のPCの場合 http://192.168.1.183:30053
  • メールアドレス 例: abc@gmail.com
  • アンテナの緯度 例: 35.xxxx
  • アンテナの経度 例: 139.xxxx

Create a new sharecode (メールにsharecodeが届きます。)

  • Receiver data format: Beast
  • IP address: 127.0.0.1
  • Port: 30005

Complete configuration

動作確認

RaspberryPiの場合 http://127.0.0.1:30053
他のPCの場合 http://192.168.1.183:30053

Virtual Radar Serverのインストール

Virtual Radar Server
VRS Web Admin

参考: Virtual Radar Server

Linuxインストールに関する作者さんの説明

http://www.virtualradarserver.co.uk/Mono.aspx

Monoのインストール

$ sudo apt-get install mono-complete

ダウンロード

$ mkdir VirtualRadar
$ cd VirtualRadar
$ wget http://www.virtualradarserver.co.uk/Files/VirtualRadar.tar.gz
$ tar -zxvf VirtualRadar.tar.gz
$ wget http://www.virtualradarserver.co.uk/Files/VirtualRadar.WebAdminPlugin.tar.gz
$ tar -zxvf VirtualRadar.WebAdminPlugin.tar.gz
$ wget http://www.virtualradarserver.co.uk/Files/VirtualRadar.exe.config.tar.gz
$ tar -zxvf VirtualRadar.exe.config.tar.gz

一度起動(/home/pi/.local/share/VirtualRadarディレクトリ作成のため)

$ mono VirtualRadar.exe

Virtual Radar Server終了

ポート番号の変更(InstallerConfiguration.xmlの新規作成)

$ sudo leafpad /home/pi/.local/share/VirtualRadar/InstallerConfiguration.xml

コピー&ペースト (この場合は8081番に変更)

<?xml version="1.0" encoding="utf-8" ?>
<InstallerSettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <WebServerPort>8081</WebServerPort>
</InstallerSettings>

Virtual Radar Server起動(ユーザー登録のため)

<name>に適当なユーザー名、<password>に適当なパスワード
$ mono VirtualRadar.exe -createAdmin:<name> -password:<password>

Virtual Radar Server終了

Virtual Radar Serverに登録するDatabase、Flags、SilhouettesをKinetic Avionicからダウンロードします。

種類が少なく全部表示してくれません。
古い記事で書いた内容で設定したほうが充実するかもです。

Raspbianに標準搭載のブラウザChromiumを使用します。
Chromiumのダウンロード保存先はデフォルト設定の/home/pi/Downloadsで作業進めてみます。

Database

http://www.kinetic.co.uk/resourcesdownloads.php#4

SBS Resources SQB File ボタンをクリック

Flags

http://www.kinetic.co.uk/resourcesdownloads.php#1

Operator Logos Version 2ボタンをクリック(Version 2がいちばん種類が豊富なのでこれで試してみます)

Silhouettes

http://www.kinetic.co.uk/resourcesdownloads.php#1

Silhouette Logos ボタンをクリック

ディレクトリの準備
$ cd /home/pi/VirtualRadar
$ mkdir data
$ mkdir data/Flags && mkdir data/Silhouettes
登録
$ cd /home/pi/Downloads
$ unzip BaseStation-sqb.zip
$ sudo mv BaseStation.sqb /home/pi/VirtualRadar/data/
$ unzip OperatorLogos2.zip
$ sudo cp -R OperatorLogos2/. /home/pi/VirtualRadar/data/Flags/
$ unzip SilhouettesLogos.zip
$ sudo cp -R SilhouettesLogos/. /home/pi/VirtualRadar/data/Silhouettes/

Virtual Radar Server起動

$ cd /home/pi/VirtualRadar
$ mono VirtualRadar.exe

VRS Web Admin Optionsに登録

PaspberryPiの場合 http://127.0.0.1:8081/VirtualRadar/WebAdmin/Index.html
他のPCの場合 http://192.168.1.183:8081/VirtualRadar/WebAdmin/Index.html
登録したユーザー名、パスワードでログイン

左のOptionsボタン

Database filename: /home/pi/VirtualRadar/data/BaseStation.sqb
Flags folder: /home/pi/VirtualRadar/data/Flags
Silhouettes folder: /home/pi/VirtualRadar/data/Silhouettes

下のほうのSaveボタン

Virtual Radar Server終了

自動起動設定

$ sudo leafpad /etc/init.d/virtualradar

コピーペースト

#! /bin/sh
### BEGIN INIT INFO
# Provides:          VirtualRadarServer
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: web page for ADSB
# Description:       my own ADS-B data with Virtual Radar Server
### END INIT INFO

# PATH should only include /usr/* if it runs after the mountnfs.sh script
#PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Virtual Radar Sever for ADSB"
NAME=VirtualRadar
DAEMON="/usr/bin/mono /home/pi/VirtualRadar/$NAME.exe"
DAEMON_ARGS="-workingFolder:/home/pi/.local/share/VirtualRadar -nogui"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/virtualradar

# Exit if the package is not installed
#[ -x "$DAEMON" ] || exit 0

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions

#
# Function that starts the daemon/service
#
do_start()
{
        # Return
        #   0 if daemon has been started
        #   1 if daemon was already running
        #   2 if daemon could not be started
        start-stop-daemon --start --background --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
                || return 1
        start-stop-daemon --start --background --pidfile $PIDFILE --make-pidfile --exec $DAEMON -- $DAEMON_ARGS \
                || return 2
               
        # Add code here, if necessary, that waits for the process to be ready
        # to handle requests from services started subsequently which depend
        # on this one.  As a last resort, sleep for some time.
}

#
# Function that stops the daemon/service
#
do_stop()
{
        # Return
        #   0 if daemon has been stopped
        #   1 if daemon was already stopped
        #   2 if daemon could not be stopped
        #   other if a failure occurred
        start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --exec $DAEMON
        RETVAL="$?"
        [ "$RETVAL" = 2 ] && return 2
        # Wait for children to finish too if this is a daemon that forks
        # and if the daemon is only ever run from this initscript.
        # If the above conditions are not satisfied then add some other code
        # that waits for the process to drop all resources that could be
        # needed by services started subsequently.  A last resort is to
        # sleep for some time.
        start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
        [ "$?" = 2 ] && return 2
        # Many daemons don't delete their pidfiles when they exit.
        rm -f $PIDFILE
        return "$RETVAL"
}

#
# main
#
case "$1" in
  start)
        [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
        do_start
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
  stop)
        [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
        do_stop
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
  #status)
        #status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
        #;;
  #reload|force-reload)
        #
        # If do_reload() is not implemented then leave this commented out
        # and leave 'force-reload' as an alias for 'restart'.
        #
        #log_daemon_msg "Reloading $DESC" "$NAME"
        #do_reload
        #log_end_msg $?
        #;;
  restart|force-reload)
        #
        # If the "reload" option is implemented then remove the
        # 'force-reload' alias
        #
        log_daemon_msg "Restarting $DESC" "$NAME"
        do_stop
        case "$?" in
          0|1)
                do_start
                case "$?" in
                        0) log_end_msg 0 ;;
                        1) log_end_msg 1 ;; # Old process is still running
                        *) log_end_msg 1 ;; # Failed to start
                esac
                ;;
          *)
                # Failed to stop
                log_end_msg 1
                ;;
        esac
        ;;
  *)
        #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
        echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
        exit 3
        ;;
esac
:

権限変更

$ sudo chmod 755 /etc/init.d/virtualradar

サービス登録

$ sudo update-rc.d virtualradar defaults

再起動

$ sudo reboot

動作確認

PaspberryPiの場合
VRS Web Admin http://127.0.0.1:8081/VirtualRadar/WebAdmin/Index.html
Default Version http://127.0.0.1:8081/VirtualRadar
Desktop Version http://127.0.0.1:8081/VirtualRadar/desktop.html
Mobile Version http://127.0.0.1:8081/VirtualRadar/mobile.html
Old Desktop Version http://127.0.0.1:8081/VirtualRadar/GoogleMap.htm
Old Mobile Version http://127.0.0.1:8081/VirtualRadar/iPhoneMap.htm
Setting Page http://127.0.0.1:8081/VirtualRadar/settings.html
他のPCの場合
VRS Web Admin http://192.168.1.183:8081/VirtualRadar/WebAdmin/Index.html
Default Version http://192.168.1.183:8081/VirtualRadar
Desktop Version http://192.168.1.183:8081/VirtualRadar/desktop.html
Mobile Version http://192.168.1.183:8081/VirtualRadar/mobile.html
Old Desktop Version http://192.168.1.183:8081/VirtualRadar/GoogleMap.htm
Old Mobile Version http://192.168.1.183:8081/VirtualRadar/iPhoneMap.htm
Setting Page http://192.168.1.183:8081/VirtualRadar/settings.html

ModeSMixer2のインストール

ModeSMixer2
ModeSMixer2
ModeSMixer2
ModeSMixer2

参考: xdeco.org
RaspbianのブラウザChromiumを使用します。
Chromiumのダウンロード保存先はデフォルト設定の/home/pi/Downloadsで作業進めてみます。
ダウンロード

ブラウザChromiumから
http://xdeco.org/?page_id=30#mm2
Raspberry Pi用が数種類用意されてるので環境にあったものをダウンロード(googledriveでは↓マーク)
$ mkdir modesmixer2
$ sudo mv /home/pi/ダウンロード/modesmixer2_rpi2-3_deb9_20170924.tgz /home/pi/modesmixer2
$ cd modesmixer2
$ tar -zxvf modesmixer2_rpi2-3_deb9_20170924.tgz

DatabaseとSilhouettesとFlightRouteを登録できるようです。
DatabaseとSilhouettesはVirtual Radar Serverで登録したものをコピーし、
FlightRouteは用意の仕方が分からないので「まんしゅう彩遊記」さんから頂きます。
DatabaseとSilhouettes

$ sudo cp -R /home/pi/VirtualRadar/data/. /home/pi/modesmixer2/

FlightRoute

ブラウザChromiumから
http://newmansyuu.blog.fc2.com/blog-entry-433.html
キャビネットボード
http://acarsman.in.coocan.jp/cab/viewtopic.php?f=2&t=177
flightroute_w.zip (62,993 byte) 15/09/11 更新  ダウンロード
$ cd ~
$ sudo mv /home/pi/ダウンロード/flightroute_w.zip /home/pi/modesmixer2
$ cd modesmixer2
$ unzip flightroute_w.zip

自動起動設定

$ sudo leafpad /etc/init.d/modesmixer2

コピーペースト
--location 35.xxxx:139.xxxxは観測地の緯度経度

#! /bin/sh
### BEGIN INIT INFO
# Provides:          modesmixer2
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: modesmixer2
# Description:       modesmixer2
### END INIT INFO

# Author: Foo Bar <foobar@baz.org>
#
# Please remove the "Author" lines above and replace them
# with your own name if you copy and modify this script.

# Do NOT "set -e"

# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="modesmixer2"
NAME=modesmixer2
DAEMON=/home/pi/modesmixer2/$NAME
DAEMON_ARGS="--inConnect 127.0.0.1:30005 --location 35.xxxx:139.xxxx --web 8082 --db /home/pi/modesmixer2/BaseStation.sqb --frdb /home/pi/modesmixer2/flightroute_w.sqb --silhouettes /home/pi/modesmixer2/Silhouettes"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions

#
# Function that starts the daemon/service
#
do_start()
{
        # Return
        #   0 if daemon has been started
        #   1 if daemon was already running
        #   2 if daemon could not be started
        start-stop-daemon --start --background --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
                || return 1
        start-stop-daemon --start --background --pidfile $PIDFILE --make-pidfile --exec $DAEMON -- $DAEMON_ARGS \
                || return 2
        # Add code here, if necessary, that waits for the process to be ready
        # to handle requests from services started subsequently which depend
        # on this one.  As a last resort, sleep for some time.
}

#
# Function that stops the daemon/service
#
do_stop()
{
        # Return
        #   0 if daemon has been stopped
        #   1 if daemon was already stopped
        #   2 if daemon could not be stopped
        #   other if a failure occurred
        start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
        RETVAL="$?"
        [ "$RETVAL" = 2 ] && return 2
        # Wait for children to finish too if this is a daemon that forks
        # and if the daemon is only ever run from this initscript.
        # If the above conditions are not satisfied then add some other code
        # that waits for the process to drop all resources that could be
        # needed by services started subsequently.  A last resort is to
        # sleep for some time.
        start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
        [ "$?" = 2 ] && return 2
        # Many daemons don't delete their pidfiles when they exit.
        rm -f $PIDFILE
        return "$RETVAL"
}

#
# main
#
case "$1" in
  start)
        [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
        do_start
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
  stop)
        [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
        do_stop
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
  #status)
        #status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
        #;;
  #reload|force-reload)
        #
        # If do_reload() is not implemented then leave this commented out
        # and leave 'force-reload' as an alias for 'restart'.
        #
        #log_daemon_msg "Reloading $DESC" "$NAME"
        #do_reload
        #log_end_msg $?
        #;;
  restart|force-reload)
        #
        # If the "reload" option is implemented then remove the
        # 'force-reload' alias
        #
        log_daemon_msg "Restarting $DESC" "$NAME"
        do_stop
        case "$?" in
          0|1)
                do_start
                case "$?" in
                        0) log_end_msg 0 ;;
                        1) log_end_msg 1 ;; # Old process is still running
                        *) log_end_msg 1 ;; # Failed to start
                esac
                ;;
          *)
                # Failed to stop
                log_end_msg 1
                ;;
        esac
        ;;
  *)
        #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
        echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
        exit 3
        ;;
esac
:

権限変更

$ sudo chmod 755 /etc/init.d/modesmixer2

サービス登録

$ sudo update-rc.d modesmixer2 defaults

再起動

$ sudo reboot

動作確認

RaspberryPiの場合 http://127.0.0.1:8082
他のPCの場合 http://192.168.1.183:8082

ADS-B Exchangeにフィード

ADS-B Exchange

参考: ADS-B Exchange

設定方法

http://www.adsbexchange.com/how-to-feed-from-vrs/

VRS Web Admin

PaspberryPiの場合 http://127.0.0.1:8081/VirtualRadar/WebAdmin/Index.html
他のPCの場合 http://192.168.1.183:8081/VirtualRadar/WebAdmin/Index.html

Options→Rebroadcast Servers
こんな感じで入力して右上×ボタン押して、画面下のSaveボタン
FR24 adsbexchange2.png

再起動

$ sudo reboot

動作確認
VRS Web AdminのRebroadcast serversでカウントされてれば成功してると思います。

PaspberryPiの場合
VRS Web Admin http://127.0.0.1:8081/VirtualRadar/WebAdmin/Index.html
他のPCの場合
VRS Web Admin http://192.168.1.183:8081/VirtualRadar/WebAdmin/Index.html

確認

http://www.adsbexchange.com/ のGlobal Radar View(直リンクできないようです)

Radarbox24にフィード

RadarBox24

参考: Radarbox24 Raspberry Pi Client - RadarBox24.com Blog

インストール CATEGORY A

$ sudo bash -c "$(wget -O - http://apt.rb24.com/inst_rbfeeder.sh)"

Installation finished

再起動

$ sudo reboot

ユーザー登録

https://www.radarbox24.com/raspberry-pi/claim

sharing keyの登録

Google翻訳
私たちのシステムは共有鍵を使って動作します。 このキーはステーションを識別し、サーバーに送信されるパケットに存在します。 ラズベリーpiで初めてソフトウェアを実行すると、共有キーが自動的に作成され、設定ファイルに保存されます。 以前のインストールの共有鍵を既に持っている場合は、構成ファイルを変更してキーで保存することができます。 あなたの共有履歴を失うことはありません。 各インストールには一意の共有キーが必要です。
あなたの現在のキーを表示するには、あなたのラズベリーパイコンソールを入力してください:
$ sudo rbfeeder --showkey --no-start

Business (Feeder)というのくれました。$399.50/年が無料になるようです。

nginxでproxy

JSON

http://192.168.1.183:8080/data/aircraft.json を参照したい場合、CORSに該当し困ることがあります。
特定ポートをlighttpdにバイパスしつつCORS対策するだけの機能を作ってみます。

ポート50000 → dump1090-faのポート8080
ポート50001 → PlaneFinderのポート30053

インストール

$ sudo service lighttpd stop
$ sudo apt-get install nginx
$ sudo /etc/init.d/nginx start

デフォルトのシンボリックリンク削除

$ sudo unlink /etc/nginx/sites-enabled/default

設定作成 ※ /etc/nginx/nginx.confでincludeになっているのでhttp{…}ディレクティブは必要無し

$ sudo leafpad /etc/nginx/sites-available/proxy
server {
    listen 50000;
    server_name localhost;
    location / {
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Methods "POST, GET, OPTIONS";
        add_header Access-Control-Allow-Headers "Origin, Authorization, Accept";
        add_header Access-Control-Allow-Credentials true;
        proxy_pass http://127.0.0.1:8080/;
    }
}

server {
    listen 50001;
    server_name localhost;
    location / {
        #add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Methods "POST, GET, OPTIONS";
        add_header Access-Control-Allow-Headers "Origin, Authorization, Accept";
        add_header Access-Control-Allow-Credentials true;
        proxy_pass http://127.0.0.1:30053/;
    }
}

シンボリックリンク

$ sudo ln -s /etc/nginx/sites-available/proxy /etc/nginx/sites-enabled/

再起動

$ sudo reboot

確認

http://192.168.1.183:50000/data/aircraft.json
http://192.168.1.183:50001/ajax/aircraft.json

MyRadar24

MyRadar24
MyRadar24

3Dビューワー作りました。
dump1090-faのサブディレクトリで起動するよう設定してみます。

MyRadar24 動作サンプル

インストール

ダウンロード version0.6

$ wget http://dz.plala.jp/wiki_data/myradar24v0.6.zip
$ unzip myradar24v0.6.zip

登録

$ sudo mkdir /usr/share/dump1090-fa/html/3d
$ sudo cp -R myradar24v0.6/. /usr/share/dump1090-fa/html/3d/

設定

$ sudo leafpad /usr/share/dump1090-fa/html/3d/js/script.js

書き換え
(事前にBingMapsのbasic keyを取得してください。既にFlightAware dump1090で使用してる場合、同じものが使用できます。)

// Controls page title, righthand pane when nothing is selected
PageName = "MyRadar24";

// Provide a Bing Maps API key here to enable the Bing imagery layer.
// You can obtain a free key (with usage limits) at
// https://www.bingmapsportal.com/ (you need a "basic key")
var BingMapsAPIKey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';

var myLat = 35.xxxx;
var myLon = 139.xxxx;
var standardTime = 'JST'; //Standard Time spell
var offsetTime = '+9'; // UTC offset Decimal https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
var removeTime = 10; //Time to delete from lost (s)

動作確認

http://192.168.1.183:8080/3d/
(FlightAware dump1090のローカルIPアドレスに/3d/を加えたもの)
ローカルエリア内の他のPCは動作しました。
RaspberryPiのChromiumはCORSエラーが出ました。CORS対策してもWebGLエラーが出ました。
結果、RaspberryPiのブラウザで操作することはできない気がします。

カメラのデフォルト位置の調整

MyRadar24を起動してる状態でSpaceキーを押すと画面に数値が表示されます。
(もう一度押すと消えます。)
マウス操作して理想の場所まで移動。

カメラのデフォルト位置の設定

$ sudo leafpad /usr/share/dump1090-fa/html/3d/js/script.js

書き換え

// Default camera position (play and space key press)
var camLon = 139.8256;
var camLat = 35.6959;
var camDist = 138434;
var camPan = -0.027;
var camTilt = 1.055;

アンインストール

$ rm myradar24v0.6.zip
$ rm -r myradar24v0.6
$ sudo rm -r /usr/share/dump1090-fa/html/3d

空港データの設定方法

設定済データの確認

$ sudo leafpad /usr/share/dump1090-fa/html/3d/json/airports.json

データのダウンロード

http://ourairports.com/data/

airports.csvをダウンロード。
MicrosoftExcelやLibreOfficeなどで開き内容確認。
あまりに量が多いため全てを登録するとMyRadar24は動かなくなります。
2行目から最終行までを選択しiso_countryの列でデータの並び替え。
不必要な国の行を全て削除。
それでもデータ量が多いようであればtype列でデータの並び替えをし、heliportの行など削除。
データをCSVで保存。
オンラインサービスでCSVからJSONに変換

http://www.csvjson.com/csv2json

出来たJSONデータを新規テキストに貼り付け。
行の頭に以下追加

{
    "airport": [

最終行に以下追加

    ]
}

保存しairports.jsonにリネーム。
/usr/share/dump1090-fa/html/3d/json/airports.jsonを上書き保存。

変更履歴

  • 2018.01.04 公開