2015/08/18

Edison ngrokを使ったWebサーバー(IoT)

Edsionを用いたWebサーバー(IoT)構築についての投稿です。

・Edisonってなに?
切手orSDサイズのコンピューターでございます。Linux Yoctoと呼ばれるOSが載っています。

・IoTってなに?
Internet of thingsの略。室内温度・湿度のモニタ、エアコンのスイッチ、室内照明などをネットから操作できるようにする技術の総称だと思ってください。
外出先で「今日は猛暑だ…家に着く前にエアコン入れれたらなぁ…」を叶えるアイテムです。
正確には、Internet of thingsの略の通り、エアコンなどの「アイテムをネットに繋ぐ行為」を指します。

・要は何するの?
先ほど述べた「今日は猛暑だ…家に着く前にエアコン入れれたらなぁ…」をEdisonと呼ばれる切手サイズのコンピューターで叶えます。

本題に入ります。


こちら、Edisonで御座います。切手サイズの本体はボード中の写真で見て奥側になります。
このボードはEdisonをarduinoというものとして使えるようにするボードになります。

まずは、以下のページを参考にローカルでサーバーを立ち上げます。
http://edison-lab.jp/blog/2015/03/lets-make-edison-led-server.html
(最終閲覧日:2015/08/18)

ローカルでのサーバー立ち上げまではそこまで難しく無いと思います。

次に、インターネットにサーバーを公開する方法ですが、通常は固定IPというものを取得する必要があります。ですが、お金が掛かる場合も多く面倒であるので、ngrokというサービスを使用します。このサービスについて記述されている日本人サイトは現在の所多くありません。

下記のサイトを参考に、ngrokの登録と、downloadを行います。
http://netbuffalo.doorblog.jp/archives/4974284.html
(最終閲覧日:2015/08/18)
ここで注意しなければならないのは、Linux 32bitをdownloadします。32bitでないバーションを使用した場合、状況に依りますが、
/bin/ngrok: line 1: syntax error: unexpected "&" (expecting ")")
といったエラーが以降の項目で発生するでしょう。

それでは、downloadしたngrok 32bitをEdisonにinstallしていきます。
ngrokをコマンドで動作するようにするためには、Ediosn内の /bin に入れる必要があります。

edisonのファイルシステムは通常では、USB接続しているPCにマウントされておらず、PC側からedisonの中を探しても/binにはたどり着けません。そのため、マウントを行います。
Edisonのコマンド上で、
# rmmod g_multi
# mkdir /update
# losetup -o 8192 /dev/loop0 /dev/disk/by-partlabel/update
# mount /dev/loop0 /update
# ls /update
とそれぞれ行ってみてください。

参考:USB Gadget Mass Storage image location
https://communities.intel.com/thread/55520
(最終閲覧日:2015/08/18)

# ls /update を行うと、
root@Edison:~# ls /update
$RECYCLE.BIN                edison_ifwi-dbg-05-dfu.bin
edison-image-edison.ext4    edison_ifwi-dbg-05.bin
edison-image-edison.hddimg  edison_ifwi-dbg-06-dfu.bin
edison_dnx_fwr.bin          edison_ifwi-dbg-06.bin
edison_dnx_osr.bin          filter-dfu-out.js
edison_ifwi-dbg-00-dfu.bin  flashall.bat
edison_ifwi-dbg-00.bin      flashall.sh
edison_ifwi-dbg-01-dfu.bin  ngrok
edison_ifwi-dbg-01.bin      ota_update.scr
edison_ifwi-dbg-02-dfu.bin  package-list.txt
edison_ifwi-dbg-02.bin      pft-config-edison.xml
edison_ifwi-dbg-03-dfu.bin  u-boot-edison.bin
edison_ifwi-dbg-03.bin      u-boot-edison.img
edison_ifwi-dbg-04-dfu.bin  u-boot-envs
edison_ifwi-dbg-04.bin
などと表示されるでしょう。これはusb接続しているディレクトリそのものです。ここに、ngrokファイルを入れておきます。

それでは、ngrokを/binに移動すれば、終わりですが、
write error: No space left on device
等とエラーが出て移動できないと思います。
これは起動時にEdisonのディレクトリがいっぱいになってしまうのが原因らしいです。
参考:Edisonへ書き込み出来ない [ write error: No space left on device ]
http://nonnoise.github.io/Edison/Setup/NoSpace.html
(最終閲覧日:2015/08/18)

# du -sh /var/log/journal/*
# mv /update/ngrok /bin
と行えば移動できるでしょう。
# ls /bin
で確認してみてください。

それでは、ngrokを起動します。
# ngrok http 80
とコマンドすれば、
ngrok by @inconshreveable                                       (Ctrl+C to quit)
                                                                                
Tunnel Status                 online                                            
Version                       2.0.19/2.0.19                                     
Web Interface                 http://127.0.0.1:4040                             
Forwarding                    http://c6e9d181.ngrok.io -> localhost:80          
Forwarding                    https://c6e9d181.ngrok.io -> localhost:80         
                                                                                
Connections                   ttl     opn     rt1     rt5     p50     p90       
                              0       0       0.00    0.00    0.00    0.00      
                                                                           
などと表示されるでしょう。
ここでは、http://c6e9d181.ngrok.io がアドレスになります。アドレスは適宜変更できます。

これで、自分のEdisonサーバーが世界に公開されます。
是非、挑戦してみてください。

文責 @murenezumi

0 件のコメント:

コメントを投稿