Sample Client Code that showcases how to use IBMIoTF client library to connect the mbed FRDM-K64F device to the IBM Internet of Things Cloud service in registered mode.

Dependencies:   IBMIoTF

Here are the instructions to use this Client Sample:

- Get the program either in online compiler / local to the system

- Edit main.cpp to update the below pasted lines to contain correct Watson IoT Platform configuration:

char *orgId = "OrganizationID";

char *deviceType = "DeviceType";

char *deviceId = "DeviceID";

char *method = "token";

char *token = "DeviceToken";

- Save the changes and compile to get binary

- Deploy obtained binary onto FRDM K64F board and press reset button to start execution of the program

- Use any of the suitable terminal utility (screen in MAC OS) to see the log statements printed onto console by the Client Sample

- By default, the client sample after establishing secure connection to Watson IoT Platform, publishes 10 device events at the interval of 3 seconds and terminates

- Client sample subscribes to receive the device commands as well, one can try sending device commands using application, we should see a statement being dumped from processCommand callback on the console before termination of sample

Files at this revision

API Documentation at this revision

Comitter:
lokeshhk
Date:
Wed May 31 06:13:55 2017 +0000
Commit message:
SSL Client sample using IBMIoTF Client Library

Changed in this revision

IBMIoTF.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
mbed_app.json Show annotated file Show diff for this revision Revisions of this file
mbedtls_custom_config.h Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 3caca8fc3cd2 IBMIoTF.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/IBMIoTF.lib	Wed May 31 06:13:55 2017 +0000
@@ -0,0 +1,1 @@
+https://mbed.org/teams/IBM_IoT/code/IBMIoTF/#5f037f24ce29
diff -r 000000000000 -r 3caca8fc3cd2 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed May 31 06:13:55 2017 +0000
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2017 IBM Corp.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * and Eclipse Distribution License v1.0 which accompany this distribution.
+ *
+ * The Eclipse Public License is available at
+ *    http://www.eclipse.org/legal/epl-v10.html
+ * and the Eclipse Distribution License is available at
+ *   http://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * Contributors:
+ *    Lokesh K Haralakatta  Initial implementation 
+ *******************************************************************************/
+#include "DeviceClient.h"
+#include "Command.h"
+using namespace IoTF;
+
+// Callback Method to process the received command by the device
+void processCommand(IoTF::Command &cmd)
+{
+    printf("Command received name: %s, payload: %s\r\n", cmd.getCommand(), cmd.getPayload());
+}
+
+int main() {
+
+    // Set Watson IoT Platform connection parameters
+    // Update the below parameters with actual values before build and execution of sample
+    char *orgId = "OrganizationID"; // Replace with correct organization ID
+    char *deviceType = "DeviceType"; // Replace with correct device type as registered on WIoTP
+    char *deviceId = "DeviceID"; // Replace with correct device ID as registered on WIoTP
+    char *method = "token"; // Retain this as token for authentication method
+    char *token = "DeviceToken"; // Replace with device token as obtained from WIoTP
+    int port = 8883; // Secure port can be either 8883 or 443
+    
+    // Create DeviceClient Instance using above connection parameters
+    DeviceClient *client = new DeviceClient(orgId,deviceType,deviceId,method,token,port);
+    
+    // Call Device Client connect method to establish secure connection to Watson IoT Platform
+    if(client->connect()){
+        //Device Client Connected to Watson IoT Platform
+        printf("Client Connected to WIoTP\r\n");
+        
+        //Subscribe to device commands with CMD Callback to process the received command
+        client->setCommandCallback(processCommand);
+        
+        // Create buffer to hold the event
+        char buf[50];
+        int count = 0;
+        sprintf(buf,"{\"d\":{\"temp\":\"35\"}}");
+        
+        // Keep publishing the 10 device events for every 3 seconds
+        while(1){
+           client->publishEvent("evt", buf);
+           wait(3);
+           count++;
+           if(count == 10)
+             break;
+        }
+        
+        // Disconnect Device Client from WIoTP if still in connected state
+        if(client->isConnected()){
+           printf("Disconnecting the client from server...\r\n");
+           client->disconnect();
+        }
+        else
+           printf("Client already disconnected from server...\r\n");
+    }
+    else
+        printf("Client Not Connected to WIoTP\r\n");
+
+    //Release resources allocated to Device Client
+    delete client;
+    
+    printf("!!! Done !!!\r\n");
+    return 0;
+}
\ No newline at end of file
diff -r 000000000000 -r 3caca8fc3cd2 mbed_app.json
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed_app.json	Wed May 31 06:13:55 2017 +0000
@@ -0,0 +1,3 @@
+{
+        "macros": ["MBEDTLS_USER_CONFIG_FILE=\"mbedtls_custom_config.h\""]
+}
diff -r 000000000000 -r 3caca8fc3cd2 mbedtls_custom_config.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbedtls_custom_config.h	Wed May 31 06:13:55 2017 +0000
@@ -0,0 +1,1 @@
+#define MBEDTLS_SHA1_C
\ No newline at end of file