You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure IoT Edge C#模块:消息推送至IoT Hub及调用input1方法

向Azure IoT Edge自定义C#模块发送消息并触发input1的方法

你的模块已通过SetInputMessageHandlerAsync("input1", ProcessMessageAsync, null, cancellationToken)完成了input1的消息回调注册,以下是几种触发该回调的常用方式:

1. 通过IoT Edge路由从其他模块转发消息

如果你的Edge部署中包含其他模块(比如官方的SimulatedTemperatureSensor),可以通过配置edgeHub的路由规则,将其他模块的输出消息转发到你的模块input1:

编辑部署清单中$edgeHub模块的routes节点,添加如下规则:

"routes": {
  "samplemodule-input1-route": "FROM /messages/modules/<其他模块名>/outputs/* INTO BrokeredEndpoint(\"/modules/<你的模块名>/inputs/input1\")"
}

替换<其他模块名>和<你的模块名>为实际名称,重新部署Edge设备后,其他模块发送的消息会自动路由到你的input1,触发消息处理逻辑。

2. 从IoT Hub直接发送消息到input1

Azure门户操作步骤

  1. 登录Azure门户,进入目标IoT Hub
  2. 依次进入设备 -> 目标Edge设备 -> 模块 -> 选中你的自定义模块
  3. 点击发送消息到模块,在弹窗中:
    • 填写消息内容(例如{"content": "test input1"})
    • 选择输入名称为input1
    • 点击发送,模块日志会显示收到消息并触发ProcessMessageAsync

C#服务端代码发送

使用IoT Hub服务端SDK编写代码发送消息:

using Microsoft.Azure.Devices;
using System.Text;

var serviceClient = ServiceClient.CreateFromConnectionString("<IoT Hub连接字符串>");
var deviceId = "<Edge设备ID>";
var moduleId = "<你的模块名称>";

var message = new Message(Encoding.UTF8.GetBytes("测试发送到input1的消息"));
message.InputName = "input1";

await serviceClient.SendAsync(deviceId, moduleId, message);
await serviceClient.CloseAsync();

替换占位符为实际信息后运行代码,即可直接发送消息到模块的input1。

3. 使用Azure IoT Explorer工具测试

  1. 下载并打开Azure IoT Explorer,连接到你的IoT Hub
  2. 找到目标Edge设备,展开后选中你的自定义模块
  3. 点击发送消息到模块,设置输入名称为input1,填写消息内容后点击发送,即可触发input1的消息处理逻辑。

你的模块代码已正确实现input1的消息处理,消息到达后会自动执行ProcessMessageAsync,处理完成后还会将消息转发到output1,可通过模块日志或output1的路由目标验证处理结果。

内容的提问来源于stack exchange,提问作者user584018

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 15:10:06