Raspberry PiとDVB-TでADS-BのFlightradar24フィーダー Jessie with PIXEL版

提供: ディーズガレージ wiki
移動先: 案内検索

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

環境

ボード Raspberry Pi3 ModelB or Raspberry Pi2 ModelB (memory 1GB)
OS Raspbian Jessie with PIXEL 2016-11-25
microSDHC SanDisk Ultra microSDHC Class10 8GB
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、アンテナが接続されている状態から作業をすすめます。

ファームウェア更新

$ sudo rpi-update

再起動

$ sudo reboot

最新状態にアップデート

$ sudo apt-get update
$ sudo apt-get upgrade

再起動

$ sudo reboot

アップデートの自動化

インストール

$ sudo apt-get install unattended-upgrades
$ sudo dpkg-reconfigure -plow unattended-upgrades
GUIがでるので「はい」を選択
Origins-Patternはtabで了解

設定

$ sudo leafpad /etc/apt/apt.conf.d/50unattended-upgrades

変更箇所

//Unattended-Upgrade::Automatic-Reboot "false";
を
Unattended-Upgrade::Automatic-Reboot "true";
に

//Unattended-Upgrade::Automatic-Reboot-Time "02:00";
を
Unattended-Upgrade::Automatic-Reboot-Time "03:00";

再起動

$ sudo reboot

IP固定化

$ sudo leafpad /etc/dhcpcd.conf

末尾に追記(設定内容は各ネットワーク環境により異なります。「Raspberry Pi Jessie IP固定」などで検索してみてください。)

interface eth0
static ip_address=192.168.1.183/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

再起動

$ sudo reboot

遠隔操作

運用にはモニター、マウス、キーボードは必要ないので、この段階で遠隔操作にしてしまいます。
Raspbian Jessie with PIXEL にはRealVNCが標準で入ってます。これを使用してみます。

デフォルトで有効になってないので

Menu→設定→RaspberryPiの設定→インターフェイスタブ→VNC有効→OK→再起動

何も考えずディスプレイを取り外しVNCに接続すると画面サイズが656x416となってしまいます。おまじないがあるようなので設定しておきます。

$ sudo leafpad /boot/config.txt
#hdmi_mode=1の下に以下を追加
hdmi_ignore_edid=0xa5000080
hdmi_group=2
hdmi_mode=47

参考: config.txt - Raspberry Pi Documentation

RaspberryPiをシャットダウン

モニター、マウス、キーボードを取り外して電源入れ直し

同じネットワーク内のWindows/Mac/Linux/スマホ/タブレットにVNCクライアントソフトをインストールして接続してみてください。

RealVNC Viewerの場合
VNC Server: 192.168.1.183
Username: pi
Password: raspberry
Confirm: raspberry

成功していれば、以降はVNCクライアントの窓の中で作業できます。

USB電流供給制限解除

Pi3はデフォルトで1.2A。設定の必要ないようです。
Raspberry Pi ModelB+とRaspberry Pi2 ModelBはUSB電流供給を0.6A制限から1.2Aに切り替えできるそうです。

$ sudo leafpad /boot/config.txt

末尾に追加

max_usb_current=1

再起動

$ sudo reboot

FlightAwareにフィード

FlightAware

参考: PiAware
「FlightAwareのコミュニティーに貢献していただいた御礼として、データを共有してくださるユーザー様にはEnterprise Account(USD89.95/月)を無料で提供させていただきます。」だそうです。

インストール

$ wget http://ja.flightaware.com/adsb/piaware/files/packages/pool/piaware/p/piaware-support/piaware-repository_3.5.1_all.deb
$ sudo dpkg -i piaware-repository_3.5.1_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クライアントを申し込む
ここから先、新規で申し込む挙動がわかりません。(既に登録済みで作業進めてますので。)
Setup Manually with HDMI display + keyboard (advanced)の場合

$ sudo piaware-config flightaware-user "xxxxxxxx"
$ sudo piaware-config flightaware-password "your-password"
$ sudo /etc/init.d/piaware restart
$ sudo reboot

統計の確認

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

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

dump1090-faの動作確認

dump1090-mutability

FlightAware dump1090(dump1090-fa)の動作確認

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

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

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

