2016年12月4日日曜日

トイレまきまきくんその後

概要

昔トイレの IoT 化ということでトイレットペーパーホルダーを IoT 化しました
http://www.slideshare.net/kakakikikeke/ss-64768171

ちょろっとエンハンスしたので紹介します

環境

  • RaspberryPi Zero ( Jessie 8.0 )

7 セグ LED をシールド化しました

元々ブレッドボード上に配線しており見た目が非常に悪かったのでユニバーサル基板上に実装することでスッキリさせました
作成した基板がこちら


makimaki_board1.jpg

合体後裏
makimaki_board2.jpg

合体後表
makimaki_board3.jpg

まず一番苦労したというかポイントだったのは片面のユニバーサル基板にどうやってシールドを実装するかでした
RaspberryPi の場合ピンがオスピンになっているためシールド側はメスソケットにしなければなりません
そしてユニバーサル基板が片面のため 7 セグの LED やフルカラーの LED もメスソケットの方に実装しなければなりません
そうすると RaspberryPi に指したときに向きが逆になってしまいます
本来なら 7 セグはメスソケットを逆の面に実装して実装面は 7 セグだけが見えるようにしたかったのですが、片面だとそれができませんでした

なので、写真にあるように 7 セグ部分が RaspberryPi Zero の頭の部分からちょうど飛び出すように作ることでとりあえず解決させました

本当は写真でいうところの白い面が RaspberryPi Zero の表の部分になるので、そっちに 7 セグを出したかったのですが片面だとそれが厳しかったということです

回路図

一応回路図を作成したので掲載しておきます
makimaki_circuit.png

フルカラーの LED の全ピンに 470kΩ の抵抗があるのは実は不要です
赤色 LED を制御するピンは入力電圧が確か低かったのでそこは抵抗を入れる必要があると思います
参考 : http://kakakikikeke.blogspot.jp/2016/01/raspberrypi-full-color-led.html
特に GND ピンは完全に不要です
他のピンで抵抗を挟んでいるのは LED の明るさをちょっと暗くしたかったので LED にかかる電圧を下げるために入れました
なので、LED が「ピカーッ!」と光っても問題ない場合は抵抗は不要です

7 セグを制御しているピンは過去の記事で使用したピンをそのまま使用しているだけなので、別に他のピンでも OK です
もう少し違うピンを使って余裕を持ってハンダできるようにすればハンダ付けももっと楽だったかもしれません
参考 : http://kakakikikeke.blogspot.jp/2016/01/raspberrypi-7-seg-led.html

長さを計測するホイールの土台を自作しました

トイレの長さを計測する部分にフォトインタラプタ+スリット付きのホイールを使っています
これは元々ジャンクのホイールマウスの部分を再利用しています

土台もマウスの土台を適当に加工したものを使っていたのですが、見た目が悪かったので 3D プリンタを使って土台の作成まで行ってみました

自作するときに土台の長さを長くすることでペーパーが少なくなってもホイールがペーパーに当たるようになったので最後まで長さを計測できるようになりました


makimaki_base1.jpg

基板とドッキング
makimaki_base2.jpg

ペーパーホルダーとドッキング
makimaki_base3.jpg

難しかったのはホイールを支える柱のところで中に溝を作らなければいけないのですが、この溝のサイズがホイールと中々合わずに苦労しました
また、基板と土台を固定化するのに小さいな穴があるのですが、その穴にちょうど入るようにピンみたいなのも作りました (写真 2 枚目)
これは見事寸法どおりに作成できました

最後に

以上まきまきくんのエンハンスでした

実はここには掲載してないですが、最近まきまきくん用の RaspberryPi Zero に HDD を挿して自宅 NAS としても使っています
もはやトイレを IoT 化するための RaspberryPi 感がゼロになってしまっていますが、別の RaspberryPi を自宅に設置するのも面倒だったので兼用にしています

USB のバスパワーもフルで供給して基板側のピン制御もして、内部でいろいろとプログラムが動いても問題なく動作している RaspberryPi Zero のポテンシャルは改めてすごいなと感じました

2016年10月21日金曜日

ニフティクラウドタイマーから mobile backend のスクリプト機能を定期的に呼び出す

概要

ニフティクラウドタイマー (以下タイマー) を使って定期的に mobile backend (以下 NCMB) のスクリプト機能を呼び出す方法を紹介します
データを集計したり、定期的に通知したりするのに使えると思います

