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

Azure IoT Hub Go SDK设备CRUD模块及创建示例咨询

Azure IoT Hub Go SDK 设备CRUD操作模块及示例

核心模块

负责设备身份CRUD的是github.com/Azure/azure-sdk-for-go/sdk/iot/azservice模块,它封装了IoT Hub服务端的设备管理API,包含你关注的创建/更新设备身份对应接口。

关键操作示例

1. 初始化设备管理客户端

首先需要创建DevicesClient,作为所有设备操作的入口:

import (
    "context"
    "github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
    "github.com/Azure/azure-sdk-for-go/sdk/iot/azservice"
)

func main() {
    // 替换为你的IoT Hub连接字符串,格式:HostName={hubName}.azure-devices.net;SharedAccessKeyName={keyName};SharedAccessKey={keyValue}
    connStr := "YOUR_IOT_HUB_CONNECTION_STRING"
    client, err := azservice.NewDevicesClientFromConnectionString(connStr, nil)
    if err != nil {
        panic(err) // 实际场景请替换为合理的错误处理逻辑
    }
    // 后续设备操作基于此client执行
}

2. 创建/更新设备身份(对应目标API)

使用CreateOrUpdate方法实现REST API的Create Or Update Identity功能:

// 定义设备参数
deviceID := "my-test-device"
device := azservice.Device{
    DeviceID: to.Ptr(deviceID),
    Status:   to.Ptr(azservice.DeviceStatusEnabled),
    // 可选:手动指定对称密钥,若不设置SDK会自动生成
    Authentication: &azservice.AuthenticationMechanism{
        SymmetricKey: &azservice.SymmetricKey{
            PrimaryKey:   to.Ptr("YOUR_PRIMARY_KEY"),
            SecondaryKey: to.Ptr("YOUR_SECONDARY_KEY"),
        },
    },
}

// 执行创建/更新操作
resp, err := client.CreateOrUpdate(context.TODO(), deviceID, device, nil)
if err != nil {
    panic(err)
}

// 输出设备信息
println("设备ID:", *resp.DeviceID)
println("设备状态:", *resp.Status)

3. 查询设备详情

resp, err := client.Get(context.TODO(), deviceID, nil)
if err != nil {
    panic(err)
}
println("设备主键:", *resp.Authentication.SymmetricKey.PrimaryKey)

4. 删除设备

_, err := client.Delete(context.TODO(), deviceID, nil)
if err != nil {
    panic(err)
}
println("设备删除成功")

5. 批量创建/更新设备

// 构造批量设备列表
devices := []azservice.Device{
    {DeviceID: to.Ptr("device-001"), Status: to.Ptr(azservice.DeviceStatusEnabled)},
    {DeviceID: to.Ptr("device-002"), Status: to.Ptr(azservice.DeviceStatusDisabled)},
}

// 执行批量操作
resp, err := client.CreateOrUpdateDevices(context.TODO(), azservice.CreateOrUpdateDevicesRequest{Devices: devices}, nil)
if err != nil {
    panic(err)
}

// 遍历操作结果
for _, result := range resp.Results {
    println("设备", *result.DeviceID, "操作状态:", *result.Status)
}

注意事项

  • 确保IoT Hub连接字符串拥有RegistryWrite权限,否则会触发权限不足错误。
  • 若未手动指定设备密钥,SDK会自动生成对称密钥,可从操作返回结果中获取。
  • 生产环境中建议为context设置超时时间,避免长时间阻塞。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 10:12:34