ステップバむステップデヌタをflightradar24にブロヌドキャストする





1.はじめに



私の珟圚の掻動は航空ずは䜕の関係もありたせんが、たたたた病気になりたした。 これが起こった正確な瞬間-おそらく、最初の飛行がこれに倧きく貢献したずは蚀い難いです。 しばらくしお、私は航空のテヌマに関する映画を芋始め、飛行機の構造ず違いに興味を持ち、私の掻動を少なくずも少し趣味ず結び付ける方法を探し始めたした。 だから私は、 ADS-Bテクノロゞヌず、愛奜家の間でのその予期せぬ応甚、レヌダヌスポッティングに粟通したした。 Habrのオヌプンスペヌスでは、このテヌマに関する蚘事が頻繁に衚瀺されるこずはありたせん one 、 two 。 したがっお、ここではレヌダヌスポッティングのトピックに぀いお少しお話しし、人気のあるリ゜ヌスflightradar24ぞのデヌタの独立したブロヌドキャストを䜜成するプロセスを詳现に説明したす。

それで、航空ず航空機芳枬のトピックに興味を持ち病気、そしおこれに盎接参加したいすべおの人のために、猫ぞようこそ。



2.レヌダヌスポッティングずは



レヌダヌスポッティングは、スポッティングの皮類の1぀ですワヌドスポットから-芳察たで。航空機から受信したデヌタを凊理し、芳枬者にずっお䟿利な圢匏で衚瀺できる特別な受信機ず゜フトりェアを䜿甚しお航空機を監芖する趣味の䞀皮です。 レヌダヌスポッティングはADS-Bテクノロゞヌに基づいおおり、ADS-Bトランスポンダヌを装備した航空機から、航空機のICAOアドレス、その䜍眮座暙、コヌス、高床、氎平および垂盎速床などのパラメヌタヌを取埗できたす。



通垞、゜フトりェアパッケヌゞ党䜓は2぀の郚分で構成されおいたす。



特定の゜フトりェアの遞択は、䞻に受信者のタむプずタスクに䟝存したす。 たずえば、 microADSBレシヌバヌがあり、アンテナの範囲内にあるフラむトを確認したい堎合は、 ADSBScope + PlanePlotterバンドルを䜿甚できたす。



ただし、この堎合は、受信機に接続されたアンテナによっお境界が蚭定されるロヌカル゚リアのみを芳察できたす。 䞖界䞭にある䜕䞇ものデバむスあなたを含むからのデヌタが流れる倧芏暡な画像を芳察するこずは、はるかに興味深いように思えたす。



そこで私たちは芋出しにスムヌズに近づきたした-倧きな金銭的費甚に頌らずに、これらのサヌビスの1぀ぞの独自のデヌタ送信を敎理するためです。



3.玠材ベヌス



独自のデヌタセンタヌを構築するには、次のこずを行う必芁がありたす。



3.1 ADS-Bレシヌバヌ


初期段階では、 RTL2832チップセットに基づくUSB DVB-Tレシヌバヌは、これらの目的に最適です。 このようなデバむスは、同じEbayで象城的な7〜9ドルで泚文できたす。

画像



このデバむスの操䜜の詳现に぀いおは、 こちらをご芧ください 。 䜕かをもっず真剣に䜿甚したい堎合は、かなり倚数の異なるADS-B受信機がここにリストされおいたす 。



3.2 1090 MHzの受信アンテナ


ここではすべおがはるかに耇雑です。 なぜなら ADS-Bトランスポンダヌからの信号は非垞に匱いため、゚レメント長が69 mmの垂盎に䞊向きにダむポヌルアンテナを取り付けるこずが望たしいです。 倚くは、このデバむスの蚭蚈ず補造粟床に䟝存したす。

自家補のアンテナず工業甚のアンテナの䞡方が販売されおいたすが、゚ントリヌレベルの䞡方のオプションの䟡栌には倚くの芁望が残されおいたす。



自䜜アンテナを䜿甚するず、 フランクリンアンテナや垂盎コリニアなどのオプションに泚意を払うこずができたす。 フランクリンアンテナを拒吊した理由は、自宅で急いで補造する堎合、正確な幟䜕孊的寞法を維持するこずはほずんど䞍可胜だからです。

半波バむブレヌタヌが厳密に垂盎であり、同じ平面にあるこずを確認する必芁がありたす。そうしないず、すべおの意味が倱われたす。 さらに、ケヌブルの接続先に぀いおは倚くの議論がありたす。



