?

物聯網設備故障檢測系統設計與實現

2022-03-19 02:18陳嘉歡
電腦知識與技術 2022年2期
關鍵詞:故障檢測

陳嘉歡

摘要:該文介紹了一個以SpringBoot框架為基礎的物聯網設備故障檢測系統的設計與實現過程。該系統使用了MySQL、Redis以及MongoDB數據庫,實現對物聯網設備進行故障檢測、對故障信息存儲和反饋的功能,從而滿足了對物聯網設備故障檢測的基本需求。

關鍵詞:物聯網設備;故障檢測;故障反饋;SpringBoot;Redis;MongoDB

中圖分類號:TP311.1 ? ? ?文獻標識碼:A

文章編號:1009-3044(2022)02-0109-03

1 引言

近年來,隨著社會和互聯網技術的快速發展,物聯網技術也日漸成熟,社會正在逐步走向“萬物互聯”的時代。目前市面上誕生了許多功能不同的諸如攝像頭、智能水表、電表以及智能家居等物聯網設備[1],這些物聯網設備的應用場景有很強的針對性并且十分智能,在提供了某方面功能的同時簡化了某些流程、減輕了使用負擔從而提升效率。與此同時,越來越多設備聯網,也會造成一些困擾,例如物聯網設備的操作管理流程復雜、設備發生故障難以及時發現等問題。其中對物聯網設備進行實時故障檢測和設備發生故障時的第一時間信息反饋尤為重要。合理運用物聯網設備故障檢測功能,能夠在設備發生故障時避免或減少造成相應的人力、物力損失。

為了解決上述提到的物聯網設備發生故障難以發現的問題,本文設計并實現了一個以SpringBoot[2]為基礎的故障檢測系統[3],將設備分成兩種類型,對不同類型的設備使用不同的方法進行故障檢測,當系統檢測到有設備發生故障時,會采用發送電子郵件的方式,通知相應的人員及時解決設備故障問題。

2 系統設計

2.1 總體設計

設計該系統使用到的編譯軟件是IDEA,主要以SpringBoot框架為核心,選擇MySQL數據庫[4]對物聯網設備信息持久化存儲、使用Redis數據庫的高速緩存功能對物聯網設備進行故障檢測,以及使用MongoDB文檔型數據庫對設備故障信息進行記錄。

本系統根據物聯網設備是否會主動上傳設備心跳信息分為兩種類型:設備會主動上傳心跳信息(主動類型)和設備不會上傳心跳信息(被動類型),對于兩種類型的設備使用不同的方法進行故障檢測。具體故障檢測流程如圖2所示。

2.2 數據庫設計

本系統使用MySQL關系型數據庫,對物聯網設備的基本信息進行持久化存儲和查詢。根據功能需求分析,需要創建一個devices_db設備數據庫,然后在數據庫里面分別創建兩個數據表:用戶信息表和設備信息表。

用戶信息表[5](user,用于登錄系統,以及記錄用戶信息),其中的字段包含用戶ID(user_id,用戶ID,主鍵),賬號(account,后臺登錄賬號),密碼(password,加密后的登錄密碼),用戶名(user_name,用戶姓名或昵稱),手機號(phone,用于短信提醒),電子郵箱(email,用于發送郵件提醒),鹽(salt,用于密碼加密驗證)等。

設備信息表(devices,記錄設備的基本信息),其中的字段包含設備ID(device_id,設備ID,主鍵),設備UID(設備自身ID,設備唯一ID),設備類型(device_type,用于區分設備屬于主動類型還是被動類型),設備名稱(device_name,設備的名字),設備地點(device_address,記錄設備所在地點),設備IP(device_ip,設備的IP地址,用于主動請求設備),設備狀態(device_state,用于顯示設備的在線狀態,在線或離線)等。

2.3 主動類型設備故障檢測設計

一般的物聯網設備都會有自動上傳心跳信息的功能,心跳信息包含對應的設備信息,如果設備有正常上傳心跳信息則可以判定設備目前正常運行,心跳信息上傳地址和推送間隔可以在設備后臺手動設置,本文將此類設備歸納為主動類型設備。圖3是某物聯網設備的心跳信息參數設置界面。

系統有一個專門接收心跳信息的接口,在接收到設備心跳信息時,將設備的UID與當前系統時間以鍵值對的形式存入到Redis緩存中,記錄設備最近一次的在線時間。圖4是系統接收設備心跳信息接口。

系統運行后,會定時執行一個判斷主動類型設備是否在線的任務,本系統設定為每分鐘執行一次,每次執行該任務都會先查詢設備信息表中所有的主動類型設備(根據device_type字段判斷),并生成對應列表(List),然后系統啟動多線程對列表中的所有設備進行故障檢測。

具體的檢測方法是根據當前設備的UID,并以這個UID為key去Redis緩存中查詢當前設備最后一次在線時間,將當前的系統時間減去設備最后一次在線時間,得到時間差,如果時間大于心跳上傳閾值(60秒)則判定該設備發生故障。

2.4 被動類型設備故障檢測設計

