# ESP Azure IoT SDK ## Table of Contents - [Introduction](#introduction) - [Getting Started](#get-started) - [Creating an Azure IoT Device](#create-device) - [Monitoring Results](#monitoring) - [Troubleshooting](#troubleshooting) ## Introduction <a name="introduction"></a> The ESP Azure IoT SDK is based on [Azure IoT C SDK](https://github.com/Azure/azure-iot-sdk-c) and enables users to connect their ESP32 based devices to the Azure IoT hub. It provides some examples which can help understand most common use cases. ## Getting Started <a name="get-started"></a> ### Hardware You will basically just need a development host and an [ESP32 development board](https://www.espressif.com/en/products/hardware/development-boards) to get started. ### Development Host Setup This project is to be used with Espressif's IoT Development Framework, [ESP IDF](https://github.com/espressif/esp-idf). Follow these steps to get started: - Setup ESP IDF development environment by following the steps [here](https://docs.espressif.com/projects/esp-idf/en/latest/get-started/index.html). - In a separate folder, clone the esp-azure project as follows (please note the --recursive option, which is required to clone the various git submodules required by esp-azure) ``` bash $ git clone --recursive https://github.com/espressif/esp-azure.git ``` > Note that if you ever change the branch or the git head of either esp-idf or esp-azure, ensure that all the submodules of the git repo are in sync by executing `git submodule update --init --recursive` ## ### Setting up Azure IoT Hub - Create an Azure IoT Hub by following the documentation [here](https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-create-through-portal). > **Note: When selecting the "Pricing and scale tier", there is also an option to select , F1: Free tier, which should be sufficient for basic evaluation.** - Copy the IoT Hub `Connection string - primary key` from the Azure IoT Hub. This will be required later. The screenshot below will help you locate it. ![](doc/_static/connection_string.png) - Connection string - primary key sample: ``` HostName=<azure-iot-hub-name>.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=<base64-encoded-access-key> ``` ### Setting up Azure CLI - Install [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest) - From your terminal, execute the `az` command to verify that the installation was successful. Output will be like this: ``` $ az Welcome to Azure CLI! --------------------- Use `az -h` to see available commands or go to https://aka.ms/cli. ... ``` - Install the Azure IoT CLI extension using `$ az extension add --name azure-cli-iot-ext` After that, you should be able to use azure CLI to manage your iot-device. A list of useful Azure CLIs can be found [here](doc/azure_cli_iot_hub.md) ## Creating an Azure IoT Device <a name="create-device"></a> - Login to Azure CLI using `$ az login` - Create a new device using `$ az iot hub device-identity create -n [IoTHub Name] -d [Device ID]` - Get connection string for your device using `$ az iot hub device-identity show-connection-string -n [IoTHub Name] -d [Device ID]` - Device connection string sample: ``` HostName=<azure-iot-hub-name>.azure-devices.net;DeviceId=<azure-iot-device-id>;SharedAccessKey=<base64-encoded-shared-access-key> ``` - This will be required in the examples ## Monitoring Results <a name="monitoring"></a> To see various events and the data being exchanged between the device and IoT hub from your command line, run the following command: `$ az iot hub monitor-events -n [IoTHub Name] --login '[Connection string - primary key]'` > Note the single quotes for the connection string. Without them, the command wont work as desired. To monitor activity on your ESP device, run: `$ make monitor` ## Troubleshooting <a name="troubleshooting"></a> 1. Some common problems can be fixed by disabling the firewall. 2. You can try with the followings, if your build fails: - `$ git submodule update --init --recursive` - Check the compiler version and verify that it is the correct one for your ESP IDF version. - Check if the IDF_PATH is set correctly - Clean the project with `make clean` and if required, using `rm -rf build sdkconfig sdkconfig.old` 3. Ensure that the device connection string received from Azure IoT Hub are correct.
idf.py add-dependency "espressif/esp-azure^1.0.0"