12
MQTT と QuickStart と Node-RED とととと ととと とと とと と ・・ 2015.Oct.13 @dotnsf

MQTT と Quickstart と NodeRED

Embed Size (px)

Citation preview

Page 1: MQTT と Quickstart と NodeRED

MQTT と QuickStart と Node-RED

日本アイ・ビー・エム  木村 桂2015.Oct.13 @dotnsf

Page 2: MQTT と Quickstart と NodeRED

今日のテーマ

どうすればこいつにデータを渡せるか?

Page 3: MQTT と Quickstart と NodeRED

MQTT わかりますか?

Page 4: MQTT と Quickstart と NodeRED

HTTP と MQTT の違い

HTTPサーバー

① リクエスト

③ レスポンス

MQTTブローカー

パブリッシャー

パブリッシャー

パブリッシャー

サブスクライバー

サブスクライバー

サブスクライバー

サブスクライバーパブリッシャー&サブスクライバー

パブリッシャーは送るだけサブスクライバーは受け取るだけ

両方でもよい

「リクエストしてくれた人にレスポンスを返す」一連の処理

→② に時間がかかると全体としてのパフォーマンス悪化

MQTT はシンプルで軽量

② 処理

Page 5: MQTT と Quickstart と NodeRED

MQTT と QuickStart と Node-RED の関係

Node-REDアプリ

IBM Bluemix

Page 6: MQTT と Quickstart と NodeRED

Node-REDアプリ

IBM Bluemix

IBM IoTFoundation

MQTT ブローカー

MQTT パブリッシャー

MQTT サブスクライバー

quickstart.messaging.internetofthings.ibmcloud.com:1883認証なしで誰でも使えます!

MQTT と QuickStart と Node-RED の関係

Page 7: MQTT と Quickstart と NodeRED

独自アプリや独自デバイスで Node-RED にデータを送るには・・・

Node-REDアプリ

IBM Bluemix

IBM IoTFoundation

MQTT ブローカー

MQTT パブリッシャー

MQTT サブスクライバー

独自アプリ独自デバイスこの部分の MQTT パブリッシュ処理が

実現できれば Node-RED に送信できる。送信元はデバイスである必要はない!

Page 8: MQTT と Quickstart と NodeRED

Pahohttp://www.eclipse.org/paho/

MQTT の実装を簡単にするオープンソースライブラリ( C, Java, Python, JavaScript, .. )

Page 9: MQTT と Quickstart と NodeRED

Java サンプルpublic class QuickstartPublisher implements MqttCallback {

MqttClient myClient = null;

MqttConnectOptions connOpt;

//. MQTT ブローカー

static final String BROKER_URL = "tcp://quickstart.messaging.internetofthings.ibmcloud.com:1883";

/**

* runClient

*/

public void runClient( String payload, String deviceid, String devicetype, String eventtype ) {

// setup MQTT Client

String clientID = "d:quickstart:" + devicetype + ":" + deviceid;

connOpt = new MqttConnectOptions();

connOpt.setCleanSession( true );

connOpt.setKeepAliveInterval( 30 );

// Connect to Broker

try{

myClient = new MqttClient( BROKER_URL, clientID );

myClient.setCallback( this );

myClient.connect( connOpt );

} catch (MqttException e) {

e.printStackTrace();

}

if( myClient != null ){

// setup topic

String myTopic = "iot-2/evt/" + eventtype + "/fmt/json";

MqttTopic topic = myClient.getTopic( myTopic );

int pubQoS = 0;

MqttMessage message = new MqttMessage( payload.getBytes() );

message.setQos( pubQoS );

message.setRetained( false );

// Publish the message

MqttDeliveryToken token = null;

try{

// パブリッシュして、

token = topic.publish( message );

// ブローカーに送られることを確認

token.waitForCompletion();

}catch( Exception e ){

e.printStackTrace();

}

// disconnect

try{

myClient.disconnect();

}catch( Exception e ){

e.printStackTrace();

}

}

}

:

:

Page 10: MQTT と Quickstart と NodeRED

Node-RED の更なる活用のために・・

Node-REDアプリ

IBM Bluemix

IBM IoTFoundation

MQTT ブローカー

MQTT パブリッシャー

MQTT サブスクライバー

独自アプリ独自デバイス

Page 11: MQTT と Quickstart と NodeRED

Node-RED の更なる発展/活用のために・・• Paho などのライブラリを使って、 Quickstart へ MQTT パブ

リッシュするアプリやデバイスを多く作り出す• デバイス ID は必ずユニークになるように!• できれば公開しましょう!

• Node-RED も QuickStart も、 IoT /デバイス専用ではない• リアルタイム性が求められるシステム内で、軽量な通信手段として

IBM IoTFoundation

MQTT ブローカー

MQTT パブリッシャー

独自アプリ独自デバイス

Page 12: MQTT と Quickstart と NodeRED

参考情報• QuickstartPublisher• https://github.com/dotnsf/QuickstartPublisher

• FxQuickstart• https://github.com/dotnsf/FxQuickstart

• FX• http://fx.mybluemix.net/

• 為替情報を IoT Foundation Quickstart(MQTT ブローカー ) に送る• http://dotnsf.blog.jp/archives/1039352247.html

• ブログ• http://dotnsf.blog.jp/tag/nodered