王文超,徐超,高銘陽,余國輝,楊巍,張祎
(天津理工大學中環信息學院,天津 300380)
隨著網絡通信技術的發展,網絡的運用已經從人與人之間通信慢慢地發展成萬物互聯的時代。當下,網絡通信不僅僅是通知人員信息,更多的是基于智能終端的服務搭建,還能對智慧物流園、智能家居等進行搭建和維護,同時,云平臺的普及讓開發者對所需要掌握的技術能力要求大幅降低,僅僅調用云平臺所提供的人工智能接口就可以完成大部分智能搭建。
對于物聯網的應用,在國內已經有非常多的案例,如京東的物流倉庫、小米的智能家具,但是,對于學生來說,了解這些成體系的案例實在太難,而且人工智能的算法同樣不簡單,故本文介紹了一種基于云平臺人工智能接口,以及云端所提供的服務和樹莓派智能終端通過flask顯示的虛擬現實相結合的實驗平臺。
如圖1所示,本作品由終端設備識別出人臉后,送到百度云的庫中進行比對,如果是公司員工,則不報警,自動開門;如果是陌生人,則將照片上傳到阿里云 OSS 數據庫中,并將此條信息傳送倉庫釘釘群,同時收集倉庫環境信息,如果環境異常進行智能調度,同時上傳環境信息到釘釘群中。

圖1 整體流程圖
阿里云是阿里云計算有限公司發布的一個云平臺,其中的物聯網開發平臺可以讓初學者更好地學習物聯網知識,同時,阿里云自主研發的“飛天”操作系統,大大提高了該系統的規模以及穩定性,所以阿里云物聯網平臺也成為某些企業進行服務器搭建時的選擇。
百度云是百度發布的云平臺,相對于阿里云,百度云則是大部分的經濟與時間花費在人工智能算法與云存儲上,所以調用百度云的人工智能接口,不僅可以使初學者快速地完成功能的搭建,而且正確率往往比自己寫算法高很多。
Flask是一個對于開發環境沒有過多要求且可以針對不同應用場景可以進行開發的框架,使用Python語言編寫,相較目前主流運用Java的框架,編寫更加容易,與其他的輕量級框架相比,Flask框架有很好的擴展性,這是其他Web框架不可替代的??梢允箤W生更快更靈活地去完成開發任務。
釘釘是阿里巴巴集團專為中國企業打造的免費的溝通和協同的多端平臺,提供PC版、Web版、Mac版和手機版,支持手機和電腦間文件互傳。同時,釘釘內部的機器人接口支持開發,這樣為消息提醒提供了可能。
在物聯網開發中,必然少不了使用數據傳輸協議和數據庫的建立,如果自己創立MQTT協議,必然少不了大量的代碼編寫和穩定的網絡服務器,同時數據庫會占用大量電腦本地內存,針對以下問題在阿里云云端實驗平臺,對物聯網進行數據傳輸的協議MQTT和云存儲服務(oss),MQTT協議的作用是將終端所連接的設備收集的信息發送到多個收集端而不是傳送到單個地方,在此實驗中發送到阿里云物聯網平臺中OSS數據庫進行數據的查看和保存、flask所構建的窗口中進行設備狀態的改變和查看中和釘釘機器人中對于數據的發送,使學習者可以學習物聯網中的數據傳輸協議以及云數據庫專業知識,同時,云平臺提供的各種功能可以使學習者不需要過多地考慮設備版本以及操作難度,同時,阿里云實驗平臺良好的人機交互界面可以大大降低學習者對人機交互界面的開發和學習專業知識的成本。
在人臉識別方面,如果通過自己開發人臉識別會出現精度差、需要算法學習資源和對硬件設備的支持,所以在該實驗中百度云云端實驗平臺主要目的是調用人工智能API接口,去實現人臉識別功能,完成智能打卡的功能,同時,通過釘釘去通知倉庫內部人員。調用API接口可以降低系統各個部分的相互依賴,同時降低組成單元的耦合程度,從而可以便于系統的維護和擴展,學習者也不需要學習大量智能算法和調用大量算法學習資源。在百度云平臺上同樣提供了良好的人機交互界面,可以使學習者快速地學習。
對于通知方式的設計,無論是現在外界主流的通過手機短信還是通過一個固定網站的直接查看,都會出現提醒強度不夠強大和無法確認是否所有人都已經了解倉庫內部信息,然而,通過外界特定軟件去開發,會出現開發較難和收費等現象,所以在本實驗使用了釘釘機器人,釘釘中的機器人在釘釘中是一個獨立的應用,其可以支持二次開發,同時,也不需要任何應用進行強制綁定,所以可以通過MQTT協議定期使釘釘發送倉庫內部信息去通知內部工作人員,同時群內可以查看有多少人查看這個消息,對于釘釘,釘釘群就是良好的數據展示界面,同時,也是良好的提醒界面去提醒倉庫內部人員。
對于網站的設計,如果使用目前主流的開發語言JAVA,可能會學習成本較大,又因為所有開發都是基于python語言開發,所有可能會出現不兼容問題。所以該實驗對于flask作用為制作一個可視化窗口,然后,將阿里云MQTT協議接入窗口中,使阿里云物聯網開發者平臺中的數據同步到web端,可以使使用者更好地查看倉庫信息,同時,在web端也可以控制倉庫設備狀態。這樣完成后可以更加直觀地查看倉庫環境,而且flask對于其他開發框架開發相對簡單,可以使學習者更好地去學習。
在圖2中,整體的數據流向為由硬件終端收集數據后,通過MQTT協議進行數據的傳輸將數據傳輸到阿里云物聯網平臺,之后再次通過MQTT協議將數據傳輸給OSS數據庫、釘釘機器人和flask接口,分別用來存儲數據、數據的提醒和展示數據。讓實驗者能夠了解協議運行的機制,加強實驗者的編程能力。