メモ dump1090はアンテナから入るADS-B信号を文字情報に復号するソフトです。以降でセッティングするほぼ全てのソフトで必要なものです。dump1090-faのfork元(クローン元)はdump1090-mutabilityなのでdump1090-mutabilityを採用すべきと思いますがうまく動かず断念しました。

Original - dump1090 https://github.com/antirez/dump1090
Malcolm Robb dump1090 https://github.com/MalcolmRobb/dump1090
Flightradar24 dump1090 https://github.com/flightradar24/dump1090
dump1090-mutability https://github.com/mutability/dump1090
dump1090-fa https://github.com/flightaware/dump1090

メモ $ ps -ef | grep dump1090-fa

/usr/bin/dump1090-fa --device-index 0 --gain -10 --ppm 0 --net-bo-port 30005 --max-range 300 --net --net-heartbeat 60 --net-ro-size 1000 --net-ro-interval 1 --net-ri-port 0 --net-ro-port 30002 --net-sbs-port 30003 --net-bi-port 30004,30104 --net-bo-port 30005 --json-location-accuracy 1 --lat 35.xxxxxxxxxxxxx --lon 139.xxxxxxxxxxxx --write-json /run/dump1090-fa --quiet

メモ $ sudo leafpad /etc/default/dump1090-fa

# dump1090-fa configuration
# This is read by the systemd service file as an environment file,
# and evaluated by some scripts as a POSIX shell fragment.

# If you are using a PiAware sdcard image, this config file is regenerated
# on boot based on the contents of piaware-config.txt; any changes made to this
# file will be lost.

RECEIVER_OPTIONS="--device-index 0 --gain -10 --ppm 0 --net-bo-port 30005"
DECODER_OPTIONS="--max-range 300"
NET_OPTIONS="--net --net-heartbeat 60 --net-ro-size 1000 --net-ro-interval 1 --net-ri-port 0 --net-ro-port 30002 --net-sbs-port 30003 --net-bi-port 30004,30104 --net-bo-port 30005"
JSON_OPTIONS="--json-location-accuracy 1"

FR24 Feeder/Decoderのインストール

Flightradar24 Feeder/Decoder
FR24 Feeder Settings

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

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

インストールスクリプト

 $ 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-7/generic
[main][i]Built on Jul 11 2016 09:24:44 (HEAD-91e2757.git/Linux/armv7l)
[main][i]Copyright 2012-2016 Flightradar24 AB
[main][i]http://flightradar24.com
[main][i]DNS mode: LIBC

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(新規の場合は空エンター)

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

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)$:1

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

Flightradar24 Premiumに登録

flightradar24 PREMIUM Stats

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

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

Flightradar24のサイトが更新されました。以下手順に近い登録方法と思います。

Get Premiumボタンでアカウント作成
* Email…FR24 Feeder/Decoder設定時に登録したメールアドレス
* Country…Japan
* Password…適当に
確認メールが届くのでリンクをクリックしログインして完了。

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からダウンロードします。

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

Jessie with PIXEL版に標準搭載のブラウザ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

Raspbian StretchでPi2/3 Jessie用を試してみましたが動きませんでした。
参考: xdeco.org
Jessie with PIXEL版に標準搭載のブラウザ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_20170506.tgz /home/pi/modesmixer2
$ cd modesmixer2
$ tar -zxvf modesmixer2_rpi2-3_20170506.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

Airspy ADSB Hubにフィード

Airspy ADSB Hub

サイトダウンしてるようです。設定してもつながりません。
参考: ADSB | airspy.com
modesmixer2の起動scriptを少し変えるだけです。

 $ sudo leafpad /etc/init.d/modesmixer2

--outConnect avr:sdrsharp.com:47806を追加するだけ
--location 35.xxxx:139.xxxxは観測地の緯度経度

DAEMON_ARGS="--inConnect 127.0.0.1:30005 --outConnect avr:sdrsharp.com:47806 --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"

再起動

 $ sudo reboot

動作確認
ModeSMixer2経由なのでModeSMixer2のLogで確認できます。
outConnect(avr:sdrsharp.com:47806) connectedになってれば成功してると思います。

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

確認

http://sdrsharp.com:8080/virtualradar/

ADS-B Exchangeにフィード

ADS-B Exchange

参考: ADS-B Exchange
これもModeSMixer2で簡単にフィードできるはずなんですが失敗してしまいます。
原因わかりません。

