azure - Rust应用程序如何将云到设备的消息发送到旨在到达设备的IoTHub?

标签 azure rust azure-iot-hub

我正在构建一个基于MQTT的Rust应用程序,该应用程序将消息发送到IoTHub,以便将其转发到监听云到设备消息的目标设备。
目标设备“myDev”已订阅主题devices/myDev/messages/devicebound/#,它可以接收来自IoTHub界面的消息(Azure门户上的“消息到设备”)。
我发现可以使用其他编程语言实现此目的的示例使用Azure IoT SDK,该示例具有客户端服务。例如,参见Java示例:https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-java-java-c2d#send-a-cloud-to-device-message
问题在于,实际上没有用于Rust的官方Azure IoT SDK。我只能找到该项目https://github.com/damienpontifex/azure-iot-sdk-rs,因为它与Tokio> 1.x有依赖关系,因此我不得不使用Tokio 0.x,所以我无法使用它。
但是,我可以想象向IoTHub发送云到设备的消息一定可行。
必需的信息可能是:device_id,body和属性,这是界面中可用的字段。
但是我在任何地方都没有找到更多细节。任何帮助表示赞赏。

最佳答案

确实,没有官方的SDK-但您可以看看它的其他一些实现,例如this one和以下示例:

use tokio::time;
use azure_iot_sdk::{IoTHubClient, DeviceKeyTokenSource, Message};

#[tokio::main]
async fn main() -> azure_iot_sdk::Result<()> {
    let iothub_hostname = "iothubname.azure-devices.net";
    let device_id = "MyDeviceId";
    let token_source = DeviceKeyTokenSource::new(
        iothub_hostname,
        device_id,
        "TheAccessKey",
    ).unwrap();

    let mut client =
        IoTHubClient::new(iothub_hostname, device_id.into(), token_source).await?;

    let mut interval = time::interval(time::Duration::from_secs(1));
    let mut count: u32 = 0;

    loop {
        interval.tick().await;

        let msg = Message::builder()
            .set_body(format!("Message #{}", count).as_bytes().to_vec())
            .set_message_id(format!("{}-t", count))
            .build();

        client.send_message(msg).await?;

        count += 1;
    }

    Ok(())
}
或者,如果Rust不是硬性要求(至少是端到端),也许您可​​以拥有一个独立的服务来处理IoT Hub的操作,并将其作为常规REST服务从Rust代码中调用。

关于azure - Rust应用程序如何将云到设备的消息发送到旨在到达设备的IoTHub?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65942688/

相关文章:

azure - 如何在 Azure VM 上禁用加速网络

rust - ARMv7 的独立可执行文件失败,因为它是 "cannot open shared object file"for libstd

rust - 如何简化函数中多次将错误转换为字符串的过程?

azure - 从 IOT 中心到 Azure SQL 数据库中的多个表

c# - 向 Azure 物联网中心发送消息

python - python ssl 库中的 ssl.SSLError : [SSL] PEM lib (_ssl. c:3833)

Azure Development Fabric 日志代理在启动时崩溃

Azure 管道条件

asp.net-mvc - Azure Active Directory 租户 ID 和客户端 ID 是否被视为 secret ?

rust - 如何划分可变借用的向量?