一、前言 ① 智能邊緣計(jì)算操作系統(tǒng) EdgerOS 是為萬(wàn)物互聯(lián)時(shí)代而生的智能操作系統(tǒng)。為廣大開發(fā)者提供基于互聯(lián)網(wǎng)技術(shù)棧的操作系統(tǒng)平臺(tái),極大簡(jiǎn)化了物聯(lián)網(wǎng) App 開發(fā)難度,提高開發(fā)效率。通過(guò)愛(ài)智云,EdgerOS 為開發(fā)者提供了強(qiáng)大的云-邊-端協(xié)同能力,開發(fā)者無(wú)需關(guān)心設(shè)備是本地還是遠(yuǎn)程連接,EdgerOS 能夠無(wú)縫切換,給用戶帶來(lái)絲滑的使用感受,實(shí)現(xiàn)“多用戶-多終端-多設(shè)備”的實(shí)時(shí)連接與互動(dòng)。 EdgerOS 是下一代面向物聯(lián)網(wǎng)和邊緣計(jì)算的智能操作系統(tǒng),可廣泛應(yīng)用于面向個(gè)人、家庭和行業(yè)的物聯(lián)網(wǎng)產(chǎn)品和解決方案,有效降低開發(fā)門檻、縮短開發(fā)周期。通過(guò)建立開放的生態(tài),與廣大開發(fā)者一起實(shí)現(xiàn)萬(wàn)物智能互聯(lián)。
設(shè)備自動(dòng)發(fā)現(xiàn)和連接 EdgerOS 能夠?yàn)槟木蛹?、工作、?gòu)物和娛樂(lè)等生活帶來(lái)全新的智能體驗(yàn),得益于 EdgerOS 對(duì)于多種物聯(lián)網(wǎng)協(xié)議的支持,Spirit 1 能夠通過(guò)操作系統(tǒng)內(nèi)置的 SDDC (Smart Device Discovery & Control) 和 ZDDC (ZigBee Device Discovery & Control) 等智能設(shè)備發(fā)現(xiàn)協(xié)議,自動(dòng)發(fā)現(xiàn)和連接您身邊不同廠家的多種物聯(lián)網(wǎng)設(shè)備。 EdgerOS 出眾的設(shè)備自動(dòng)發(fā)現(xiàn)和連接能力,能夠極大降低物聯(lián)網(wǎng)設(shè)備發(fā)現(xiàn)、連接和配置的困難。
場(chǎng)景智能化 EdgerOS 內(nèi)置了豐富的人工智能算法,不論您的物聯(lián)網(wǎng)設(shè)備具備何種計(jì)算能力,EdgerOS 都能夠通過(guò)算力共享和開箱即用的人工智能算法,讓您的物聯(lián)網(wǎng)設(shè)備變得更加智能,響應(yīng)更加敏捷,成本更加低廉。 得益于內(nèi)置的多網(wǎng)絡(luò)協(xié)議和多設(shè)備連接能力,結(jié)合不斷進(jìn)化的人工智能算法,EdgerOS 能夠真正實(shí)現(xiàn)基于場(chǎng)景的智能化,而不是把手機(jī)變成新的遙控器。
多終端和遠(yuǎn)程訪問(wèn) EdgerOS 支持分布式多顯示終端。無(wú)論您身在哪里,您的邊緣計(jì)算機(jī),以及與之相連的各種物聯(lián)網(wǎng)設(shè)備都將變得觸手可及。
EdgerOS 原生支持本地和遠(yuǎn)程多終端顯示,客戶端能夠自適應(yīng)多種不同的屏幕分辨率和方向,為用戶提供更佳的使用體驗(yàn)。通過(guò)遠(yuǎn)程終端,您可以隨時(shí)隨地獲取您關(guān)心的設(shè)備數(shù)據(jù),并根據(jù)您的需要進(jìn)行遠(yuǎn)程控制。
平臺(tái)開放 EdgerOS 除了支持海量設(shè)備連接,同時(shí)也是一個(gè)開放的智能計(jì)算平臺(tái)。EdgerOS 不僅提供了自研的 SDDC 和 ZDDC 等智能物聯(lián)網(wǎng)協(xié)議,還提供了功能豐富的設(shè)備、網(wǎng)絡(luò)、安全、流媒體、人工智能等接口和開發(fā) SDK。
在 EdgerOS 的開發(fā)者平臺(tái),無(wú)論您是物聯(lián)網(wǎng)設(shè)備開發(fā)者還是應(yīng)用軟件開發(fā)者,都能夠向“愛(ài)智社區(qū)”與“愛(ài)智世界”發(fā)布您的物聯(lián)網(wǎng)設(shè)備信息或者您開發(fā)的應(yīng)用。這些海量的設(shè)備和應(yīng)用,將為消費(fèi)者帶來(lái)更豐富的體驗(yàn)。得益于開放的平臺(tái)設(shè)計(jì),EdgerOS 能夠匯聚眾多開發(fā)者的創(chuàng)意,讓更加優(yōu)質(zhì)的智能物聯(lián)網(wǎng)應(yīng)用脫穎而出,共同創(chuàng)造未來(lái)智能生活。
安全和隱私保護(hù) 作為面向物聯(lián)網(wǎng)的智能操作系統(tǒng),EdgerOS 具備業(yè)界優(yōu)秀的安全能力,能夠?yàn)槟奈锫?lián)網(wǎng)設(shè)備和隱私數(shù)據(jù)提供更好的安全保護(hù)。EdgerOS 內(nèi)置了眾多安全存儲(chǔ)與安全通訊技術(shù),能夠鑒別可信硬件,識(shí)別并拒絕未經(jīng)授權(quán)的設(shè)備或用戶訪問(wèn)系統(tǒng)應(yīng)用和數(shù)據(jù),把安全措施不足的普通物聯(lián)網(wǎng)設(shè)備置于 EdgerOS 強(qiáng)大的保護(hù)之下。
EdgerOS 具備完善的用戶認(rèn)證和權(quán)限管理機(jī)制,任何應(yīng)用想訪問(wèn)您的設(shè)備和數(shù)據(jù),都要經(jīng)過(guò)您的親自授權(quán)才可以執(zhí)行,而且您有隨時(shí)收回這些授權(quán)的能力。EdgerOS 還內(nèi)置了掉電安全的文件系統(tǒng),即便使用環(huán)境再惡劣,也能夠保護(hù)用戶的數(shù)據(jù)萬(wàn)無(wú)一失。同時(shí) EdgerOS 可以通過(guò) OTA 升級(jí),以應(yīng)對(duì)可能出現(xiàn)的各種安全和隱私威脅。
② 智能邊緣計(jì)算機(jī) Spirit 1 是翼輝信息推出的一款高性能、高速率、高可靠、低延時(shí)的智能邊緣計(jì)算機(jī),搭載 EdgerOS 智能操作系統(tǒng),通過(guò)將建立開放的生態(tài),與廣大開發(fā)者一起實(shí)現(xiàn)萬(wàn)物智能互聯(lián)。
Spirit 1 身材小巧并且設(shè)計(jì)百搭,隨心擺放適合不同風(fēng)格的家庭和辦公環(huán)境:
半透明面板設(shè)計(jì),狀態(tài)指示燈讓您隨時(shí)掌握設(shè)備的工作狀態(tài):
64 位高性能 ARMv8,4 核處理器,能輕松處理路由、AI 和設(shè)備管理等日常任務(wù):
算力分享,依托強(qiáng)大的 EdgerOS 智能邊緣操作系統(tǒng),將算力分享給周邊的各種智能設(shè)備;實(shí)時(shí)操作系統(tǒng)級(jí)別的網(wǎng)絡(luò)協(xié)議優(yōu)化,穩(wěn)定提供千兆有線網(wǎng)絡(luò)和高速無(wú)線傳輸;高品質(zhì)元器件,確保高可靠。EdgerOS 內(nèi)置的智能服務(wù)質(zhì)量(QoS),用戶可按需調(diào)整網(wǎng)絡(luò)流量,確保網(wǎng)絡(luò)暢通;EdgerOS 內(nèi)核來(lái)自業(yè)內(nèi)領(lǐng)先的大型實(shí)時(shí)操作系統(tǒng) SylixOS,天然具備對(duì)高優(yōu)先級(jí)任務(wù)的實(shí)時(shí)響應(yīng)能力。 廣連接:支持 Wi-Fi、以太網(wǎng)、ZigBee、LoRa 等不同制式的無(wú)線和有線設(shè)備,能夠適應(yīng)從智能家居到智慧園區(qū)等諸多應(yīng)用場(chǎng)景。
真智能:Spirit 1 搭載的 EdgerOS 具有功能豐富,開箱即用的人工智能接口,支持人臉識(shí)別、車牌識(shí)別、年齡和性別識(shí)別等諸多功能。 ③ 系統(tǒng)架構(gòu) EdgerOS 操作系統(tǒng)的系統(tǒng)架構(gòu)分為三個(gè)部分,分別是基礎(chǔ)組件、系統(tǒng)服務(wù)、應(yīng)用架構(gòu),同時(shí),它們又包含豐富的細(xì)分模塊,具體如下圖所示:
二、平臺(tái)注冊(cè) ① 注冊(cè)開發(fā)者 注冊(cè)成為開發(fā)者,進(jìn)入愛(ài)智開發(fā)者平臺(tái),單擊右上角開始使用按鈕,然后跳轉(zhuǎn)注冊(cè),需要填寫以下信息進(jìn)行注冊(cè)(注冊(cè)地址 ), ② 實(shí)名認(rèn)證 如果需要?jiǎng)?chuàng)建多個(gè)應(yīng)用,需要完成實(shí)名認(rèn)證,關(guān)于實(shí)名認(rèn)證,使用可信的第三方認(rèn)證,如:支付寶,平臺(tái)不保留任何用戶信息。 在應(yīng)用管理平臺(tái)界面單擊用戶設(shè)置>實(shí)名認(rèn)證,進(jìn)入實(shí)名信息頁(yè)面,如實(shí)填寫姓名和身份證號(hào),然后單擊下一步:
進(jìn)入掃碼認(rèn)證頁(yè)面,打開手機(jī)支付寶掃一掃,請(qǐng)?jiān)?3 分鐘內(nèi)完成認(rèn)證:
掃碼后進(jìn)入支付寶的身份驗(yàn)證頁(yè)面,認(rèn)真閱讀《認(rèn)證服務(wù)協(xié)議》,并點(diǎn)擊同意并認(rèn)證:
根據(jù)支付寶提示拍攝或者上傳身份證正反面照片:
最后提示認(rèn)證成功身份驗(yàn)證即完成:
進(jìn)入認(rèn)證結(jié)果頁(yè)面,頁(yè)面會(huì)提示恭喜您已實(shí)名認(rèn)證成功,認(rèn)證有效期為一年,到期之后需要重新認(rèn)證:
③ 完善信息
完善設(shè)備信息(可選):該設(shè)備信息是指愛(ài)智設(shè)備(精靈一號(hào))的信息,通過(guò)填寫您的愛(ài)智設(shè)備的 SN 號(hào)和備注,并上傳 Logo,點(diǎn)擊“確定”生成設(shè)備二維碼,以便于用戶通過(guò)愛(ài)智 App 的掃描功能快速連接愛(ài)智設(shè)備:
④ 開發(fā)參考資料 三、EdgerOS Spirit 1 初體驗(yàn) ① Spirit 1 開箱 外觀:第一眼看上去就是個(gè)路由器的造型,透明的外殼工業(yè)味十足:
正面面板: 模塊狀態(tài)指示燈:依次是 LORA,ZigBee,WAN,mobile,由于 LORA 和 ZigBee 這倆模塊都是內(nèi)置的,因此指示燈是亮著的;WAN 接口沒(méi)插,mobile 模板無(wú)設(shè)備,因此指示燈沒(méi)亮; CPU 負(fù)載燈:負(fù)載越大,閃爍越快,應(yīng)該是讀取了 CPU 的使用率,然后以某個(gè)速率點(diǎn)亮 LED; 設(shè)備狀態(tài)燈:設(shè)備啟動(dòng)后常量,可以理解為電源顯示燈。
背部接口: 還原按鍵:這種一般都是硬件直連主控芯片的,某種方式觸發(fā)后(一般都是長(zhǎng)按多少秒)就可以刪除所有配置,回歸出廠狀態(tài); HDMI 接口:可以外接音視頻播放器,這是不是可以開發(fā)為電視盒子,直接接顯示器; USB 接口:外接輔助設(shè)備,應(yīng)該是可以插優(yōu)盤,讀取媒體文件,和上面的結(jié)合使用; 以太網(wǎng)接口:WAN口(廣域網(wǎng)),LAN 口(局域網(wǎng))。
側(cè)面接口: SIM 卡接口:這種接口一般工業(yè)物聯(lián)網(wǎng)無(wú)線設(shè)備都會(huì)加,主要就是可以在沒(méi)有有線網(wǎng)的情況下提供無(wú)線服務(wù),一般都有專門的流量卡; TF 卡接口:和后面板的 USB 接口應(yīng)該差不多,可以外接輔助存儲(chǔ)設(shè)備。
裝好之后發(fā)現(xiàn)外殼可以拆卸,那當(dāng)然要拆下來(lái)一探究竟的,可以發(fā)現(xiàn)右側(cè)兩根是 Wi-Fi 天線,左側(cè)的是 Zigbee 天線,左上是 LoRa 天線,看來(lái)它可不僅僅是個(gè)路由器:
對(duì)照說(shuō)明書,先下載安裝愛(ài)智應(yīng)用,打開后需要先連接到 Spirit 1 的網(wǎng)絡(luò)中,配置一下網(wǎng)絡(luò):
配置好網(wǎng)絡(luò)就可以注冊(cè)賬號(hào)并登錄:
再設(shè)置下設(shè)備密碼,選擇風(fēng)格就激活完成了,步驟挺多但是跟著說(shuō)明書一步步來(lái)也還算順利,預(yù)裝只有五個(gè)應(yīng)用,愛(ài)智世界看上去是個(gè)應(yīng)用商店。 激活的時(shí)候有一步是設(shè)置無(wú)線網(wǎng)絡(luò),我給跳過(guò)了,不過(guò)沒(méi)關(guān)系,在路由器應(yīng)用當(dāng)中可以繼續(xù)配置:
② 體驗(yàn)分享 路由器是進(jìn)入愛(ài)智的第一個(gè)應(yīng)用,可不光光只是在激活的時(shí)候配置一下 Wi-Fi ,其實(shí)里面還是有很多值得看一下的地方,進(jìn)入應(yīng)用后就是網(wǎng)絡(luò)速度、消耗流量、以及連接終端數(shù)量等統(tǒng)計(jì)界面:
作為路由器來(lái)說(shuō),相比常用的路由器要清晰不少,至少不用輸入 IP 進(jìn)入管理頁(yè)面還得調(diào)節(jié)畫面尺寸然后配置網(wǎng)絡(luò),點(diǎn)擊左上角的圖標(biāo)就可以進(jìn)入到網(wǎng)絡(luò)配置界面,正常配置 Wi-Fi 的話進(jìn)入寬帶連接中選擇對(duì)應(yīng)的連接方式(動(dòng)態(tài) IP 、靜態(tài) IP 、 PPPoE 撥號(hào))按要求配置就可以了,無(wú)線局域網(wǎng)中的配置是來(lái)設(shè)置 Wi-Fi 名稱和密碼的,至于移動(dòng)網(wǎng)絡(luò)這一項(xiàng)可以在使用 SIM 卡上網(wǎng)的情況下查看相關(guān)信息,其他的局域網(wǎng)以及高級(jí)設(shè)置中可以配置限制規(guī)則等更進(jìn)一步的操作,日常是用不太到,這里不再細(xì)說(shuō):
設(shè)備第一次接入:在愛(ài)智的官網(wǎng)中看到 Spirit 1 可以接入米家的一些設(shè)備,不過(guò)種類不是很多。根據(jù)官網(wǎng)的介紹這個(gè)就需要打開設(shè)置應(yīng)用,點(diǎn)擊下方的加號(hào)來(lái)掃描發(fā)現(xiàn)設(shè)備,長(zhǎng)按小米插座的開關(guān)直到指示燈閃爍進(jìn)入搜索狀態(tài),之后就可以在愛(ài)智上面發(fā)現(xiàn)新設(shè)備了,點(diǎn)擊添加以后就可以把設(shè)備加入到愛(ài)智當(dāng)中了,官網(wǎng)有提供可以控制的應(yīng)用 ,下圖是官網(wǎng)的動(dòng)圖演示還是比較清楚的:
設(shè)置中的用戶和權(quán)限控制:比較重要的就是 EdgerOS 的權(quán)限控制,在設(shè)置中的隱私設(shè)置中,可以分別對(duì)設(shè)備、應(yīng)用、系統(tǒng)三者間的權(quán)限做限制,能看出來(lái)在 EdgerOS 中設(shè)備和應(yīng)用是完全獨(dú)立的不存在耦合,這樣設(shè)備就可以很好的進(jìn)行復(fù)用:
再就是用戶設(shè)置每一個(gè)新用戶要加入到這臺(tái) Spirit 1 上面都需要管理員給添加一個(gè)身份,可以自定義這些身份的權(quán)限,這一功能還是比較實(shí)用的,畢竟如果是攝像頭設(shè)備或者一些涉及隱私的應(yīng)用還是不想其他人可以查看的:
四、開發(fā)實(shí)踐 ① 環(huán)境搭建 iOS 手機(jī)端:需要下載并安裝愛(ài)智 APP,連接名稱為 EOS-XXXXXX 的 wifi 網(wǎng)絡(luò),在 App 中點(diǎn)擊“發(fā)現(xiàn)設(shè)備”按鈕,添加設(shè)備后并完成設(shè)備的注冊(cè),最后設(shè)置網(wǎng)絡(luò)名稱和密碼,激活設(shè)備。 PC 電腦端:搭建 EdgerOS 在 PC 端的開發(fā)環(huán)境還是非常方便,可以直接使用 VSCode 開發(fā)工具就可以,只是需要安裝一個(gè)相應(yīng)的開發(fā)插件。在 VSCode 中擴(kuò)展程序中搜索 edger 關(guān)鍵字,會(huì)出現(xiàn)下圖所示的插件工具,點(diǎn)擊“安裝”即可:
安裝完成后,在資源管理器的最下方會(huì)出現(xiàn) EDGEROS 面板,選擇“創(chuàng)建項(xiàng)目”,具體操作如下所示:
點(diǎn)擊“創(chuàng)建項(xiàng)目”后,會(huì)出現(xiàn)項(xiàng)目模版庫(kù)列表,如下圖所示 :
選擇“基礎(chǔ)的流媒體攝像頭監(jiān)控 EdgerOS APP ”模板作為整個(gè)工程的基礎(chǔ)組件,如果遇到該頁(yè)面為空,沒(méi)有這么多的模板信息,可以嘗試點(diǎn)擊左下角的“刷新模板信息”按鈕;如果還是為空,可以切換倉(cāng)庫(kù)源為 Gitee,因?yàn)橄到y(tǒng)默認(rèn)是 Github 倉(cāng)庫(kù)源,很可能因?yàn)榫W(wǎng)絡(luò)問(wèn)題導(dǎo)致無(wú)法訪問(wèn)。具體修改方式可以參考下圖:
選擇“立即應(yīng)用”后,會(huì)出現(xiàn)下圖的項(xiàng)目信息頁(yè),完成項(xiàng)目配置,如下所示:
信息填寫完成后,點(diǎn)擊頁(yè)面右下角的“立即創(chuàng)建”按鈕,就可以把基礎(chǔ)工程創(chuàng)建好,如下圖所示:
其中 camera1 目錄中是后端邏輯代碼,web 目錄中是前端業(yè)務(wù)邏輯代碼,項(xiàng)目本身實(shí)現(xiàn)了前后端分離。 camera1 中的 package.json 內(nèi)就是剛才填寫的信息: { "name" : "com.example.monitoring" , "version" : "0.0.1" , "description" : "家用智能監(jiān)控" , "main" : "main.js" , "scripts" : { "build" : "eos build" } , "license" : "MIT" , "dependencies" : { "@edgeros/jsre-medias" : "^2.0.0" } , "devDependencies" : { "eslint" : "^7.23.0" , "@edgeros/jsre-types" : "^0.1.1" , "@edgeros/eslint-plugin-jsre" : "^0.0.3" } , "author" : "xxxxxx@qq.com" }
② 示例代碼分析 引入項(xiàng)目所需的系統(tǒng)模塊: const WebApp = require ( "webapp" ) ; const WebMedia = require ( "webmedia" ) ; const bodyParser = require ( "middleware" ) . bodyParser; const { Manager } = require ( "@edgeros/jsre-medias" ) ; const CameraSource = require ( "./camera_src" ) ;
const sourceName = "camera-flv" ; WebMedia . registerSource ( sourceName, CameraSource ) ; var app = WebApp . createApp ( ) ; app. use ( WebApp . static ( "/public" ) ) ; var server = undefined; var starting = false ;
function createMediaSer ( ) { console. log ( "Create media server." ) ; if ( server) { return server; } var opts = { mediaTimeout: 1800000 , searchCycle: 20000 , autoGetCamera: false } ; server = new Manager ( app, null, opts, ( opts) = > { return { source: sourceName, inOpts: opts, outOpts: null } } ) ; server. on ( "open" , ( media) = > { console. log ( "Media open." ) media. on ( "open" , ( media, client) = > console. log ( "Media client open." ) ) ; media. on ( "close" , ( media, client) = > console. log ( "Media client close." ) ) ; } ) ; return server; }
app. get ( "/api/list" , ( req, res) = > { if ( ! server) { var ret = startServer ( ) ; if ( ! ret) { return res. json ( [ ] ) ; } } var devs = [ ] ; server. iterDev ( ( key, dev) = > { var info = dev. dev; var stream = dev. mainStream; var media = stream ? stream. media : null; devs. push ( { devId: key, alias: `${ info. hostname} : ${ info. port} ${ info. path} `, report: info. urn, path: media ? "/" + media. sid : "" , status: media ? true : false } ) ; } ) ; res. send ( JSON . stringify ( devs) ) ; } ) ;
import Vue from "vue" ; import App from "./App.vue" ; import router from "./router" ; import Vant from "vant" ; import "vant/lib/index.css" ; import { Notify } from "vant" ; import { edger} from "@edgeros/web-sdk" ; import { setToken, setSrand} from "./lib/auth" ; import { setPerms, checkPerms, requestPerm} from "./lib/permission" ;
console. log ( typeof Module ) ; console. log ( typeof NodePlayer ) ; Vue . config. productionTip = false ; Vue . use ( Vant ) ; Vue . use ( Notify ) ; edger. onAction ( "permission" , ( data) = > { setPerms ( data) ; } ) ; edger. onAction ( "token" , ( result) = > { const { token, srand } = result; setToken ( token) ; setSrand ( srand) ; } ) ; edger. token ( ) . then ( ( result) = > { const { token, srand} = result; setToken ( token) ; setSrand ( srand) ; } ) . then ( ( ) = > { var ret = checkPerms ( ) ; if ( ret. length > 0 ) { requestPerm ( ) ; } } ) . catch ( ( err) = > { console. error ( err) ; } ) . finally ( ( ) = > { NodePlayer . load ( ( ) = > { new Vue ( { router, render: h = > h ( App ) , } ) . $mount ( "#app" ) ; } ) ; } ) ;
編譯執(zhí)行工程的 camera1 和 web,它們各自生成自己的 node_modules 庫(kù)目錄,進(jìn)入 web 目錄,執(zhí)行 npm run build 命令生成對(duì)應(yīng)的 dist 目錄,將其中的文件拷貝到 camera1 的 public 目錄中。 然后繼續(xù)添加設(shè)備,打包安裝 EdgerOS APP 到設(shè)備上,利用 PC 電腦和 iOS 手機(jī)端都同時(shí)登陸 EdgerOS 分享出來(lái)的 WiFi,可以成功安裝 App。 本文正在參與“2021愛(ài)智先行者-征文大賽”活動(dòng):2021愛(ài)智先行者-征文大賽重磅來(lái)襲!萬(wàn)元現(xiàn)金等你來(lái)拿 。