環境

  • Ruby 2.2.4p230 (シグネチャを生成するのに利用)
    • bundler
  • タイマー 2016/10/18 時点
  • NCMB 2016/10/18 時点

NCMB での作業

まずは NCMB 側で作業を行います

事前準備

NCMB のコントロールパネルからアプリを生成をしておいてください
アプリ作成後「アプリケーションキー」と「クライアントキー」を使用します
timer_and_ncmb_getting_keys.png

スクリプトの作成と登録

今回は以下のサンプル (sample.js) を使用します
どんなリクエストが来ても hello と応答するだけの簡単なサンプルです

module.exports = function(req, res) {
  res.send("hello");
}

スクリプトの内容はあとから変更しても同じリクエストが使えるので、必要があれば適宜変更してください
作成できたらコントロールパネルからスクリプトをアップロードしましょう
timer_and_ncmb_upload_script.png

アップロードが完了すればとりあえず OK です
コンパネからテストできるので試しに手動で実行してみても OK です

リクエストの生成

タイマーからコールするためのリクエストを生成しましょう
NCMB では認証に Signature 方式を採用しているため Signature の生成を行う必要があります
さすがに手動だと厳しいのでプログラムから生成したいと思います

  • bundle init
  • vim Gemfile
gem "ruby-hmac", ">= 0.4.0"
  • bundle install
  • vim sig.rb
# encoding: utf-8
require 'time'
require 'hmac'
require 'hmac-sha2'
require 'base64'

def sig(script_name, access_identifier, secret_key)
  # paramters
  ncmb_uri = 'script.mb.api.cloud.nifty.com'
  ncmb_endpoint = "https://#{ncmb_uri}/"
  ncmb_version = "2015-09-01"
  method = "POST"
  path = "/script/#{script_name}"
  timestamp = Time.now.utc.xmlschema.gsub(":", "%3A").gsub("Z", ".456Z")
  common_params = {
    'SignatureMethod' => 'HmacSHA256',
    'SignatureVersion' => '2',
    'X-NCMB-Application-Key' => access_identifier,
    'X-NCMB-Timestamp' => timestamp,
  }
  # creating signature
  canonical_querystring = common_params.sort.collect { |key, value| [key, value].join('=') }.join('&')
  string_to_sign = "#{method}\n#{ncmb_uri}\n/#{ncmb_version}#{path}\n#{canonical_querystring}"
  hmac = HMAC::SHA256.new(secret_key)
  hmac.update(string_to_sign)
  signature = Base64.encode64(hmac.digest.to_s).chomp
  # show result
  cmd="curl -X \"#{method}\" -H \"X-NCMB-Application-Key: #{access_identifier}\" -H \"X-NCMB-Timestamp: #{timestamp}\" -H \"X-NCMB-Signature: #{signature}\" #{ncmb_endpoint}#{ncmb_version}#{path}"
  puts cmd
end

def main
  sig(ARGV[0], ARGV[1], ARGV[2])
end

main

実行方法は引数の 1 つ目がスクリプトの名前で 2 つ目がアプリケーションキー 3 つ目がクライアントキーになります

  • bundle exec ruby sig.rb sample.js access_key client_key

すると curl 用のコマンドを生成してくれます
この curl を実行しても OK ですが、これをタイマーに実行させます
今回のプログラムは NCMB のスクリプト用に作成したものなので、他でも使えるように汎用性はございません

タイマーでの作業

では、生成したリクエスト情報をタイマーに登録しましょう
タイマーの新規作成時の詳細設定でタイプに「HTTP」を選択してください
そしたら、生成した curl の情報を入力していましょう

access_key と timestamp, signature は生成したものを入力してください
以下のようにタイマーのコンパネで入力すれば OK です
timer_and_ncmb_setting_timer.png

タイマーを定期実行させる設定はお好きなように設定すれば OK です
とりあえず手動で実行できるので手動実行で動作確認してみましょう

動作確認

では、動作確認してみましょう
作成したタイマーを選択して「リクエストの実行」を選択します
タイマーの実行履歴を表示して「success」になっていることを確認しましょう
timer_and_ncmb_timer_ret.png

次に NCMB のコンパネに戻りスクリプトのログも確認してみましょう
タイマーから実行したログが確認できると思います
timer_and_ncmb_script_ret.png

ResponseStatus がとりあえず 200 になっていれば成功です

