阿里云物聯(lián)網(wǎng)平臺 - 物模型

阿里云物聯(lián)網(wǎng)平臺 - 物模型

物模型介紹

物模型是云平臺為物聯(lián)網(wǎng)產品定義的數(shù)據(jù)模型败砂,用于描述產品的功能。將產品抽象成數(shù)據(jù)的集合魏铅,方便云端進行控制昌犹。

物模型從屬性服務事件三個維度览芳,分別描述了該實體是什么斜姥、能做什么、可以對外提供哪些信息沧竟。定義了物模型的這三個維度铸敏,即完成了產品功能的定義。

功能類型 說明
屬性(Property) 設備可讀取和設置的能力悟泵,類似于一個變量杈笔。一般用于描述設備運行時的狀態(tài),如環(huán)境監(jiān)測設備所讀取的當前環(huán)境溫度等糕非。屬性支持 GETSET 請求方式蒙具。應用系統(tǒng)可發(fā)起對屬性的讀取和設置請求。
服務(Service) 設備可被外部調用的能力或方法朽肥,類似于一個函數(shù)店量,可設置輸入?yún)?shù)輸出參數(shù)。產品提供了什么功能供云端調用鞠呈。相比于屬性融师,服務可通過一條指令實現(xiàn)更復雜的業(yè)務邏輯,如執(zhí)行某項特定的任務蚁吝。
事件(Event) 設備運行時旱爆,主動上報給云端的事件。事件一般包含需要被外部感知和處理的通知信息窘茁,可包含多個輸出參數(shù)怀伦。例如,某項任務完成的信息山林,或者設備發(fā)生故障或告警時的溫度等房待,事件可以被訂閱和推送。

物模型TSL格式

TSL 格式是一個 JSON 格式的文件,完整的 TSL 格式可以參考:阿里云物模型 桑孩。

嵌入式端開發(fā)固件往往只需要關注少數(shù)幾個參數(shù)拜鹤,可以在產品的功能定義頁面,單擊物模型TSL流椒,精簡物模型里面查看敏簿。

需要關注的有 "properties","events"宣虾,"services"惯裕,在 JSON 格式里,這三者都是數(shù)組绣硝,分別存儲了該物模型的數(shù)據(jù)蜻势,事件和服務,在 C-SDK 里也就分別是 IOT_Linkkit_Report() 上報屬性鹉胖,IOT_Linkkit_TriggerEvent() 觸發(fā)事件和注冊為 ITE_SERVICE_REQUEST 的回調函數(shù)握玛。

屬性上報

在上報屬性時,只需要關注 "identifier" 名稱對應的值(字符串)次员,此時表示該屬性在產品下的唯一標識。例如一個精簡物模型屬性為:

{
  "properties": [
    {
      "identifier": "count",
      "dataType": {
        "type": "int"
      }
    }
  ]
}

則上報的數(shù)據(jù)只需要為 {"count":10} 即可王带,需滿足 JSON 字符串的格式淑蔚,字符串內有一個名稱/值對,名稱為 "count"(物模型里 "identifier" 的值)愕撰,值對為 10(滿足物模型里數(shù)據(jù)類型為 int 的要求)刹衫。

事件觸發(fā)

觸發(fā)事件需要關注 "identifier" 名稱對應的值(字符串),表示該事件在產品下的唯一標識搞挣;還需要關注 "outputData"带迟,表示上報事件的輸出值。一個精簡物模型例子如下:

{
  "events": [
    {
      "outputData": [
        {
          "identifier": "power",
          "dataType": {
            "type": "int"
          }
        },
        {
          "identifier": "power_style",
          "dataType": {
            "type": "enum"
          }
        }
      ],
      "identifier": "power_state",
      "type": "info"
    }
  ]
}

"outputData" 數(shù)組的使用與屬性上報一致囱桨,這里就不介紹了仓犬。

服務調用

服務調用需要同時關注 "identifier","inputData" 和 "outputData" 這三個名稱舍肠,分別表示該服務在產品下的唯一標識搀继,服務的輸入?yún)?shù),服務的輸出參數(shù)翠语。與函數(shù)調用有輸入值和輸出值類似叽躯,服務調用也有這些特征。

物模型數(shù)據(jù)校驗

物模型數(shù)據(jù)校驗方式目前有兩種肌括,弱校驗免校驗点骑。

