是否存在使用IoT Hub设置开发人员环境的模拟器或任何建议。在我们的开发环境中拥有一个由所有开发人员共享的单一IoT Hub是有问题的,因为来自每个开发人员的消息都由所有开发人员处理。为每个开发人员设置唯一的IoT Hub实例也存在问题,因为连接到每个IoT Hub所需的本地配置更改。
仿真器真棒!但如果没有其他方法来隔离每个开发人员的流量将是非常有用的。
此致 利
答案 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)
在使用单个集线器时,几乎没有解决方案可以缓解争用。这里有两个建议:
(推荐)单元测试-无需依赖实时数据并连接到真实的集线器结构,而可以使用测试输入来调试和测试代码。通常只需要一层或一层即可。例如:http_trigger_azure_function调用可以从单元测试中调用的一段代码。 如果以这种方式构造代码,则Iot Hub特定的代码应该最少。
使用共享集线器时,您可以使用自定义路由,以便只有来自开发者A设备的遥测才可以到达开发者A的使用者。
答案 2 :(得分:-2)
Azure IoT EdgeHub 开发工具通过模拟器提供本地开发体验,用于创建、开发、测试、运行和调试 Azure IoT Edge 模块和解决方案。
模拟器允许您在本地运行、测试和调试您自己的自定义 IoT Edge 模块,无需 IoT Edge 运行时,并具有以下优势:
下表比较了在 IoT Edge Runtime 和 iotedgehubdev 工具上运行解决方案的要求:
IoT Edge 运行时 | iotedgehubdev | |
---|---|---|
需要设备凭据 | YES | YES |
需要物联网中心凭据 | YES | 否 |
构建镜像 | YES | YES |
推送图片 | YES | 否 |
创建部署 | YES | 否 |
支持原生调试场景 | NO | 是 |
安装 Docker CE (18.02.0+) Windows、macOS 或 Linux
安装 Docker Compose (1.20.0+)(仅限 Linux。Compose 已包含在 Windows/macOS Docker CE 安装中)
通过在终端中运行以下命令来安装 iotedgehubdev:
pip install --upgrade iotedgehubdev
注意:请在 Linux/macOS 上将 iotedgehubdev 安装到 root(不要在“pip install”命令中使用“--user”选项< /em>).
请确保没有 Azure IoT Edge 运行时与 iotedgehubdev 在同一台机器上运行,因为它们需要相同的端口。
iotedgehubdev setup -c "<edge-device-connection-string>"
Linux/macOS
sudo iotedgehubdev setup -c "<edge-device-connection-string>"
iotedgehubdev start -d <path/to/deployment-manifest>
iotedgehubdev stop
Linux/macOS
sudo iotedgehubdev start -d <path/to/deployment-manifest>
sudo iotedgehubdev stop
使用特定输入和/或环境变量启动模块
视窗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"
输出模块凭证环境变量
iotedgehubdev modulecred
使用上一步中的环境变量以本机方式启动您的模块
通过 RESTful API 向您的模块发送消息
例如:
curl --header "Content-Type: application/json" --request POST --data '{"inputName": "input1","data": "hello world"}' http://localhost:53000/api/v1/messages
停止模拟器
视窗iotedgehubdev stop
Linux/macOS
sudo iotedgehubdev stop
该项目收集使用数据并将其发送给 Microsoft,以帮助改进我们的产品和服务。阅读我们的 privacy statement 以了解更多信息。
如果您不希望向 Microsoft 发送使用数据,您可以通过将 ini 文件中的 collect_telemetry
更新为 no
来更改遥测设置。
虽然我们的朋友评论说他担心官方链接会改变,但我希望微软官方在 GitHub 上的 repo 链接永远不会改变(除非它仍然有用)。至少,我不知道我可以通过其他方式在这里发布二进制文件。 这是回购 https://github.com/Azure/iotedgehubdev
为大家加油