與主動類型設備相反,不會上傳心跳信息的設備則為被動類型設備。對于被動類型設備,不能通過等待設備主動響應的方式來判斷設備是否發生故障,因此想要知道設備是否在線,需要系統主動去請求設備,例如主動請求設備信息接口或者Ping設備IP。因為不同設備的獲取信息接口格式不一,所以本文采用主動Ping設備IP的方式來實現。系統啟動后,也會每分鐘執行一次定時任務,查詢設備信息表中所有被動類型設備并生成對應列表。

然后系統將啟用多線程對列表中的每臺被動類型設備采用Ping設備IP的方式主動發起請求,如果設備在3秒內沒有響應,則重新發生請求,以防網絡波動引起誤判,如果再次請求設備還是沒有響應則判定該設備發生故障。

2.5 設備故障反饋設計

對于主動類型設備和被動類型設備,當根據對應的方法判定設備發生故障后,會先將設備UID為key,設備的狀態為value存入到一個公有的故障設備映射(Map)中,此步驟是為了避免某設備發生故障后,一直重復提醒該設備發生故障。隨后將此故障設備信息和當前系統時間存入到MongoDB數據庫以及公有的故障集合(Set)中。

在系統啟動后,每分鐘都會執行一個定時任務,每次執行時都將判斷故障設備集合(Set)是否為空,如果不為空,則說明有設備發生故障,此時系統將發送電子郵件到管理人員郵箱中,提醒有設備發生故障,盡快處理。發送電子郵件后,系統將會清空故障設備列表,避免重復發送郵件通知。

3 系統測試

該系統的可運行在Linux和windows操作系統上,運行前必須在本地或者服務器上安裝配置好JDK1.8及以上的環境,并且啟動MySQL、Redis以及MongoDB數據庫確保連接成功,并且MySQL數據庫中需要創建好device_db數據庫,里面應包含用戶信息表(user)和設備信息表(devices),通過修改項目的配置文件,填寫MySQL、Redis、MongoDB數據庫的連接地址(url)、端口(port)、賬戶和密碼,本文將數據庫部署在云服務器上并且在本地啟動項目運行,成功連接上服務器的數據庫[6]。

本地測試連接數據庫成功后,即可使用Maven工具將項目打成jar包,通過使用XShell、XFtp等工具連接上云服務器再將jar包上傳到服務器上并運行起來,系統成功啟動。

MySQL數據庫中設備信息表存在部分主動類型設備和被動類型不在線,因此系統通過定時任務檢測到設備故障,然后發送電子郵件提醒,設備故障信息郵件如圖13所示。

4 結束語

本文設計并實現了基于SpringBoot框架開發的物聯網設備故障檢測系統,通過將物聯網設備分成主動和被動兩種類型,分別采用不同的方法進行故障判斷。對于主動類型設備,系統根據定時任務,將設備存儲在Redis緩存里的最近一次心跳記錄時間與當前時間作比較,如果時間差大于設定閾值,則判斷設備發生故障,反之則設備正常;對于被動類型設備,系統根據定時任務,主動請求設備IP地址,并等待設備響應,如果設備在設定的閾值時間內沒有響應,則判斷設備發生故障,如果有響應則說明設備正常。對于故障反饋,也是采用定時任務的方式,當系統發現故障列表不為空,則將故障列表里的設備存儲在MongoDB數據庫中,并及時將故障設備信息發送電子郵件通知到對應的用戶。

當然本系統也存在一定的缺陷,頻繁使用定時任務檢測,以及開啟多線程去請求多臺設備,會占用一定的系統資源,還有可能造成線程堵塞,影響效率。未來會有更多的設備聯網,對物聯網設備的故障檢測會愈發得到人們重視,也會有更多的方法對現有的系統提出改進,對高并發、多線程情景做優化處理。

參考文獻:

[1] 高小淋.物聯網設備通訊故障檢測技術與解決方案[J].電腦知識與技術,2021,17(9):210-212.

[2] 楊開振.深入淺出Spring Boot 2.x[M].北京:人民郵電出版社,2018.

[3] 張海藩.軟件工程[M].4版.北京:清華大學出版社,2003.

[4] 唐漢明.深入淺出MySQL[M].北京:人民郵電出版社,2014.

[5] 桑一梅,陸文怡.學生管理系統的設計與實現[J].電腦知識與技術,2020,16(35):62-63,77.

[6] 李宏坤,鄭光勇,謝舞,等.基于spring boot框架的公司考勤系統的研究與設計[J].電腦知識與技術,2019,15(18):55-56.

【通聯編輯:謝媛媛】

2923500783331

猜你喜歡
故障檢測
無線傳感器網絡故障檢測研究
針對橢圓曲線密碼系統點乘算法的改進差分故障攻擊
計算機硬件維修及故障檢測
電力系統繼電保護及故障檢測方法研究
基于定子逆序的電機同步速變換故障檢測算法
優化網絡設備維護提高數據通信傳輸質量
新型探測線圈淺析
暖通空調系統故障檢測與診斷技術探討
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合