× --outConnect beast:feed.adsbexchange.com:30005
× --outConnect avr:feed.adsbexchange.com:30005
× --outConnect avrmlat:feed.adsbexchange.com:30005

Virtual Radar ServerのRebroadcastの設定方法も紹介されてるので試してみます。

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(直リンクできないようです)

dump1090-toolsのインストール

dump1090-tools

参考: dump1090-tools for raspberry pi.

インストール

$ cd ~
$ sudo apt-get install -y collectd
$ wget https://raw.githubusercontent.com/tedsluis/dump1090-tools/master/dump1090-tools-install.sh
$ sudo chmod +x dump1090-tools-install.sh
$ ./dump1090-tools-install.sh

再起動

$ sudo reboot

動作確認

最初は欠けてる画像もありますが徐々に表示します。
PaspberryPiの場合 http://127.0.0.1/collectd/
他のPCの場合 http://192.168.1.183/collectd/

dump1090-fa maximum rangeの設定

dump1090-fa with maximum range

参考:引用: What is the Maximum Range I can Get?

チュートリアルの大雑把な翻訳

イントロダクション
どんな位置でも達成可能な最大範囲を期待します。
(1) 地球の湾曲。
(2) その位置のまわりの地形。丘と標高の変化が最大範囲を制限し、地形は非常に重要な役割を果たしています。

これは、ギガヘルツ/マイクロ波帯の電波の伝播が視線ラインであるという事実に起因しています。従って、範囲は地球の湾曲により制限されて、完全に水平地形の理想的な条件では約250海里/450kmです。丘と標高の上昇はさらに最大範囲を250海里/450km未満に制限します。

あなたの最大可能範囲を見つけてください
あなたの場所で得ることができる最大可能範囲を決定するために、以下の手順に従ってください:
(1) サイトに行ってください。 http://www.heywhatsthat.com
(2) "new panorama"というタブを選んでください。
(3) あなたの緯度と経度を入力してください。
(4) あなたの高さを入力してください。(=あなたのアンテナの高さの入力)
(5) タイトルを入力してください。
(6) "submit request"ボタンを押してください。
(7) パノラマが生成される間、スポンサーの広告見て待ってください。
(8) パノラマが生成されたら地図にスクロールして、地図の右上にあるタブ"up in the air"をクリックします。
(9) 青と黄色の2つの円曲線が見えるまで地図を縮小、10,000フィートと30,000フィートの高さで航空機の最大距離を示します。
(10) 地図の下のテキストボックスにデフォルトの航空機の高さ10,000フィートと30,000フィートが黄色と水色で点灯表示されます。あなたの要件に合うよう変更し、"Enter"ボタンを押してください。2つの曲線はあなたが入力した新しい高さに変更されます。

20986467722 4bb2443258 z.jpg

電波の大気屈折および視線ラインの無線の層は50から100海里視線ライン超えて延びていてもよいです。最大可能範囲はあなたがheywhatsthat.comサイトから得た曲線によって示される最大可能範囲よりも約50〜100海里大きくなります。

20296900424 fe935dd99a o.png

最大可能範囲を達成するために、あなたのアンテナは木やそれを囲む家の上の高さに設置する必要があります。そして地平線が見える必要があります。

チュートリアル通り進めると欲しい円曲線が表示できます。
dump1090-faにはheywhatsthat.comの円曲線データ(upintheair.json)を表示する機能があらかじめ用意されています。
この自身で作成したデータを登録することで機能します。

JSONデータの登録 <myID>と<range>は適宜入力

$ sudo wget -O /usr/share/dump1090-fa/html/upintheair.json "http://www.heywhatsthat.com/api/upintheair.json?id=<myID>&refraction=0.25&alts=<range>"

<myID>

2015-11-15 19-28-49.png

<range>
フィートをメートル変換した数値で設定します。
3048 m = 10,000 feet, 6096m = 20,000 feet, 9144 m = 30,000 feet, 12192 m = 40,000 feet
複数登録する場合は3048,6096,9144,12192のように「,」区切りです。

動作確認

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

nginxでCORS対策

JSON

http://192.168.1.183:8080/data/aircraft.json を参照したい場合、CORSに該当し困ることがあります。
dump1090-faのlighttpdにCORS対策っぽい記述はありますが、うまく動いてないように見えます。
代わりにnginxを使用してみるもapt-getのパッケージでは何故かインストールに失敗します。
nginxをソースからコンパイルし特定ポートをlighttpdにバイパスしつつCORS対策するだけの機能を作ってみます。