ちょっと残念なのはタイマーでもスクリプトのログでもレスポンスボディの内容 (今回の場合は「hello」)を確認することができません
なので、レスポンスボディの内容の確認は curl を使ってとりあえず確認してください

ちょっと応用

スクリプトの内容を変更して別の処理をできるようにしてみます

スクリプトを変更して IFTTT の Maker API をコールしてみる

スクリプトから Maker の Webhook をコールすることで通知機能を追加してみます
まず、IFTTT 側で Maker チャネルを使ったレシピを作成しておきましょう
今回は Maker + Gmail のレシピを作成しました
timer_and_ncmb_sample_maker.png

レシピを作成したらスクリプトを修正しましょう
以下のようなスクリプトにすることで Maker チャネルが発行した Webhook 用の URL をコールすることができます

  • vim sample.js
module.exports = function(req, res) {
  var request = require('superagent');
  body = {
    "value1": "hello"
  };
  request
    .post('https://maker.ifttt.com/trigger/your_maker_event/with/key/your-maker-token')
    .type('json')
    .send(body)
    .end(function(saerr, sares){
      if (saerr) {
        console.error('error requesting ifttt: ' + saerr.stack);
      }
      res.status(200).json(body);
    });
}

your_maker_event と yoru-maekr-token は各自で払い出された Maker チャネルの情報に書き換えてください
body で value1, value2, value3 を設定すると Maker 側で設定された値を使用することができます
例えば、上記の場合 value1 に設定された「hello」という文字列を送信する Gmail の本文などで使用することができます

これでタイマーを実行してみましょう
問題なく実行できて Gmail が届くと思います
ポイントはタイマー側の設定を何も変更しなくてもスクリプトを実行できるところです
タイマー側はそのままでスクリプトを自由に変更できるので、一度タイマー側を設定すれば好きなスクリプトを実行することができます

また、Webhook のリクエストは superagent を使いました
NCMB スクリプトでは require できるライブラリが決まっているので用途に合わせて利用してください
knex などもあるので、データベースへのアクセスをすることもできると思います

最後に

ニフティクラウドタイマーと NCMB スクリプトを連携してみました
応用では IFTTT と連携してスクリプトから通知できるようにもしてみました

今回の構成は自前のサーバで cron + nodejs を使っても全然できます
が、今回のようにサービスだけを使って実現することもでき、そうすることでサーバの運用をしなくて済むのが嬉しい点かなと思います

2016年8月1日月曜日

MODE の SmartModule から IFTTT の Maker に Webhook する方法

概要

MODE の SmartModule を使って IFTTT の Maker チャネルに Webhook を送信してみました
Maker でリクエストボティを使えるように変換してあげるのがポイントでした

環境

  • MODE 2016/08/01 時点
  • IFTTT 2016/08/01 時点

IFTTT で Maker レシピの作成

IFTTT で Maker チャネルを使ったレシピを作成します
今回は Maker チャネルでリクエストを受信したら (IF) Gmail にメールを送信してみます (Then)
mode_with_ifttt_creating_maker_recipe.png

「Event Name」は適当に設定して OK ですが、URL に使うのでそれっぽいのにしましょう
Gmail 側の設定は適当に設定しください

レシピが作成できたら Webhook 用の URL を取得します
mode_with_ifttt_checking_maker_info.png

これが取得できれば IFTTT での設定は OK です

mode2maker-proxy のデプロイ

このプロキシは MODE の SmartModule から送信された Json のボディ情報を Maker で使える形式に変更してくれます

今回は Heroku 上にデプロイします
Heroku ボタンがあるのでそれでデプロイしてください

あとは環境変数の設定をします

という感じで設定することで以下のように Json の変換をした上で、Maker にリクエストしてくれます

  • MODE からリクエストボディ
{
  "eventType":"abc",
  "eventData":{"light":"on"},
  "homeId":3,
  "timestamp":"2015-06-07T08:37:37.997281148Z",
  "originDeviceId":3
}
  • Maker にリクエストしてくれる Json のリクエストボディ
{
  "value1" : "abc",
  "value2" : {"light":"on"},
  "value3" : "on"
}

各 VALUE1, 3 の値は変換する Json のキー名を指定します
今回 VALUE3 に light を指定しています
light は Json のキー内には存在しません
その場合は eventData の中の Json を検索してキーがあればそのキーの値を設定してくれます
どこのキー名にも当てはまらない場合は null が設定されます

そして MAKER_URL の環境変数には IFTTT で作成した Maker チャネルの Webhook 用の URL を設定してください

