無線センサーEnOceanとRaspberryPiを使ってIoTシステムを実現する方法

エナジーハーベスト技術「EnOcean」のドア開閉センサーと、マイクロコンピュータ「Raspberry Pi 2 Model B」もしくは「Raspberry Pi 3 Model B」を使って、安く簡単にドアの開閉状態をIoT化する方法を記載しています。

ドア開閉センサーの設置例

例えば、遠隔地にある住居内の生活導線上にあるドアの開閉状態をインターネット経由で確認できます。

EnOcean STM429Jでドアの開閉状態を検知

利用するハードウェア、ソフトウェア、サービス

以下のハードウェア、ソフトウェア、サービスを利用します。

EnOcean STM429J,USB400J,RaspberryPi,IoT

ファンブライトIoTサービスは、SaaSプランを使う想定です。

システムの概要図

以下のようなネットワーク接続システム構成になります。

EnOceanとRaspberryPiでIoT

EnOceanセンサーから送信されるデータは、ゲートウェイ機器であるRaspberry Piで受信します。

ゲートウェイ機器からインターネットを経由してクラウドサーバにデータをアップし、ブラウザでデータを確認できるようになります。

必要なハードウェア構成

マイクロコンピュータ「Raspberry Pi 2 Model B」を使う場合、以下のようなハードウェアを揃えます。

EnOceanとRaspberryPiのハードウェア一式

各ハードウェアの情報は以下になります。

ハードウェア金額内容
Raspberry Pi 本体 約5,940円 Raspberry Pi 2 Model B
microSD 約1,000円 8GB
Raspberry Pi 用ケース 約1,000円 Raspberry Pi 2 Model B 用 ファン付
USB ACアダプター 約1,000円 5V/1A(5V/2Aだと余裕)
USBケーブル 約500円 1.2m(写真では超スリムタイプ)
LANケーブル 約1,000円 1.5m(写真では巻き取り式)
EnOcean受信モジュール 約3,780円 USB400J
EnOceanマグネットセンサー 約3,780円 STM429J
EnOceanマグネットセンサー用ケース 約4,800円 CS-ENCASE-TEMP/MAG、CS-ENOCEAN-MAG-01

価格は変動しますが、割と安価にハードウェアが揃います。

なお、Raspberry Pi のセットアップ時に使う、HDMIモニターとUSBキーボードは、手持ちの物を使う事として除外しています。

IoTサービス利用時のブラウザ画面例

一覧画面(ドア open)

ドア開閉センサーを設置したドアが開いている時の一覧画面です。

EnOcean一覧画面 ドア開いている時

一覧画面(ドア closed)

ドア開閉センサーを設置したドアが閉じている時の一覧画面です。

EnOcean一覧画面 ドア閉じている時

別途、個別センサー用の画面(アイコン画像などを拡大表示する画面)もあります。

デモンストレーション映像

ドア開閉センサーの動作状況をブラウザで確認するデモンストレーション映像です。(無音です)

  • 映像では、モニターにマグネットセンサー(ドア開閉センサー)を貼り付けています。
  • モニターと一緒にスマホ用の画面も映しています。
  • ログイン画面の「選択センサー」画面で、ドアの開閉状況を3回確認した後に、「状態一-覧」画面に移り、ドアの開閉状況を1回確認しています。

ここからは実際の手順を記載していきます。

手順1.Raspberry Pi 基本セットアップ

まずは、ここではWindows端末を使って、microSDカードに Raspberry Pi 用のOSを書き込みます。

今回は、Raspbian JessieのZIPファイルを、Download Raspbian for Raspberry Pi ページからダウンロードします。ダウンロードしたZIPファイルを解凍すると「2016-03-18-raspbian-jessie.img」ファイルを取り出せます。

microSDカードにRaspbianイメージファイルを書き込む為に「DD for Windows」を使います。DDWin.exeを「管理者として実行」で起動し、イメージファイルをmicroSDカードに書き込みます。

DD for Windows