インストール

$ sudo apt-get install libpcre3 libpcre3-dev libssl-dev
$ wget http://nginx.org/download/nginx-1.11.7.tar.gz
$ tar -xvf nginx-1.11.7.tar.gz
$ cd nginx-1.11.7
$ ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=www-data --group=www-data --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-threads --with-stream --with-stream_ssl_module --with-http_slice_module --with-mail --with-mail_ssl_module --with-file-aio --with-http_v2_module
$ make
$ sudo make install

設定書き換え

$ sudo leafpad /etc/nginx/nginx.conf

コピー&ペースト

#user  nobody;
worker_processes  1;

events {
    worker_connections  1024;
}
http {
    server {
        listen 49153;
        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/;
        }
    }
}

自動起動設定

$ cd ~
$ git clone https://github.com/Fleshgrinder/nginx-sysvinit-script.git
$ cd nginx-sysvinit-script
$ sudo make

エラー出るので修正

$ sudo mkdir /var/cache/nginx
$ sudo mkdir /var/cache/nginx/client_temp

再起動

$ sudo reboot

確認

$ service nginx status
http://192.168.1.183:49153/data/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を上書き保存。

RPi-Monitorのインストール

RPi-Monitor

参考: RPi-Experiences

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo wget http://goo.gl/vewCLL -O /etc/apt/sources.list.d/rpimonitor.list
$ sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 2C0D3C0F
$ sudo apt-get update
$ sudo apt-get install rpimonitor
$ sudo /etc/init.d/rpimonitor update

動作確認

PaspberryPiの場合 http://127.0.0.1:8888
他のPCの場合 http://192.168.1.183:8888

Raspberry Pi3の場合WiFiを有効にしてみます。

$ sudo leafpad /etc/rpimonitor/data.conf

末尾辺り変更

#include=/etc/rpimonitor/template/wlan.confinclude=/etc/rpimonitor/template/wlan.conf
に

温度(Temperature)の下限が40度でRaspberryPiではメーターが動かないことがあります。
30度であればよさげです。

$ sudo leafpad /etc/rpimonitor/template/temperature.conf
web.status.1.content.4.line.1=JustGageBar("CPU Temperature", data.soc_temp+"°C", 40, data.soc_temp, 80, 100, 80)
を
web.status.1.content.4.line.1=JustGageBar("CPU Temperature", data.soc_temp+"°C", 30, data.soc_temp, 80, 100, 80)

フッターの黒帯が表示を邪魔して気になります。
非表示にしてみます。

$ sudo leafpad /usr/share/rpimonitor/web/js/rpimonitor.js

73行辺りを書き換え
javascriptを無効にするのでコメントを加えてます。「/*」と「*/」を加えてます。

function AddFooter(){
$('#footer').html(
  /*'<div class="navbar-inverse navbar-fixed-bottom text-center">'+
    '<small>'+
      '<a href="http://rpi-experiences.blogspot.fr/">RPi-Experiences</a>'+
      '<font color="silver"> | </font>'+
      '<a href="https://github.com/XavierBerger/RPi-Monitor">GitHub</a>'+
      '<font color="silver"> | </font>'+
      '<a href="http://www.raspberrypi.org/">Raspberry Pi Foundation</a>'+
    '</small>'+
  '</div>'*/
);
}

再起動

$ sudo /etc/init.d/rpimonitor restart

動作確認

PaspberryPiの場合 http://127.0.0.1:8888
他のPCの場合 http://192.168.1.183:8888

RPi-Monitorのカスタマイズ

RPi-Monitorにdump1090-fa、fr24feed、piaware、pfclient、VirtualRadar、modesmixer2、lighttpd、collectdを登録してみます。

新規作成

$ sudo leafpad /etc/rpimonitor/template/avionics.conf

コピーペースト URLなど各自の環境にあわせて修正が必要です。

########################################################################
# Extract information about Opened Port
#  Page: 1
#  Information               Status
#  - dump1090-fa port (8080)           - yes      - no
#  - Flightradar24 Feeder/Decoder port (8754)  - yes      - no
#  - FlightAware port (30104)          - yes      - no
#  - PlaneFinder port (30053)        - yes      - no
#  - Virtual Radar Server port (8081) - yes - no
#  - ModeSMixer2 port (8082) - yes - no
#  - lighttpd port (80) - yes - no
#  - collectd status - active - inactive|failed|activating|deactivating
########################################################################
dynamic.1.name=dump1090
dynamic.1.source=netstat -nlt
dynamic.1.regexp=tcp .*:(8080).*LISTEN

