-
Notifications
You must be signed in to change notification settings - Fork 737
Ubuntu Telemetry Walkthrough
This sample shows how to create a program that uses the Azure IoT SDK C package on Ubuntu apt package manager.
-
If you have not already, follow the instructions here to set up your IoT Hub enviornment on Azure.
-
Create a IoT Hub device and copy it's device connection string to be used later. Instructions on this can also be found in the link in step 1.
-
Make sure you have CMake, g++, and gcc installed on your development machine
sudo apt install cmake build-essential
We will use the apt
package manager to download the binaries needed to build an IoT Hub client application using C.
-
Add the Azure IoT repository
sudo apt install -y software-properties-common sudo add-apt-repository ppa:aziotsdklinux/ppa-azureiot sudo apt update
-
Install the azure-iot-sdk-c-dev package
sudo apt install -y azure-iot-sdk-c-dev
-
If you haven't already, clone the Azure IoT C SDK repo from Github
git clone https://github.com/Azure/azure-iot-sdk-c.git cd azure-iot-sdk-c git submodule update --init --recursive
We will use iothub_ll_telemetry_sample
to demonstrate compiling and running a sample.
-
Note the location where you have cloned the
azure-iot-sdk-c
repo. We will assume it is cloned to the home directory for convenience, but if not you can adjust the path accordingly.cd ~/azure-iot-sdk-c/
-
You now will use the device connection string you copied while setting up the IoT Hub Enviornment. Using your favorite text editor (we will use nano), edit the
iothub_ll_telemetry_sample
file.nano iothub_client/samples/iothub_ll_telemetry_sample/iothub_ll_telemetry_sample.c
Find the line containing the following code...
static const char* connectionString = "[device connection string]";
...and update the string between the quotations with your own device connection string.
static const char* connectionString = "HostName=foo;DeviceID=fooDevice;SharedAccessKey=fooKey";
Save and close the file.
-
Build the sample using cmake. First navigate to the sample folder.
cd ~/azure-iot-sdk-c/iothub_client/samples/iothub_ll_telemetry_sample/linux/
Then compile using cmake.
cmake .
Finally, build the sample.
cmake --build .
Once the sample application has been built using cmake, you can simply run it
./iothub_ll_telemetry_sample
Did everything work? If so, you should see approximately the following output:
Creating IoTHub Device handle
Sending message 1 to IoTHub
Sending message 2 to IoTHub
Sending message 3 to IoTHub
Sending message 4 to IoTHub
Sending message 5 to IoTHub
-> 00:07:23 CONNECT | VER: 4 | KEEPALIVE: 240 | FLAGS: 192 | USERNAME: yosephhub.azure-devices.net/testDevice/?api-version=2017-11-08-preview&DeviceClientType=iothubclient%2f1.2.10%20(native%3b%20Linux%3b%20x86_64) | PWD: XXXX | CLEAN: 0
<- 00:07:23 CONNACK | SESSION_PRESENT: true | RETURN_CODE: 0x0
The device client is connected to iothub
-> 00:07:23 PUBLISH | IS_DUP: false | RETAIN: 0 | QOS: DELIVER_AT_LEAST_ONCE | TOPIC_NAME: devices/testDevice/messages/events/property_key=property_value | PACKET_ID: 2 | PAYLOAD_LEN: 12
-> 00:07:23 PUBLISH | IS_DUP: false | RETAIN: 0 | QOS: DELIVER_AT_LEAST_ONCE | TOPIC_NAME: devices/testDevice/messages/events/property_key=property_value | PACKET_ID: 3 | PAYLOAD_LEN: 12
-> 00:07:23 PUBLISH | IS_DUP: false | RETAIN: 0 | QOS: DELIVER_AT_LEAST_ONCE | TOPIC_NAME: devices/testDevice/messages/events/property_key=property_value | PACKET_ID: 4 | PAYLOAD_LEN: 12
-> 00:07:23 PUBLISH | IS_DUP: false | RETAIN: 0 | QOS: DELIVER_AT_LEAST_ONCE | TOPIC_NAME: devices/testDevice/messages/events/property_key=property_value | PACKET_ID: 5 | PAYLOAD_LEN: 12
-> 00:07:23 PUBLISH | IS_DUP: false | RETAIN: 0 | QOS: DELIVER_AT_LEAST_ONCE | TOPIC_NAME: devices/testDevice/messages/events/property_key=property_value | PACKET_ID: 6 | PAYLOAD_LEN: 12
<- 00:07:24 PUBACK | PACKET_ID: 2
Confirmation callback received for message 1 with result IOTHUB_CLIENT_CONFIRMATION_OK
<- 00:07:24 PUBACK | PACKET_ID: 3
Confirmation callback received for message 2 with result IOTHUB_CLIENT_CONFIRMATION_OK
<- 00:07:24 PUBACK | PACKET_ID: 4
Confirmation callback received for message 3 with result IOTHUB_CLIENT_CONFIRMATION_OK
<- 00:07:24 PUBACK | PACKET_ID: 5
Confirmation callback received for message 4 with result IOTHUB_CLIENT_CONFIRMATION_OK
<- 00:07:24 PUBACK | PACKET_ID: 6
Confirmation callback received for message 5 with result IOTHUB_CLIENT_CONFIRMATION_OK
-> 00:07:24 DISCONNECT
Press any key to continue
That's it. You've compiled and run a sample using the low level (_ll_) C SDK. For more samples explore the samples folder here.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.