MODE で SmartModule の作成

ここでのポイントはリクエストする URL を Heroku にデプロイしたプロキシアプリの URL を指定することです

自分は Heroku 上に kaka-mode2maker-proxy という名前でデプロイしているので、そのアプリの URL を SmartModule に指定しています

mode_with_ifttt_creating_smartmodule.png

Key は GEENRATE ボタンを押せば勝手に生成してくれます
これだけ気をつけて SmartModule は作成してください

動作確認

  • IFTTT の Maker を使ったレシピの作成
  • mode2maker-proxy のデプロイ
  • SmartModule の作成

が終わった準備 OK です
デバイスなりから MODE にイベントを送信してみましょう
するとプロキシが動作して Maker がコールされ Gmail が来ると思います

Gmail のメール本文の設定がデフォルトのままであれば以下のような内容で届くはずです
mode_with_ifttt_result.png

最後に

MODE + IFTTT の連携をしてみました
IFTTT が便利すぎるので通知系をやりたい場合はとりあえず IFTTT 経由しておけば安心だと思います

2016年7月28日木曜日

How to use the Slack Channel of "IoT Gateway for BLE" app

Abstract (概要)

このページでは IoT Gateway for BLE アプリの使い方を紹介します
I will introduce how to use of IoT Gateway for BLE app in this page.

Slack チャネルを使ってデバイスから Slack のチャネルに通知する方法を紹介します
I’ll show you how to notification from the device to the channel of the Slack using Slack channel.

アプリ自体のダウンロードは以下の URL からお願いします
App download of thank you from the following URL.
http://apple.co/1Ytn48L

Equipment (環境)

  • IoT Gateway for BLE v1.4
  • Slack ( at 27 July 2016 )
  • BLESerial2

To add an integration of Incomming Webhook (Incomming Webhook URL の作成)

まず、Slack に Incomming Webhooks のインテグレーションを追加します
First, you have to add an integration of webhooks.

https://slack.com/apps にアクセスし「incoming webhook」検索してください
You can search “incoming webhook” in https://slack.com/apps.

そして、Add Configuration からインテグレーションを追加します
Next, tap the “Add Configuration” button.

通知したいチャネルを選択して「Add Incoming Webhooks Integration」を選択したら追加完了です
Input a channel in slack you want notify, and click the “Add Incoming Webhooks Integration”.

アイコンや名前を適当に設定してください
Icon and name is whatever you want.

以下のような Webhook URL が取得できれば Slack 側の準備は OK です
It will be OK. You could get a webhook URL following as:
introduce_gateway_app_ver_slack_add_integration.png

To register the Slack info into the app (アプリに Slack チャネルを登録する)

作成した Slack の Incoming Webhooks の情報をアプリに登録します
Next, you have to regist you created an incoming webhooks URL into the app.

アプリを起動して Channels を選択してください
Launch the “IoT Gateway for BLE” app and tap the “Channels” button.
introduce_gateway_app_ver_mqtt_add_ch1.png

Slack チャネルを選択します
Tap the Slack channel in a list.
introduce_gateway_app_ver_mqtt_add_ch2.png

一番下の New を選択します
And tap a “New” button in the bottom.
introduce_gateway_app_ver_slack_add_ch1.png

すると Slack の Incoming Webhooks の情報を入力する画面になるので先ほど作成した Incoming Webhooks の情報を入力していきます
This will give you the chance to screen for entering the incoming webhooks info. Input the incoming webhooks data that you just created.

以下のように入力できれば OK です
It is OK if you can input your broker data following as:

Incoming Webhook URL のように長い文字列を iPhone で入力するのは大変です
It is hard to enter a long string as Incoming Webhook URL in the iPhone.

メールアプリやメモアプリのような PC とデータを共有できるアプリを使って URL の情報をコピペすると入力が簡単になります
Using an app that can share a data from PC, such as e-mail app and memo app will be information about the URL to easily input and to copy and paste.
introduce_gateway_app_ver_slack_add_ch2.png

接続テストができるので試してみてください
Please try the “Connect Test”.
“Success Connect” になれば問題なく MQTT ブローカーに接続できています
If you can get the message of “Success Connect”, it has been able to connect to the Slack channel without problems.
introduce_gateway_app_ver_slack_add_ch3.png

最後に Add を選択して Slack チャネルの作成を完了してください
Finally you tap the “Add” button, you have completed adding the new Slack channel into the app.

