OneNET平台数据推送 php版

1 OneNET平台数据推送简介

传感器等现场数据获取后,通过NB-IOT传输到OneNET平台。第三方应用平台可以通过API、消息队列MQ和HTTP推送。
由于现场数据的发送和控制参数下发时间不规律,实时性要求比较高。拟选用HTTP推送方式进行测试。
OneNET的HTTP推送是以第三方应用平台为主服务器,OneNET平台为客户端。当OneNET平台收到最新数据,根据推送设置,建立与第三方应用平台的联系,然后通过POST传递数据。
具体详细介绍见开发文档:https://open.iot.10086.cn/doc/book/application-develop/httppush/introduce.html

2 准备

开发板:NB dongle(物联网俱乐部 www.iotclub.net
模块:Quectel移远 BC28
固件版本:BC28JAR01A01_ONT
通信方式:NB-IOT
通信运营商:中国移动

第三方云服务器平台: 阿里云 Linux nginx php5.5

开发版调试软件:QCOM_V1.6
调试平台:WIN7 X64
测试浏览器: Sougou postman
代码编辑器: HBulider
FTP 工具:WinSCP

3 php 代码处理

3.1 Demo下载

可以采用OneNET官方所给出的数据推送服务端SDK Demo,下载地址为:https://open.iot.10086.cn/doc/book/application-develop/httppush/sdk.html

3.2 php代码编辑

官方所给的php代码一共有两个php文件,example.php 为外部调用文件,util.php为类文件。
为使用方便,上传到服务器后可以直接访问,避免OneNET平台报错,将example.php改名为index.php。
打开util.php,只需要输入token,encodekey,和文件存储路径即可。

class Util
{

    public static $token = '123456789';  //输入token 需要与OneNET一致

    public static $encodekey = '';  //输入encodekey 需要与OneNET一致

    /**
     * 一个超轻量级的日志方法,给开发者调试使用
     * A super-lightweight log method, for developers debugging
     * 
     * @param
     *            string or array $msg
     */
    public static function l($msg)
    {
        // echo $msg . '<br /><br />';
        if (is_array($msg))
            $msg = 'Array|' . json_encode($msg);
       file_put_contents('/www/iot/onenet/iot.log', "\n".date("Y-m-d h:i:sa")."--OneNET push data".$msg . "\n", FILE_APPEND);  //填写存储路径
    }

   // 注意:后部分代码省略
}

3.3 php代码上传到云服务器

将上述修改后的index.php和util.php上传到云服务器,例如/www/iot/onenet/

3.4 postman测试代码

为避免程序等出错,不好找原因,可以利用postman进行测试,当status返回值是200ok,就说明没有问题。若报错,说明程序或者配置有问题。
Get请求调试签名认证:
OneNET平台数据推送 php版
其中msg,signature,nonce值可以随便填写。

4 OneNet平台设置

OneNet平台设置可以参考官方开发文档,https://open.iot.10086.cn/doc/book/easy-manual/httppush.html

为便于数据分类推送,可以设置或添加群组,然后再设置数据推送。
OneNET平台数据推送 php版
OneNET平台数据推送 php版
OneNET平台数据推送 php版
输入第三方平台的地址或者ip地址,例如:http://a.com.cn/iot/onenet/
Token与php程序一致;
推送时间: 3S
推送数量累计:1~1000,可以填1000
添加后,若无提示报错,将自动进入启用开启状态。报错常常为URL地址没有匹配或GET验证没有通过,需要通过postman检查。
OneNET平台数据推送 php版

5 数据查看

5.1 发送数据到OneNET

利用QCOM模拟数据发送到OneNET,
OneNET平台数据推送 php版
具体可以参考移远NB-IOT BC28 模组 接入移动OneNET平台
OneNET平台数据推送 php版

5.2 服务器数据检查

可以从/www/iot/onenet/iot.log读取所获取数据流
例如:

2019-03-15 08:42:22pm--OneNET push dataArray|{"at":1552653742214,"login_type":10,"type":2,"dev_id":519358335,"status":1}
2019-03-15 08:43:00pm--{"msg":{"at":1552653775514,"type":1,"ds_id":"3311_0_5851","value":23,"dev_id":519358335},"msg_signature":"GRVlWyhN+K7rmi76OzgFmw==","nonce":"Yhv-F*ws"}

2019-03-15 08:43:00pm--OneNET push dataArray|{"at":1552653775514,"type":1,"ds_id":"3311_0_5851","value":23,"dev_id":519358335}
2019-03-15 08:43:17pm--{"msg":{"at":1552653792924,"type":1,"ds_id":"3311_0_5851","value":101,"dev_id":519358335},"msg_signature":"8AmCI2EgagIuuxJRnm8uVQ==","nonce":"GgatY_5&"}

2019-03-15 08:43:17pm--OneNET push dataArray|{"at":1552653792924,"type":1,"ds_id":"3311_0_5851","value":101,"dev_id":519358335}

若只有连接验证数据,没有获取更新数据,是NB-IOT设备没有注册上OneNET平台上的资源对象。可以重新连接NB-IOT或重新登录OneNET平台。

获取到的数据可以直接转存到数据库(注意:转存中需要进行数据重复性判断)。