物联网Hub模拟器?

时间:2016-11-17 21:59:06

标签: azure-iot-hub

是否存在使用IoT Hub设置开发人员环境的模拟器或任何建议。在我们的开发环境中拥有一个由所有开发人员共享的单一IoT Hub是有问题的,因为来自每个开发人员的消息都由所有开发人员处理。为每个开发人员设置唯一的IoT Hub实例也存在问题,因为连接到每个IoT Hub所需的本地配置更改。

仿真器真棒!但如果没有其他方法来隔离每个开发人员的流量将是非常有用的。

此致 利

3 个答案:

答案 0 :(得分:2)

我担心还没有Azure IoT Hub模拟器。

如果通过模拟器,您正在谈论类似本地服务器的东西并将所有存储保存在本地RAM或HDD中,这听起来可能是个好主意。

然而,当你想到它时,对于这样的模拟器来说这不是一件容易的事。在幕后,我们讨论的是多种通信协议支持(http,mqtt,ampq等),自定义网关支持以及与Stream Analytics等其他Azure产品的无缝集成......

不是说这是不可能的,但它很复杂。

无论如何,如果您想远离接收来自IoT Hub的不需要的消息,您可以尝试一些解决方法。例如,使用mqtt协议,您可以订阅一些所谓的"topic",由唯一的“设备ID”标识。

如果您期望拥有最低的IoT Hub仿真器,请继续在Azure IoT Hub用户语音中打开请求。

答案 1 :(得分:0)

在使用单个集线器时,几乎没有解决方案可以缓解争用。这里有两个建议:

  1. (推荐)单元测试-无需依赖实时数据并连接到真实的集线器结构,而可以使用测试输入来调试和测试代码。通常只需要一层或一层即可。例如:http_trigger_azure_function调用可以从单元测试中调用的一段代码。 如果以这种方式构造代码,则Iot Hub特定的代码应该最少。

  2. 使用共享集线器时,您可以使用自定义路由,以便只有来自开发者A设备的遥测才可以到达开发者A的使用者。

答案 2 :(得分:-2)

官方 Azure IoT EdgeHub 开发工具

Azure IoT EdgeHub 开发工具通过模拟器提供本地开发体验,用于创建、开发、测试、运行和调试 Azure IoT Edge 模块和解决方案。

模拟器允许您在本地运行、测试和调试您自己的自定义 IoT Edge 模块,无需 IoT Edge 运行时,并具有以下优势:

  • 无论是在模拟器上运行还是在完整的 IoT Edge Runtime 上运行,您的自定义 Edge 模块代码都相同
  • 您的 Edge 解决方案可以在本地运行,无需推送新映像或创建 IoT Edge 部署清单。
  • 在模拟器上运行 Edge 解决方案所需的唯一凭据是 IoT Edge 设备连接字符串。不需要 IoT 中心连接字符串。
  • 它可以帮助您在主机上调试自定义 Edge 模块,而不仅仅是在容器中。

下表比较了在 IoT Edge Runtime 和 iotedgehubdev 工具上运行解决方案的要求:

<头>
IoT Edge 运行时 iotedgehubdev
需要设备凭据 YES YES
需要物联网中心凭据 YES
构建镜像 YES YES
推送图片 YES
创建部署 YES
支持原生调试场景 NO

安装

  1. 安装 Docker CE (18.02.0+) Windows、macOS 或 Linux

  2. 安装 Docker Compose (1.20.0+)仅限 LinuxCompose 已包含在 Windows/macOS Docker CE 安装中

  3. 安装Python (2.7/3.5/3.6/3.7/3.8) and Pip

  4. 通过在终端中运行以下命令来安装 iotedgehubdev

    pip install --upgrade iotedgehubdev
    

    注意:请在 Linux/macOS 上将 iotedgehubdev 安装到 root不要在“pip install”命令中使用“--user”选项< /em>).

请确保没有 Azure IoT Edge 运行时与 iotedgehubdev 在同一台机器上运行,因为它们需要相同的端口。

快速入门

1.设置

视窗
iotedgehubdev setup -c "<edge-device-connection-string>"
Linux/macOS
sudo iotedgehubdev setup -c "<edge-device-connection-string>"

2.在模拟器中启动/停止 IoT Edge 解决方案

视窗
iotedgehubdev start -d <path/to/deployment-manifest>
iotedgehubdev stop
Linux/macOS
sudo iotedgehubdev start -d <path/to/deployment-manifest>
sudo iotedgehubdev stop

3.本地启动和调试单个模块

  1. 使用特定输入和/或环境变量启动模块

    视窗
    iotedgehubdev start -i "<module-inputs>"
    
    // OR
    
    iotedgehubdev start -i "<module-inputs>" -e "<environment-variable>"
    
    Linux/macOS
    sudo iotedgehubdev start -i "<module-inputs>"
    
    // OR
    
    sudo iotedgehubdev start -i "<module-inputs>" -e "<environment-variable>"
    

    例如
    iotedgehubdev start -i "input1,input2" -e "TestEnv1=Value1" -e "TestEnv2=Value2"

  2. 输出模块凭证环境变量

    iotedgehubdev modulecred
    
  3. 使用上一步中的环境变量以本机方式启动您的模块

  4. 通过 RESTful API 向您的模块发送消息

    例如
    curl --header "Content-Type: application/json" --request POST --data '{"inputName": "input1","data": "hello world"}' http://localhost:53000/api/v1/messages

  5. 停止模拟器

    视窗
    iotedgehubdev stop
    
    Linux/macOS
    sudo iotedgehubdev stop
    

其他资源

数据/遥测

该项目收集使用数据并将其发送给 Microsoft,以帮助改进我们的产品和服务。阅读我们的 privacy statement 以了解更多信息。 如果您不希望向 Microsoft 发送使用数据,您可以通过将 ini 文件中的 collect_telemetry 更新为 no 来更改遥测设置。

关注点

虽然我们的朋友评论说他担心官方链接会改变,但我希望微软官方在 GitHub 上的 repo 链接永远不会改变(除非它仍然有用)。至少,我不知道我可以通过其他方式在这里发布二进制文件。 这是回购 https://github.com/Azure/iotedgehubdev

为大家加油