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
Revision 0:3caca8fc3cd2, committed 2017-05-31
- Comitter:
- lokeshhk
- Date:
- Wed May 31 06:13:55 2017 +0000
- Commit message:
- SSL Client sample using IBMIoTF Client Library
Changed in this revision
--- /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
--- /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
--- /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\""] +}
--- /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