一、實(shí)訓(xùn)目的
1、會(huì)使用HTTP推送
2、了解如何處理HTTP推送
二、實(shí)訓(xùn)步驟
(云平臺輸入命令控制)
(1)燒寫代碼

(2)發(fā)送寫入數(shù)據(jù)true

(3)發(fā)送數(shù)據(jù)false

(4)平臺發(fā)送記錄

(通過即使命令-寫入設(shè)備實(shí)現(xiàn)LED燈)
(1)添加參數(shù)


(2)添加代碼

(3)寫入命令-開燈


(4)寫入命令-關(guān)燈


(HTTP數(shù)據(jù)推送自動(dòng)開關(guān)LED燈)
在 OneNET Studio 平臺上接入 NB 設(shè)備后,完成從 Studio 向第三方應(yīng)用(本應(yīng)用)的數(shù)據(jù)推送,從而在應(yīng)用程序中獲取 NB 設(shè)備的所有數(shù)據(jù)。同時(shí),在應(yīng)用程序中監(jiān)控光照傳感器的值,達(dá)到預(yù)設(shè)的最大閾值后,調(diào)用 LwM2M IPSO API,自動(dòng)關(guān)閉 LED 燈;達(dá)到預(yù)設(shè)的最小閾值后,調(diào)用 API 自動(dòng)打開 LED 燈,從而實(shí)現(xiàn)節(jié)能的目的。 本項(xiàng)目基礎(chǔ)代碼由中移官方數(shù)據(jù)推送 SDK 克隆而來,使用命令 git clone -b OneNET5.0 https://github.com/cm-heclouds/data-push,然后再簡單地封裝了一下 Studio 訪問 LwM2M IPSO 的 API。
(1)步驟1 安裝依賴
①用工具包中提供的 JDK1.8 安裝程序,進(jìn)行默認(rèn)安裝即可。需要注意的是,安裝完成后,必須配置三個(gè)環(huán)境變量,以便應(yīng)用開發(fā)時(shí)能夠順利找到 Java 環(huán)境。

②使用工具包中提供的 Maven3.3.9,將壓縮包解壓縮到本機(jī)目錄,最好是無空格的英文目錄,比如 D:\apache-maven-3.3.9,設(shè)置環(huán)境變量

③使用工具包中提供的 IntelliJ IDEA 2019 安裝包,進(jìn)行默認(rèn)安裝。安裝完成后,在啟動(dòng)界面選擇 "Configure->Settings"進(jìn)行全局設(shè)置,輸入maven進(jìn)行搜索,然后將 Maven 的實(shí)際安裝路徑填入。

(本項(xiàng)目依賴于:( ①JDK 1.8 ②Maven 3.3.9 ③IntelliJ IDEA 2019 )
(2)步驟2 運(yùn)行程序
在 IntelliJ IDEA 啟動(dòng)界面選擇 "Import Project",定位到本程序的 pom.xml 文件,然后打開項(xiàng)目。 打開 JAVA\src\main\java\com\onenet\datapush\receiver\ReceiverDemo.java 文件,點(diǎn)擊綠色三角,則可以運(yùn)行本程序。
1)修改參數(shù)
① api.authorization: 使用 OneNET Studio 提供的Token工具生成。息。
② light.imei: NB-IoT 設(shè)備的 IMEI 號。
③ http-push.token: 第三方應(yīng)用 Token,HTTP 數(shù)據(jù)推送頁面中配置的 Token 需要與之一致。
④ http-push.aesKey: 第三方應(yīng)用 AesKey,HTTP 數(shù)據(jù)推送頁面中配置的 AesKey 需要與之一致。本實(shí)驗(yàn)中這里設(shè)置為空,于此同時(shí),下一個(gè)步驟中,數(shù)據(jù)推送配置頁面上的“消息加密方式”應(yīng)該對應(yīng)選擇“明文模式”。

(3)步驟3 OneNET Studio HTTP 數(shù)據(jù)推送配置
1)配置
實(shí)例名稱:自己取一個(gè)合理的名稱。
推送地址:http://www.xxx.net/receive,注意 URL 后面必須包含 /receive,它是在本應(yīng)用程序中實(shí)現(xiàn)的,用于接收處理 Studio 的驗(yàn)證和數(shù)據(jù)。
Token:自己輸入一個(gè)合理的字符串。該字符串需要與配置文件中的 http-push.token 保持一致。
消息加密方式:選擇“明文模式”,本應(yīng)用程序不進(jìn)行消息加密。
配置完成以后,需要手動(dòng)點(diǎn)擊數(shù)據(jù)推送的“驗(yàn)證”按鈕

2)發(fā)送一個(gè)GET請求,返回msg、nonce、 signature三個(gè)參數(shù)
(4)步驟4 OneNET Studio 規(guī)則引擎配置
①在 Studio 上點(diǎn)擊“應(yīng)用開發(fā)->項(xiàng)目管理”,新建一個(gè)項(xiàng)目,取一個(gè)合理的名稱。
②點(diǎn)擊”進(jìn)入項(xiàng)目管理”按鈕,就可以進(jìn)入項(xiàng)目管理頁面。在“設(shè)備管理→設(shè)備列表”中,點(diǎn)擊“添加設(shè)備”按鈕,將前面創(chuàng)建的NB-IoT設(shè)備加入到該項(xiàng)目中
③點(diǎn)擊“規(guī)則引擎”按鈕,創(chuàng)建一個(gè)規(guī)則引擎。勾選所有的消息源,指定前面創(chuàng)建的 NB-IoT 產(chǎn)品,然后關(guān)聯(lián)前面創(chuàng)建的 HTTP 數(shù)據(jù)推送。
④配置完成后,啟動(dòng)該規(guī)則引擎,則當(dāng) NB-IoT 設(shè)備上下線、上報(bào)新數(shù)據(jù)時(shí),本應(yīng)用程序就能夠獲得這些數(shù)據(jù),并打印在程序的控制臺上
(5)步驟5 根據(jù)光照度的閾值自動(dòng)開關(guān)LED燈
當(dāng)數(shù)據(jù)上報(bào)到本應(yīng)用程序后,程序會(huì)解析其中的光照度數(shù)據(jù),并且根據(jù)預(yù)設(shè)的閾值,對LED燈進(jìn)行控制,邏輯如下:(控制 LED 燈的開關(guān),調(diào)用了 OneNET Studio 平臺提供的 LwM2M-IPSO類 → 即時(shí)命令A(yù)PI → 寫設(shè)備資源 API)
/* 解析光照度,根據(jù)光照度的值調(diào)用LED控制API */
try {
JSONObject object = new JSONObject(obj.toString());
JSONObject illumi = getIlluminance(object);
if (illumi != null)
{
float value = illumi.getFloat("value");
logger.info("illuminance value: " + value);
if (value > light.getThresholdMax())
{
// 調(diào)用寫資源API關(guān)閉LED燈
light.turnOff();
} else if (value < light.getThresholdMin())
{
// 調(diào)用寫資源API打開LED燈
light.turnOn();
}
}
}
catch (Exception ex) {
}
三、實(shí)訓(xùn)小結(jié)
本次實(shí)訓(xùn)任務(wù)達(dá)到如下幾個(gè)主要的技能訓(xùn)練目的:
1、會(huì)使用HTTP推送
2、了解如何處理HTTP推送
物應(yīng)2007班 曹尹勵(lì)