mqtt と quickstart と nodered
TRANSCRIPT
MQTT と QuickStart と Node-RED
日本アイ・ビー・エム 木村 桂2015.Oct.13 @dotnsf
今日のテーマ
どうすればこいつにデータを渡せるか?
MQTT わかりますか?
HTTP と MQTT の違い
HTTPサーバー
① リクエスト
③ レスポンス
MQTTブローカー
パブリッシャー
パブリッシャー
パブリッシャー
サブスクライバー
サブスクライバー
サブスクライバー
サブスクライバーパブリッシャー&サブスクライバー
パブリッシャーは送るだけサブスクライバーは受け取るだけ
両方でもよい
「リクエストしてくれた人にレスポンスを返す」一連の処理
→② に時間がかかると全体としてのパフォーマンス悪化
MQTT はシンプルで軽量
② 処理
MQTT と QuickStart と Node-RED の関係
Node-REDアプリ
IBM Bluemix
Node-REDアプリ
IBM Bluemix
IBM IoTFoundation
MQTT ブローカー
MQTT パブリッシャー
MQTT サブスクライバー
quickstart.messaging.internetofthings.ibmcloud.com:1883認証なしで誰でも使えます!
MQTT と QuickStart と Node-RED の関係
独自アプリや独自デバイスで Node-RED にデータを送るには・・・
Node-REDアプリ
IBM Bluemix
IBM IoTFoundation
MQTT ブローカー
MQTT パブリッシャー
MQTT サブスクライバー
独自アプリ独自デバイスこの部分の MQTT パブリッシュ処理が
実現できれば Node-RED に送信できる。送信元はデバイスである必要はない!
Pahohttp://www.eclipse.org/paho/
MQTT の実装を簡単にするオープンソースライブラリ( C, Java, Python, JavaScript, .. )
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();
}
}
}
:
:
Node-RED の更なる活用のために・・
Node-REDアプリ
IBM Bluemix
IBM IoTFoundation
MQTT ブローカー
MQTT パブリッシャー
MQTT サブスクライバー
独自アプリ独自デバイス
Node-RED の更なる発展/活用のために・・• Paho などのライブラリを使って、 Quickstart へ MQTT パブ
リッシュするアプリやデバイスを多く作り出す• デバイス ID は必ずユニークになるように!• できれば公開しましょう!
• Node-RED も QuickStart も、 IoT /デバイス専用ではない• リアルタイム性が求められるシステム内で、軽量な通信手段として
IBM IoTFoundation
MQTT ブローカー
MQTT パブリッシャー
独自アプリ独自デバイス
参考情報• 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