dynamic.2.name=fr24
dynamic.2.source=netstat -nlt
dynamic.2.regexp=tcp .*:(8754).*LISTEN

dynamic.3.name=piware
dynamic.3.source=netstat -nlt
dynamic.3.regexp=tcp .*:(30104).*LISTEN

dynamic.4.name=finder
dynamic.4.source=netstat -nlt
dynamic.4.regexp=tcp .*:(30053).*LISTEN

dynamic.5.name=vrs
dynamic.5.source=netstat -nlt
dynamic.5.regexp=tcp .*:(8081).*LISTEN

dynamic.6.name=mixer2
dynamic.6.source=netstat -nlt
dynamic.6.regexp=tcp .*:(8082).*LISTEN

dynamic.7.name=lighttpd
dynamic.7.source=netstat -nlt
dynamic.7.regexp=tcp .*:(80).*LISTEN

dynamic.8.name=collectd
dynamic.8.source=service collectd status
dynamic.8.regexp=Active: (.*) \(

static.1.name=dump1090ver
static.1.source=dump1090-fa --help
static.1.regexp=dump1090-fa v(.*\b)

static.2.name=fr24ver
static.2.source=fr24feed --help
static.2.regexp=Version: (.*)/

static.3.name=piwarever
static.3.source=piaware -v
static.3.regexp=(^.*)

static.4.name=finderver
static.4.source=pfclient -v
static.4.regexp=version:(.*)

static.5.name=mixer2ver
static.5.source=/home/pi/modesmixer2/modesmixer2 --help
static.5.regexp=ModeSMixer2 v.(.*)

static.6.name=lighttpdver
static.6.source=lighttpd -v
static.6.regexp=lighttpd/(.*) \(

static.7.name=collectdver
static.7.source=collectd -h
static.7.regexp=collectd(.*)\,

web.status.1.content.1.name=Avionics
web.status.1.content.1.icon=daemons.png
web.status.1.content.1.line.1="<table class='table'><thead><tr><th>Application</th><th>Status</th><th>Version</th><th>Web interface</th></tr></thead><tbody>"
web.status.1.content.1.line.2="<tr>"
web.status.1.content.1.line.3="<td><a href='https://github.com/flightaware/dump1090' target=_blank>dump1090-fa</a></td><td>" + Label(data.dump1090,"==8080","active","success") + Label(data.dump1090,"!=8080","inactive","danger") + "</td><td>" + data.dump1090ver + "</td><td><a href='http://192.168.1.183:8080/' target=_blank>DUMP1090</a></td>"
web.status.1.content.1.line.4="</tr>"
web.status.1.content.1.line.5="<tr>"
web.status.1.content.1.line.6="<td><a href='http://feed.flightradar24.com/#raspberry-pi' target=_blank>fr24feed</a></td><td>" + Label(data.fr24,"==8754","active","success") + Label(data.fr24,"!=8754","inactive","danger") + "</td><td>" + data.fr24ver + "</td><td><a href='http://192.168.1.183:8754' target=_blank>FR24 Feeder Status</a><br /><a href='https://www.flightradar24.com/premium/' target=_blank>Flightradar24.com Premium</a></td>"
web.status.1.content.1.line.7="</tr>"
web.status.1.content.1.line.8="<tr>"
web.status.1.content.1.line.9="<td><a href='http://ja.flightaware.com/adsb/piaware/' target=_blank>piaware</a></td><td>" + Label(data.piware,"==30104","active","success") + Label(data.piware,"!=30104","inactive","danger") + "</td><td>" + data.piwarever + "</td><td><a href='https://flightaware.com/adsb/stats/user/shogooda' target=_blank>FlightAware</a></td>"
web.status.1.content.1.line.10="</tr>"
web.status.1.content.1.line.11="<tr>"
web.status.1.content.1.line.12="<td><a href='https://planefinder.net/sharing/client' target=_blank>pfclient</a></td><td>" + Label(data.finder,"==30053","active","success") + Label(data.finder,"!=30053","inactive","danger") + "</td><td>" + data.finderver + "</td><td><a href='http://192.168.1.183:30053' target=_blank>Plane Finder Client</a></td>"
web.status.1.content.1.line.13="</tr>"
web.status.1.content.1.line.14="<tr>"
web.status.1.content.1.line.15="<td><a href='http://www.virtualradarserver.co.uk/Download.aspx' target=_blank>VirtualRadar</a></td><td>" + Label(data.vrs,"==8081","active","success") + Label(data.vrs,"!=8081","inactive","danger") + "</td><td>2.4<br />31-JUL-2016</td><td><a href='http://192.168.1.183:8081/VirtualRadar/WebAdmin/Index.html' target=_blank>VRS Web Admin</a><br /><a href='http://192.168.1.183:8081/VirtualRadar' target=_blank>Virtual Radar Server</a><br /><a href='http://www.adsbexchange.com/' target=_blank>ADS-B Exchange</a></td>"
web.status.1.content.1.line.16="</tr>"
web.status.1.content.1.line.17="<tr>"
web.status.1.content.1.line.18="<td><a href='http://xdeco.org/?page_id=30#mm2' target=_blank>modesmixer2</a></td><td>" + Label(data.mixer2,"==8082","active","success") + Label(data.mixer2,"!=8082","inactive","danger") + "</td><td>" + data.mixer2ver + "</td><td><a href='http://192.168.1.183:8082' target=_blank>ModeSMixer2</a><br /><a href='http://sdrsharp.com:8080/virtualradar/' target=_blank>Airspy ADSB Hub</a></td>"
web.status.1.content.1.line.19="</tr>"
web.status.1.content.1.line.20="<tr>"
web.status.1.content.1.line.21="<td>lighttpd</td><td>" + Label(data.lighttpd,"==80","active","success") + Label(data.lighttpd,"!=80","inactive","danger") + "</td><td>" + data.lighttpdver + "</td><td><a href='http://192.168.1.183:8080/3d/' target=_blank>MyRadar24</a></td>"
web.status.1.content.1.line.22="</tr>"
web.status.1.content.1.line.23="<tr>"
web.status.1.content.1.line.24="<td>collectd</td><td>" + Label(data.collectd,"=='active'","active","success") + Label(data.collectd,"!='active'","inactive","danger") + "</td><td>" + data.collectdver + "</td><td><a href='http://192.168.1.183/collectd/' target=_blank>dump1090-tools</a></td>"
web.status.1.content.1.line.25="</tr>"
web.status.1.content.1.line.26="</tbody></table>"

avionics.confの登録

$ sudo leafpad /etc/rpimonitor/data.conf

追記 (include=/etc/rpimonitor/template/version.confの上辺り)

include=/etc/rpimonitor/template/avionics.conf

再起動

$ sudo /etc/init.d/rpimonitor restart

動作確認

PaspberryPiの場合 http://127.0.0.1:8888
他のPCの場合 http://192.168.1.183:8888

Radarbox24にフィード

RadarBox24

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

2017年4月下旬からRaspberryPiでRadarbox24にフィードできるようになりました。
できたてホヤホヤなのでインストールして具合の様子見てみます。

フィーダカテゴリA.ラズベリーパイを持っていて、既にダンプ1090を実行中。

インストール

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

Installation finished 設定項目ありませんでした。

再起動

$ sudo reboot

ユーザー登録とsharing keyの登録
分りにくいですがこの辺り参考に設定しました。

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

Elite Feederというのくれました。$19.50/年が無料になるようです。

機器の具合

CPU使用量 数%程度

$ top コマンドでCPUやメモリ使用量の確認ができます。
Raspberry Piの発熱は気にならない程度です。

電気料金 65円/月 1050円/年

ワットチェッカーplus使用。
東京電力 従量電灯B 第3段階料金 29円93銭 で計算。
常用しても気にならない程度と思います。

DVB-Tの発熱が激しい

放熱プレート+小型ヒートシンク取り付けても恐いくらいです。
アルミケースなどに貼り付けて放熱面積大きくした方が安心できると思います。
参考対処方法
TV28Tv2DVB-T(R820T) 専用放熱キットを取り付けます
TV28Tv2DVB-T(R820T) 発熱温度、放熱プレート+ヒートシンクの放熱について検証

変更履歴

  • 2017.05.06 最適化 追記
  • 2016.12.10 公開