新聞中心
PRESS CENTER在工業(yè)自動(dòng)化和物聯(lián)網(wǎng)應(yīng)用場景中,設(shè)備需要持續(xù)不斷地將采集數(shù)據(jù)上傳到云端服務(wù)器。但在實(shí)際應(yīng)用中,可能會(huì)遇到服務(wù)器連接中斷或者斷網(wǎng)的情況,導(dǎo)致數(shù)據(jù)丟失。為了確保數(shù)據(jù)的完整性,本案例設(shè)計(jì)了一個(gè)相較緩存隊(duì)列更穩(wěn)定的斷網(wǎng)續(xù)傳方案,采用時(shí)序數(shù)據(jù)庫作為數(shù)據(jù)暫存區(qū),確保在網(wǎng)絡(luò)中斷時(shí)數(shù)據(jù)不會(huì)因?yàn)閿嚯姸鴣G失,并能夠在網(wǎng)絡(luò)恢復(fù)后自動(dòng)將這些數(shù)據(jù)補(bǔ)發(fā)到服務(wù)器。
注:使用時(shí)序數(shù)據(jù)庫需插入TF卡
整個(gè)流程如下圖所示:
a.網(wǎng)絡(luò)正常時(shí),采集數(shù)據(jù)直接上傳至云端
b.網(wǎng)絡(luò)異常時(shí),采集數(shù)據(jù)存入本地時(shí)序數(shù)據(jù)庫
c.網(wǎng)絡(luò)恢復(fù)后,自動(dòng)從時(shí)序數(shù)據(jù)庫中補(bǔ)發(fā)數(shù)據(jù)至云端
1. 網(wǎng)絡(luò)狀態(tài)監(jiān)測
狀態(tài)變化節(jié)點(diǎn)監(jiān)測服務(wù)器連接狀態(tài)的變化,確保能夠及時(shí)感知連接的建立或斷開。
條件判斷節(jié)點(diǎn)根據(jù)接收到的狀態(tài)信號(hào)進(jìn)行邏輯判斷,決定后續(xù)的操作。
函數(shù)計(jì)算節(jié)點(diǎn)根據(jù)網(wǎng)絡(luò)連接狀態(tài)設(shè)置全局變量(connectFlag)與消息對(duì)象屬性(delay和reset),用于控制后續(xù)流程的執(zhí)行邏輯:
連接成功:
設(shè)置全局變量connectFlag為 true,表示網(wǎng)絡(luò)連接正常。
設(shè)置消息對(duì)象的 delay 屬性為 3000 毫秒(時(shí)間可根據(jù)自己需求修改),這樣觸發(fā)節(jié)點(diǎn)會(huì)每隔 3 秒輸出一次,觸發(fā)讀取數(shù)據(jù)庫數(shù)據(jù)。
連接失敗:
設(shè)置全局變量connectFlag為 false,表示網(wǎng)絡(luò)連接異常。
設(shè)置消息對(duì)象的 reset 屬性為任意非空值,控制觸發(fā)節(jié)點(diǎn),停止觸發(fā)讀取數(shù)據(jù)庫數(shù)據(jù)。
此處為語雀視頻卡片,點(diǎn)擊鏈接查看:見文末
2. 創(chuàng)建數(shù)據(jù)庫
初次使用前,請(qǐng)先通過配置流程創(chuàng)建數(shù)據(jù)庫。此處不對(duì)數(shù)據(jù)庫的使用做過多贅述,詳情可參考:https://iotrouter.yuque.com/org-wiki-iotrouter-rlzwv5/eg8000/latkczb4gvgg154y
3. 數(shù)據(jù)上報(bào)/存儲(chǔ)
以采集Modbus數(shù)據(jù)作為數(shù)據(jù)源為例,數(shù)據(jù)采集部分的具體實(shí)現(xiàn)可參考其他示例。這里主要說明函數(shù)計(jì)算節(jié)點(diǎn)在流程中的作用:
a.將采集的數(shù)據(jù)封裝需要的數(shù)據(jù)格式,這里為Json格式。
b.根據(jù)全局變量connectFlag的值決定數(shù)據(jù)的流向:
輸出口1:connectFlag 為 true(表示網(wǎng)絡(luò)連接正常),則將數(shù)據(jù)正常上傳至服務(wù)器。
輸出口2:connectFlag 為 false(表示網(wǎng)絡(luò)連接失?。瑒t將數(shù)據(jù)存入數(shù)據(jù)庫。
4. 數(shù)據(jù)續(xù)傳
數(shù)據(jù)續(xù)傳從數(shù)據(jù)庫中的第一條記錄開始,獲取完成后立即將該條數(shù)據(jù)刪除,確保后續(xù)讀取下一條數(shù)據(jù)時(shí)不會(huì)重復(fù)。如此循環(huán),直至補(bǔ)傳完成。
觸發(fā)節(jié)點(diǎn):根據(jù)前面網(wǎng)絡(luò)監(jiān)聽流程輸出的 delay 和 reset 屬性值,判斷是否執(zhí)行數(shù)據(jù)庫查詢操作。
函數(shù)節(jié)點(diǎn)1(構(gòu)造讀數(shù)據(jù)):構(gòu)造 SQL 語句,查詢按時(shí)間順序最早插入的一條數(shù)據(jù)。
函數(shù)節(jié)點(diǎn)2(解析、封裝、刪除已補(bǔ)發(fā)數(shù)據(jù)):
將補(bǔ)傳數(shù)據(jù)封裝為所需格式(此處為 Json 字符串),并通過輸出口1上傳至服務(wù)器。
構(gòu)造用于刪除當(dāng)前補(bǔ)傳數(shù)據(jù)的SQL語句,并通過輸出口2發(fā)送至數(shù)據(jù)庫節(jié)點(diǎn)以觸發(fā)刪除操作。
捕獲異常節(jié)點(diǎn):當(dāng)檢測到數(shù)據(jù)庫中的數(shù)據(jù)已補(bǔ)發(fā)完成時(shí),停止對(duì)數(shù)據(jù)庫的查詢操作。
此處為語雀視頻卡片,點(diǎn)擊鏈接查看:見文末
5. 效果演示
此處為語雀視頻卡片,點(diǎn)擊鏈接查看:見文末
其他:內(nèi)置緩存隊(duì)列節(jié)點(diǎn)實(shí)現(xiàn)斷網(wǎng)續(xù)傳-EG網(wǎng)關(guān)-成都縱橫智控