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请求调试签名认证:
在这里插入图片描述
其中msg,signature,nonce值可以随便填写。

4 OneNet平台设置

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

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

5 数据查看

5.1 发送数据到OneNET

利用QCOM模拟数据发送到OneNET,
在这里插入图片描述
具体可以参考移远NB-IOT BC28 模组 接入移动OneNET平台
在这里插入图片描述

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平台。

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

下面是一个使用Java语言向第三方推送数据成功的示例: ```java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; public class PushDataToThirdParty { public static void main(String[] args) { try { String url = "http://example.com/receive_data"; // 第三方接收数据的URL String apiKey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; // OneNet平台API Key String data = "{\"temperature\": 25.6, \"humidity\": 60.2}"; // 推送数据,可以是任意格式 // 构建请求URL String requestUrl = url + "?api_key=" + apiKey + "&data=" + URLEncoder.encode(data, "UTF-8"); // 发送HTTP请求 URL obj = new URL(requestUrl); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); con.setRequestMethod("POST"); // 获取响应码 int responseCode = con.getResponseCode(); // 判断响应码并输出结果 if (responseCode == HttpURLConnection.HTTP_OK) { // 推送数据成功 System.out.println("Data push success"); } else { // 推送数据失败 System.out.println("Data push failed"); } // 关闭连接 con.disconnect(); } catch (Exception e) { e.printStackTrace(); } } } ``` 在上面的示例中,我们首先构建了一个请求URL,其中包含了OneNet平台的API Key和推送数据。然后,我们使用`HttpURLConnection`类发送了一个POST请求,获取了HTTP响应码。最后,根据HTTP响应码判断数据推送的成功与否,并输出结果。 需要注意的是,这只是一个简单的示例,实际应用中还需要考虑一些其它的因素,例如数据格式、网络连接等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值