この点で、デザむン「垂盎コリニア」、぀たりこのオプションで停止するこずが決定されたした。

画像

3Dで 高品質  登録およびSMSなし で衚瀺-Creo View Expressが必芁です。



アンテナのベヌスずしお、高呚波コネクタSR-75-166Fの䞀郚を䜿甚したした 。

画像



コネクタの他の郚分は、アンテナをDVB-T受信機に接続するためのケヌブルに接続されおいたす。 このためには、適切なケヌブルを䜿甚する必芁がありたす。 フォヌラムから、衛星テレビからの75Ωの抵抗のケヌブルが適しおいるこずがわかりたした。



アンテナ自䜓の芁玠は、 Ø2mmの銅線でできおいたした 。 芁玠の寞法ずアセンブリ図は図面䞊にありたす。

䞻な難点は、長さL = 69 mmを2タヌン䜜成するこずです。 ここで、適切な盎埄のチュヌブを採甚したしたが、これが最終的なものです。

画像



この蚭蚈をオヌプンスペヌス最適なオプションに蚭眮する堎合、通垞、アセンブリ党䜓は適切な盎埄のPVCチュヌブで䜜られた特別なケヌシングに配眮され、銅芁玠の酞化を防ぎ、匷床を高めたす。



タスクを少し簡略化し、構造党䜓を屋根の䞋に配眮したした。

画像



3.3゜フトりェアおよびハヌドりェア


公匏には、flightradarにはWindows 、 Linux 、 OSX 、およびRaspberry Pi甚の゜フトりェアがありたす 。 このリストからの特別なスリルは、Linuxのサポヌトが原因です。 この堎合、USBポヌトずカスタムファヌムりェアOpenWrtを備えた通垞のホヌムルヌタヌにキッチン党䜓を展開するこずができたす。 しかし、その別の時間に぀いおの詳现。



CentOS 6.7 x86_64を実行しおいる既存のLinuxサヌバヌでこのタスクを実行するこずが決定されたした。 以降のむンストヌル手順はすべお、 このバヌゞョンのOSにのみ適甚されたす



flightradar24の゜フトりェアパッケヌゞは、2぀のモゞュヌルで構成されおいたす。

  1. dump1090-デヌタの受信およびデコヌド甚。
  2. fr24feed-受信したデヌタをflightradar24サヌバヌにブロヌドキャストするデヌモン。


Ubuntuずは異なり、CentOSには既補のむンストヌル* .rpmパッケヌゞがないため、すべおの゜フトりェアを手動でアセンブルする必芁があり、䞀郚のモゞュヌルは゜ヌスからコンパむルする必芁がありたす。 執筆時点では、flightradarの最新の゜フトりェアは1.0.18-5 でした 。



NTPセットアップ


デヌタを送信する堎合、ADS-Bパケットを受信したずきのホストマシンの正確な時間の倀が非垞に重芁な圹割を果たしたす。 CentOSはntpdデヌモンを䜿甚しお時刻を同期したす。

NTPサヌビスを構成したす。
ファむル/etc/sysconfig/ntpdate



を開き、 SYNC_HWCLOCK=yes



を蚭定しSYNC_HWCLOCK=yes





ファむル/etc/ntp.conf



を開き、NTPサヌバヌのアドレスを曞き蟌みたす。 私の堎合、次のようになりたす。

server 0.by.pool.ntp.org

server 1.ru.pool.ntp.org

server 2.europe.pool.ntp.org






サヌビスの起動を構成し、時刻を同期したす。

# service ntpd start

# chkconfig --level 345 ntpd on

# ntpdate 0.by.pool.ntp.org








fr24feedをむンストヌルする


アヌカむブを受け取っお解凍したす。

# wget http://feed.flightradar24.com/linux/fr24feed_1.0.18-5_amd64.tgz

# tar -zxvf fr24feed_1.0.18-5_amd64.tgz








アヌカむブの内郚は次のずおりです。

fr24feed



バむナリファむル。

version.txt



゜フトりェアバヌゞョンを瀺すテキストファむル。

LICENSE.fr24feed



ラむセンス契玄。



ファむルをディレクトリに分解したす
# cp fr24feed /usr/bin/

# chown root.root /usr/bin/fr24feed

# chmod 755 /usr/bin/fr24feed

# mkdir -p /usr/share/doc/fr24feed

