赞
踩
新版onenet平台
作为onenet新用户,需要先进行账号注册登录
进入开发者 中心->产品开发->创建产品
产品品类无要求,智能化化选择设备接入,节点类型为直连设备,协议为HTTP
进入对应的产品开发
在产品开发下对对应产品进行项目管理,添加设备
设备名称为设备ID(新版统一设备名称和ID)位置信息可以不选择
找到esp8266设备->属性,即可看到产品下的设备自动添加了功能点
工具:
Postman、token生成工具/代码、开发文档
新版onenet平台提供了两种安全鉴权文档方式:设备接入的安全鉴权、平台API调用安全鉴权
对应的官方文档(新版)
https://open.iot.10086.cn/doc/v5/fuse/detail/913
建议用官方的Java代码复制到在线编辑器(官方的token计算工具算出来的不对)
在线编辑器:https://www.jyshare.com/compile/10/
version:平台规定用2018-10-31,不修改
res:设备级接入为products/产品ID/devices/设备ID(即设备名称)
et:过期时间不修改
accesskey:设备接入采用设备密钥
- import javax.crypto.Mac;
- import javax.crypto.spec.SecretKeySpec;
- import java.io.UnsupportedEncodingException;
- import java.net.URLEncoder;
- import java.security.InvalidKeyException;
- import java.security.NoSuchAlgorithmException;
- import java.util.Base64;
-
- public class Token {
-
- public static String assembleToken(String version, String resourceName, String expirationTime, String signatureMethod, String accessKey)
- throws UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeyException {
- StringBuilder sb = new StringBuilder();
- String res = URLEncoder.encode(resourceName, "UTF-8");
- String sig = URLEncoder.encode(generatorSignature(version, resourceName, expirationTime, accessKey, signatureMethod), "UTF-8");
- sb.append("version=")
- .append(version)
- .append("&res=")
- .append(res)
- .append("&et=")
- .append(expirationTime)
- .append("&method=")
- .append(signatureMethod)
- .append("&sign=")
- .append(sig);
- return sb.toString();
- }
-
- public static String generatorSignature(String version, String resourceName, String expirationTime, String accessKey, String signatureMethod)
- throws NoSuchAlgorithmException, InvalidKeyException {
- String encryptText = expirationTime + "\n" + signatureMethod + "\n" + resourceName + "\n" + version;
- String signature;
- byte[] bytes = HmacEncrypt(encryptText, accessKey, signatureMethod);
- signature = Base64.getEncoder().encodeToString(bytes);
- return signature;
- }
-
- public static byte[] HmacEncrypt(String data, String key, String signatureMethod)
- throws NoSuchAlgorithmException, InvalidKeyException {
- //根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称
- SecretKeySpec signinKey = null;
- signinKey = new SecretKeySpec(Base64.getDecoder().decode(key),
- "Hmac" + signatureMethod.toUpperCase());
-
- //生成一个指定 Mac 算法 的 Mac 对象
- Mac mac = null;
- mac = Mac.getInstance("Hmac" + signatureMethod.toUpperCase());
-
- //用给定密钥初始化 Mac 对象
- mac.init(signinKey);
-
- //完成 Mac 操作
- return mac.doFinal(data.getBytes());
- }
-
- public enum SignatureMethod {
- SHA1, MD5, SHA256;
- }
-
- public static void main(String[] args) throws UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeyException {
- String version = "2018-10-31";
- String resourceName = "products/bhgG9DOhK6/devices/esp8266";
- String expirationTime = System.currentTimeMillis() / 1000 + 100 * 24 * 60 * 60 + "";
- String signatureMethod = SignatureMethod.SHA1.name().toLowerCase();
- String accessKey = "NFR4SFYxYUNqb3MxWTc3SVNXODEwZGU3TDhZbHBCeDI=";
- String token = assembleToken(version, resourceName, expirationTime, signatureMethod, accessKey);
- System.out.println("Authorization:" + token);
- }
- }
得到token(令牌验证)
version=2018-10-31&res=products%2F产品ID%2Fdevices%2F设备名称&et=1714363706&method=sha1&sign=HlAgfxg5Ps7ZW9ULk%2Ff2Lv8I%2BDU%3D
postman官网:https://www.postman.com/downloads/
不注册账号也可以用
Address:https://open.iot.10086.cn/fuse/http
设备上报url(请求路径):/device/thing/property/post
路径参数:
topic | $sys/{pid}/{device-name}/thing/property/post |
protocol | http |
对于不同的设备操作的url
设备属性上报完整的请求路径如下
在postman中header中添加参数
Content-Type | application/json |
token | 设备级key计算出的token |
在Body中填写上报参数,选raw,发送格式选择JSON
官方文档:https://open.iot.10086.cn/doc/v5/fuse/detail/935
其中的time参数可以不添加,修改如下
- {
- "id":"123",
- "version":"1.0",
- "params":{
- "test":{
- "value":100
- },
- "shake":{
- "value":50
- }
- }
- }
Send请求体,收到 "errno": 0,"error": "succ",则属性上报成功
如果没有上报成功可以对应官方文档查询问题
https://open.iot.10086.cn/doc/v5/fuse/detail/934
关于新版onenet平台的功能开发欢迎大家持续关注,一起探讨
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。