一控嗜、實訓目的
1废士、會使用HTTP推送
2、了解如何處理HTTP推送
二施籍、實訓步驟
(云平臺輸入命令控制)
(1)燒寫代碼
(2)發(fā)送寫入數(shù)據true
(3)發(fā)送數(shù)據false
(4)平臺發(fā)送記錄
(通過即使命令-寫入設備實現(xiàn)LED燈)
(1)添加參數(shù)
(2)添加代碼
(3)寫入命令-開燈
(4)寫入命令-關燈
(HTTP數(shù)據推送自動開關LED燈)
在 OneNET Studio 平臺上接入 NB 設備后,完成從 Studio 向第三方應用(本應用)的數(shù)據推送占调,從而在應用程序中獲取 NB 設備的所有數(shù)據暂题。同時,在應用程序中監(jiān)控光照傳感器的值究珊,達到預設的最大閾值后薪者,調用 LwM2M IPSO API,自動關閉 LED 燈剿涮;達到預設的最小閾值后言津,調用 API 自動打開 LED 燈,從而實現(xiàn)節(jié)能的目的取试。 本項目基礎代碼由中移官方數(shù)據推送 SDK 克隆而來悬槽,使用命令 git clone -b OneNET5.0 https://github.com/cm-heclouds/data-push,然后再簡單地封裝了一下 Studio 訪問 LwM2M IPSO 的 API瞬浓。
(1)步驟1 安裝依賴
①用工具包中提供的 JDK1.8 安裝程序初婆,進行默認安裝即可。需要注意的是猿棉,安裝完成后磅叛,必須配置三個環(huán)境變量,以便應用開發(fā)時能夠順利找到 Java 環(huán)境萨赁。
②使用工具包中提供的 Maven3.3.9弊琴,將壓縮包解壓縮到本機目錄,最好是無空格的英文目錄杖爽,比如 D:\apache-maven-3.3.9敲董,設置環(huán)境變量
③使用工具包中提供的 IntelliJ IDEA 2019 安裝包,進行默認安裝慰安。安裝完成后腋寨,在啟動界面選擇 "Configure->Settings"進行全局設置,輸入maven進行搜索泻帮,然后將 Maven 的實際安裝路徑填入。
(本項目依賴于:( ①JDK 1.8 ②Maven 3.3.9 ③IntelliJ IDEA 2019 )
(2)步驟2 運行程序
在 IntelliJ IDEA 啟動界面選擇 "Import Project"计寇,定位到本程序的 pom.xml 文件锣杂,然后打開項目。 打開 JAVA\src\main\java\com\onenet\datapush\receiver\ReceiverDemo.java 文件番宁,點擊綠色三角元莫,則可以運行本程序。
1)修改參數(shù)
① api.authorization: 使用 OneNET Studio 提供的Token工具生成蝶押。息踱蠢。
② light.imei: NB-IoT 設備的 IMEI 號。
③ http-push.token: 第三方應用 Token,HTTP 數(shù)據推送頁面中配置的 Token 需要與之一致茎截。
④ http-push.aesKey: 第三方應用 AesKey苇侵,HTTP 數(shù)據推送頁面中配置的 AesKey 需要與之一致。本實驗中這里設置為空企锌,于此同時榆浓,下一個步驟中,數(shù)據推送配置頁面上的“消息加密方式”應該對應選擇“明文模式”撕攒。
(3)步驟3 OneNET Studio HTTP 數(shù)據推送配置
1)配置
實例名稱:自己取一個合理的名稱陡鹃。
推送地址:http://www.xxx.net/receive,注意 URL 后面必須包含 /receive抖坪,它是在本應用程序中實現(xiàn)的萍鲸,用于接收處理 Studio 的驗證和數(shù)據。
Token:自己輸入一個合理的字符串擦俐。該字符串需要與配置文件中的 http-push.token 保持一致脊阴。
消息加密方式:選擇“明文模式”,本應用程序不進行消息加密捌肴。
配置完成以后蹬叭,需要手動點擊數(shù)據推送的“驗證”按鈕
2)發(fā)送一個GET請求,返回msg状知、nonce秽五、 signature三個參數(shù)
(4)步驟4 OneNET Studio 規(guī)則引擎配置
①在 Studio 上點擊“應用開發(fā)->項目管理”,新建一個項目饥悴,取一個合理的名稱坦喘。
②點擊”進入項目管理”按鈕,就可以進入項目管理頁面西设。在“設備管理→設備列表”中瓣铣,點擊“添加設備”按鈕,將前面創(chuàng)建的NB-IoT設備加入到該項目中
③點擊“規(guī)則引擎”按鈕贷揽,創(chuàng)建一個規(guī)則引擎棠笑。勾選所有的消息源,指定前面創(chuàng)建的 NB-IoT 產品禽绪,然后關聯(lián)前面創(chuàng)建的 HTTP 數(shù)據推送蓖救。
④配置完成后,啟動該規(guī)則引擎印屁,則當 NB-IoT 設備上下線循捺、上報新數(shù)據時,本應用程序就能夠獲得這些數(shù)據雄人,并打印在程序的控制臺上
(5)步驟5 根據光照度的閾值自動開關LED燈
當數(shù)據上報到本應用程序后从橘,程序會解析其中的光照度數(shù)據,并且根據預設的閾值,對LED燈進行控制恰力,邏輯如下:(控制 LED 燈的開關叉谜,調用了 OneNET Studio 平臺提供的 LwM2M-IPSO類 → 即時命令API → 寫設備資源 API)
/* 解析光照度,根據光照度的值調用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())
{
// 調用寫資源API關閉LED燈
light.turnOff();
} else if (value < light.getThresholdMin())
{
// 調用寫資源API打開LED燈
light.turnOn();
}
}
}
catch (Exception ex) {
}
三牺勾、實訓小結
本次實訓任務達到如下幾個主要的技能訓練目的:
1正罢、會使用HTTP推送
2、了解如何處理HTTP推送
物應2007班 曹尹勵