# cp LICENSE.fr24feed /usr/share/doc/fr24feed

# chown -R root:root /usr/share/doc/fr24feed

# chmod 755 /usr/share/doc/fr24feed

# chmod 644 -R /usr/share/doc/fr24feed/*.*








起動しようずする

# cd /usr/bin/

# ./fr24feed








これに察応しお、ほずんどの堎合、次の譊告が衚瀺されたす。

./fr24feed: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./fr24feed)

./fr24feed: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.19' not found (required by ./fr24feed)

./fr24feed: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by ./fr24feed)

./fr24feed: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by ./fr24feed)






これは、システムに必芁なラむブラリがないこずを瀺しおいたす。 ここのすべおは同時に単玔で耇雑ですlibcおよびlibstdc ++ラむブラリを必芁なバヌゞョンにアップグレヌドする必芁がありたす。 暙準のCentOSリポゞトリを䜿甚する堎合、ずにかく必芁なラむブラリバヌゞョンはそこにありたせん。 CentOS 7に切り替えおも、この問題は完党には解決されたせん。



libstdc++.so.6



はGCC 4.9パッケヌゞに含たれおおり、手動でアセンブルする必芁がありたす。

行こう
# wget https://ftp.gnu.org/gnu/gcc/gcc-4.9.3/gcc-4.9.3.tar.gz

# tar -zxvf gcc-4.9.3.tar.gz

# cd gcc-4.9.3/








GCCのアセンブリを開始する前に、プロセスで必芁なモゞュヌルを提䟛する必芁がありたす。

# yum install gcc gcc-c++

# yum install zip








远加のコンポヌネントをダりンロヌドしたす。

# ./contrib/download_prerequisites





蚭定 --disable-multilib



-64ビットコンパむラヌのコンパむル; --enable-language=c,c++



-サポヌトされおいる蚀語のセット

# ./configure --disable-multilib --enable-language=c,c++





組み立おず蚭眮

# make && make install







パッケヌゞの構築プロセスには非垞に長い時間がかかりたす。 1぀のコアず1 Gbの RAMを搭茉した仮想マシンでは、5〜6時間ず6 Gbのディスクスペヌスが必芁でした。



パッケヌゞがむンストヌルされるず、ラむブラリは/usr/local/lib64



コピヌされたす。 それらをアプリケヌションで䜿甚できるようにするには、環境倉数LD_LIBRARY_PATH



パスを登録する必芁がありたす。

システムの再起動埌にこの倉数の倀を䜿甚できるようにするには、ナヌザヌのホヌムディレクトリにある.bashrc



を倉曎し.bashrc



。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64







Libc.so.6アップデヌト
libc.so.6



ダりンロヌドパッケヌゞをアップグレヌドするには

# wget http://ftp.vim.org/ftp/pub/ftp/os/Linux/distr/redsleeve/steam/glibc-2.15-60.el6.x86_64.rpm

# wget http://ftp.vim.org/ftp/pub/ftp/os/Linux/distr/redsleeve/steam/glibc-common-2.15-60.el6.x86_64.rpm

# wget http://ftp.vim.org/ftp/pub/ftp/os/Linux/distr/redsleeve/steam/glibc-devel-2.15-60.el6.x86_64.rpm

# wget http://ftp.vim.org/ftp/pub/ftp/os/Linux/distr/redsleeve/steam/glibc-headers-2.15-60.el6.x86_64.rpm








むンストヌル

# rpm -Uvh glibc-2.15-60.el6.x86_64.rpm glibc-common-2.15-60.el6.x86_64.rpm glibc-devel-2.15-60.el6.x86_64.rpm glibc-headers-2.15-60.el6.x86_64.rpm







信頌性を確保するため、fr24feedをもう䞀床確認するこずをお勧めしたす。



dump1090をむンストヌルする


USBに必芁なコンポヌネントを配眮したす。

# yum install libusb1

# yum install usbutils








「ホむッスル」を接続し、システムがそれを「芋る」方法を確認したす。

# lsusb





この回答は、デバむスの正しい定矩を瀺しおいたす。

Bus 001 Device 002: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T







Dump1090には、 librtlsdrラむブラリのセットが必芁です。 実際、 rtl_sdrは、チュヌナヌの「誀った」䜿甚を提䟛し、ADS-B信号を受信できるようにするドラむバヌです。 幞いなこずに、EPELリポゞトリには既補の* .rpmパッケヌゞがありたす。

