[SaaSプラン]ゲートウェイ用サンプルプログラム

SaaSプランをご利用いただく際に、IoTゲートウェイ機器に設定するサンプルプログラムとしてご利用ください。

はじめに

サンプルプログラムは、以下のオレンジ色の箇所に該当するプログラムです。

プログラム

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

利用する機器構成は以下を想定して記載しています。

構成要素内容
EnOceanセンサー無線センサーの内、マグネットセンサーでのご利用を想定しています。
EnOcean受信モジュールUSB400J(USBドングル)
ゲートウェイ機器Raspberry Pi 2 Model B、もしくは、Raspberry Pi 3 Model B

前提条件

  • Linuxの利用経験がある方を対象に記載しています。
  • ゲートウェイ機器は、インターネットに接続できており、名前解決ができる状態である事を想定しています。
  • ご利用は自己責任でお願いいたします。(内容によってサポート可能です。)

1.プログラム稼働環境の用意

本サンプルプログラムは、Rubyでコーディングしたプログラムとなります。Linuxに実装する事を想定したプログラムです。Raspberry Pi 2, 3 Model B、OpenBlocks で稼働実績があります。

本サンプルプログラムを動かすためには、以下のソフトウェア環境が必要になります。

ソフトウェアVersion内容
Ruby1.9.3p194本プログラムはRubyでコーディング
Ruby-SerialPort1.3.1EnOceanのシリアル通信で利用
curl7.26.0EnOceanデータをクラウドにアップする際に利用

必要に応じて、ruby-dev、serialport パッケージをインストールしてください。

$ sudo apt-get install ruby-dev
$ sudo gem install serialport

ruby-dev、serialport パッケージがインストール済かどうかは以下のコマンドで確認できます。

ruby-dev のインストール確認

$ dpkg -l ruby-dev

serialport のインストール確認

$ gem list serialport

2.配置するプログラム

配置するプログラムは2個になります。

プログラム(ソース)は以下のリンクから取得できます。小さいプログラムですのでコピー・ペーストでご利用ください。

プログラム説明
sample.rbプログラム本体
checksum.rbsample.rb で利用されるメソッド、EnOceanシリアル値のCRCチェックで利用

設置ディレクトリは、お好きな場所で結構です。2個のプログラムは同じディレクトリに配置してください。

以降の例では、/home/pi/EnOcean ディレクトリに設置しています。

3.プログラムに設定する値

「sample.rb」の上部に、以下の値を設定する箇所があります。ご確認の上、設定してください。

設定項目設定内容
cust_idアカウント作成後に確認できる顧客ID1
gatewayアカウント作成後に確認できるゲートウェイ認証キーabcxxxxxxxx
ioturlデータをアップするURLhttps://iot.fanbright.jp/v1/enocean
usbportOSに認識されているUSB400Jのデバイス/dev/ttyUSB0

  • 「cust_id」「gateway」の設定値は、[SaaSプラン]導入手順に設定値の確認方法を記載しています。
  • 「ioturl」の設定値は、例に記載している値を設定ください。このURLの詳細は[SaaSプラン]API仕様に記載しています。
  • 「usbport」の設定値は、以下の「4. プログラム設置例」にて設定値の確認方法を記載しています。
  • 本プログラムは極力シンプルな内容になるように構成しています。
  • 本プログラムはマグネットセンサーのご利用を想定した内容となっております。また、LRNボタンには対応していません。
  • ログ取得などのコーディングは間引いています。必要に応じて、コーディングを追加してください。
  • EnOcean受信モジュールが受信したEnOceanデータは全てクラウドサーバに送信する内容になっています。もし、「複数のEnOceanセンサーを所有しているが、ファンブライトIoTサービスには全てのEnOceanセンサーを登録しない」という場合は、クラウドサーバに送信するEnOceanセンサーをSenderIDでフィルタリングするようにお願いいたします。もし、技術的に難しい場合は弊社にご相談ください。

4.プログラム設置例

Raspberry Pi 2 Model B を利用している際の、プログラム設置時の確認コマンド、実行設定は以下になります。

No項目内容
1インターネット接続

該当機器からインターネット接続が出来る事、
「iot.fanbight.jp」の名前解決が出来る事を確認してください。

2USB400Jの認識確認 EnOcean受信モジュール「USB400J」をRaspberry Pi のUSBポートに接続します。
Linuxコマンドである「lsusb」コマンドで、USB400JがOSに認識されている事を確認してください。
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 ~ $
上の例では意図的に改行を入れていますが、「Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC」が表示されれば、USB400Jが認識されています。
3USB400Jのデバイス確認 次に、Linuxコマンドである「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のデバイスファイルパスはあとで利用しますので、メモしておいてください。
4シンタックス確認 Rubyプログラムを配置し、設定を行った後、シンタックス確認をしてください。
pi@raspberrypi ~/EnOcean $ pwd
/home/pi/EnOcean
pi@raspberrypi ~/EnOcean $ ruby -cw sample.rb
Syntax OK
pi@raspberrypi ~/EnOcean $ ruby -cw checksum.rb
Syntax OK
pi@raspberrypi ~/EnOcean $
5プログラム起動 以下のコマンドで、プログラムをバックグラウンドで起動できます。
$ ruby sample.rb &
6OS起動時の設定 OS起動時に本プログラムを起動させる為に、/etc/rc.local の最終行「exit 0」の前に、設定を追加してください。
以下は、sample.rb を /home/pi/EnOcean/ に設置している場合の設定例です。
/usr/bin/ruby /home/pi/EnOcean/sample.rb & > /dev/null 2>&1

5.その他

  1. Ruby 2.1.5p273 環境(Raspbian Jessie での Rubyバージョン)で、サンプルプログラムをコマンドラインから手動起動した際に、EnOceanテレグラム受信時に「Type Error」などが発生する事がございます。その場合も「/etc/rc.local」に設定し、OS再起動した際には正常に稼働する事が確認できております。
  2. Ruby版サンプルプログラム以外に、Python2版サンプルプログラムもご用意しております。必要に応じてお問い合わせください。