应用测轻松优雅接入华为IoT平台

网友投稿 701 2022-05-30

之所以感觉到轻松优雅,归功于华为提供了开发帮助工具。2年前开始做过华为应用的对接,只能自己根据Api文档啃,每一步要自己实现。

而今天,在Api基础上,华为IoT应用测提供了在线的Api Explorer,非常强大的Api实时测试,并且给出了各种语言的代码样例。再加上HuaweiCloud.SDK家族完善,IoT上就用到了HuaweiCloud.SDK.IoTDA这个包。

在Api Explorer页面就能找到SDK安装说明。

以.Net为例,通过VS 2022的nuget可以轻松引入。在解决方案上右键菜单,选项nuget包管理。在随后的浏览框中输入HuaweiCloud.SDK.IoTDA。选择目标并安装。

应用测轻松优雅接入华为IoT平台

以添加设备为例,我们先回到Api Explorer,找到AddDevice接口。清晰的看到罗列出来我们想要的接口输入参数,调用结果。更优雅的地方是,根据实际在线调用,还动态生成了SDK上的代码样例,只要轻松的复制粘贴就集成好了。

对于设备接入这一块,SDK的样例方式都是静态调用,在样例基础上少加修改,就是一个可以继续扩展的静态帮助方法类库到自己的项目中。

上述例子中,把ak,sk提炼处理常量使用,IoTDAClient的初始化,放到静态变量里面统一初始化,每个接口公用即可。

这里着重强调:

源代码的样例中缺少Product_Id ,构造函数中是可选,但是不输入会进行不下去。

AddDevice这个接口App_Id也是必填,否则也会失败

我的代码中用了异步对象,和华为工程师沟通建议是异步

internal static class IoTHelper { const string _AK = "*******************"; const string _SK = "*********************"; const string _ProjectID = "***********************"; private static readonly IoTDAAsyncClient _Client = Init(); ///

/// 内部初始化 /// /// private static IoTDAAsyncClient Init() { var config = HttpConfig.GetDefaultConfig(); config.IgnoreSslVerification = true; var auth = new BasicCredentials(_AK, _SK, _ProjectID); var client = IoTDAAsyncClient.NewBuilder() .WithCredential(auth) .WithRegion(IoTDARegion.ValueOf("cn-north-4")) .WithHttpConfig(config) .Build(); return client; } /// /// 添加IoT设备 /// /// /// internal static async Task AddDevice(string nodeId, string name) { var req = new AddDeviceRequest { Body = new AddDevice() { AppId = "98500a1e2db04cf8989eb0bca66270dd", ProductId = "619ceb7df8e4e6028810fae9", DeviceName = string.IsNullOrWhiteSpace(name) ? nodeId : name, NodeId = nodeId } }; try { var resp = await _Client.AddDeviceAsync(req); var respStatusCode = resp.HttpStatusCode; return resp; } catch (RequestTimeoutException requestTimeoutException) { LogHelper.Error(requestTimeoutException); } catch (ServiceResponseException clientRequestException) { LogHelper.Error(clientRequestException); } catch (ConnectionException connectionException) { LogHelper.Error(connectionException); } return null; } }

API IoT

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:一日一技:生成器里面的 return 有什么用?
下一篇:CSS的代码规范
相关文章