物联网中心模拟器?
IoT Hub emulator?
是否有模拟器或任何关于使用 IoT 中心设置开发人员环境的建议。在我们的开发环境中让所有开发人员共享一个物联网中心是有问题的,因为来自每个开发人员的消息由所有开发人员处理。为每个开发人员设置唯一的 IoT 中心实例也是有问题的,因为连接到每个 IoT 中心需要更改本地配置。
一个模拟器会很棒!但如果这不可用,则其他一些方法来隔离每个开发人员的流量将非常有用。
此致,
伊莱
恐怕还没有 Azure IoT 中心模拟器。
如果通过模拟器,您谈论的是类似本地服务器的东西,并将所有存储保存在本地 RAM 或 HDD 中,这听起来是个好主意。
不过,仔细想想,这样的模拟器可不是件容易的事。在幕后,我们谈论的是多种通信协议支持(http、mqtt、ampq 等)、自定义网关支持以及与流分析等其他 Azure 产品的无缝集成...
不是说不可能,而是很复杂。
无论如何,如果您想避免从 IoT 中心接收不需要的消息,您现在可以尝试一些解决方法。例如,使用 mqtt 协议,您可以订阅一些所谓的 "topic",由唯一的 "device id".
标识
如果您希望拥有一个最小的 IoT 中心模拟器,请继续在 Azure IoT 中心用户的声音中打开一个请求。
在使用单个集线器时,很少有解决方案可以缓解争用。这里有两个建议:
(推荐)单元测试 - 而不是依赖实时数据并连接到真实的集线器,以可以使用测试输入调试和测试代码的方式构建代码。它通常只需要一层或分离。例如:http_trigger_azure_function 调用一段可以从单元测试中调用的代码。
如果您以这种方式构建代码,那么 Iot Hub 特定代码应该最少。
使用共享集线器时,您可以使用自定义路由,这样只有来自开发人员 A 的设备的遥测才能发送到开发人员 A 的消费者。
官方 Azure IoT EdgeHub 开发工具
Azure IoT EdgeHub 开发工具通过模拟器提供本地开发体验,用于创建、开发、测试、运行宁和调试 Azure IoT Edge 模块和解决方案。
模拟器允许您 运行,在本地测试和调试您自己的自定义 IoT Edge 模块,无需 IoT Edge 运行时,并具有以下优势:
- 您的自定义 Edge 模块代码是相同的,无论是运行模拟器还是完整的 IoT Edge 运行时。
- 您的 Edge 解决方案可以 运行 在本地 而无需 推送新图像或创建 IoT Edge 部署清单。
- 在模拟器上 运行 您的 Edge 解决方案所需的唯一凭据是 IoT Edge 设备连接字符串 。不需要 IoT 中心连接字符串。
- 它可以帮助您在主机上调试自定义 Edge 模块,而不仅仅是在容器中。
以下 table 将要求与 运行 您在 IoT Edge 运行时和 iotedgehubdev 工具上的解决方案进行了比较:
IoT Edge Runtime
iotedgehubdev
Device Credential Needed
YES
YES
IoT Hub Credential Needed
YES
NO
Build Image
YES
YES
Push Image
YES
NO
Create Deployment
YES
NO
Support native debug scenario
NO
YES
正在安装
安装 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(不要使用 '- -user' 'pip install' 命令中的选项).
请确保没有 Azure IoT Edge 运行time 运行ning 在与 iotedgehubdev 相同的机器上,因为它们需要相同的端口。
快速入门
1。设置
Windows
iotedgehubdev setup -c "<edge-device-connection-string>"
Linux/macOS
sudo iotedgehubdev setup -c "<edge-device-connection-string>"
2。 Start/Stop 模拟器中的 IoT Edge 解决方案
Windows
iotedgehubdev start -d <path/to/deployment-manifest>
iotedgehubdev stop
Linux/macOS
sudo iotedgehubdev start -d <path/to/deployment-manifest>
sudo iotedgehubdev stop
3。本机启动和调试单个模块
使用特定输入启动模块and/or环境变量
Windows
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
停止模拟器
Windows
iotedgehubdev stop
Linux/macOS
sudo iotedgehubdev stop
其他资源
Data/Telemetry
此项目收集使用数据并将其发送给 Microsoft 以帮助改进我们的产品和服务。阅读我们的 privacy statement 以了解更多信息。
如果您不想将使用数据发送给 Microsoft,您可以通过将 ini 文件中的 collect_telemetry
更新为 no
来更改您的遥测设置。
担忧
虽然我们的朋友评论说他担心官方 link 的变化,但我希望 GitHub 上的官方 Microsoft 回购 link 永远不会改变(除非它仍然有用)。至少,我不知道还有什么其他方法可以 post 二进制文件。
这是回购 https://github.com/Azure/iotedgehubdev
大家干杯
是否有模拟器或任何关于使用 IoT 中心设置开发人员环境的建议。在我们的开发环境中让所有开发人员共享一个物联网中心是有问题的,因为来自每个开发人员的消息由所有开发人员处理。为每个开发人员设置唯一的 IoT 中心实例也是有问题的,因为连接到每个 IoT 中心需要更改本地配置。
一个模拟器会很棒!但如果这不可用,则其他一些方法来隔离每个开发人员的流量将非常有用。
此致, 伊莱
恐怕还没有 Azure IoT 中心模拟器。
如果通过模拟器,您谈论的是类似本地服务器的东西,并将所有存储保存在本地 RAM 或 HDD 中,这听起来是个好主意。
不过,仔细想想,这样的模拟器可不是件容易的事。在幕后,我们谈论的是多种通信协议支持(http、mqtt、ampq 等)、自定义网关支持以及与流分析等其他 Azure 产品的无缝集成...
不是说不可能,而是很复杂。
无论如何,如果您想避免从 IoT 中心接收不需要的消息,您现在可以尝试一些解决方法。例如,使用 mqtt 协议,您可以订阅一些所谓的 "topic",由唯一的 "device id".
标识如果您希望拥有一个最小的 IoT 中心模拟器,请继续在 Azure IoT 中心用户的声音中打开一个请求。
在使用单个集线器时,很少有解决方案可以缓解争用。这里有两个建议:
(推荐)单元测试 - 而不是依赖实时数据并连接到真实的集线器,以可以使用测试输入调试和测试代码的方式构建代码。它通常只需要一层或分离。例如:http_trigger_azure_function 调用一段可以从单元测试中调用的代码。 如果您以这种方式构建代码,那么 Iot Hub 特定代码应该最少。
使用共享集线器时,您可以使用自定义路由,这样只有来自开发人员 A 的设备的遥测才能发送到开发人员 A 的消费者。
官方 Azure IoT EdgeHub 开发工具
Azure IoT EdgeHub 开发工具通过模拟器提供本地开发体验,用于创建、开发、测试、运行宁和调试 Azure IoT Edge 模块和解决方案。
模拟器允许您 运行,在本地测试和调试您自己的自定义 IoT Edge 模块,无需 IoT Edge 运行时,并具有以下优势:
- 您的自定义 Edge 模块代码是相同的,无论是运行模拟器还是完整的 IoT Edge 运行时。
- 您的 Edge 解决方案可以 运行 在本地 而无需 推送新图像或创建 IoT Edge 部署清单。
- 在模拟器上 运行 您的 Edge 解决方案所需的唯一凭据是 IoT Edge 设备连接字符串 。不需要 IoT 中心连接字符串。
- 它可以帮助您在主机上调试自定义 Edge 模块,而不仅仅是在容器中。
以下 table 将要求与 运行 您在 IoT Edge 运行时和 iotedgehubdev 工具上的解决方案进行了比较:
IoT Edge Runtime | iotedgehubdev | |
---|---|---|
Device Credential Needed | YES | YES |
IoT Hub Credential Needed | YES | NO |
Build Image | YES | YES |
Push Image | YES | NO |
Create Deployment | YES | NO |
Support native debug scenario | NO | YES |
正在安装
安装 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(不要使用 '- -user' 'pip install' 命令中的选项).
请确保没有 Azure IoT Edge 运行time 运行ning 在与 iotedgehubdev 相同的机器上,因为它们需要相同的端口。
快速入门
1。设置
Windowsiotedgehubdev setup -c "<edge-device-connection-string>"
Linux/macOS
sudo iotedgehubdev setup -c "<edge-device-connection-string>"
2。 Start/Stop 模拟器中的 IoT Edge 解决方案
Windowsiotedgehubdev start -d <path/to/deployment-manifest>
iotedgehubdev stop
Linux/macOS
sudo iotedgehubdev start -d <path/to/deployment-manifest>
sudo iotedgehubdev stop
3。本机启动和调试单个模块
使用特定输入启动模块and/or环境变量
Windows
Linux/macOSiotedgehubdev start -i "<module-inputs>" // OR iotedgehubdev start -i "<module-inputs>" -e "<environment-variable>"
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
停止模拟器
Windows
Linux/macOSiotedgehubdev stop
sudo iotedgehubdev stop
其他资源
Data/Telemetry
此项目收集使用数据并将其发送给 Microsoft 以帮助改进我们的产品和服务。阅读我们的 privacy statement 以了解更多信息。
如果您不想将使用数据发送给 Microsoft,您可以通过将 ini 文件中的 collect_telemetry
更新为 no
来更改您的遥测设置。
担忧
虽然我们的朋友评论说他担心官方 link 的变化,但我希望 GitHub 上的官方 Microsoft 回购 link 永远不会改变(除非它仍然有用)。至少,我不知道还有什么其他方法可以 post 二进制文件。 这是回购 https://github.com/Azure/iotedgehubdev
大家干杯