IBM Cloud IoT is free for ordinary usage. Here is a How To Getting Started With IBM Cloud IoT. We want to provide the basic idea of what Watson IoT Platform does and what to expect from it. On November 2018, IBM rolled out this newer version of “Watson IoT Platform” with much more features. Commonly we need these cloud-based IoT platforms for Arduino based devices (like, ESP32 we discussed this week). When we are talking about Arduino, the question of basic parameters for connecting arising.
The total thing may appear too complicated to a newbie. But it is not. Complicated things are for advanced users. It is very easy to create a way to connect with IBM Cloud IoT (Watson IoT Platform) from Arduino or Smartphone.
IBM Cloud IoT platform hosts the data received from the devices, perform basic data analysis. Itself it has not many functions as service :
---
1 | https://console.bluemix.net/docs/services/IoT/iotplatform_beta_features.html#beta_features |
Without such a service, we had to create own service running on own server which supports MQTT.
You do not have many things to do. You’ll need an IBM Cloud account, start an instance of the Watson IoT Platform service from the service catalogue. It will open a dashboard in the URL :
1 | https://org_id.internetofthings.ibmcloud.com/dashboard/#/overview |
Add a device from the Watson IoT Platform. In the Overview dashboard, from the menu pane, select Devices and then click Add Device.
Enter a device name, such as my_device_type, enter a device ID, for example, my_first_device. For network-connected devices, the device ID could be the device MAC address without any separating colons. Accept an automatically generated token.
In the device information page, the following details are important for you :
Organization ID
Device Type
Device ID
Authentication Method
Authentication Token
You’ll need Organization ID, Device Type, Device ID, and Authentication Token configure your device to connect to Watson IoT Platform.
We need to setup device for MQTT messaging and authenticate by using Organization ID, Device Type, Device ID, and Authentication Token. The following information usually required when connecting device:
URL: org_id.messaging.internetofthings.ibmcloud.com
Port: Can be 1883, 8883 or 443.
1883 is plain
8883 is encrypted
443 is websockets
Device ID: d:_org_id:device_type:deviceid
User name: use-token-auth
Password: Authentication token
Event topic format: iot-2/evt/_event_id/fmt/formatstring
We can test with HTTP APIs for devices, like with this cURL command :
1 | curl -v -X POST -H "Content-Type: application/json" -u "use-token-auth:passw0rd" -d @message.txt https://myOrgID.messaging.internetofthings.ibmcloud.com:8883/api/v0002/device/types/TestDevices/devices/TestPublishEvent/events/TestMessage |
More such example can be seen here :
1 | https://console.bluemix.net/docs/services/IoT/devices/api.html#api |
As for Arduino, we have to code in this way :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | ... #include <WiFi.h> #include <PubSubClient.h> #include <ArduinoJson.h> const char* ssid = "<yourWiFiSSID>"; const char* password = "<yourWiFiPassword>"; #define ORG "<yourOrg>" #define DEVICE_TYPE "yourDeviceType" #define DEVICE_ID "yourDevice" #define TOKEN "yourDeviceToken" char server[] = ORG ".messaging.internetofthings.ibmcloud.com"; char authMethod[] = "use-token-auth"; char token[] = TOKEN; char clientId[] = "d:" ORG ":" DEVICE_TYPE ":" DEVICE_ID; const char publishTopic[] = "iot-2/evt/status/fmt/json"; const char responseTopic[] = "iotdm-1/response"; const char manageTopic[] = "iotdevice-1/mgmt/manage"; const char updateTopic[] = "iotdm-1/device/update"; const char rebootTopic[] = "iotdm-1/mgmt/initiate/device/reboot"; void callback(char* topic, byte* payload, unsigned int payloadLength); WiFiClient wifiClient; PubSubClient client(server, 1883, callback, wifiClient); int publishInterval = 30000; // 30 seconds long lastPublishMillis; void setup() { ... |
This is all about how to get started. Next, you will need some working and tested sketches. Our next article provides 3 sketches to get started.
Tagged With subscribe messaging internetofthings ibmcloud com , cloud ibm for iot , ibm watson iot curl mqtt , messaging internetofthings ibmcloud com not working , read data from ibm watson Iot cloud , iot platform console ibm cloud , iot devices ibm , iot curl list devices watson , create iot device ibm cloud , connect android to ibm watson cloud tutorial