A repository for documenting my good practices for setting up an IoT infrastructure environment that works with Azure Percept Device Kit and other IoT Edge devices. If you are starting a new IoT Edge project, give this implementation a try.
The following environment diagram for an overview of the resources created. Note: Currently the Device Provisioing Service is commented out in the moclips template. This will be added back in a future iteration.
Azure Resource | Resource Name | Description |
---|---|---|
IoT Hub | <prj>-iothub-<env> | A central message hub for communications in both directions between your IoT application and IoT Edge devices (including Azure Percept). |
Storage Account | <prj><env>xxx | Provides storage resources for the moclips infrastructure environment. Currently used to store IoT Edge Device Update Images to be used with the Device Update Service. |
Device Provisioning Service for IotHub | Allows for zero-touch device provisiong of Azure Percept and other IoT Edge devices Note: This component is commented out in the current iteration as it has yet to be validated | |
Device Update for Iot Hub | <prj>-adu-<env> | Updates IoT Edge devices attached to IoT Hub using Over The Air (OTA) capability. There is currently a limit of one Device Update account per Subscription. Multiple Device Update Instances (ADUI) can be created to serve multiple IoT Hub instances. In the future we may want to break the Device Update Account from this Resource Group. |
This repository contains an Azure Bicep file, moclips.bicep and generated ARM Template, moclips.json. This repository uses the Azure CLI method of running bicep. You do not need to install bicep to utilize this repo, the generated ARM template is all you need to setup the Azure Environment for Azure Percept.
Currently there are two ways to setup your Azure Environment:
- Using the Azure Command Line Interface
- Using the Deploy to Azure Button
If using WSL and the AZ CLI, simply clone this repository and utilize the azure/deployMoclips.sh script to create the necessary infrastructure to support Azure Percept (and other IoT Edge devices)
$ git clone https://github.com/mikelor/moclips.git
$ cd moclips/azure
$ ./deployMoclips.sh <subscriptionName> <projectName> <projectEnvironment>
Where
- <subscriptionName> is the name of your Azure Subscription
- <projectName> is the prefex name of your project
- <environmentName> is one of 3 values dev, qa, prod
The following example will create a "cruz-dev-grp" resource group in the YourSubscription Azure Subscription with the following high-level resources
$ cd moclips/azure
$ ./azure/deployMoclips.sh YourSubscription my-cruz dev
If you'd rather use the Azure Deploy script, simply press Deploy to Azure button below.
After creating the Azure Environment, you can start the Azure Percept Out of the Box Experience (OOBE Walkthrough)
I'll be leveraging the Moclips Azure Environment for all of my future forays into Azure hosted IoT solutions. Please check out my first project:
- Dark Sense. Using Azure Percept Studio and the Azure Percept Device Kit to identify timeline events in the turn of commercial aircraft.
Azure resources that may be helpful in building your Percept based solution
Here are some links to some interesting projects that that people are working on with Azure Percept
This setion contains links to documentation that may be helpful in implementing future features.
- What is the IoT Hub Device Provisioning Service - This will be useful when we implement the Device Provisioning Service
- Azure Percept Security Overview - This will be useful when we implement the Device Provisioing Service
If you are interested in contributing or providing feedback, please open an issue and submit a pull request.
Before there was Azure Percept, there was Project Santa Cruz, an early iteration and private preview of the Azure Percept Device Kit. I needed a project name, and since Santa Cruz is a city on the California coast, I chose wonderful Moclips, WA. Definitely not Santa Cruz, but if you need some good Clam Chowder, stop by the Ocean Crest resort.