Raspbianイメージを書き込んだmicroSDカードを Raspberry Pi の microSDスロットに差し込み、HDMIモニターとUSBキーボードを接続後、Raspberry Pi を起動させます。

Raspberry Pi が起動したら、デフォルトで用意されている「pi」アカウントでログインし、「$ sudo raspi-config」コマンドで「1 Expand Filesystem」や「2 Change User Password」「4 Internationalisation Options」等の設定を必要に応じて行います。

raspi-config

設定が終わったら、「Finish」ボタンを押下し、Raspberry Pi を再起動します。

続けて、最新にする為に以下を実行しておきます。

$ sudo apt-get update
$ sudo apt-get upgrade

実行後は再起動を行います。

次に、Raspberry Pi からインターネットに接続ができるように、Raspberry Pi のネットワーク設定を行ってください。なお、IPアドレスの割り当ては、今後リモートからSSHでアクセスする事を想定すると、DHCPではなく固定割り当てが良いです。

詳細は割愛しますが、ここでは最終的にRaspberry Pi からインターネットに接続できるようになればOKです。

手順2.EnOcean受信モジュールの接続

次に、EnOcean受信モジュール「USB400J」をRaspberry Pi のUSBポートに接続します。(もちろん、Raspberry Pi の電源を入れる前にUSB400Jを接続しておいても問題ありません。)

Linuxコマンドの「lsusb」コマンドで、USB400JがOSに認識されている事を確認します。以下の「Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC」が表示されれば、USB400Jが認識されています。

pi@raspberrypi ~ $ lsusb
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 005: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
pi@raspberrypi ~ $

次に、dmesgコマンドの出力結果で、USB400Jがどのデバイスで認識されたか確認します。

pi@raspberrypi ~ $ dmesg
(省略)
[ 1554.414446] usb 1-1.4: new full-speed USB device number 5 using dwc_otg
[ 1554.546046] usb 1-1.4: New USB device found, idVendor=0403, idProduct=6001
[ 1554.546072] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1554.546090] usb 1-1.4: Product: EnOcean USB 400J DA
[ 1554.546107] usb 1-1.4: Manufacturer: EnOcean GmbH
[ 1554.546123] usb 1-1.4: SerialNumber: FTXII6VG
[ 1554.589333] usbcore: registered new interface driver usbserial
[ 1554.589491] usbcore: registered new interface driver usbserial_generic
[ 1554.589621] usbserial: USB Serial support registered for generic
[ 1554.600591] usbcore: registered new interface driver ftdi_sio
[ 1554.600769] usbserial: USB Serial support registered for FTDI USB Serial Device
[ 1554.601107] ftdi_sio 1-1.4:1.0: FTDI USB Serial Device converter detected
[ 1554.601339] usb 1-1.4: Detected FT232RL
[ 1554.602499] usb 1-1.4: FTDI USB Serial Device converter now attached to ttyUSB0
pi@raspberrypi ~ $

最終行にある「ttyUSB0」がUSB400Jになります。ここでのデバイスファイルのパスは「/dev/ttyUSB0」になります。USB400Jのデバイスファイルパスはあとで利用しますので、メモしておいてください。

手順3.ファンブライトIoTサービスに登録

ファンブライトIoTサービスの「お申込み」画面から、アカウントを登録いただきます。

Webフォームで仮アカウントを作成後に、URLが記載されたメールが送信されます。

2時間以内にURLにアクセスすると正式アカウントが登録され、Webサービス画面にログインできるようになります。

手順4.登録アカウントでログイン後に、SaaSプラン利用メニューを選定

作成した正式アカウントで、ログイン画面からWebサイトにログインします。

ログイン後のトップページは以下の画面となり、「SaaSプランのご利用メニュー」を選定できるようになっています。

SaaSプランのメニュー選択

ここでは無料メニューを選択する事とします。

ご利用メニューの差異については、SaaSプランの「1.メニュー」を参照してください。

手順5.IoTゲートウェイ機器に設定する情報を取得