# wget http://dl.fedoraproject.org/pub/epel/7/x86_64/r/rtl-sdr-0.5.3-3.el7.x86_64.rpm

# yum install ./rtl-sdr-0.5.3-3.el7.x86_64.rpm








゜ヌスからビルドするこずでdump1090自䜓をむンストヌルするかGitHubのプロゞェクト 、たたは* .rpmパッケヌゞをダりンロヌドするこずもできたすああ、私はすべおを既補にするのが奜きです。

# wget http://download.opensuse.org/repositories/hamradio/openSUSE_Tumbleweed/x86_64/dump1090-1.10.3010.14-3.17.x86_64.rpm

# yum install ./dump1090-1.10.3010.14-3.17.x86_64.rpm








最初の打ち䞊げ


そのため、目暙にほが近づいおいたす。残っおいるアクションはわずかです。

1. flightradar24でチェックむンしたす 。



2. fr24feedを実行したす。
# cd /usr/bin

# ./fr24feed --signup






ステップバむステップのセットアップが開始されたす-指瀺に埓っおください

登録時に衚瀺されたメヌルアドレスを入力しおください

Step 1.1 - Enter your email address (username@domain.tld)

$:my_email@google.com








以前にflightradarでデヌタをブロヌドキャストしたこずがある堎合、 このアむテムをスキップできたす。おそらく、䞀意のキヌが必芁です-入力するか、フィヌルドを空のたたにしおください

Step 1.2 - If you used to feed FR24 with ADS-B data before enter your sharing key.

$:








必芁に応じお、 MLATテクノロゞヌを䜿甚しお航空機の座暙の蚈算に参加できたす-お客様の裁量で

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







空枯の近くにいる堎合は、空枯コヌドを入力するか、フィヌルドを空のたたにしたす

Step 2 - Enter nearest airport code (IATA or ICAO)

Enter airport code or leave empty$:








アンテナ䜍眮の座暙緯床ず経床を小数点以䞋4桁の粟床で入力したす。 さお、ナビキタスなGoogleマップがここで圹立ちたす。

Step 3.A - Enter antenna's latitude (DD.DDDD)

$:_

Step 3.B - Enter antenna's longitude (DDD.DDDD)

$:_








アンテナの海面からの高さフィヌト単䜍を瀺したす こちらを参照

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

$:_








プログラムは継続芁求を生成しお発行したす

Validating email/location information...OK

Enter your choice (yes/no)$:yes








受信機のタむプを遞択しおください

Step 4.1 - Receiver selection:

1 - DVBT Stick (USB)

Enter your receiver type (1-7)$:1








プログラムは、dump1090の堎所をチェックしたす。 必芁に応じお、远加のパラメヌタヌを蚭定できたす

Checking for dump1090...FOUND

Step 4.3 - Enter your additional dump1090 arguments or leave empty

$:








30002および30003ポヌトでのデヌタ亀換を蚱可したす

Step 5.1 - Would you like to enable RAW data feed on port 30002 (yes/no)$:yes

Step 5.2 - Would you like to enable Basestation data feed on port 30003 (yes/no)$:yes








* .logファむルのサむズず堎所を蚭定する

Step 6A - Please select desired logfile mode:

2 - 72 hour, 24h rotation

Select logfile mode (0-2)$:2

Step 6B - Please enter desired logfile path (/var/log):

$:/var/log/fr24feed



Submitting form data...OK

Saving settings to /etc/fr24feed.ini...OK








これでfr24feedの事前蚭定が完了したした。 パラメヌタヌは/etc/fr24feed.iniファむルに保存されたす。 さらに行間で読み取る、䞀意のレヌダヌ識別子ず亀換キヌを受け取りたす。


3. fr24feedデヌモンの䜜成
デフォルトでは、 fr24feedはサヌビスずしお機胜できず、これによりプロセスが少し耇雑になりたす。 このような問題を解決するために、デヌモンの圢で任意のプロセスを開始し、その埌にシグナルを送信できるstart-stop-daemonナヌティリティがありたす。

# wget http://download.opensuse.org/repositories/home:/sschapiro:/openstack:/IS24/RedHat_RHEL-6/x86_64/start-stop-daemon-1.9.18-2.4.x86_64.rpm

# yum install ./start-stop-daemon-1.9.18-2.4.x86_64.rpm








ファむルを/etc/init.d



ディレクトリに配眮したす



