The Azure IoT Edge Dev Tool greatly simplifies your Azure IoT Edge development process. It has everything you need to get started and helps with your day-to-day Edge development.
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/ISSUE_TEMPLATE Adding issue templates (#266) Aug 20, 2018
.vscode enable e2e test case for iotedgedev Dec 7, 2018
assets Add quickstart video (#161) Apr 18, 2018
docker Add OpenJDK and Maven to container (#330) Oct 12, 2018
iotedgedev Fix issue connecting to Docker daemon with tlsverify enabled (#364) Dec 7, 2018
scripts Update gen-help-markdown.bat (#310) Aug 28, 2018
tests enable e2e test case for iotedgedev Dec 7, 2018
vsts_ci update code Dec 10, 2018
.env.tmp Support multi-platform deployment manifest template (#358) Nov 22, 2018
.gitignore Add iotedgehubdev integration (#233) Aug 15, 2018
.travis.yml Support for multiple registries (#193) Aug 11, 2018
CHANGELOG.md Update README and CHANGELOG (#360) Nov 26, 2018
CODE_OF_CONDUCT.md update license file, update code of conduct (#172) May 15, 2018
CONTRIBUTING.md Add telemetry and CLA statements (#355) Nov 2, 2018
LICENSE update license file, update code of conduct (#172) May 15, 2018
MANIFEST.in Retire history.rst Nov 1, 2018
Makefile Init Commit Dec 30, 2017
README.md Update Azure DevOps badge to point to mseng (#367) Dec 10, 2018
build.sh Modify build.sh to run from Linux. (#329) Oct 8, 2018
cleanup.sh Added support for windows containers via nanoserver (#158) Aug 10, 2018
pytest.ini Configure travis for unit tests (#195) Jun 29, 2018
requirements.txt Include pypiwin32 in requirements (#302) Aug 23, 2018
requirements_dev.txt Buildupdates (#304) Aug 24, 2018
requirements_travis.txt Remove DOTNET_VERBOSITY from env. Update requirements.txt. Fix push. (#… Aug 21, 2018
setup.cfg Bump version: 1.0.0 → 1.1.0 Nov 26, 2018
setup.py Bump version: 1.0.0 → 1.1.0 Nov 26, 2018
tox.ini enable e2e test case for iotedgedev Dec 7, 2018
travis_pypi_setup.py Update to Tool and simplify pypi package name (#149) Apr 8, 2018

README.md

Azure IoT Edge Dev Tool

PyPI version Travis Build Status Build Status

The IoT Edge Dev Tool greatly simplifies Azure IoT Edge development down to simple commands driven by environment variables.

  • It gets you started with IoT Edge development with the IoT Edge Dev Container and IoT Edge solution scaffolding that contains a default module and all the required configuration files.
  • It speeds up your inner-loop dev (dev, debug, test) by reducing multi-step build & deploy processes into one-line CLI commands as well as drives your outer-loop CI/CD pipeline. You can use all the same commands in both stages of your development life-cycle.

Overview

For the absolute fastest way to get started with IoT Edge Dev, please see the Quickstart section below.

For a more detailed overview of IoT Edge Dev Tool including setup and commands, please see the Wiki.

Quickstart

To set up development machines manually instead of using the IoT Edge Dev Container, please see the Manual Development Machine Setup Wiki.

This quickstart will run a container, create a solution, setup Azure resources, build and deploy modules to your device, setup and start the IoT Edge simulator, monitor messages flowing into IoT Hub, and finally deploy to the IoT Edge runtime.

The only thing you need to install is Docker. All of the other dev dependencies are included in the container.

  1. Install Docker CE

    • For Windows, please follow the document to open Docker Settings and setup a Shared Drive.
    • For macOS, please follow the document to choose local directories to share with your containers.
  2. Run the IoT Edge Dev Container

    Before you run the container, you will need to create a local folder to store your IoT Edge solution files.

    Windows

    mkdir c:\temp\iotedge
    docker run -ti -v /var/run/docker.sock:/var/run/docker.sock -v c:/temp/iotedge:/home/iotedge microsoft/iotedgedev
    

    Linux

    sudo mkdir /home/iotedge
    sudo docker run -ti -v /var/run/docker.sock:/var/run/docker.sock -v ~/iotedge:/home/iotedge microsoft/iotedgedev
    

    macOS

    mkdir ~/iotedge
    docker run -ti -v /var/run/docker.sock:/var/run/docker.sock -v ~/iotedge:/home/iotedge microsoft/iotedgedev
    
  3. Initialize IoT Edge solution and setup Azure resources

    iotedgedev init

    iotedgedev init will create a solution and setup your Azure IoT Hub in a single command. The solution comes with a default C# module named filtermodule.

    More information
    1. You will see structure of current folder like below:
        │  .env
        │  .gitignore
        │  deployment.debug.template.json
        │  deployment.template.json
        │
        ├─.vscode
        │      launch.json
        │
        └─modules
            └─filtermodule
                │  .gitignore
                │  Dockerfile.amd64
                │  Dockerfile.amd64.debug
                │  Dockerfile.arm32v7
                │  Dockerfile.windows-amd64
                │  filtermodule.csproj
                │  module.json
                │  Program.cs
    
    1. Open .env file, you will see the IOTHUB_CONNECTION_STRING and DEVICE_CONNECTION_STRING environment variables filled correctly.

    2. Open deployment.template.json file

      1. You will see below section in the modules section:
      "filtermodule": {
          "version": "1.0",
          "type": "docker",
          "status": "running",
          "restartPolicy": "always",
          "settings": {
              "image": "${MODULES.filtermodule}",
              "createOptions": {}
          }
      }
      
      1. Two default routes are added:
      "routes": {
          "sensorTofiltermodule": "FROM /messages/modules/tempSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/filtermodule/inputs/input1\")",
          "filtermoduleToIoTHub": "FROM /messages/modules/filtermodule/outputs/* INTO $upstream"
      }
      
    3. You will see privacy statement like below:

      Welcome to iotedgedev!
      -------------------------
      Telemetry
      ---------
      The iotedgedev collects usage data in order to improve your experience.
      The data is anonymous and does not include commandline argument values.
      The data is collected by Microsoft.
      
      You can change your telemetry settings by updating 'collect_telemetry' to 'no' in ~/.iotedgedev/setting.ini
      
  4. Build IoT Edge module images

    sudo iotedgedev build

    This step will build user modules in deployment.template.json targeting amd64 platform.

    More information
    1. You will see a "BUILD COMPLETE" for each module and no error messages in the terminal output.
    2. Open config/deployment.amd64.json file, you will see the module image placeholders expanded correctly.
    3. Run sudo docker image ls, you will see the module images you just built.
  5. Setup and start the IoT Edge Simulator to run the solution

    sudo iotedgedev start --setup --file config/deployment.amd64.json

    IoT Edge Simulator does not support running Python and C modules yet. You'll need IoT Edge Runtime to run your Python and C modules.

    More information
    1. You will see an "IoT Edge Simulator has been started in solution mode." message at the end of the terminal output
    2. Run sudo docker ps, you will see your modules running as well as an edgeHubDev container
  6. Monitor messages sent from IoT Edge Simulator to IoT Hub

    iotedgedev monitor

    More information
    1. You will see your expected messages sending to IoT Hub

Resources

Please refer to the Wiki for details on setup, usage, and troubleshooting.

Data/Telemetry

This project collects usage data and sends it to Microsoft to help improve our products and services. Read our privacy statement to learn more. If you don’t wish to send usage data to Microsoft, you can change your telemetry settings by updating collect_telemetry to no in ~/.iotedgedev/settings.ini.

Contributing

This project welcomes contributions and suggestions. Please refer to the Contributing file for details on contributing changes.

Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.

When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repositories using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.