This project has for purpose to help IoT developers and testers. The solution is an Azure IoT Device simulator that implements different types of Cloud To Device (C2D) / Device To Cloud (D2C) flows between Microsoft Azure IoT Hub and the simulated device.
For more information:
Example of uses:
- development tool for developers working in Microsoft Azure IoT solutions (cloud)
- tester tool in IoT-oriented projects
- scalable IoT simulation platforms
- fast and simple development of IoT devices
- etc
Technical information:
- .NET 6
- Microsoft Azure IoT SDK (Device capabilities, including IoT Hub modules)
IOT PLUG AND PLAY
An IoT Plug and Play version of the simulator has been released here. It allows to use DTDL v2 models and generate telemetries, properties and commands dynamically, according to the defined model.
It will also be upgraded to .NET 6 and probably merged with the DPS version.
Which one to choose? The regular simulator is recommended in contexts where:
- the device needs to send different types of messages.
- the messages will follow complex formats.
- you do not want to implement DTDL models or use IoT Plug and Play features.
- DTDL v2 does not allow to implement what you need (ex: different schemas for one single message).
The IoT PnP simulator is recommended in contexts where:
- the DTDL models need to be tested.
- the IoT Plug and Play flows need to be implemented/tested.
- you already have one or many DTDL models and want to simulate the device fast and easily.
- you need to integrate your device with IoT solutions (cloud) with IoT Plug and Play capabilities.
Azure IoT Device Simulator logs
- device level simulation (C2D/D2C)
- module level simulation (C2M/M2C)
- device simulation configuration based on JSON files
- module simulation configuration based on JSON files
- no specific limitation on the number of modules (only limited by Microsoft Azure IoT Hub constraints)
- simple and lightweight application, containerizable
- message templates based on JSON (3 message types by default in this first version)
- implementation of full IoT flows (C2D, D2C, C2M, M2C) - see below for more details
Commands
- request latency test
- reboot device
- device On/Off
- read device Twin
- generic command (with JSON payload)
- generic command
- update telemetry interval
Messages D2C: The device can send messages of different types (telemetry, error, commissioning).
C2D: Microsoft Azure IoT Hub can send messages to a given device.
Twin Any change in the Desired properties is notified and handled by the device.
The device reports changes in different types of information to the Microsoft Azure IoT Hub.
The features at the module level are the identical to the device features except for the latency tests.
Functional features are based on these generic technical features:
- telemetry sent from a device.
- a device can contain one or many modules.
- each module behaves independently with its own flows (C2M/M2C) and its configuration settings.
- the device that contains the modules has its own behavior (based on its own configuration file).
- telemetry sent from a module.
- messages received by a device.
- messages received by a module.
- commands received by a device.
- commands received by a module.
- Twin Desired properties changed notification (for devices).
- Twin Desired properties changed notification (for modules).
- Twin Reported properties updates from a device.
- Twin Reported properties updates from a module.
- IoT Messages
- Twins (Reported)
- IoT Messages
- Twins (Reported)
- Twins (Desired)
- Twins (Tags)
- Direct Methods
- Messages
- Twins (Desired)
- Twins (Tags)
- Direct Methods
- Messages
- DPS integration (being implemented)
- "fileupload" feature implementation.