在IoT边缘网关的新预览版中,一个模块可以通过InvokeDeviceMethodAsync调用另一个模块上的方法。它将设备id和模块id作为参数,大概是为了告诉Edge如何路由调用。在同一网关内调用时,设备id参数应为IoT边缘集线器中网关实例的设备id。模块id应该是从IoT边缘下推到网关的模块实例的模块id。对这些id进行硬编码很容易,但显然并不可取。您可以将硬编码的值放在模块加载时读取的配置文件中,这不会有太多问题,但仍然不理想。是否有一种方法可以程序化地发现/填充所需的值?部署json配置是否支持在部署时进行变量替换或类似操作来填充实例ids?
发布于 2017-12-19 14:26:30
我不认为目前有更好的方式。你基本上有三个选择,我要提到其中的两个。
Env在模块createOptions部分中,您可以通过模块Twin as属性将其推送到模块我个人会选择选项1,因为您在创建部署清单时定义了module-id,并且使用该选项,您还可以将环境变量注入到清单中的特定模块创建选项中。
如果模块通信将根据某些域规则进行更改,我会选择方法2,但在我的项目中找不到任何适用于此的用例。
顺便说一句,我会作为评论回答,但缺少声誉。
发布于 2017-12-19 10:08:08
IoT边缘设备上的模块调用方法的典型情况是,模块从连接到该IoT边缘网关设备的同一设备或下游设备上的其他模块接收遥测消息,并根据消息的内容决定调用发送器模块或设备上的方法以指示某些更改(例如,如果消息指示设备运行过热,则模块可以调用一个方法来降低风扇速度等)。
在这种情况下,模块可以从消息本身获取发送方模块的设备Id和模块Id。
https://stackoverflow.com/questions/47878932
复制相似问题