一、前言 ① 智能邊緣計算操作系統(tǒng) EdgerOS 是為萬物互聯(lián)時代而生的智能操作系統(tǒng)。為廣大開發(fā)者提供基于互聯(lián)網(wǎng)技術(shù)棧的操作系統(tǒng)平臺,極大簡化了物聯(lián)網(wǎng) App 開發(fā)難度,提高開發(fā)效率。通過愛智云,EdgerOS 為開發(fā)者提供了強(qiáng)大的云-邊-端協(xié)同能力,開發(fā)者無需關(guān)心設(shè)備是本地還是遠(yuǎn)程連接,EdgerOS 能夠無縫切換,給用戶帶來絲滑的使用感受,實現(xiàn)“多用戶-多終端-多設(shè)備”的實時連接與互動。 EdgerOS 是下一代面向物聯(lián)網(wǎng)和邊緣計算的智能操作系統(tǒng),可廣泛應(yīng)用于面向個人、家庭和行業(yè)的物聯(lián)網(wǎng)產(chǎn)品和解決方案,有效降低開發(fā)門檻、縮短開發(fā)周期。通過建立開放的生態(tài),與廣大開發(fā)者一起實現(xiàn)萬物智能互聯(lián)。
設(shè)備自動發(fā)現(xiàn)和連接 EdgerOS 能夠為您的居家、工作、購物和娛樂等生活帶來全新的智能體驗,得益于 EdgerOS 對于多種物聯(lián)網(wǎng)協(xié)議的支持,Spirit 1 能夠通過操作系統(tǒng)內(nèi)置的 SDDC (Smart Device Discovery & Control) 和 ZDDC (ZigBee Device Discovery & Control) 等智能設(shè)備發(fā)現(xiàn)協(xié)議,自動發(fā)現(xiàn)和連接您身邊不同廠家的多種物聯(lián)網(wǎng)設(shè)備。 EdgerOS 出眾的設(shè)備自動發(fā)現(xiàn)和連接能力,能夠極大降低物聯(lián)網(wǎng)設(shè)備發(fā)現(xiàn)、連接和配置的困難。
場景智能化 EdgerOS 內(nèi)置了豐富的人工智能算法,不論您的物聯(lián)網(wǎng)設(shè)備具備何種計算能力,EdgerOS 都能夠通過算力共享和開箱即用的人工智能算法,讓您的物聯(lián)網(wǎng)設(shè)備變得更加智能,響應(yīng)更加敏捷,成本更加低廉。 得益于內(nèi)置的多網(wǎng)絡(luò)協(xié)議和多設(shè)備連接能力,結(jié)合不斷進(jìn)化的人工智能算法,EdgerOS 能夠真正實現(xiàn)基于場景的智能化,而不是把手機(jī)變成新的遙控器。
多終端和遠(yuǎn)程訪問 EdgerOS 支持分布式多顯示終端。無論您身在哪里,您的邊緣計算機(jī),以及與之相連的各種物聯(lián)網(wǎng)設(shè)備都將變得觸手可及。
EdgerOS 原生支持本地和遠(yuǎn)程多終端顯示,客戶端能夠自適應(yīng)多種不同的屏幕分辨率和方向,為用戶提供更佳的使用體驗。通過遠(yuǎn)程終端,您可以隨時隨地獲取您關(guān)心的設(shè)備數(shù)據(jù),并根據(jù)您的需要進(jìn)行遠(yuǎn)程控制。
平臺開放 EdgerOS 除了支持海量設(shè)備連接,同時也是一個開放的智能計算平臺。EdgerOS 不僅提供了自研的 SDDC 和 ZDDC 等智能物聯(lián)網(wǎng)協(xié)議,還提供了功能豐富的設(shè)備、網(wǎng)絡(luò)、安全、流媒體、人工智能等接口和開發(fā) SDK。
在 EdgerOS 的開發(fā)者平臺,無論您是物聯(lián)網(wǎng)設(shè)備開發(fā)者還是應(yīng)用軟件開發(fā)者,都能夠向“愛智社區(qū)”與“愛智世界”發(fā)布您的物聯(lián)網(wǎng)設(shè)備信息或者您開發(fā)的應(yīng)用。這些海量的設(shè)備和應(yīng)用,將為消費(fèi)者帶來更豐富的體驗。得益于開放的平臺設(shè)計,EdgerOS 能夠匯聚眾多開發(fā)者的創(chuàng)意,讓更加優(yōu)質(zhì)的智能物聯(lián)網(wǎng)應(yīng)用脫穎而出,共同創(chuàng)造未來智能生活。
安全和隱私保護(hù) 作為面向物聯(lián)網(wǎng)的智能操作系統(tǒng),EdgerOS 具備業(yè)界優(yōu)秀的安全能力,能夠為您的物聯(lián)網(wǎng)設(shè)備和隱私數(shù)據(jù)提供更好的安全保護(hù)。EdgerOS 內(nèi)置了眾多安全存儲與安全通訊技術(shù),能夠鑒別可信硬件,識別并拒絕未經(jīng)授權(quán)的設(shè)備或用戶訪問系統(tǒng)應(yīng)用和數(shù)據(jù),把安全措施不足的普通物聯(lián)網(wǎng)設(shè)備置于 EdgerOS 強(qiáng)大的保護(hù)之下。
EdgerOS 具備完善的用戶認(rèn)證和權(quán)限管理機(jī)制,任何應(yīng)用想訪問您的設(shè)備和數(shù)據(jù),都要經(jīng)過您的親自授權(quán)才可以執(zhí)行,而且您有隨時收回這些授權(quán)的能力。EdgerOS 還內(nèi)置了掉電安全的文件系統(tǒng),即便使用環(huán)境再惡劣,也能夠保護(hù)用戶的數(shù)據(jù)萬無一失。同時 EdgerOS 可以通過 OTA 升級,以應(yīng)對可能出現(xiàn)的各種安全和隱私威脅。
② 智能邊緣計算機(jī) Spirit 1 是翼輝信息推出的一款高性能、高速率、高可靠、低延時的智能邊緣計算機(jī),搭載 EdgerOS 智能操作系統(tǒng),通過將建立開放的生態(tài),與廣大開發(fā)者一起實現(xiàn)萬物智能互聯(lián)。
Spirit 1 身材小巧并且設(shè)計百搭,隨心擺放適合不同風(fēng)格的家庭和辦公環(huán)境:
半透明面板設(shè)計,狀態(tài)指示燈讓您隨時掌握設(shè)備的工作狀態(tài):
64 位高性能 ARMv8,4 核處理器,能輕松處理路由、AI 和設(shè)備管理等日常任務(wù):
算力分享,依托強(qiáng)大的 EdgerOS 智能邊緣操作系統(tǒng),將算力分享給周邊的各種智能設(shè)備;實時操作系統(tǒng)級別的網(wǎng)絡(luò)協(xié)議優(yōu)化,穩(wěn)定提供千兆有線網(wǎng)絡(luò)和高速無線傳輸;高品質(zhì)元器件,確保高可靠。EdgerOS 內(nèi)置的智能服務(wù)質(zhì)量(QoS),用戶可按需調(diào)整網(wǎng)絡(luò)流量,確保網(wǎng)絡(luò)暢通;EdgerOS 內(nèi)核來自業(yè)內(nèi)領(lǐng)先的大型實時操作系統(tǒng) SylixOS,天然具備對高優(yōu)先級任務(wù)的實時響應(yīng)能力。 廣連接:支持 Wi-Fi、以太網(wǎng)、ZigBee、LoRa 等不同制式的無線和有線設(shè)備,能夠適應(yīng)從智能家居到智慧園區(qū)等諸多應(yīng)用場景。
真智能:Spirit 1 搭載的 EdgerOS 具有功能豐富,開箱即用的人工智能接口,支持人臉識別、車牌識別、年齡和性別識別等諸多功能。 ③ 系統(tǒng)架構(gòu) EdgerOS 操作系統(tǒng)的系統(tǒng)架構(gòu)分為三個部分,分別是基礎(chǔ)組件、系統(tǒng)服務(wù)、應(yīng)用架構(gòu),同時,它們又包含豐富的細(xì)分模塊,具體如下圖所示:
二、平臺注冊 ① 注冊開發(fā)者 注冊成為開發(fā)者,進(jìn)入愛智開發(fā)者平臺,單擊右上角開始使用按鈕,然后跳轉(zhuǎn)注冊,需要填寫以下信息進(jìn)行注冊(注冊地址 ), ② 實名認(rèn)證 如果需要創(chuàng)建多個應(yīng)用,需要完成實名認(rèn)證,關(guān)于實名認(rèn)證,使用可信的第三方認(rèn)證,如:支付寶,平臺不保留任何用戶信息。 在應(yīng)用管理平臺界面單擊用戶設(shè)置>實名認(rèn)證,進(jìn)入實名信息頁面,如實填寫姓名和身份證號,然后單擊下一步:
進(jìn)入掃碼認(rèn)證頁面,打開手機(jī)支付寶掃一掃,請在 3 分鐘內(nèi)完成認(rèn)證:
掃碼后進(jìn)入支付寶的身份驗證頁面,認(rèn)真閱讀《認(rèn)證服務(wù)協(xié)議》,并點(diǎn)擊同意并認(rèn)證:
根據(jù)支付寶提示拍攝或者上傳身份證正反面照片:
進(jìn)入認(rèn)證結(jié)果頁面,頁面會提示恭喜您已實名認(rèn)證成功,認(rèn)證有效期為一年,到期之后需要重新認(rèn)證:
③ 完善信息
完善設(shè)備信息(可選):該設(shè)備信息是指愛智設(shè)備(精靈一號)的信息,通過填寫您的愛智設(shè)備的 SN 號和備注,并上傳 Logo,點(diǎn)擊“確定”生成設(shè)備二維碼,以便于用戶通過愛智 App 的掃描功能快速連接愛智設(shè)備:
④ 開發(fā)參考資料 三、EdgerOS Spirit 1 初體驗 ① Spirit 1 開箱 外觀:第一眼看上去就是個路由器的造型,透明的外殼工業(yè)味十足:
正面面板: 模塊狀態(tài)指示燈:依次是 LORA,ZigBee,WAN,mobile,由于 LORA 和 ZigBee 這倆模塊都是內(nèi)置的,因此指示燈是亮著的;WAN 接口沒插,mobile 模板無設(shè)備,因此指示燈沒亮; CPU 負(fù)載燈:負(fù)載越大,閃爍越快,應(yīng)該是讀取了 CPU 的使用率,然后以某個速率點(diǎn)亮 LED; 設(shè)備狀態(tài)燈:設(shè)備啟動后常量,可以理解為電源顯示燈。
背部接口: 還原按鍵:這種一般都是硬件直連主控芯片的,某種方式觸發(fā)后(一般都是長按多少秒)就可以刪除所有配置,回歸出廠狀態(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)無線設(shè)備都會加,主要就是可以在沒有有線網(wǎng)的情況下提供無線服務(wù),一般都有專門的流量卡; TF 卡接口:和后面板的 USB 接口應(yīng)該差不多,可以外接輔助存儲設(shè)備。
裝好之后發(fā)現(xiàn)外殼可以拆卸,那當(dāng)然要拆下來一探究竟的,可以發(fā)現(xiàn)右側(cè)兩根是 Wi-Fi 天線,左側(cè)的是 Zigbee 天線,左上是 LoRa 天線,看來它可不僅僅是個路由器:
對照說明書,先下載安裝愛智應(yīng)用,打開后需要先連接到 Spirit 1 的網(wǎng)絡(luò)中,配置一下網(wǎng)絡(luò):
配置好網(wǎng)絡(luò)就可以注冊賬號并登錄:
再設(shè)置下設(shè)備密碼,選擇風(fēng)格就激活完成了,步驟挺多但是跟著說明書一步步來也還算順利,預(yù)裝只有五個應(yīng)用,愛智世界看上去是個應(yīng)用商店。 激活的時候有一步是設(shè)置無線網(wǎng)絡(luò),我給跳過了,不過沒關(guān)系,在路由器應(yīng)用當(dāng)中可以繼續(xù)配置:
② 體驗分享 路由器是進(jìn)入愛智的第一個應(yīng)用,可不光光只是在激活的時候配置一下 Wi-Fi ,其實里面還是有很多值得看一下的地方,進(jìn)入應(yīng)用后就是網(wǎng)絡(luò)速度、消耗流量、以及連接終端數(shù)量等統(tǒng)計界面:
作為路由器來說,相比常用的路由器要清晰不少,至少不用輸入 IP 進(jìn)入管理頁面還得調(diào)節(jié)畫面尺寸然后配置網(wǎng)絡(luò),點(diǎn)擊左上角的圖標(biāo)就可以進(jìn)入到網(wǎng)絡(luò)配置界面,正常配置 Wi-Fi 的話進(jìn)入寬帶連接中選擇對應(yīng)的連接方式(動態(tài) IP 、靜態(tài) IP 、 PPPoE 撥號)按要求配置就可以了,無線局域網(wǎng)中的配置是來設(shè)置 Wi-Fi 名稱和密碼的,至于移動網(wǎng)絡(luò)這一項可以在使用 SIM 卡上網(wǎng)的情況下查看相關(guān)信息,其他的局域網(wǎng)以及高級設(shè)置中可以配置限制規(guī)則等更進(jìn)一步的操作,日常是用不太到,這里不再細(xì)說:
設(shè)備第一次接入:在愛智的官網(wǎng)中看到 Spirit 1 可以接入米家的一些設(shè)備,不過種類不是很多。根據(jù)官網(wǎng)的介紹這個就需要打開設(shè)置應(yīng)用,點(diǎn)擊下方的加號來掃描發(fā)現(xiàn)設(shè)備,長按小米插座的開關(guān)直到指示燈閃爍進(jìn)入搜索狀態(tài),之后就可以在愛智上面發(fā)現(xiàn)新設(shè)備了,點(diǎn)擊添加以后就可以把設(shè)備加入到愛智當(dāng)中了,官網(wǎng)有提供可以控制的應(yīng)用 ,下圖是官網(wǎng)的動圖演示還是比較清楚的:
設(shè)置中的用戶和權(quán)限控制:比較重要的就是 EdgerOS 的權(quán)限控制,在設(shè)置中的隱私設(shè)置中,可以分別對設(shè)備、應(yīng)用、系統(tǒng)三者間的權(quán)限做限制,能看出來在 EdgerOS 中設(shè)備和應(yīng)用是完全獨(dú)立的不存在耦合,這樣設(shè)備就可以很好的進(jìn)行復(fù)用:
再就是用戶設(shè)置每一個新用戶要加入到這臺 Spirit 1 上面都需要管理員給添加一個身份,可以自定義這些身份的權(quán)限,這一功能還是比較實用的,畢竟如果是攝像頭設(shè)備或者一些涉及隱私的應(yīng)用還是不想其他人可以查看的:
四、開發(fā)實踐 ① 環(huán)境搭建 iOS 手機(jī)端:需要下載并安裝愛智 APP,連接名稱為 EOS-XXXXXX 的 wifi 網(wǎng)絡(luò),在 App 中點(diǎn)擊“發(fā)現(xiàn)設(shè)備”按鈕,添加設(shè)備后并完成設(shè)備的注冊,最后設(shè)置網(wǎng)絡(luò)名稱和密碼,激活設(shè)備。 PC 電腦端:搭建 EdgerOS 在 PC 端的開發(fā)環(huán)境還是非常方便,可以直接使用 VSCode 開發(fā)工具就可以,只是需要安裝一個相應(yīng)的開發(fā)插件。在 VSCode 中擴(kuò)展程序中搜索 edger 關(guān)鍵字,會出現(xiàn)下圖所示的插件工具,點(diǎn)擊“安裝”即可:
安裝完成后,在資源管理器的最下方會出現(xiàn) EDGEROS 面板,選擇“創(chuàng)建項目”,具體操作如下所示:
點(diǎn)擊“創(chuàng)建項目”后,會出現(xiàn)項目模版庫列表,如下圖所示 :
選擇“基礎(chǔ)的流媒體攝像頭監(jiān)控 EdgerOS APP ”模板作為整個工程的基礎(chǔ)組件,如果遇到該頁面為空,沒有這么多的模板信息,可以嘗試點(diǎn)擊左下角的“刷新模板信息”按鈕;如果還是為空,可以切換倉庫源為 Gitee,因為系統(tǒng)默認(rèn)是 Github 倉庫源,很可能因為網(wǎng)絡(luò)問題導(dǎo)致無法訪問。具體修改方式可以參考下圖:
選擇“立即應(yīng)用”后,會出現(xiàn)下圖的項目信息頁,完成項目配置,如下所示:
信息填寫完成后,點(diǎn)擊頁面右下角的“立即創(chuàng)建”按鈕,就可以把基礎(chǔ)工程創(chuàng)建好,如下圖所示:
其中 camera1 目錄中是后端邏輯代碼,web 目錄中是前端業(yè)務(wù)邏輯代碼,項目本身實現(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" : "[email protected] " }
② 示例代碼分析 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 庫目錄,進(jìn)入 web 目錄,執(zhí)行 npm run build 命令生成對應(yīng)的 dist 目錄,將其中的文件拷貝到 camera1 的 public 目錄中。 然后繼續(xù)添加設(shè)備,打包安裝 EdgerOS APP 到設(shè)備上,利用 PC 電腦和 iOS 手機(jī)端都同時登陸 EdgerOS 分享出來的 WiFi,可以成功安裝 App。 本文正在參與“2021愛智先行者-征文大賽”活動:2021愛智先行者-征文大賽重磅來襲!萬元現(xiàn)金等你來拿 。