作成が完了すると Slack チャネルの一覧に戻ります
To return to the list of Slack channel then completed adding the new data.
introduce_gateway_app_ver_slack_add_ch4.png

Linking a Bluetooth device (Bluetooth デバイスと紐付ける)

作成したチャネルと Bluetooth デバイスを紐付けます
Your bluetooth device is going to be linked to the Slack channel that you created.

今回 Bluetooth デバイスは自作の BLESerial2 を使用します
In this time, we chose one BLE device of “BLESerial2” made by ourself.

SensorTag など GATT Profile をサポートしている Bluetooth デバイスであれば何でも OK です
Anything is OK if a BLE device that supports the GATT Profile such as SensorTag.

Gateway Home から “New” を選択します
Tap a “New” button in the Home.
introduce_gateway_app_ver_mqtt_add_ch1.png

デバイスモードの選択で “BLE” を選択します
And, tap a “BLE” button in the Device Mode.
またこのときスマートフォンの Bluetooth の機能を ON にしてください
Also, please turn ON the Bluetooth function on your smartphone.
introduce_gateway_app_ver_mqtt_link_ch1.png

BLESerial2 の電源を ON にしてください
To turn on the power of BLESerial2 device.
すると Device List の中に BLESerial2 が見つかるはずです
Then you should find a BLESerial2 in the “Device List”.
introduce_gateway_app_ver_mqtt_link_ch2.png

デバイスを選択したら次に Service を選択します
Next, you should select a Service of you have selected the device.
introduce_gateway_app_ver_mqtt_link_ch3.png

Service を選択したら Characteristic を選択しましょう
And next, you should select a Characteristic of you have selected the service.
今回 “IoT Gateway for BLE” では Notify タイプの Characteristic のみをサポートしています
Only supports “IoT Gateway for BLE” app in Notify type of Characteristic.
これは BLE デバイスからの通知情報をアプリ側で受け取る必要があるためです
Because, it is necessary to receive the notification data from the BLE device in the app side.
Read タイプの Characteristic だとアプリから定期的に値を読み込む必要があり、その場合だとデータが不要なときでも値を取得し続けてしまうため Notify タイプのみをサポートしています
To need to read on a regular basis the value from the application that it is Characteristic of the Read type.
Supports only Notify type for data that it is the case would continue to get the value even when not needed.
introduce_gateway_app_ver_mqtt_link_ch4.png

Notify タイプの Characteristic を選択したら “Notify Test” をタップして本当に問題ないか確認してください
You have selected the Notify type of Characteristic, please make sure not really a problem to tap the “Notify Test” button.
テストが問題なければ “Add” を選択して BLE デバイスを追加してください
Add your BLE device tapping the “Add” button if there is no problem.
introduce_gateway_app_ver_mqtt_link_ch5.png

するとチャネルと紐付ける画面になります
This will give you the chance to screen to link a channel.
今回は先ほど作成した Slack チャネルと紐付けるので “Slack” を選択します
This time select the “Slack” in a list, so you should link a incoming webhook of Slack channel you just created.
introduce_gateway_app_ver_mqtt_link_ch6.png

そして作成した Slack の Incomming Webhooks を選択し OK をタップします
And select the incoming webhooks of Slack that you created and then tap OK.
introduce_gateway_app_ver_slack_link_ch1.png

これで Slack チャネルと BLE デバイスの紐付けが完了しました
To linking the Slack channel and the BLE device is now completed.
この操作が Gateway を作成するという操作になります
This operation will be the operation called as “Creating a Gateway”.
作成が完了すると Gateway の一覧に戻るので作成された Gateway を確認してください
Please check your gateway which has created in the list of Gateways.
introduce_gateway_app_ver_slack_link_ch2.png

Test (動作確認)

それでは最後に動作確認してみます
So the last to try to test your gateway.
作成した Gateway を選択してください
Please select the Gateway you created.

すると Gateway を起動する画面になるので Start をタップしてください
Tap the “Start” button then it will be shown the screen to start the Gateway.
このとき BLE デバイスの電源は ON にしておいてください
Power on your BLE device.
introduce_gateway_app_ver_mqtt_test1.png

