OpenBlocks IoT BX1を触ってみた

2015.09.02

こんにちは、せーのです。今日はぷらっとホーム株式会社さんよりスグレモノのIoTデバイス「OpenBlocks IoT BX1」をお借りしたのでご紹介致します。

OpenBlocks IoT BX1ってなんだ

見た目

openblocks8

OpenBlocks IoTはEdisonやRaspberry Piと同じシングルボードとしての役割も果たす画期的なIoTゲートウェイです。見た目はこの通り、かなりのコンパクトサイズになります。

openblocks10

とりあえず中身を開いてみました。

openblocks11

中にはEdisonが入ってますね。ということは操作はEdisonでのやり方を踏襲できそうです。ちなみに上蓋からラインが一本つながっているので勢い良く取ると壊れます。気をつけて下さい。

インターフェース

openblocks9

OpenBlocks IoTはIoT向けということでインターフェースが多いです。 基本は上の写真にある給電コンソール[BX1コネクタ]からUSBにて給電します。つまり外に設置する場合はUSB用の充電器が必要になるわけです。そしてこのBX1コネクタはUSBの他にもRS-232C、RS-485、GPIO、Ethernet等のインターフェースに対応しています。 無線はWi-Fiが基本になります。Wi-FiはClient ModeAP Modeの2つのモードがあり、Client Modeは既存のWi-Fiネットワークへの接続、AP ModeはOpenBlocks自らがアクセスポイントとなる場合に使用します。 そう、OpenBlocksの大きな特徴の一つは「3G SIMが使える」というところです。BX1であればDocomo系、BX3であればSoftbank系のSIMが挿せるようになっており(ちょうど上の写真の下側の口です)、そのまま3G回線を使用してインターネットに接続することができます。Wi-Fiを屋外に組まなくてもいい、というのは非常に実用的でいいですね! 他にもBLE対応のBluetoothが無線通信モジュールとして搭載されていますので、大抵のセンサーからのデータを受け取り、インターネットへ投げることができますね。まさに「IoTゲートウェイ」です。

接続してみる

それでは早速接続してみましょう。OpenBlocksはWeb UIによる設定画面が用意されていますのでそれを使ってみましょう。まずはケーブルをUSBにつなげてみます。バスパワー電源なのでこれで電源が入ります。

openblocks22

初期状態では[IoTFamily-XXXXX]や[BX1XXXXXXX]等のWi-Fiスポットが表示されますのでそこに手元のデバイスのWi-Fiをつなげます。今回はスマホでやってみます。パスフレーズはここに書いてあります。

openblocks6

そして初期設定であるURL[192.168.254.254:880]にアクセスすると初期設定画面が出てきました。

openblocks5

次にユーザー設定画面です。

openblocks2

ユーザーの登録が終わると設定画面が現れます。

openblocks1

ちなみにPCからアクセスするとこんな感じになります。

openblocks23

openblocks28_status

Web UIを使った設定色々

ネットワーク

それではせっかくWeb UIがあるのでこれを使って色々設定していきましょう。 まずはネットワーク周りです。

openblocks25

重要なのは[Service Network]の欄です。ここでClient ModeかAP Modeかを選んで設定していくことになります。AP Modeを選択した場合は3G SIMのAPN等もここで設定できます。一方Client Modeの場合は普通のサーバーやルータの設定と同じような感じです。 保存するとrebootを促されます。rebootして初めて設定が反映されます。SSIDに5GHz帯のネットワークを選ぶと私の環境では繋がらなかったので2.4GHzを選択したほうが無難、なのかもしれません。 ちなみに一回繋がらなくなると中々復旧が難しかったです。私の場合は下にあるコンソールでの接続からネットワークをコンソールにて設定しなおして復旧させました。

SSH

SSHログインは必ず必要になるので設定しておきましょう。Web UIではボタン一つで設定できます。

openblocks32_SSH

確認してみます。

Tsuyoshi$ ssh root@192.168.1.13
Warning: Permanently added '192.168.1.13' (RSA) to the list of known hosts.
root@192.168.1.13's password:
Linux obsiottest.example.org 3.10.17-poky-edison #3 SMP PREEMPT Mon Apr 20 13:05:54 JST 2015 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Jan  2 02:27:01 2000
root@obsiottest:~#

問題ないようです。

Bluetooth

センサータグからデータを拾ってくる事を考えるとBluetoothも有効にしておくのがいいでしょう。これもWeb UIなら「有効にする」を選択して保存するだけです。

openblocks30_BLE

Bluetoothを有効にすると初めてBluetoothの設定タブが現れます。

openblocks31_BLE

ここでBluetoothデバイスとのペアリングもできます(Bluetooth-relatedからBluetooth device detection)ので実際に拾えるかどうかをテストしておくと安心ですね。

NTP

最初の状態では2000/1/1なのでまずSyncボタンにてつながっているPCの時刻と同期、後はNTPサーバーを設定しておけば同期してくれます。

openblocks29_ntp

iptables

最近はIoTデバイスの脆弱性を突かれる、という事象も報告されていっていますので、どこの部分が空いているのかをチェックしておきましょう。IPv4とIPv6のiptablesが参照できます。

openblocks33_IPTable

これでひと通りの設定が完了です。

コンソールを使った設定確認

次はコンソールを使ってデバイスの中身を色々見て行きましょう。

接続する