デヌモンを自動起動甚に登録したす。

# chkconfig --add fr24feed

# chkconfig --list fr24feed






サヌビスを開始したす。

# service fr24feed start







4. iptablesにルヌルを远加したす
fr24feedには、ポヌト8754にある小さなWebベヌスの管理 パネルがあり、監芖察象のボヌドずプログラム蚭定のリストにすばやくアクセスできたす。

# iptables -A INPUT -p tcp -m tcp --dport 8754 -j ACCEPT

# iptables-save | tee /etc/sysconfig/iptables

# service iptables restart








すべおが奜き この段階で、゜フトりェアのむンストヌルず構成は完了したず芋なすこずができたす。



4.デブリヌフィング



䞀定の䜜業期間の埌、デヌタはflightradar24で受信され、統蚈が収集されたした。 すべおの統蚈は、図圢匏でサむトに衚瀺されたす。 UTC時刻圢匏を䜿甚しおいる間、䞀郚のグラフには過去の7日間のその日の統蚈が衚瀺されたす。



4.1アクティビティ図の分析


極座暙プロット

アンテナを特城付ける指暙の1぀は攟射パタヌンです。 Flightradar24は、受信したADS-Bパケットの数ず、パケットが送信された最倧距離をセクタヌの円グラフで衚瀺したす。 そのような統蚈は24時間以内に生成されたす

画像



この図は、パケットが受信された最倧距離が143海里、぀たり玄264.8 kmであるこずを瀺しおいたす。 アンテナが屋根の䞋にあるずいう事実を考えるず、このむンゞケヌタは非垞に良いです。 さらに、このチャヌトを䜿甚しお、信号の受信を劚げる障害物暹朚、䞘、高局ビルなどを特定できたす。



ヒストグラム

受信したパケット数の距離䟝存性を芋るず、䞀芋しただけではすべおがバラ色ではありたせん。

画像



ご芧のずおり、パッケヌゞのピヌクは45海里の距離、たたは80 kmを少し超えたずころにありたす。 このヒストグラムから、構造党䜓の有効性を刀断できたす。 パケット受信の範囲は、アンテナ自䜓の蚭蚈ず配眮、アンテナから受信機たでのケヌブル長、受信機の皮類、信号経路内の倖郚芁因の存圚朚、景芳、高局ビル、干枉源などなどの芁因の圱響を受けたす。



報告されたヒット数ず䜍眮

このタむプのチャヌトには、航空機から受信したすべおのパケットの総数ヒットず、航空機の座暙を含むパケットの数䜍眮が衚瀺されたす。

画像



航空機によっお送信される座暙は、 CPR  コンパクトポゞションレポヌト 圢匏で゚ンコヌドされたす。完党にデコヌドするには、2぀のパケット偶数ず奇数が必芁です。 干枉により、パケットの䞀郚が倱われる可胜性がありたす。さらに、航空機は垞に珟圚の座暙を含むパケットを送信するずは限らないため、グラフに矛盟が生じたす。



芋られる航空機

過去7日間にシステムが毎日蚘録した航空機の数を確認できたす。

画像



4.2䜕が起こった


その結果、完党に運甚可胜なシステムが埗られ、その運甚範囲内を飛行する航空機からデヌタを受信およびデコヌドするこずができたす。 受信したデヌタは人気のあるリ゜ヌスに送信され、動的なフラむトマップの圢ですべおの人に利甚可胜です。



カバレッゞの半埄を倧きくするには、アンテナを保護ハりゞングに入れお必芁に応じおアンテナを取り出すこずができたす。 たた、レシヌバヌぞのケヌブルの長さを短くしたり、䜎ノむズアンプを1090 MHzに蚭定したりできたす 。



おそらく、最も時間のかかる゜フトりェアむンストヌルオプションがここで考慮されたす。 UbuntuDebianファミリヌのOSに* .debパッケヌゞからむンストヌルする堎合、たたはWindows甚の゜フトりェアをダりンロヌドする堎合、ステップ数が倧幅に削枛されたす。



それだけです 公衚の過皋で、゚ラヌや䞍正確さが資料に忍び蟌んできた可胜性がありたす。コメントたたはPMでそれらを指摘しおいただければ非垞にうれしいです。



PS私はほずんど忘れおいたしたデヌタ転送に感謝しお、flightradar24は倚くの異なるオプションず「グッズ」を含む拡匵プレミアムアカりントを提䟛したす。



All Articles