類型 說明
弱校驗 只校驗設備數(shù)據(jù)的 idetifier 和 dataType 字段,不校驗其他字段,流轉全量數(shù)據(jù)黑滴。
免校驗 對上報的數(shù)據(jù)不進行校驗憨募,流轉全量數(shù)據(jù)。

也就是說跷跪,弱校驗針對產品設備的上報數(shù)據(jù)馋嗜,只要 idetifier 是一致的,且 dataType 字段滿足要求吵瞻,就接收該數(shù)據(jù)葛菇,并且在其他云端產品流轉。

設備與云端交互過程

為什么云端可以設置和獲取接入設備的屬性呢橡羞?為什么接入設備可以上報事件給云端呢眯停?又為什么云端可以調用接入設備提供的服務呢?這就是這一小節(jié)解釋的內容卿泽。

物模型基于 MQTT 協(xié)議莺债,MQTT 協(xié)議的介紹不在此處展開。

云端定義了一系列的 Topic签夭,在設備接入云端時齐邦,C-SDK 向 MQTT broker 訂閱了一些的 Topic,而云端需要與設備交互時第租,就向 MQTT broker 發(fā)布相應的 Topic措拇,這樣就完成了交互過程。同理慎宾,云端也會訂閱一些 Topic丐吓,設備可以向這些 Topic 發(fā)布消息。

接入設備端訂閱發(fā)布的 Topic 列表如下:

功能 Topic類 操作權限 描述
屬性上報 /sys/${productKey}/${deviceName}/thing/event/property/post 發(fā)布 設備屬性上報
/sys/${productKey}/${deviceName}/thing/event/property/post_reply 訂閱 云端響應屬性上報
屬性設置 /sys/${productKey}/${deviceName}/thing/service/property/set 訂閱 設備屬性設置
事件上報 /sys/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/post 發(fā)布 設備事件上報
/sys/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/post_reply 訂閱 云端響應事件上報
服務調用 /sys/${productKey}/${deviceName}/thing/service/${tsl.service.identifier} 訂閱 設備服務調用
/sys/${productKey}/${deviceName}/thing/service/${tsl.service.identifier}_reply 發(fā)布 設備端響應服務調用

其中 ${productKey} 會替換為實際的產品名趟据,${deviceName} 會替換為實際的設備名券犁,${tsl.event.identifier} 是事件的標識符,${tsl.service.identifier} 是服務的標識符汹碱,最大限度地保證了 Topic 的唯一性粘衬。

這些 Topic 的作用在后面用時序來描述。

屬性上報與設置

事件上報

服務調用

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末咳促,一起剝皮案震驚了整個濱河市色难,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌等缀,老刑警劉巖枷莉,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異尺迂,居然都是意外死亡笤妙,警方通過查閱死者的電腦和手機冒掌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來股毫,“玉大人铃诬,你說我怎么就攤上這事⌒牵” “怎么了?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長往枷。 經常有香客問我师溅,道長蘸鲸,這世上最難降的妖魔是什么膝舅? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任埂息,我火速辦了婚禮享幽,結果婚禮上摆霉,老公的妹妹穿的比我還像新娘。我一直安慰自己刻两,他們只是感情好,可當我...
    茶點故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布幕侠。 她就那樣靜靜地躺著悼潭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天彰导,我揣著相機與錄音搁宾,去河邊找鬼爽待。 笑死,一個胖子當著我的面吹牛等龙,可吹牛的內容都是我干的蛛砰。 我是一名探鬼主播,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼泥畅,長吁一口氣:“原來是場噩夢啊……” “哼荠诬!你這毒婦竟也來了?” 一聲冷哼從身側響起位仁,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤柑贞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后聂抢,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體钧嘶,經...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年涛浙,在試婚紗的時候發(fā)現(xiàn)自己被綠了康辑。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片摄欲。...
    茶點故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡轿亮,死狀恐怖,靈堂內的尸體忽然破棺而出胸墙,到底是詐尸還是另有隱情我注,我是刑警寧澤,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布迟隅,位于F島的核電站但骨,受9級特大地震影響励七,放射性物質發(fā)生泄漏。R本人自食惡果不足惜奔缠,卻給世界環(huán)境...
    茶點故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一掠抬、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧校哎,春花似錦两波、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至抱怔,卻和暖如春劣坊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背屈留。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工局冰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人灌危。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓锐想,卻偏偏與公主長得像,于是被迫代替她去往敵國和親乍狐。 傳聞我的和親對象是個殘疾皇子赠摇,可洞房花燭夜當晚...
    茶點故事閱讀 45,107評論 2 356

推薦閱讀更多精彩內容