
これは車のネタと言っていいかわかりませんが、車、バイク等に搭載したGPSトラッカーやスマホから送信されてきた位置情報を表示するためのサーバの構築についてのメモです。
個人用メモですから、質問などにも答えません(答えられるほど詳しくありません・・・)。
長い独り言だと思って流してください。
コンピュータは苦手なので、おかしな作業をしていたら適宜無視するなり、脳内で手順や設定を書きかえてください。
これより前に3G回線を使うGPSトラッカー「Mictrack MT500-G」についての記事を書いていますが、以下のサーバを構築すれば、不要なスマホと小型サーバでも自分専用の位置情報サーバを作れなくもないかなという気もしなくもないような感じです。
使用したハードウェア、ソフトウェア。
サーバ:Orange pi one
OS:Debian jessie
microSD: TEAM製 32GB
位置情報アプリ:Traccar
上記を簡単に解説しますと、
Orange pi oneは有名なRaspberry Piなどと同様のシングルボードコンピュータで、中国から(https://www.aliexpress.com/store/1553371)送料込み13ドルくらいで買ったものです。
別途、Orange pi oneを動かすための2AhのACアダプタをアマゾンから買っています。
Debian jessieは armbianのサイトでOrange pi one用のものが公開されており、これを使用。
microSDメモリはAmazonで買った TEAMというメーカの32GBのもの。
Traccarはロシアで開発された位置情報追跡用のオープンソースのサーバです。
「Open Source GPS Tracking Platform」とうたっています。
JAVAで動くのでLinuxだけでなくWindowsなど様々なプラットフォームで動きます。
Traccarのオフィシャルサイト
https://www.traccar.org/
のDownloadのリンクからサーバ版やスマホ用アプリをダウンロード可能です。
Traccarのサーバは一番新しいVer3.11から一部、日本語にも対応しています(まだ翻訳が終わってない部分があります)。
TraccarクライアントアプリはAndroid版、iOS版があり、
Traccar client はTraccarサーバへの接続設定用アプリで、位置情報送信をONにすると設定したサーバに位置情報を設定した間隔で送信してくれます。
つまり、GPSトラッカーを使わなくても、Traccarアプリをインストールして、データ通信SIMを指したスマホを車に積むことでも、電池が続く限り、位置情報を送ってくれる環境が手に入る・・・はずです(試したわけではないので、安定性や確実性は不明。当方は一切責任は負いません)。
Traccar Manager の方はアプリから位置情報サーバに送られた端末の位置閲覧や各種設定をできます。
PCからはブラウザ(Chrome等で動作確認)でTraccar Managerと同じように位置情報を確認できます。
最初はOpenGTSで環境を構築しようとしたのですが、試しにTraccarで構築したところ、Traccarの方が対応プロトコル等の設定を自分でしなくても動きそうで、簡単そうだったので、こちらを使っています。
---------------------
前置きが長くなりましたが、ここからインストール作業等の設定開始です。
作業は基本的にWindows10上から行っています。
ssh接続はWindows版のPuTTYを使っています。
ファイヤウォールやSSLでの接続に関しては各人の環境に合わせて設定してください。
https://www.armbian.com/donate/?f=https://dl.armbian.com/orangepione/Debian_jessie_default.7z
から、orange pi one用armbianをダウンロードして解凍。
私が書き込んだ時のは以下のファイルです。
Armbian_5.25_Orangepione_Debian_jessie_default_3.4.113.img
Rufus(http://forest.watch.impress.co.jp/library/software/rufus/)で用意したmicroSDメモリにDDで書き込み。
無事書き終わったらmicroSDメモリを Orange pi Oneに挿して起動。
起動後、Orange pi Oneにsshで接続してrootパスワード変更と新規ユーザ作成の後、
#shutdown -r now
してorange pi oneを再起動。
これでmicroSDのサイズをフルに使えるようになる。
ここで再起動しないで作業を始めると、以下の各種必要なアップデートやプログラムのインストール途中でサーバの保存容量が足りなくなります。
再起動したら、以下、rootで作業(本当はダメなんですが)。
#apt-get update
#apt-get upgrade
して、Debianを最新の状態にアップデート。
Orange Pi oneのIPアドレス固定(任意)。
※IPアドレスは各自のルータの設定等により変わります。
#nano /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.1.5
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1 8.8.8.8
※この辺、ちょっと設定が怪しい気もするが一応動いている・・・。
#nano /etc/resolv.conf
nameserver 192.168.1.1
nameserver 8.8.8.8
traccarはJavaで動くのでJDK7をインストール。
#apt-get install openjdk-7-jdk
※JDK8でもコンパイル等できますが、なんかいろいろとwarningをはきます。
※最初UbuntuでJDK8で使おうとしたのですが、いろいろ躓いてDebianに落ち着きました。
JAVAの環境変数を設定 Define home environment for java
#export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-armhf/
#echo "export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-armhf/" >> ~/.bashrc
#ln -s $JAVA_HOME /usr/local/java
ウェブサーバとデータベースサーバ等のインストール
#apt-get install apache2
#apt-get install mysql-server
#apt-get install libmysql-java
※Traccar自体はPostgreSQLでも動くっぽいです。
作業用ディレクトリに移動して、traccarのサーバをダウンロードして解凍。
#cd /usr/local/src
#wget https://github.com/tananaev/traccar/releases/download/v3.11/traccar-linux-3.11.zip
#unzip traccar-linux-3.10.zip
traccarサーバのインストール開始。
#./traccar.run
Verifying archive integrity... All good.
Uncompressing traccar 100%
/usr/bin/java
++++++++++ YAJSW SET ENV ++++++++++
java version "1.7.0_121"
OpenJDK Runtime Environment (IcedTea 2.6.8) (7u121-2.6.8-2~deb8u1)
OpenJDK Zero VM (build 24.121-b00, interpreted mode)
wrapper home : /opt/traccar
configuration: /opt/traccar/conf/wrapper.conf
java version "1.7.0_121"
OpenJDK Runtime Environment (IcedTea 2.6.8) (7u121-2.6.8-2~deb8u1)
OpenJDK Zero VM (build 24.121-b00, interpreted mode)
---------- YAJSW SET ENV ----------
++++++++++ YAJSW SET ENV ++++++++++
java version "1.7.0_121"
OpenJDK Runtime Environment (IcedTea 2.6.8) (7u121-2.6.8-2~deb8u1)
OpenJDK Zero VM (build 24.121-b00, interpreted mode)
wrapper home : /opt/traccar
configuration: /opt/traccar/conf/wrapper.conf
java version "1.7.0_121"
OpenJDK Runtime Environment (IcedTea 2.6.8) (7u121-2.6.8-2~deb8u1)
OpenJDK Zero VM (build 24.121-b00, interpreted mode)
---------- YAJSW SET ENV ----------
YAJSW: yajsw-stable-12.08
OS : Linux/3.4.113-sun8i/arm
JVM : Oracle Corporation/1.7.0_121//usr/lib/jvm/java-7-openjdk-armhf/jre/32
Apr 12, 2017 5:56:04 PM org.apache.commons.vfs2.VfsLog info
INFO: Using "/tmp/vfs_cache" as temporary files store.
************* INSTALLING traccar ***********************
Apr 12, 2017 5:56:09 PM org.rzo.yajsw.os.posix.PosixService getPid
INFO: wrapper pid file: /run/wrapper.traccar.pid
Apr 12, 2017 5:56:10 PM org.rzo.yajsw.os.posix.PosixService install
WARNING: created daemon script: /etc/init.d/traccar
Apr 12, 2017 5:56:10 PM org.rzo.yajsw.os.posix.PosixService install
INFO: created link : /etc/rc5.d/S20traccar
Apr 12, 2017 5:56:10 PM org.rzo.yajsw.os.posix.PosixService install
INFO: created link : /etc/rc3.d/S20traccar
Apr 12, 2017 5:56:10 PM org.rzo.yajsw.os.posix.PosixService install
INFO: created link : /etc/rc2.d/S20traccar
Apr 12, 2017 5:56:10 PM org.rzo.yajsw.os.posix.PosixService install
INFO: created link : /etc/rc4.d/S20traccar
Apr 12, 2017 5:56:10 PM org.rzo.yajsw.os.posix.PosixService install
INFO: created link : /etc/rc1.d/K20traccar
Apr 12, 2017 5:56:10 PM org.rzo.yajsw.os.posix.PosixService install
INFO: created link : /etc/rc6.d/K20traccar
Apr 12, 2017 5:56:10 PM org.rzo.yajsw.os.posix.PosixService install
INFO: created link : /etc/rc0.d/K20traccar
Service traccar installed
Traccarのdaemonスタート。
#/opt/traccar/bin/startDaemon.sh
※ちなみに、手順があっていても、Traccarサーバの軌道に時間がかかるので、
※1分くらい page not foundになることがあります。
※少し待ってからサーバに接続してみてください。
++++++++++ YAJSW SET ENV ++++++++++
java version "1.7.0_121"
OpenJDK Runtime Environment (IcedTea 2.6.8) (7u121-2.6.8-2~deb8u1)
OpenJDK Zero VM (build 24.121-b00, interpreted mode)
wrapper home : /opt/traccar
configuration: /opt/traccar/conf/wrapper.conf
java version "1.7.0_121"
OpenJDK Runtime Environment (IcedTea 2.6.8) (7u121-2.6.8-2~deb8u1)
OpenJDK Zero VM (build 24.121-b00, interpreted mode)
---------- YAJSW SET ENV ----------
++++++++++ YAJSW SET ENV ++++++++++
java version "1.7.0_121"
OpenJDK Runtime Environment (IcedTea 2.6.8) (7u121-2.6.8-2~deb8u1)
OpenJDK Zero VM (build 24.121-b00, interpreted mode)
wrapper home : /opt/traccar
configuration: /opt/traccar/conf/wrapper.conf
java version "1.7.0_121"
OpenJDK Runtime Environment (IcedTea 2.6.8) (7u121-2.6.8-2~deb8u1)
OpenJDK Zero VM (build 24.121-b00, interpreted mode)
---------- YAJSW SET ENV ----------
YAJSW: yajsw-stable-12.08
OS : Linux/3.4.113-sun8i/arm
JVM : Oracle Corporation/1.7.0_121//usr/lib/jvm/java-7-openjdk-armhf/jre/32
Apr 13, 2017 11:23:41 AM org.apache.commons.vfs2.VfsLog info
INFO: Using "/tmp/vfs_cache" as temporary files store.
Apr 13, 2017 11:23:45 AM org.rzo.yajsw.os.posix.PosixService init
INFO: /etc/init.d/traccar already exists
************* STARTING traccar ***********************
Apr 13, 2017 11:23:45 AM org.rzo.yajsw.os.posix.PosixService getPid
INFO: wrapper pid file: /run/wrapper.traccar.pid
これで上の方で設定したサーバのIPアドレスのポート8082に接続すれば
Traccarのログイン画面がでてきます。
http://ipaddress:8082
初期の管理者ユーザとパスワードはいずれも
admin
です。
※初期設定から必ずパスワード等を変更してください。
※でないと誰でもサーバに接続してあなたの位置情報を見れてしまいます。
※初期設定だと、誰もユーザ登録できてしまうので、
※adminがユーザ作成も管理する場合は
※Server Settings → Registration のチェックはずしてください。
※また、管理者ユーザもadmin以外に設定した方がいいでしょう。
adminでログインしたら、使用する地図を初期設定のOpen Map Layerから
Googleマップに変更します。
Server Setting → Map Layer → Custom Map
※英語版を元に書いてるので、日本語版だと表示が日本語に変わります。
から、Custom Mapの空欄に
https://mt0.google.com/vt/lyrs=m&hl=ja&x={x}&y={y}&z={z}&s=Ga
をコピペします。
もし、グーグルの衛星地図を使いたい場合は、
https://mt0.google.com/vt/lyrs=s&hl=ja&x={x}&y={y}&z={z}&s=Ga
をコピペしてください。
自分でMySQLデータベースを管理する場合は、
#apt-get install php5-common libapache2-mod-php5 php5-cli php5-mysql
#apt-get install phpmyadmin
も必要かなと思いますが、詳しくは書きません。
https://www.traccar.org/download/
のリンクからスマホ用traccar clientとtraccar managerアプリをダウンロード。
外部からスマホのTraccar clientでtraccarサーバの位置情報を更新したい場合は、
ブロードバンドルータのIPアドレスとTCP/5055を開けてください。
Mictrack MT500-Gの場合は、TLT-2hプロトコルで位置情報を送信してくるので、
初期設定ではTCP/5030を開けます。
これでtraccarのインストールは完了です。
GoogleMapでも位置情報の共有は可能になりましたが、
まだ位置情報送信の間隔を任意に設定できないっぽいので、その点は
traccarなどの位置情報追跡サーバシステムの方が優れているかもしれません。
traccar自体は業務で使うことも想定しているので、サーバのパワーをそれなりにすれば一度に数百以上の端末を追跡することも可能なはずです(orange pi oneではさすがに・・・)。
※外部にサーバを公開する場合は、ファイアーウォールの設定などセキュリティ面は各自行ってください。
DDNSを使ったドメインは以下で取得しました。
http://f5.si/
traccar自体は高機能なので、設定を詰めていくとメールでアラートを送信したり、インターネット上のSMSサービスを使って指定の宛先に送信したり、ウェブ上から位置情報端末の設定をしたりもできるようですが、まだそこまで弄っていません。
これでとりあえずは今、契約している位置情報サーバの契約が切れても、来年以降もサーバ電気代と普段使っているネット回線およびSIMカードの維持費用(So-net 0simのSMS付きだと月額150円)で運用できる環境は構築できました(そのはず・・・です)。
※※※
以下は、MT500を使っている人向けに。
サーバではなく、MT500-Gの方の設定で注意が必要な内容があります。
。
MT500-G自体の設定の中には「GPRS user name」の設定項目がありますが、私はこれを初期設定のMT500から空欄にしていたところ、traccar側がうまく送信した位置情報を解析できませんでした。
いろいろと調べてみた結果、どうやら原因は空欄にしたはずのところに改行コードが入っていたっぽいためとわかりました。
Traccarの方のサーバログを見てみた結果、TLT-2Hプロトコルで規定されてない改行が入っていました。
当初、TLT-2H自体が時々フォーマットが変わるようなので、単に未対応のフォーマットだったのかな?orzと落ち込んだのですが(せっかくここまで設定したのに・・・と)、
どうやら、MT500-Gがtraccarサーバに送信してきたTLT-2Hプロトコルでの位置情報データをtraccarサーバ側で解析するためのJAVAコード(https://github.com/tananaev/traccar/blob/master/src/org/traccar/protocol/Tlt2hProtocolDecoder.java)で意図しない場所の改行コードを認識しなかったためのようです。
ですので、 日本のスマホの設定ではGPRS user nameの項目はスマホ回線の接続自体やTraccar側の位置情報受信には関係ないようですが、適当に数文字くらいで半角英数字の任意の名前でGPRS user nameの項目も設定しておいた方がいいかもしれません。
また、同様に他のGPSトラッカーでも、Traccar側が対応してるプロトコルなのに動かない場合も、端末側がtraccarサーバに送信してきた位置情報内容にプロトコルで規定してない意図しない改行コードや文字が入っていないか、traccarのサーバログ(/opt/traccar/logs/tracker-server.log)で見れる内容を見てチェックした方が良さそうです
ちなみに、traccarサーバのログでは送信されてきた位置情報は16進数で表示されているので、https://www.traccar.org/hex-decoder/
にある16進をテキストに変換するフォームにログにある「HEX:」等を除いた16進の数字だけ入れて「DECODE」してやれば、テキストでログの内容をチェックできます。
※※※
2017/05/04追記:
上記の手順で「うまく認識できた!」と思ったのもつかの間、MT-500GはTLT-2Hというプロトコルででやり取りしてるはずなのですが、最新のtraccar ver 3.11でも「オンライン」「オフライン」は認識できても位置情報が取れないということに気付きました。
その後、いろいろと調べると開発してる方がアップロードしてくれている以下の修正版のtracker-server.jarをインストールされているものと置き換えると、当方の環境ではうまく位置情報を取れるようになりました。
https://www.dropbox.com/s/cgmlansv32j3ii0/tracker-server.jar?dl=0
TLT-2Hで送られてるはずなのに位置情報を認識できない場合は使ってみてください。
おそらく上に書いたTlt2hProtocolDecoder.javaの内容を変更してあるバージョンなのだと思われます。
タイトル画像のように位置情報も構築したtraccarのサーバに送れて走行したルートや現在地もちゃんと位置情報を取れるようになりました。
補足。
「こんな難しそうなのわからん!」とか
「サーバを立てるとか運用とか面倒くさいことできるか!金で解決だ!」という方には、
Traccarの会社自体もオフィシャルで
https://www.traccar.org/pricing/
月額10ドル/5台まで(月額20ドルで20台まで、それ以上も)、などでGPSトラッカーの位置情報等を確認できるサービスも提供しています。
業務用とかで、数十台、数百台の車をより確実に管理したいとかの方は別途、Traccarの有料サービスなり、その他のソリューションなりをご契約ください。
この記事の内容は主に個人用途で1~数台程度の車やバイク、ペット等の位置情報を自ら管理するような状況を前提に書いています。
日本企業にももっとずっと高額ですが、同様のサービスを提供している企業はあります。