电信物联网平台对接教程
github资源:https://github.com/AbitGo/mybatis_csdn/tree/master/workspace测试预览版
一.准备工作
1.1 电信物联网平台账号申请
在进行与电信平台的对接之前需要在以下的网站中申请物联网开发者平台的账号,申请环节将不做赘述。
超链接:https://develop.local.ct10649.com:8843/login?service=https%3A%2F%2Fdevelop.ct10649.com%3A8093%2F#/developer-overview
1.2 https级别IP
在获取电信物联网开发者平台帐号之后,需要准备一个拥有https级ip的服务器,这里我使用的是阿里云的云服务器,如果使用非https级别ip即需要与电信签署白名单协议。
1.3 获取APPID以及密钥
在电信平台中需要保存APPID以及其密钥,以下是一个获取的例子(不可用)。
APPID OB1tsCOc05HBFgLXXXxxxQTYnywa ZPizGJWDmdm87CXXXxxxfLzLjRsa |
二、程序对接
2.1 鉴权对接
查看java程序中的Authentication.java文件中代码,修改部分Constant.java中的参数并使用使用初次登陆FirstLogin函数。
对接电信云平台登陆成功之后需要进行周期性的鉴权刷新,此处建议使用Spring框架中的Scheduled写定时刷新。详细代码可参考src/com/util文件下的timingService.java文件中的RefreshToken函数,并且需要将刷新生成的accessToken更新至Constant.java中(此处做一个解释,在进行初次对接的时候Authentication.java中已经进行了该静态数据的生成与赋值)。
2.2 订阅服务通知
在接收到物联网平台的推送订阅服务通知之前需要准备https的ip以及需要使用src\main\java\com\IOT\service\subscribtionManagement文件夹中的SubscribeServiceNotification.java文件,在该文件只需要运行一次即可,并且可以在电信物联网平台观察到这个订阅服务已经生效。
使用教程:使用idea或者eclipse编辑器的CTRL+点击方式进入SubscribeServiceNotification.java中的Constant.java中的参数,详细的参数在注释中已经提示。修改完毕只有点击运行即可,不需要进行任何操作,此时你可以看见在电信平台的订阅服务中看见我们刚刚修改的订阅服务,例如设备状态改变:devcieDataChanges:https:192.168.1.1:8080/api/devcieDataChanges。
2.2 创建设备下发命令
创建设备下发命令需要在java工程中的resources文件夹下放置cert/ca.jks以及outgoing.CertwithKey.pkcs12两个文件,例如在TaskController.Java文件中CreateDeviceCommand函数进行我们命令的下发,此时我们需要传入若干参数,但是必须注意的是,在进行设备下发的时候需要获取我们上面刷新到的Constant.accessToken以免造成下发失败。详细可以根据硬件厂商定制的profile文件进行命令的定制
2.3 接收电信物联网平台推送
接收电信物联网平台的推送之前确保消息服务已经订阅成功,使用电信平台时候需要使用Spring框架中的RESTful接口进行推送消息的接收,如以下代码所示。
//电信传回的数据 |
public static final String DEVICE_DATA_CHANGED_CALLBACK_URL = CALLBACK_BASE_URL + "/IoT/updateDeviceData"; |
从上述代码我们可以通过看出,上面为我们自定义的电信接口,下面为推送订阅服务中设定的接口,这里的联动性需要注意。
其余的接口大同小异,逻辑不做过多的赘述。可以参考src\main\java\com\IOT\IOTController中的接口进行修改。
2.4 注意事项
在与电信物联网平台的对接过程中需要注意以下几点:
- 项目运行开始时需要进行鉴权,并且需要进行周期刷新鉴权
- 鉴权获取的accessToken可以使用静态变量进行数据的存取
- 下发需要获取上述的鉴权信息,并且需要参考硬件提供商的profile文件
- 消息订阅以及消息推送具有整体性,两者关系紧密
- 当单设备推送消息较多可以使用组推送
- 一次性数据可以使用redis技术,提高程序运行效率
- 使用SpringBoot框架请多借鉴本程序尤其是application.yml与pom.xml中配置
- Spring boot打包的jar与直接在运行程序是不一样的,尤其注意cert文件夹(在demo中我在src中也保留了一份)
- 需要注意跨域,可以直接仿照本demo进行跨域
- 本demo使用spring-boot+mybatis+mysql主要jar都在pom.xml文件中体现
来源:CSDN
作者:Bit_We
链接:https://blog.csdn.net/Abit_Go/article/details/103837077