Install Instructions - schth/WC-Project GitHub Wiki
この資料はトイレ空室検知システム「Watcher of Compartment」を動かす為の手順をまとめた資料です。 開発した人以外の人にもシステムの実装を挑戦して頂けるように、資料として残しておきます。
知識はゼロから!とは言わないまでも、基礎を把握し、いろんなサイトを見ながら「Watcher of Compartment」を構築するまでをゴールとしています。
サーバとかWebアプリを実装したことがないけど、軽く知識がある人
- サーバーサイド
- クライアントサイド
- ブラウザがあれば良い
- IoTゲートウェイ
- センサー
PCをサーバーマシンとして稼働させるため、Apache、MySQL、PHPをインストールします。
すぐにでも動かしてみたい方はXAMPPをインストールしてください XAMPPとは、Webアプリケーション開発に欠かすことのできないソフトウェアとそれ以外にもあると便利なツールを、無料で一括インストールすることができるパッケージのことです。
ソフトウェアのインストール手順は先人たちがまとめた物がたくさんありますので、今回の開発で参考したリンクを載せます。
Webアプリのソースはhtmlに格納されています。 Apacheのドキュメンルートを好きなフォルダに変更します。
httpd.conf
(省略)
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "C:\<好きな場所>\html" ←変更箇所
<Directory "C:\<好きな場所>\html"> ←変更箇所
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
(省略)
configフォルダとhtmlフォルダを同じ階層になるようソースをコピーします。
C:.<好きな場所>
├─config
└─html ←Apacheのドキュメンルート
├─api
│ ├─compartment
│ ├─config
│ └─objects
├─css
└─image
- MySQLの初期設定と動作確認 - Windows環境 DBへの動作確認が終わったあと、source コマンドまたは . コマンドを使用して SQL スクリプトファイルを実行できます。
mysql> \. create_db_schema.sql
...
Query OK, 1 row affected (0.00 sec)
mysql> \. create_user.sql
...
Query OK, 1 row affected (0.00 sec)
mysql> \. insert_dumpdata.sql
...
...
Query OK, 1 row affected (0.00 sec)
- DB構築の確認
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 10.1.29-MariaDB mariadb.org binary distribution
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input state
MariaDB [(none)]> use wc;
Database changed
MariaDB [wc]> select * from events;
+--------+-----------+--------+---------------------+----------------+
| seq_id | sensor_id | status | upd_dt | sensor_battery |
+--------+-----------+--------+---------------------+----------------+
| 23 | 10e27d0 | N | 2017-11-11 12:00:00 | NULL |
| 27 | 10e27d0 | Y | 2017-11-11 12:10:10 | NULL |
| 29 | 10e27d0 | N | 2017-11-11 12:20:30 | NULL |
| 35 | 10e27d0 | Y | 2017-11-11 13:40:00 | NULL |
| 39 | 10e27d0 | N | 2017-11-11 14:40:00 | NULL |
| 42 | 10e27d0 | Y | 2017-11-11 15:15:00 | NULL |
| 25 | 10e29b1 | N | 2017-11-11 12:00:00 | NULL |
| 30 | 10e29b1 | Y | 2017-11-11 12:30:30 | NULL |
| 33 | 10e29b1 | N | 2017-11-11 12:40:50 | NULL |
| 37 | 10e29b1 | Y | 2017-11-11 14:10:00 | NULL |
| 41 | 10e29b1 | N | 2017-11-11 15:10:00 | NULL |
| 44 | 10e29b1 | Y | 2017-11-11 15:25:00 | NULL |
| 26 | 10e34ee | N | 2017-11-11 12:00:00 | NULL |
| 32 | 10e34ee | Y | 2017-11-11 12:40:40 | NULL |
| 34 | 10e34ee | N | 2017-11-11 12:50:00 | NULL |
| 38 | 10e34ee | Y | 2017-11-11 14:20:00 | NULL |
| 43 | 10e34ee | N | 2017-11-11 15:20:00 | NULL |
| 24 | 10e3533 | N | 2017-11-11 12:00:00 | NULL |
| 28 | 10e3533 | Y | 2017-11-11 12:20:20 | NULL |
| 31 | 10e3533 | N | 2017-11-11 12:30:40 | NULL |
| 36 | 10e3533 | Y | 2017-11-11 13:50:00 | NULL |
| 40 | 10e3533 | N | 2017-11-11 14:50:00 | NULL |
+--------+-----------+--------+---------------------+----------------+
22 rows in set (0.08 sec)
Apache、MySQLを起動した状態で、ローカルでWebブラウザを起動し、localhostにアクセスします。 Webページが無事表示されれば完了です。
IoTゲートウェイを構築します。IoTゲートウェイはRaspberry piとMoNoStickから構成されています。
※Raspberry piを設定するには、キーボード、マウス、HDMIケーブルが必要となりますので、別途ご用意ください。
- NOOBSを使って、Raspberry piにOS「Raspbian(ラズビアン)」をインストールします。 第56回「改めましてラズベリーパイの基本!(1) Raspberry Pi NOOBSインストール 2017年度版」
- RaspbianにPython3をインストールします。 Raspbianのターミナルを立ち上げ以下のコマンドを入力します
sudo apt-get update
sudo apt-get python3
python3のインストール後、versionを確認します。合わせてpip3のバージョンも確認します。
# pip3 -V
pip 9.0.1
# python -V
Python 3.6.0
- IoTゲートウェイのアプリケーションを動かすためのpythonのライブラリーをインストールします。 必要なライブラリーはrequirements.txtに記載されています。pipコマンドを使って一括インストールします。 ターミナルで以下のコマンドを実行して、パッケージを一括インストールします。
pip3 install requirements.txt
- メーカー公式サイトからMoNoStick用の無線タグアプリをダウンロードしてインストールします。
- MoNoStickをPCに接続します。
- ダウンロードしたファイルを解凍し、MoNoStickを親機として設定するため、App_Tag-Parent-BLUE-MONOSTICK.binをMoNoStickにインストールします。 App_Tag-Parent-BLUE-MONOSTICK.binをMoNoStickに書き込むため、メーカー提供の書き込みソフト-Windows 用 TWELITE プログラマを使います。
- 親機の設定を参照し、MoNoStickをPCに接続し、TeraTermなど使ってインタラクティブモードに接続します。
- set Option Bitsを0x00000021(Simple Tag V3形式)に変更し、受信データをセミコロン区切られて形式で出力させます。 そのほかの設定はデフォルトのまま。
MoNoStick(親機)の設定
--- CONFIG/App_Tag V2-00-3/SID=0x810e2fa8/LID=0x00 ---
a: set Application ID (0x67726305)
c: set Channels (15)
x: set Tx Power (3)
b: set UART baud (38400)
B: set UART option (8N1)
k: set Enc Key (0xA5A5A5A5)
o: set Option Bits (0x00000021)
---
S: save Configuration
R: reset to Defaults
- IoTGatewayフォルダの中の3ファイルをRaspberry piの任意の場所に格納します。3ファイルは同じ場所に格納する必要があります。
- MoNoStickをRaspberry piのUSBポートに接続して、main.pyを実行します。 ※IoTGatewayは初回起動時にサーバを接続するので、main.pyを実行する前にサーバを稼働しておく必要がある。
C:\>python C:\work\WC-Project\IoTGateway\main.py
input 0: open COM1
input 1: open COM5
input number of target port
>> 1
open >>>>>> COM5
dict_keys(['10e27d0', '10e29b1', '10e34ee', '10e3533'])
IoTゲートウェイ(≒MoNoStick)と通信できるよう、センサー回路を作ります。
- プリント基板のガイドに合わせてパーツをはめ込み、ハンダ付けします。 プリント基板は今回のプロジェクトで設計したもので、基盤製造サービスなどを利用して作成したものです。回路設計ソフトのFritzingを使って確認できます。(設計のプロジェクトファイルはfritzingフォルダに格納しています)
- プリント基板
- 回路図
- TWELITE R-トワイライターの使い方を参照し、TWE-Lite-DIPをTWELITE R-トワイライターに接続します。
- TWE-Lite-DIPとTWELITE R-トワイライターを接続した状態で、PCと接続します。
- メーカー公式サイトから無線タグアプリをダウンロードし、解凍します。
- TWE-Lite-DIPを子機として設定するため、App_Tag-EndDevice-BLUE.binをTWE-Lite-DIPにインストールします。 アプリのインストールはMoNoStickのセットアップと同様、メーカー提供のWindows 用 TWELITE プログラマを使います。
- 子機の設定を参照し、TWE-Lite-DIPをTWELITE R-トワイライターに接続します。
- TeraTermから子機のインタラクティブモードに接続します
子機がインタラクティブモードに入るには、M2(TWELITE 2525AはSETピン、TWELITE SWINGはSCピン)をGNDに接続をしておく必要があります。
- 子機のセンサーモードをアナログに指定します。アプリケーションIDは親機と同じであることを確認してください。
--- CONFIG/App_Tag V2-00-3/SID=0x810e3533/LID=0x00/RC=8344 ---
a: set Application ID (0x67726305)
i: set Device ID (--)
c: set Channels (15)
x: set Tx Power (13)
b: set UART baud (38400)
B: set UART option (8N1)
k: set Enc Key (0xA5A5A5A5)
o: set Option Bits (0x00000001)
d: set Sleep Dur (5000)
w: set Sensor Wait Dur (30)
m: set Sensor Mode (0x10) ←sensor Modeを0x10に設定
p: set Sensor Parameter (0)
P: set Sensor Parameter2 ( )
---
S: save Configuration
R: reset to Defaults
TWE-Lite-DIPとMoNoStickを使って動作確認します。 TeratermでMonoStickに接続し、通信を待ち受ける状態にします。 作成したセンサーに電池を投入すると、およそ5秒間隔でMonoStickにデータが届きます。 MoNoStickに届いたデータはTeratermに表示されます。
Tera Term VT
;92; ← MoNoStickの内部カウンター
;93;
;94;
;95;
;95;00000000;123;000;10e3533;2930;0863;1560;0260;0863;A; ← 子機から送信されてくるデータ
;96;
;97;
;98;
;99;
;100;
;100;00000000;144;001;10e3533;2950;0463;2922;0487;0463;A;
;101;
;102;
;103;
;104;
;105;
;105;00000000;144;002;10e3533;2950;0465;2934;0489;0465;A;
;106;
;107;
;108;
また、MoNoStickがデータを受信すると、オレンジ色のLEDが光ります。