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
相关产品推荐
相关产品推荐