Gateway を起動すると自動的に登録した BLE デバイスを検索し接続してくれます
Search for BLE devices registered to start the Gateway, and has automatically connected to them.
BLE デバイスとの接続が完了すると紐付けした Slack チャネルとの接続が始まります
It will start connection with Slack cahnnel when the connection is completed with the BLE device.
Slack チャネルとの接続も完了すると Gateway の準備が完了しました
And also completed the connection to the Slack channel, the Gateway is ready !
introduce_gateway_app_ver_slack_test1.png

これで BLE デバイスから Notify の情報を送信するとそのデータがそのまま Slack のチャネルにメッセージとして通知されます
When you send the data of Notify from BLE device, it will be notified as messages to the specified Slack channel.
introduce_gateway_app_ver_slack_test2.png

Slack のチャネルを確認すると以下の用に通知されていることを確認できると思います
Finally, you can verify that messages are notified to your channel of Slack following as:
introduce_gateway_app_ver_slack_test3.png

Hot to use the "Non Device" mode in "IoT Gateway for BLE" app

Abstract (概要)

このページでは IoT Gateway for BLE アプリの使い方を紹介します
I will introduce how to use of IoT Gateway for BLE app in this page.

アプリ自体のダウンロードは以下の URL からお願いします
App download of thank you from the following URL.
http://apple.co/1Ytn48L

“Non Device” モードは実際の BLE デバイスを使わないで各チャネルにデータを送信することができるモードです
“Non Device” mode is capable of transmitting data to each channel without the actual BLE devices.

例えるなら IFTTT の “Do” のような機能になります
It likes a function of IFTTT “Do” button.

今回は “Non Device” モードを使って MQTT チャネルに Publish する方法を紹介します
This page shows you how to publish to MQTT channel using the “Non Device” mode.

Equipment (環境)

  • IoT Gateway for BLE v1.4
  • Cloud MQTT (Plan: Cute Cat)

Creating New device with “Non Device” mode (Non Device モードでデバイスの作成)

まず、”Non Device” モードでデバイスを作成します
First, you create a device in the “Non Device” mode

とは言っても、実際のデバイスは無いので名前を設定して終了です
Although , the actual device is nothing, so you’re finished setting the device name.

アプリを起動して “New” を選択してください
Launch the “IoT Gateway for BLE” app and tap the “New” button.
introduce_gateway_app_ver_mqtt_add_ch1.png

“Non Device” モードを選択します
Tap the “Non Device” mode in a list.
introduce_gateway_app_ver_mqtt_link_ch1.png

すると仮想のデバイス名を入力する画面になるので好きな名前を設定します
設定できたら “Add” を選択します
Then you set the virtual device name your like, you will be appeared the screen to enter data.
You tap “Add” button then you have finished setting the name.
introduce_gateway_app_ndm_add_dev1.png

Linking a Channel (チャネルと紐付ける)

作成したデバイスをチャネルと紐付けます
Next, you should link a device to the channel.

“Non Device” モードの編集画面で “Add” ボタンを押した後、既存のチャネルリストを選択する画面になります
After you pressed the “Add” button in the edit screen of “Non Device” mode, It will be on the screen to select an existing channel list.

今回は過去に作成した MQTT チャネルを利用します
In this time, to make use of the MQTT channel that you created in the past.

MQTT チャネルを選択します
Tap the MQTT channel in a list.
introduce_gateway_app_ver_mqtt_add_ch2.png

そして作成した CloudMQTT のブローカーを選択し OK をタップします
And select the CloudMQTT broker that you created and then tap OK.
introduce_gateway_app_ver_mqtt_link_ch7.png

これで MQTT チャネルと “Non Device” デバイスの紐付けが完了しました
To linking the MQTT channel and the “Non Device” device is now completed.
この操作が “Non Device” を使った Gateway を作成するという操作になります
This operation will be the operation called as “Creating a Gateway” using “Non Device” mode.
作成が完了すると Gateway の一覧に戻るので作成された Gateway を確認してください
Please check your gateway which has created in the list of Gateways.
introduce_gateway_app_ndm_link_ch1.png

Test (動作確認)

それでは最後に動作確認してみます
So the last to try to test your gateway.
作成した Gateway を選択してください
Please select the Gateway you created.

すると Gateway を起動する画面になるので Start をタップしてください
Tap the “Start” button then it will be shown the screen to start the Gateway.
introduce_gateway_app_ver_mqtt_test1.png

