IoT Gatewayについて調査をしていくつかのプロダクトを試しました。Eclipse Kuraが今のところ実績もあり使いやすそうです。Eclipse IoTプロジェクトの一つで、Raspberry PiやBeagle Bone Black上でIoT Gatewayとして動作するOSGiのオープンソースフレームワークです。Eclipse Kuraを拡張したESFとハードウェアのReliaGATEシリーズもEurotechから提供されています。プロダクション環境でサポートが必要な場合はライセンスを購入すると安心できそうです。
Eclipse IoTプロジェクトは他にもEclipse Kapua、Eclipse Hono、Eclipse Vorto、Eclipse Leshanといったクラウドのバックエンド側プロジェクトもあります。Red Hat、Eurotech、Bosh、GE Digitalといった企業が乱立気味のIoTプラットフォームの相互接続性と、デバイスからのデータをエンタープライズのアプリケーションに統合することを目標にオープンソースで開発を進めています。バックエンドサービスはCloud FoundryやOpanShiftといった最近のDockerベースのクラウドプラットフォーム上で動作することにも注目です。
まずは身近なところから、Raspberry Pi 2にEclipse Kuraをインストールすることから始めます。
Raspbian Jessie Lite
Raspbianのセットアップ方法はオフィシャルをはじめにたくさん記事がありますが、2016-11-25のリリースからSSHがデフォルトで無効になり注意が必要です。SDカードにイメージを焼いた状態のままではSSHで接続することができません。
2016-11-25:
- SSH disabled by default; can be enabled by creating a file with name “ssh” in boot partition
ローカルの作業用PCとRaspberry Pi 2を有線LANで接続してヘッドレスインストールする例を簡単にまとめておきます。そのほかには無線LAN USBアダプターなどが必要です。
SDカードにイメージを焼く
SDカードをUSBアダプタに挿して作業用PCに接続します。Fat32でフォーマットされたSDカードのデバイス名を確認してアンマウントします。この例では/dev/disk2です。
$ diskutil list |
Raspbian Jessie Liteをダウンロードページから取得してイメージを解凍します。
$ cd ~/Downloads |
イメージをSDカードに焼きます。確認したデバイス名にr
をつけて/dev/rdisk2
を指定します。
$ sudo dd bs=1m if=2017-01-11-raspbian-jessie-lite.img of=/dev/rdisk2 |
Windows 10でRasbianイメージのSDカードを作る場合はWin32 Disk Imagerが便利です。
SSHを有効にする
SSHはデフォルトで無効になっています。macOSのボリュームにマウントした状態でsshファイルを作り有効にします。
$ touch /Volumes/boot/ssh |
Windows 10にはtouch
に相当するコマンドがないため、SDカードのDドライブに移動してCOPY
コマンドで代用します。エクスプローラーからDドライブに直接ファイルを作成する場合は.txt
など拡張子をつけないように注意します。
> d: |
SDカードをアンマウントして取り出します。
$ diskutil unmountDisk /dev/disk2 |
SDカードをRaspberry Pi 2にさして電源を入れます。macOSとLANケーブルで直接つなぎます。最新のRaspbianはデフォルトでmDNSが有効になりmacOSやWindows10からraspberrypi.local
のホスト名で簡単に接続できます。
$ ssh pi .local |
ユーザー名はpi
、パスワードはraspbian
が設定されています。SSHのデフォルトが無効なのは変更せずにこのまま使う人が多いためらしく、忘れずにパスワードを変更します。
$ passwd |
公開鍵を~/.ssh/authorized_keys
に追加しSSH接続で利用します。
$ mkdir ~/.ssh |
初期設定
raspi-configから初期設定を行います。
$ sudo raspi-config |
ファイルシステムの拡張は必ず行います。localeとtimezoneはユーザー環境にあわせて設定します。
- 1 Expand Filesystem
- 4 Internationalisation Options
- I1 Change Locale -> en_GB.UTF-8のまま
- I2 Change Timezone -> Asia -> Tokyo
localeをjp_JP.UTF-8
にすると文字化けする場合があるのでen_GB.UTF-8
のまま使います。一度rebootします。
Raspberry Piに日本語キーボードを使う場合はレイアウトを変更します。SSH接続では不要ですが、Windows 10とRaspberry Piを有線LANで接続するとmDNSのraspberrypi.local
でうまくSSH接続できないことがあります。キーボードとディスプレイが必要になる場合があるため設定します。
- 4 Localisation Options
- I3 Change Keyboard Layout -> Generic 105-key (Intl) PC -> Japanese -> The default for the keyboard layout -> No compose key
$ sudo reboot |
無線LAN
Raspberry Pi 2には無線LANが内蔵されていません。USBの無線LANアダプタを用意しておきます。wlan0で利用する無線LANのアクセスポイントをスキャンしてESSIDを確認します。
$ sudo iwlist wlan0 scan | grep ESSID |
wpa_passphraseコマンドにESSIDとパスワードを渡し、出力をwpa_supplicant.conf
に追記します。(例の[
と]
は不要です。)
$ sudo sh -c 'wpa_passphrase [ESSID] [パスワード] >> /etc/wpa_supplicant/wpa_supplicant.conf' |
アクセスポイントを複数指定する場合はpriority
で接続する優先度を指定します。数字が大きいほど有線されます。
country=GB |
wlan0のインタフェースにDHCPと先ほどのwpa_supplicant.confを設定します。
auto lo |
wlan0を再起動してDHCPでIPアドレスを取得します。
$ sudo ifdown wlan0 |
ip
コマンドなどを使いwlan0が正常に起動しているか確認します。
$ sudo iwconfig wlan0 |
パッケージの更新
ネットワークがつながるようになったので以降の作業を進める前にインストールされているパッケージを更新します。
apt-get ミラーサイト
apt-getのデフォルトはmirrordirector.raspbian.org
のリポジトリに接続します。
deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi |
なるべく近くのミラーサイトをRaspbianMirrorsから選びます。今回はJAISTにしました。
$ sudo sed -i".bak" -e "s/mirrordirector.raspbian.org/ftp.jaist.ac.jp/g" /etc/apt/sources.list |
パッケージ更新
パッケージリストを更新してパッケージを最新の状態にします。
$ sudo apt-get update && sudo apt-get dist-upgrade -y |
nanoエディタが使いづらい場合はvimをインストールしてファイルを編集します。
$ sudo apt-get update && sudo apt-get install vim -y |
Eclipse Kuraのインストール
Raspbianの初期設定が終わったところでようやくEclipse Kuraのインストールを始めていきます。
OpenJDK 8
Eclipse Kuraの動作にはJDK 7以上が必要です。最新のOpen JDK 8を使います。
$ sudo apt-get update && sudo apt-get install -y openjdk-8-jre-headless |
Eclipse Kura 2.0.2
Raspberry Pi Quick Startの手順に従いKuraをインストールします。
dhcpcd5 パッケージはKuraと互換性がないため削除します。
$ sudo apt-get purge -y dhcpcd5 |
NetworkManagerもKuraと競合するためインストールされていないことを確認します。
$ sudo apt-get remove -y network-manager |
パッケージの依存関係を解決してKuraをインストールするためにGDebiをインストールします。
$ sudo apt-get update && sudo apt-get install -y gdebi-core |
Eclipse Kura 2.0.2をダウンロードして使います。
$ wget http://eclipse.stu.edu.tw/kura/releases/2.0.2/kura_2.0.2_raspberry-pi-2_installer.deb |
rebootするとEclipse Kuraが起動します。
$ sudo reboot |
Eclipse Kuraの起動には時間がかかるためSSH接続したらログを
$ sudo tail /var/log/kura.log |
Eclipse Kura WebUI
Raspberry PiにWebブラウザから以下のURLに接続するとWebコンソールが表示されます。
Eclipse Kura WebUI
http://raspberrypi.local/kura
Basic認証のユーザー名とパスワードはadminです。
- username: admin
- password: admin
Cloud ServiceやNetwork設定はこれからですが、とりあえずEclipse Kuraのインストールは終了です。