コンソールでの接続は先程のWeb UIでのネットワークの設定がうまく行っていればSSHでサクッとつなげても良いかと思います。シリアルケーブルでつながっているのでscreenでも繋げられます。

screen /dev/cu.usbXXXXXXXXXXXXXXXXXX(デバイスによって異なるのでタブキーで候補表示させて入力する) 115200 -L

これでEnterキーを押すとコンソールが空になるので、もう一回EnterキーでID、PASSの入力画面になります。たまに「Sorry, could not find a PTY」という表示が下部に出て繋がらない、ということもありますが、その場合は原始的にケーブルを抜き差しすると戻る場合が多いです。

Debian GNU/Linux 7 obsiottest.example.org ttyMFD2

obsiottest login: root
Password:
Last login: Sat Jan  1 11:00:13 JST 2000 on ttyMFD2
Linux obsiottest.example.org 3.10.17-poky-edison #3 SMP PREEMPT Mon Apr 20 13:05:54 JST 2015 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
root@obsiottest:~#

設定値のチェック

まずはOSカーネルを見てみます。

root@obsiottest:~# uname -a
Linux obsiottest.example.org 3.10.17-poky-edison #3 SMP PREEMPT Mon Apr 20 13:05:54 JST 2015 i686 GNU/Linux

OSはDebianで最新のEdisonのファームウェアが入っているようですね。最新じゃない方はここにファームがあるのでアップデートしてみましょう。

root@obsiottest:~# apt-get update
Hit http://ftp.plathome.co.jp wheezy Release.gpg
Hit http://ftp.plathome.co.jp wheezy/updates Release.gpg
Hit http://ftp.plathome.co.jp ./ Release.gpg
Hit http://ftp.plathome.co.jp wheezy Release
Hit http://ftp.plathome.co.jp wheezy/updates Release
Hit http://ftp.plathome.co.jp ./ Release
Hit http://ftp.plathome.co.jp wheezy/main Sources
Hit http://ftp.plathome.co.jp wheezy/main i386 Packages
Hit http://ftp.plathome.co.jp wheezy/main Translation-en
Hit http://ftp.plathome.co.jp wheezy/updates/main Sources
Hit http://ftp.plathome.co.jp wheezy/updates/main i386 Packages
Hit http://ftp.plathome.co.jp wheezy/updates/main Translation-en
Hit http://ftp.plathome.co.jp ./ Packages
Ign http://ftp.plathome.co.jp ./ Translation-en
Reading package lists... Done
root@obsiottest# apt-get -y --force-yes install kernel-image-obsbx1 openblocks-iot-webui
root@obsiottest# reboot

シリアルの電源を常にONに

OpenBlocksは低消費電力設定があり、しばらく負荷がないと約60mAから約35mAに低下します。 低消費電力時には、シリアルコンソールからのキー入力の最初の1打目を取りこぼしますので開発中は常にONにしておくと楽です。

root@obsiottest:~# echo on > /sys/devices/pci0000:00/0000:00:04.3/power/control

ディスクモードの確認

OpenBlocksにはディスクモードが[RAMディスクモード]と[ストレージディスクモード]の2つあります。RAMディスクモードだと保存しないで変更した内容は再起動で失われてしまいます。保存するにはflashcfgコマンドを打てばOKです。

root@obsiottest:~# flashcfg -S

Overwrites the current data.
Are you ok? [y|N] y

dfコマンドでディスクの中身を確認してみます。

root@obsiottest:~# df -h
Filesystem       Size  Used Avail Use% Mounted on
rootfs           184M  151M   24M  87% /
/dev/root        184M  151M   24M  87% /
devtmpfs         449M     0  449M   0% /dev
tmpfs             97M  304K   96M   1% /run
tmpfs            5.0M     0  5.0M   0% /run/lock
tmpfs            193M     0  193M   0% /run/shm
/dev/mmcblk0p10  2.3G  577M  1.6G  27% /.rw
aufs             2.3G  577M  1.6G  27% /etc
aufs             2.3G  577M  1.6G  27% /bin
aufs             2.3G  577M  1.6G  27% /home
aufs             2.3G  577M  1.6G  27% /lib
aufs             2.3G  577M  1.6G  27% /sbin
aufs             2.3G  577M  1.6G  27% /usr
aufs             2.3G  577M  1.6G  27% /var
aufs             2.3G  577M  1.6G  27% /root
aufs             2.3G  577M  1.6G  27% /opt
aufs             2.3G  577M  1.6G  27% /srv
aufs             2.3G  577M  1.6G  27% /media
/dev/mmcblk0p5  1003K   19K  913K   3% /factory
sensor_data       17M     0   17M   0% /var/webui/sensor_data
emitter_buf       65M     0   65M   0% /opt/pd/emitter/var
log_dir           51M  8.0K   51M   1% /var/webui/logs

この中に/.rwにマウントされているのが[/dev/mmcblk0p10]であればディスクモードということになります。これがRAMモードだとtmpfsにマウントされています。ディスクモードにするには

root@obsiottest:~# e2label /dev/mmcblk0p10 DEBIAN
root@obsiottest:~# reboot

でOKです。

まとめ

いかがでしたでしょうか。今回はOpenBlocksのWebからの初期設定とデバイスそのものの状態を確認してみました。 次回は今回書ききれなかったコンソールからのネットワークの確認やセンサーデバイスからのデータ取得方法等を書いていきます!