Gateway を起動すると MQTT チャネルとの接続が始まります
It will start connection with MQTT cahnnel when starting the gateway.
“Non Device” モードではデバイスは存在しないのでデバイスとの接続処理はありません
There is no connection process with some device because the device does not exist in the “Non Device” mode actually.
MQTT チャネルとの接続が完了すると Gateway の準備が完了しました
To complete the connection to the MQTT channel, the Gateway is ready !
Gateway が準備できると上部に “Do” ボタンが表示されます
When the Gateway is ready, the “Do” button will be displayed at the top.
introduce_gateway_app_ndm_test2.png

これで “Non Device” から MQTT チャネルにデータを送信することができます
You can send the data to MQTT channel using the “Do” button of your “Non Device”.
“Do” ボタンを押してみましょう
Let’s press the “Do” button.
introduce_gateway_app_ndm_test3.png

mosquitto_sub コマンドを使った動作確認だと以下のように表示されます
For instance, it is a test that uses a mosquitto_sub command appears as follows:
In the case of “Non Device”, the value ​​that are embedded in the {value} variable will be 0 at a fixed.
introduce_gateway_app_ndm_test1.png

【Getting Started】How to use the MQTT Channel of "IoT Gateway for BLE" app

Abstract (概要)

このページでは IoT Gateway for BLE アプリの使い方を紹介します
I will introduce how to use of IoT Gateway for BLE app in this page.

Getting Started として MQTT チャネルを使ったデータの Publish をする方法を紹介します
This page shows how to publish the data with MQTT channel as Getting Started.

アプリ自体のダウンロードは以下の URL からお願いします
App download of thank you from the following URL.
http://apple.co/1Ytn48L

Equipment (環境)

  • IoT Gateway for BLE v1.4
  • Cloud MQTT (Plan: Cute Cat)
  • BLESerial2

Registration CloudMQTT and making MQTT broker (CloudMQTT の登録とブローカーの作成)

CloudMQTT にアカウントを作成します
Please create an account in CloudMQTT.

アカウント登録にはメールアドレスが必要です
To regist an account is required e-mail address.

アカウントを作成したらブローカーを作成してください
After you created an account, you have to make a broker.

以下のようにブローカーの情報が取得できれば OK です
It is OK if you can get information of the broker in CloudMQTT following as:
introduce_gateway_app_ver_mqtt_broker.png

あとはブローカーにアクセスするユーザと ACL の設定をしてください
You also have to add a user who can access topics of your broker.
introduce_gateway_app_ver_mqtt_user.png

To register a broker info into the app (アプリに MQTT チャネルを登録する)

作成した MQTT の情報をアプリに登録します
Next, you have to regist you created MQTT broker into the app.

アプリを起動して Channels を選択してください
Launch the “IoT Gateway for BLE” app and tap the “Channels” button.
introduce_gateway_app_ver_mqtt_add_ch1.png

MQTT チャネルを選択します
Tap the MQTT channel in a list.
introduce_gateway_app_ver_mqtt_add_ch2.png

一番下の New を選択します
And tap a “New” button in the bottom.
introduce_gateway_app_ver_mqtt_add_ch3.png

すると MQTT のブローカー情報を入力する画面になるので先ほど作成したブローカー情報とユーザ情報を入力していきます
This will give you the chance to screen for entering the MQTT broker info. Input your broker info and the user info that you just created.

以下のように入力できれば OK です
It is OK if you can input your broker data following as:
introduce_gateway_app_ver_mqtt_add_ch4.png

接続テストができるので試してみてください
Please try the “Connect Test”.
“Success Connect” になれば問題なく MQTT ブローカーに接続できています
If you can get the message of “Success Connect”, it has been able to connect to the MQTT broker without problems.
introduce_gateway_app_ver_mqtt_add_ch5.png

最後に Add を選択して MQTT チャネルの作成を完了してください
Finally you tap the “Add” button, you have completed adding the new broker in your MQTT channel.

作成が完了すると MQTT チャネルの一覧に戻ります
To return to the list of MQTT channel then completed adding the new broker.
introduce_gateway_app_ver_mqtt_add_ch6.png

Linking a Bluetooth device (Bluetooth デバイスと紐付ける)

作成したチャネルと Bluetooth デバイスを紐付けます
Your bluetooth device is going to be linked to the MQTT channel that you created.

今回 Bluetooth デバイスは自作の BLESerial2 を使用します
In this time, we chose one BLE device of “BLESerial2” made by ourself.

SensorTag など GATT Profile をサポートしている Bluetooth デバイスであれば何でも OK です
Anything is OK if a BLE device that supports the GATT Profile such as SensorTag.

