Sample MQTT program - simple send and receive (MQ Telemetry Transport) for GainSpan Wi-Fi module

Dependencies:   C12832 GSwifiInterface MQTT mbed-rtos mbed

Fork of HelloMQTT by MQTT

mbedのMQTTグループで保守されているMQTTライブラリを GainSpan Wi-Fi モジュールへ対応させたサンプルです。

MQTT (MQ Telemetry Transport) とは、IoTやM2M向け デバイス間通信のためのプロトコルです。

MQTTサーバーには http://iot.eclipse.org/ のサンドボックスを使います。 送信したメッセージをエコーバックしてくるだけの動作をします。


mbed Application Board を使う場合は次の行のコメントアウトを外すとLCDへ表示するようになる。

#define MBED_APPLICATION_BOARD

GainSpanモジュールの接続ピンについては次の行で指定する。

    gs = new GSwifiInterface(p9, p10, NC, NC, p30, NC, 9600); //tx, rx, cts, rts, reset, alarm, baud

Wi-Fiアクセスポイントは次の行で指定する。

#define SEC  GSwifi::SEC_WPA_PSK
#define SSID "SSID"
#define PASS "PASSPHRASE"

Files at this revision

API Documentation at this revision

Comitter:
icraggs
Date:
Sun May 11 19:17:05 2014 +0000
Parent:
5:4a257f6ac09a
Parent:
6:e4c690c45021
Child:
8:a3e3113054a1
Commit message:
Merge latest changes

Changed in this revision

MQTT.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/MQTT.lib	Fri May 09 23:06:43 2014 +0000
+++ b/MQTT.lib	Sun May 11 19:17:05 2014 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/teams/mqtt/code/MQTT/#d13a6c558164
+http://mbed.org/teams/mqtt/code/MQTT/#8b2abe9bd814
\ No newline at end of file
--- a/main.cpp	Fri May 09 23:06:43 2014 +0000
+++ b/main.cpp	Sun May 11 19:17:05 2014 +0000
@@ -45,34 +45,12 @@
     lcd.puts((char*)message->payload);
 }
 
-int connect(MQTT::Client<IPStack, Countdown>::connectionLostInfo* info)
-{
-    char* hostname = "m2m.eclipse.org";
-    int port = 1883;
-    
-    lcd.cls();
-    lcd.locate(0,3);
-    lcd.printf("%s:%d\n", hostname, port);
-    printf("Connecting to %s:%d\n", hostname, port);
-    int rc = info->network->connect(hostname, port);
-    lcd.printf("TCP connect = %d\n", rc);
-    printf("rc from TCP connect is %d\n", rc);
- 
-    MQTTPacket_connectData data = MQTTPacket_connectData_initializer;       
-    data.MQTTVersion = 3;
-    data.clientID.cstring = "mbed-icraggs";
-    rc = info->client->connect(&data);
-    lcd.printf("MQTT connect = %d\n", rc);
-    printf("rc from MQTT connect is %d\n", rc);
-    
-    return rc;
-}
 
 
 int main(int argc, char* argv[])
 {   
     IPStack ipstack = IPStack();
-    float version = 0.3;
+    float version = 0.43;
     char* topic = "mbed-sample";
     
     lcd.printf("Version is %f\n", version);
@@ -80,10 +58,19 @@
               
     MQTT::Client<IPStack, Countdown> client = MQTT::Client<IPStack, Countdown>(ipstack);
     
-    client.setConnectionLostHandler(connect);
-
-    MQTT::Client<IPStack, Countdown>::connectionLostInfo info = {&client, &ipstack};
-    int rc = connect(&info);
+    char* hostname = "m2m.eclipse.org";
+    int port = 1883;
+    lcd.printf("Connecting to %s:%d\n", hostname, port);
+    int rc = ipstack.connect(hostname, port);
+    if (rc != 0)
+        lcd.printf("rc from TCP connect is %d\n", rc);
+ 
+    MQTTPacket_connectData data = MQTTPacket_connectData_initializer;       
+    data.MQTTVersion = 3;
+    data.clientID.cstring = "mbed-icraggs";
+    rc = client.connect(&data);
+    if (rc != 0)
+        lcd.printf("rc from MQTT connect is %d\n", rc);
     
     rc = client.subscribe(topic, MQTT::QOS1, messageArrived);   
     if (rc != 0) {
--- a/mbed-rtos.lib	Fri May 09 23:06:43 2014 +0000
+++ b/mbed-rtos.lib	Sun May 11 19:17:05 2014 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/mbed-rtos/#f88660a9bed1
+http://mbed.org/users/mbed_official/code/mbed-rtos/#5dfe422a963d