圖2 數據走向
如圖3所示,在終端收集數據后,將數據傳輸到阿里云物聯網開發平臺,數據在阿里云中進行數據的分配,在分配完成后,通過MQTT協議將數據傳輸到云數據庫、釘釘端和web窗口,從而完成整體作品。

圖3 作品整體圖
如圖4所示,在硬件終端收集數據后,將數據傳輸到阿里云物聯網平臺,同時阿里云物聯網開發平臺在注冊設備信息后,傳感器所收集的數據就如圖4所示進行實時更新,可以讓實驗者通過后臺更加直觀地觀看數據信息。

圖4 阿里云物聯網開發平臺數據
如圖5所示為在百度云調用API接口后,將接口上傳到樹莓派后,當樹莓派收集到人臉信息后,如圖5就會將人臉信息傳輸到人臉管理庫,以便后期查看。

圖5 百度云人臉識別平臺
圖6 所示為MQTT協議將數據上傳到flask后,用flask搭建的網站窗口中將數據實時展示,同時下方報警狀態可以在代碼中設置一個閾值當超過閾值時進行報警,同時進行智能調控,在下方的狀態提示中的交互按鈕也可以手動去改變倉庫內部智能設備的狀態。通過這樣的方式可以更加全面地了解物聯網中的各種協議和運行方式。

圖6 Flask
本文所展示的實驗平臺,可以使學習者了解目前主流物聯網應用搭建方式以及制作方法,首先,開發者可以通過終端的搭建了解樹莓派和傳感器的使用方法和代碼的編寫;其次,通過阿里云云平臺去學習通信協議MQTT和云數據庫的搭建,之后通過百度云去學習目前主流的人工智能學習算法;然后,通過flask的學習使自己學習對于前端交互界面的開發;最后,通過釘釘機器人去設計一個良好的消息通知平臺。通過這些軟件以及平臺的學習,可以使學習者較為快速且壓力較輕地去學習搭建一個完整的物聯網開發平臺,且開發者可以根據自己所想到的應用環境,去合理地使用不同云平臺所提供的功能去搭建不同應用場景的物聯網平臺,模塊化的實驗可以使該實驗的耦合度較低,從而使學習者不怕搭建平臺途中出現錯誤從而導致整體實驗的失敗,但是,對于學習者來說,雖然相對于傳統物聯網開發來說學習難度大大降低,但是,所運用的平臺和軟件相對較多,所以在后期開發中,進一步將所有物聯網功能集中到一個云平臺中。