如何从 C# 中的 Azure 函数在设备中执行方法?

Posted

技术标签:

【中文标题】如何从 C# 中的 Azure 函数在设备中执行方法?【英文标题】:How can I execute a method in a device from an Azure function in C#? 【发布时间】:2019-10-10 10:44:13 【问题描述】:

我有一个流分析,它根据接收到的内容将一些数据输出到 C# 中的 Azure 函数。此函数必须向设备发送 JSON,当它读取 JSON 时,它会根据接收到的数据运行本地方法。我的问题是我找不到这样做的方法。

我已经在 J​​ava 中完成了这项工作,但我找不到在 C# 中执行此操作的方法。我这样做的方法是使用 HTTP 触发器和下面的代码。

这就是我反序列化接收到的数据的方式:

String body = request.getBody().get().toString().replace("[", "").replace("\"", "\'");
JSONObject bodyJson = new JSONObject(body);

String deviceMac = bodyJson.getString("deviceid");
deviceId = bodyJson.getString("receiveruuid");

这就是我将结果发送到设备的方式:

DeviceMethod methodClient = DeviceMethod.createFromConnectionString(iotHubConnectionString);
Map<String, Object> payload = new HashMap<String, Object>() 

    //PAYLOAD DATA
;
MethodResult result = methodClient.invoke(deviceId, methodName, responseTimeout, connectTimeout, payload);

感谢您的帮助


更新

我终于通过这种方式解决了问题

        var serviceClient = ServiceClient.CreateFromConnectionString(iotHubConnectionString);
        var methodname = new CloudToDeviceMethod("method_defatult").SetPayloadJson(" \"message\": \""+ message +"\"");
        await serviceClient.InvokeDeviceMethodAsync("moviltest", methodname);

使用第一行,您可以创建到 iotHub 的连接字符串。第二行是创建 CloudToDeviceMethod 并设置有效负载。确保 JSON 是正确的。 最后调用设备中的方法。

【问题讨论】:

【参考方案1】:

您需要从消息中获取字节并将其发送到设备:

private async static Task SendCloudToDeviceMessageAsync()

    var serviceClient = ServiceClient.CreateFromConnectionString(iotHubConnectionString);
    var commandMessage = new
    Message(Encoding.ASCII.GetBytes("Cloud to device message."));
    await serviceClient.SendAsync("myFirstDevice", commandMessage);

更多信息在这里:https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-csharp-csharp-c2d

【讨论】:

【参考方案2】:

我终于这样解决了问题。

    var serviceClient = ServiceClient.CreateFromConnectionString(iotHubConnectionString);
    var methodname = new CloudToDeviceMethod("method_defatult").SetPayloadJson(" \"message\": \""+ message +"\"");
    await serviceClient.InvokeDeviceMethodAsync("moviltest", methodname);

使用第一行创建到 iotHub 的连接字符串。第二行是创建 CloudToDeviceMethod 并设置有效负载。确保 JSON 是正确的。最后调用设备中的方法。

【讨论】:

以上是关于如何从 C# 中的 Azure 函数在设备中执行方法?的主要内容,如果未能解决你的问题,请参考以下文章

从 Azure 表存储中获取 1000 多个数据集

如何从 C# Core 中的 azure blob 存储中读取所有文件

WinSCP .NET 程序集失败,在 C# Azure 函数中的 Session.Open 中出现“未找到 winscp.exe 可执行文件”

使用 C# 从 Azure Blob 复制到 AWS S3

使用 Azure Web API 应用程序中的 C# 从 Azure Data Lake 查询 parquet 数据

如何在 C# 中获取 Azure 表存储中的所有行?