How JuBo Works: The Basics

JuBo是一個數據驅動、具備學習能力的物聯網關。JuBo的目標是讓智能設備快捷高效的聯網。JuBo是開源的,項目地址https://github.com/jubolin)git

這只是一個概述,更多內容請參見JuBo Wikigithub

對於JuBo來講,全部的智能設備或者傳感器都被定義爲Thing,設備的功能被定義爲Service,功能的屬性定義爲Property。Thing + Service + Property惟一肯定了一個設備的某個功能屬性,是JuBo中最小的控制單元。例如電燈提供了照明功能,有亮度和顏色兩個屬性,那麼在JuBo中就表現爲bulb + lighting + brightless和bulb + lighting + color兩條記錄。全部對這個電燈的管理、控制和智能都是基於這兩條記錄的。也就是說,JuBo全部的功能都是基於設備功能屬性記錄的,即數據驅動的。數據庫

智能設備接入

設備接入須要完成如下步驟:less

  • 肯定設備對外提供的功能屬性(這個工做在開發階段完成)
  • 設備經過對應物聯網協議的Connector鏈接上JuBo
  • 初始化並註冊設備(設備描述、廠家描述等信息)
  • 註冊全部功能屬性並訂閱(Sub)設備自己的功能屬性
  • 功能屬性記錄保存在數據庫中,數據庫只能經過DDP Service操做

使用者控制設備

  • 在Web頁面或CLI修改某個功能屬性
  • 修改值保存到數據庫中,觸發數據變化事件
  • 訂閱(Sub)了該功能屬性的設備觸發相應的動做
  • 設備完成最後修改動做 好比用戶在Web頁面上修改了電燈的顏色,那麼顏色值存入數據庫並觸發數據變化事件,因爲電燈在接入的時候Sub了本身的功能屬性,所以顏色值變化觸發的事件會傳達給電燈設備,最後由電燈完成顏色的改變。

智能學習

JuBo的智能學習分爲兩種,一種是行爲鏈學習,另外一種是大數據學習。學習

行爲鏈學習

所謂的行爲鏈學習,就是把每個屬性的改變當作用戶的行爲,而且定義知足什麼條件的行爲產生關係,當該條件再次發生時,前面的屬性改變將觸發後面的屬性發生變化。 好比定義間隔時間少於1分鐘的兩個行爲產生關係,那麼行爲鏈學習就是這樣的:大數據

  • 屬性A改變,1分鐘內屬性B也發生改變,此時JuBo認爲屬性A和屬性B產生了關係——A觸發了B
  • JuBo記錄A和B的屬性值,並建立A和B的關係
  • 當A的屬性值發生變化時,JuBo查找全部匹配此屬性值的A的關係
  • 匹配A和B的關係,修改B的屬性值爲記錄的屬性值,完成A觸發B的動做

行爲鏈學習在智能家居中比較適用,好比你晚上下班以後開門、開燈、而後打開熱水器燒水,接着打開電視看體育頻道、等水燒熱後洗澡。當JuBo完成行爲鏈學習以後,某晚你下班後打開門,就會發現燈自動打開、電視機自動打開並播放體育頻道,熱水器開始燒水,當水燒熱以後你會收到提醒去洗澡。後面這些行爲都在門打開以後自動進行,這就是行爲鏈學習。blog

大數據學習

大數據學習就比較明顯了,就是收集大量的數據使用數據挖掘等技術學習用戶的行爲習慣和喜愛。因爲JuBo的數據是存儲在本地的,所以你不須要擔憂數據隱私泄露。事件

更多JavaScript物聯網,歡迎加入羣:348776509ip

相關文章
相關標籤/搜索