OneNet平台对接记录

手头有一台支持中移动的OneNet平台的接口的烟感设备,刚好可以用来了解一下移动搭建的这套开放平台。

OneNet平台简介

OneNet平台是中国移动物联网公司推出的物联网解决方案平台。对于集成了移动的物联网模块,NB-IOT模块的设备,目前是可以免费接入这个平台进行数据展示。移动其实也是想做大平台,控制数据流,期望采用了NB-IOT模块的设备都能够在自己的掌控中。首先这套平台提供了一套API给设备接入,只要按照这套API进行对接,设备就可以接入,这部分不是这次的重点,后面应该也会写一篇博客专门讲设备接入。其次这套平台还提供了一套API给第三方的平台来调用,方便第三方平台来获取设备数据。从软件结构上来看OneNet平台很像一个中间件,客户的设备通过一套接口对接这个平台,客户想拿设备数据通过这个平台的一套接口来拿。
目前OneNet平台支持的协议还是相当丰富的,有MQTT、MODBUS、LWM2M、EDP、RGMP、http、tcp透传等。
另外,除了中国移动,中国电信也建立了自己的物联网解决方案平台easy-iot平台。百度也建立了自己的天工物联网开放平台。还有一些其他厂商也建立了自己的物联网开放平台,其实都是期望能成为标准,成为数据的掌控者。

设备接入OneNet

手头的烟感设备集成了NB-IOT模块,接入相对简单,这里只简单介绍接入过程。首先要在平台注册,然后建立产品,在产品下面建立对应的设备,这里有两个比较重要的参数一个是IMEI,一个是IMSI。设备录入成功后就像下面这个样子,如果在线,颜色应该是绿的。
这里写图片描述
详细信息能看到每条上来的数据。
这里写图片描述

设备数据获取

如何从OneNet平台获取数据呢?
OneNet平台给我们提供了一种特别简单的方式,这里只介绍最简单的,只要我们配好一个IP和端口,那么一旦有设备数据上行到OneNet平台,那么OneNet平台会将这条数据推送到我们设置好的IP和端口上,数据格式也比较简单,类似这个样子:

自有平台搭建

那么我们首先要搭建我们用来接收OneNet推送数据的简易平台。
我在公网的服务器上起了一个workman的框架,配好端口就可以了。
端口我用的7377

$webserver = new WebServer(‘http://0.0.0.0:7377‘);
$webserver->addRoot(‘test.onenet.cn’, ‘/home/even/api/onenet’);

启动workman的日志如下:

----------------------- WORKERMAN -----------------------------
Workerman version:3.5.4          PHP version:5.6.33
------------------------ WORKERS -------------------------------
user          worker        listen               processes status
even            none          tcp://0.0.0.0:7177    1         [OK] 
even            WebServer     http://0.0.0.0:7377   1         [OK] 
----------------------------------------------------------------
Press Ctrl+C to quit. Start success.

我在/home/even/api/onenet放置的index.php来接收设备数据,index.php简单代码如下:

<?php
$file  = "/home/even/api/onenet/iot.log";

if( $_SERVER['REQUEST_METHOD'] == "GET" ){
        $result=$_GET['msg'];
        echo "$result";
        if($f  = file_put_contents($file, $result,FILE_APPEND)){
        }else{
                echo "file print fail\n";
        }

}else if( $_SERVER['REQUEST_METHOD'] == "POST" ){
        $result="";
        if($result == ""){
                $result="isnull";
        }
        $result=$_POST;
        $data=json_encode($_POST);
        if($f  = file_put_contents($file, $data,FILE_APPEND)){
        }else{
                echo "file print fail\n";
        }
}

?>

大概就是如果get方法,就认为是验证,直接提取msg返回即可,如果是post,认为是数据,写到本地的文件。

OneNet配置

将我们搭建好的IP和端口配置到OneNet平台中:
这里写图片描述
选用最简单的明文模式,然后提交,此时OneNet平台会向我们搭建的建议平台发送认证信息,GET方法送过来三个参数,我们只要把其中的msg参数提取出来,回给这一次的http请求就可以完成平台认证,就是这么简单。完成认证后是这个样子:
这里写图片描述
然后等着收数据就可以了。
下面是收到的一条数据

{“msg”:{“at”:1532944417722,”imei”:”xxxxxxxxxxx”,”type”:1,”ds_id”:”3200_0_5750”,”value”:”1500100100050031214922020001030300010D”,”dev_id”:36620955},”msg_signature”:”7x3qm+f98Pkb\/dOmt5FSXw==”,”nonce”:”*NYf0@lF”}

扫描二维码关注公众号,回复: 2494526 查看本文章

这里我隐去了IMEI,能够看到其中value值就是我们在平台上看数据详情中最上头的一条。至此整个流程走完,想做负责一点的小伙伴可以尝试一下加密。

猜你喜欢

转载自blog.csdn.net/lixuande19871015/article/details/81292508