Upload
kouhei-ohi
View
713
Download
0
Embed Size (px)
Citation preview
MyThings (IDCFチャンネル)
調べてみた
Dropsystem Co., Ltd.
‣ 自己紹介
•所属:株式会社ドロップシステム •仕事:アプリとかサーバサイドの開発してます •電子工作は素人
1)myThingsって何? • ざっくり 2)ラズパイやってみる • 電子工作 3)IDCFチャンネルってなんやねん • 調べてみる 4)最後に • 感想
(1)myThingsって何?
myThings?
My Things?
(1)myThingsって何?2015年07月27日にヤフー株式会社がリリース「モノ、WEBをつなぐプラットフォーム」
IFTTTの日本版・if this then that
・my things
日本語対応で安心のYahoo製。期待。
http://nextdeveloper.hatenablog.com/entry/2015/08/04/182952競合勢力図(1)myThingsって何?
(1)myThingsって何?
• iOSとAndroidアプリが提供されている•他社のアプリやガジェットの機能を組合せる事が可能•各アプリはトリガーにもなるしアクションにもなる
アクションは複数可能
・明日渋谷が雨だったら・push通知でお知らせ・ついでにツイートもみたいな感じ
(1)myThingsって何?
•サービス間の連携をmyThingsが仲介してくれる•アプリのユーザー認証•アプリの組み合わせ•イベント(トリガー)の受付•アクション通知
•アプリ提供側に対しても新たな可能性を提供•提携アプリが増えて来ると更に面白い事になりそう
(1)myThingsって何?
アプリのUIは
so good!!
綺麗に出来てます
架空の幼なじみが毎朝メッセージで起こしてくれる。
非常に興味深い。
Jawbone UPのリストバンドを購入決定。
Apple Watchも対応したら嬉しいんですけど。
(1)myThingsって何?
(2)ラズパイやってみる
Raspberry pi
Raspberry pi2 Model B
みんな大好きラズパイ ちょっとやってみたかった。
超音波測距
ADコンバータ
アナログなセンサー類をデジタルに変換
LCD
普通にかぶせるとラズパイのGPIOピンがほとんど塞がれる
文字を出せるのは単純に面白い
Hover
ホバーでジェスチャ操作可能まだ動かしてない。。
PWM
WiringPiでパルス幅変調「何がLチカだよ」と、馬鹿にしてたら面白い。ごめんなさい。
照度を変えたり無駄に遊べる
温湿度気圧計
IDCFさんにもらった。電子工作キットに入っていた温度センサは精度が低かった。これは精度高くて素敵。レンタルらしいけど返さないと思う
においセンサ
TGS2450
頑張って屁を集めた回路が複雑でラズパイだけだとちょっと厳しい別のセンサで再挑戦
(3)IDCFチャンネルって何?
IDCFチャンネルってなんやねん
我らがIDCFチャンネル唯一の開発者向けで目立ってます!
一番下だけど。
(3)IDCFチャンネルって何?
IDCFチャンネルってなんやねん
1)trigger-1の条件を満たしたら2)Slackのtestルームに投稿
トリガーを自分で作れるのはIDCFチャンネルだけ!可能性は無限大!
(3)IDCFチャンネルって何?
IDCFチャンネルってなんやねん
1)天気予報次第で2)action-5を発動
アクションも自分で作れるのはIDCFチャンネルだけ!可能性は無限大!
(3)IDCFチャンネルって何?
IDCFチャンネルってなんやねんラズパイで遊んだし、そろそろ調べるか。ドキュメントはどこかな?http://www.idcf.jp/cloud/iot/detail01.html
(3)IDCFチャンネルって何?
IDCFチャンネルってなんやねん
あれ?
(3)IDCFチャンネルって何?
IDCFチャンネルってなんやねんあれ?その変詳しく。myThingsとの絡み具合。でもまあ、他にドキュメントあるでしょ。
(3)IDCFチャンネルって何?
IDCFチャンネルってなんやねん
ここからかな?
ふむふむ
(3)IDCFチャンネルって何?
IDCFチャンネルってなんやねん
お?ここからですね?
http://www.idcf.jp/cloud/iot/
(3)IDCFチャンネルって何?
IDCFチャンネルってなんやねん
同じとこやんけ!!!http://www.idcf.jp/cloud/iot/detail01.html
センサー
(ラズパイ.etc)
MQTT
IDCFクラウド
Ubuntu VM
Publisher SubscriberBroker
IDCFチャンネルのシステム構成(予想)
myThings
IDCFチャンネルがトリガーのとき
myThings
MyThings対応アプリmyThings対応アプリ
IDCFチャンネルがアクションのとき
HTTPS
Meshbluコンテナ
HTTPS
MyThings対応アプリ
myThingsに設定されたアクションのアクション(action-1~5)宛に通知。データの内容は様々で通常は15分間隔
myThingsに設定したアクション(MyThings対応アプリ)のアクションを実行IDCFチャンネル側から動的なメッセージ(変数)を送信出来るのか不明。。
MyThings対応アプリ
トリガー発火!
センサーデータ送信
アクションデータ通知 アクション
発行 購読
message topic状況に応じてトリガーを登録
data topic
トリガー発火
Docker-Host(IDCFクラウドVM)
openresty meshblu
API
nginx Node.js
Lua
MQTT
1883443
mongo
一部コマンド以外はmeshbluのAPIにリバースプロキシ
Mosca
27017
data
redis
6379
device
cache
iotutil
Dockerコンテナ群
443 1883
iotutil コマンド
Node.js
REST
deviceの登録やリスト表示コマンド
を提供redisへのdevice
データ読み書き device
IDCFチャンネルのサーバ構成(予想)
IDCFチャンネルサーバの作り方とりあえずIDCFクラウドで「light.S1」「Ubuntu 14.04」を追加ディスク無しで作成
IDCFチャンネルサーバの作り方
IPアドレスを追加して(もしくはデフォルトのソースIPでも可)
FWで8088,1883,443,22を解放(22と8088はアドレス制限した方が良し)
IDCFチャンネルサーバの作り方
なんだかんだでサーバにSSHして、公式サイトのhttp://www.idcf.jp/cloud/iot/detail01.html
の通りに設定
mkdir ~/iot_apps && cd ~/iot_appsgit clone --recursive https://github.com/IDCFChannel/meshblu-composecd meshblu-compose./bootstrap.sh
クライアントとmyThingsをうまい事仲介してくれる、IoTなDockerコンテナ群が出来上がります。meshbluというプラットフォームを利用しているようですが、読み方が分かりません。。
IDCFチャンネル
Dockerの構成
freeboard:sub出来るグラフィカルなウェブサーバmeshbulu:MQTTプラットフォームmongo:センサデータ等の格納openresty:REST-APIのリバースプロキシredis:iotutilコマンド専用?
IDCFチャンネルセンサー(ラズパイ)=>IDCFチャンネル MQTT送信テスト
IDCFチャンネル
もらった温湿度計測器bme280
sampleソースでaction-3へpublish
温度、湿度、気圧をIDCFチャンネルサーバにMQTT送信してる
IDCFチャンネルもらった温湿度計測器bme280
sampleソースの一部TRIGGER_3への送信とsleepを調整
IDCFチャンネル
もらった温湿度計測器bme280
action-3をsubscribe
温度、湿度、気圧をIDCFチャンネルサーバでMQTT受信毎秒計測結果を受信する
IDCFチャンネルもらった温湿度計測器bme280
action-3をsubscribeするfreeboardを表示してみるちゃんと毎秒更新される。
IDCFチャンネル
ただ、ここままではmyThingsは関係無し
IDCFチャンネル
myThingsでトリガーとして利用するにはdataトピックに登録する必要がある
IDCFチャンネルのサイトを見てもわからず。というか、ドキュメントは見当たらず。ソースを追わないと分からなそう。
とりあえずmyThingsとIDCFチャンネルのテストとして「trigger-3が発火したらslackにメッセージを投稿する」をやってみる。
IDCFチャンネル
myThingsでトリガーとして利用するにはdataトピックに登録する必要がある
1)myThingsアプリ左の写真のように設定する2)trigger-3にpublish
trigger-3のUUID,TOKENをusername,pwとして、dataトピックにデータをpublishします。データは何でもOK。{{placeholder}}を使えると思ったけどやり方が不明。
IDCFチャンネル
slackに無事届きました。myThingsの実行タイミングは15分毎らしいのでスマフォアプリの
「手動実行」を押した方が早いです。triggerに入れたメッセージを表示させたかったのですが
仕様が分かりませんでした。
IDCFチャンネル
triggerに発火させてtcpdumpを見るmyThingsには443で接続している模様
03:50:15.347977 IP 10.6.0.2.443 > 183.79.179.16.43581: Flags [S.], seq 1457483178, ack 3549494285, win 28960, options [mss 1460,sackOK,TS val 173324349 ecr 2800741818,nop,wscale 7], length 003:50:15.365881 IP 183.79.179.16.43581 > 10.6.0.2.443: Flags [.], ack 1, win 115, options [nop,nop,TS val 2800741836 ecr 173324349], length 0
dig -x 183.79.179.16 NXDOMAINだけど79.183.in-addr.arpa. 633 IN SOA yahoo.co.jp. postmaster.yahoo.co.jp. 2015082101 1800 900 1209600 900yahooっぽい
IDCFチャンネルidcfchannel/iotutilって何?いつもは毎回捨てるコマンド専用コンテナ中をみてみるsudo docker-compose up -d iotutilsudo docker exec -it meshblucompose_iotutil_1 bash
root 11 0.2 3.8 612884 39052 ? S 21:53 0:01 node app.jsここもnode.jsが動いている$ cd /app/commands$ lsdeviceCommand.js statusCommand.js
deviceCommand.jsのvar master = 'owner', defaultTimes = 5;
defaultTimesを10に変えたら怒られるだろうか。ここでtrriger-*,action-*,owner等のdevice登録をしている。自由に名前変えてもいいのかしら?もう少し追ってみる必要がある
IDCFチャンネル
天気とか、はてぶをトリガーに指定した場合、下記のようにMQTTでJSONメッセージが届きます。こいつをsubscribeするスクリプト作って、閾値を超えたら直接何かする、もしくは、ラズパイで検知して物理的に何かさせる、というプログラムを組むのが正しい使い方なのかな。IDCFチャンネルをトリガーにした場合の使い方はもう少し研究が必要な印象でした。myThingsとの連携仕様の詳細を知りたいです。
(3)IDCFチャンネルって何?
IDCFチャンネルってなんやねんmyThingsの組み合わせで唯一、デベロッパーに解放された領域。
ドキュメントちゃんとせえや!!!!!!!!!!! 通報しておきました。
(4)最後に
ラズパイは色々動かして遊んでみて電子工作に興味が湧きました。 すごく難しいですけど。
myThings連携部分は簡単だろうと舐めていたら時間が足りませんでした。 なにか実演したかったんですが、次回あれば頑張ります。
(4)最後にインターネッツもいいけどやっぱり実物はいいですね。 IoTって頑張って言うとちょっと気恥ずかしいですが、 世の中は確実にものがネットに繋がるのが当たり前になるので、 まだやってない人は IDCFチャンネルとmyThings使って「物」作りやって行きましょう。
おわり。
今ならIDCFクラウドのクーポンが使えるのでラズパイがあればほとんど無料で遊べます。
有り難うございました