Gateway Home から “New” を選択します
Tap a “New” button in the Home.
introduce_gateway_app_ver_mqtt_add_ch1.png

デバイスモードの選択で “BLE” を選択します
And, tap a “BLE” button in the Device Mode.
またこのときスマートフォンの Bluetooth の機能を ON にしてください
Also, please turn ON the Bluetooth function on your smartphone.
introduce_gateway_app_ver_mqtt_link_ch1.png

BLESerial2 の電源を ON にしてください
To turn on the power of BLESerial2 device.
すると Device List の中に BLESerial2 が見つかるはずです
Then you should find a BLESerial2 in the “Device List”.
introduce_gateway_app_ver_mqtt_link_ch2.png

デバイスを選択したら次に Service を選択します
Next, you should select a Service of you have selected the device.
introduce_gateway_app_ver_mqtt_link_ch3.png

Service を選択したら Characteristic を選択しましょう
And next, you should select a Characteristic of you have selected the service.
今回 “IoT Gateway for BLE” では Notify タイプの Characteristic のみをサポートしています
Only supports “IoT Gateway for BLE” app in Notify type of Characteristic.
これは BLE デバイスからの通知情報をアプリ側で受け取る必要があるためです
Because, it is necessary to receive the notification data from the BLE device in the app side.
Read タイプの Characteristic だとアプリから定期的に値を読み込む必要があり、その場合だとデータが不要なときでも値を取得し続けてしまうため Notify タイプのみをサポートしています
To need to read on a regular basis the value from the application that it is Characteristic of the Read type.
Supports only Notify type for data that it is the case would continue to get the value even when not needed.
introduce_gateway_app_ver_mqtt_link_ch4.png

Notify タイプの Characteristic を選択したら “Notify Test” をタップして本当に問題ないか確認してください
You have selected the Notify type of Characteristic, please make sure not really a problem to tap the “Notify Test” button.
テストが問題なければ “Add” を選択して BLE デバイスを追加してください
Add your BLE device tapping the “Add” button if there is no problem.
introduce_gateway_app_ver_mqtt_link_ch5.png

するとチャネルと紐付ける画面になります
This will give you the chance to screen to link a channel.
今回は先ほど作成した MQTT チャネルと紐付けるので “MQTT” を選択します
This time select the “MQTT” in a list, so you should link a BLE device to you just created MQTT channel.
introduce_gateway_app_ver_mqtt_link_ch6.png

そして作成した CloudMQTT のブローカーを選択し OK をタップします
And select the CloudMQTT broker that you created and then tap OK.
introduce_gateway_app_ver_mqtt_link_ch7.png

これで MQTT チャネルと BLE デバイスの紐付けが完了しました
To linking the MQTT channel and the BLE device is now completed.
この操作が Gateway を作成するという操作になります
This operation will be the operation called as “Creating a Gateway”.
作成が完了すると Gateway の一覧に戻るので作成された Gateway を確認してください
Please check your gateway which has created in the list of Gateways.
introduce_gateway_app_ver_mqtt_link_ch8.png

Test (動作確認)

それでは最後に動作確認してみます
So the last to try to test your gateway.
作成した Gateway を選択してください
Please select the Gateway you created.

すると Gateway を起動する画面になるので Start をタップしてください
Tap the “Start” button then it will be shown the screen to start the Gateway.
このとき BLE デバイスの電源は ON にしておいてください
Power on your BLE device.
introduce_gateway_app_ver_mqtt_test1.png

Gateway を起動すると自動的に登録した BLE デバイスを検索し接続してくれます
Search for BLE devices registered to start the Gateway, and has automatically connected to them.
BLE デバイスとの接続が完了すると紐付けした MQTT チャネルとの接続が始まります
It will start connection with MQTT cahnnel when the connection is completed with the BLE device.
MQTT チャネルとの接続も完了すると Gateway の準備が完了しました
And also completed the connection to the MQTT channel, the Gateway is ready !
introduce_gateway_app_ver_mqtt_test2.png

これで BLE デバイスから Notify の情報を送信するとそのデータがそのまま MQTT に Publish することができます
When you send the data of Notify from BLE device, it will be published to the MQTT broker.
introduce_gateway_app_ver_mqtt_test3.png

mosquitto_sub コマンドを使った動作確認だと以下のように表示されます
For instance, it is a test that uses a mosquitto_sub command appears as follows:
introduce_gateway_app_ver_mqtt_test4.png