利用メニューの選定後、次は以下の赤枠箇所「ゲートウェイ認証キーの登録」ボタンをクリックして「ゲートウェイ認証キー」を生成してください。

ゲートウェイ認証キーの登録

クリックすると、ゲートウェイ認証キーが生成されて表示されます。

ゲートウェイ認証キー

「顧客ID」と生成された「ゲートウェイ認証キー」をメモしておいてください。この後、Raspberry Pi に設置するスクリプトに設定値として利用します。

手順6.Raspberry Pi にプログラムを実装

次に、まずゲートウェイ機器であるRaspberry Pi に設定するプログラムを入手します。

IoTゲートウェイ用プログラム

このプログラムは、EnOcean受信モジュールからUART(Universal Asynchronous Receiver Transmitter)でシリアル通信データを取得し、クラウドへデータをアップするシンプルなプログラムとなります。

そのまま利用できる簡単なサンプルRubyプログラムは公開しております。

詳細はゲートウェイ用サンプルプログラムに記載していますので、参照いただき、プログラムを設置してください。なお、先ほど取得しメモしておいた顧客IDとゲートウェイ認証キー、USB400Jのデバイスファイルパス(例:/dev/ttyUSB0)は、ここでスクリプトの設定値として利用します。

ここで、プログラムの起動まで実施してください。プログラムを起動すると、EnOceanセンサーが検知した値がRaspberry Pi で受信でき、ファンブライトIoTサービスのクラウドサーバに送信されるようになります。

EnOceanとRaspberryPiでIoT

手順7.ファンブライトIoTサービスにEnOceanセンサー登録

次は、ファンブライト IoTサービスサイトにログインし、「EnOceanセンサー登録」画面を表示します。

ログイン後の左メニュー「基本画面」の「EnOcean画面」リンクをクリックすると、EnOcean用画面が表示されます。EnOcean用画面で「EnOceanセンサー登録」リンクをクリックします。

EnOceanセンサー登録

EnOceanセンサー登録画面が表示されます。

まず、サーバ接続状態が「接続中です。」と表示される事を確認してください。

Raspberry Pi に接続している USB400J がEnOceanセンサーのテレグラムを受信した時に、以下の赤枠箇所にEnOceanセンサー登録画面へのリンクが表示されます。

EnOceanテレグラムの受信場所

今回利用しているEnOceanマグネットセンサー「STM429J」の場合、次のいずれかの操作をすると画面上にセンサー登録画面へのリンクが表示されます。

  • センサーを機能させた時点(マグネットとSTM429Jを近づけたり離したりした時点)
  • STM429Jに付いている小さな「LRN」ボタンを押下した時点(STM429Jに付いているボタンを、ケース横の穴から針金などで押下できます。STM429Jを傷つけないように注意してください。)
  • HeartBeatのテレグラムが送信された時点(約20~30分間ぐらいの間隔でHeartBeatのテレグラムが自動送信されます。)

以下のようにリンクが表示された際には、クリックしてください。

EnOceanテレグラムの受信

クリック後の画面では、EnOceanセンサーの登録フォーム画面が表示されます。

EnOceanセンサーの登録フォーム

SensorType で「STM429J(マグネット)」を選択し、センサーの名前や設置場所を記入し、登録してください。

手順8.可視化が実現

EnOceanセンサーが登録されると、ファンブライトIoTサービスの各機能を利用できるようになります。

以下は、EnOceanの「状態一覧」画面です。センサーが1つ登録されているのが確認できます。

EnOceanセンサーの一覧画面

ドアの開閉によって、センサーの状態などがリアルタイムで変化する事を確認できるようになっています。

ここまでご紹介したWebアプリケーション機能は、SaaSプランの無料メニューで利用できる機能となります。有料メニューを利用すると、より多くの機能を利用できるようになります。

ぜひ、ご活用ください。

お問い合わせ

お気軽にお問い合わせください。よろしくお願いいたします。

会社名:
お名前:
メールアドレス:
お問い合わせ内容: