将近一年沒有關注阿裡雲物聯網的api,最近看了下官網的文檔,api清單中赫然多出了物模型的管理和使用兩大類.這也難怪,物模型被譽為物聯網世界的原子.通過物模型可以有效的使用屬性,服務和事件就可以表示出紛繁複雜和多姿多彩的物聯網世界中的各種類型的裝置;目前物模型并沒有統一的規範,是以阿裡,小米,京東和中移動等大廠,都是各自制定一套自己的規範;阿裡雲這面主要是在自家的ICA聯盟定義了一套物模型的規範.本文也從實踐角度分享一下物模型相關api的使用.
物模型管理這類api一共有18個,所有物模型的api接口都是基于産品的,是以需要一個以建立的産品id:productkey. 按照功能特性又可以分為模型,模闆,語言和腳本四個小類.下面就看一下第一小類模型的6個api.
它們分别是:建立 查詢 更新 釋出 拷貝 删除
首先是建立一個物模型,使用CreateThingModel這個api接口;這個接口需要使用到兩個參數:産品的id号以及建立物模型的三元素[屬性.服務.事件],為了易于了解,我們以單獨建立一個物模型的屬性為例,建立一束光的屬性,辨別符和名稱都為LightVal,取值範圍為1-10,通路權限為可讀寫,那麼可以使用如下格式:
XYsayFrO.IoT.Srv.CreateThingModel.a141rgUXgFl.{"properties":[{"identifier":"LightVal","dataSpecs":{"max":"10","min":"1","dataType":"INT"},"std":false,"custom":true,"dataType":"INT","rwFlag":"READ_WRITE","productKey":"a141rgUXgFl","required":false,"customFlag":true,"name":"LightVal"}]}.
運作腳本解釋器,可以看到建立成功的提示:

因為建立模型的接口,傳回的資訊隻有成功和失敗,過于精簡,是以需要我們使用查詢物模型接口來确認一下.這個查詢的接口為QueryThingModel,後面隻需要帶一個産品id号的參數就可以啦;具體格式和示例如下:
XYsayFrO.IoT.Srv.QueryThingModel.a141rgUXgFl.
傳回的結果截圖界面如下:
可以看到綠色圈的資訊和我們要求建立的資訊一緻;
物模型建立好後,難免根據實際情況需要修改更新,這時候就需要用到第三個接口UpdateThingModel物模型更新api了,此接口和第一個建立物模型接口類似,也是需要産品id号和物模型json格式的資訊.比如我們需要現在将之前的建立号的光束改為最大值為100,名字改為Light,那麼就可以使用下面的格式:
XYsayFrO.IoT.Srv.UpdateThingModel.a141rgUXgFl.{"properties":[{"identifier":"LightVal","dataSpecs":{"max":"100","min":"1","step":"1","dataType":"INT"},"dataType":"INT","rwFlag":"READ_WRITE","productKey":"a141rgUXgFl","required":false,"name":"Light"}]}.
如果更新成功,就會傳回如下界面:
這個時候,我們就可以再使用之前一樣的查詢指令去看更新後的資訊.
可以看到傳回的結果已經變為最大值為100了,說明之前的更新确實成功了;
當我們将物模型建立好,又修改好了以後,就可以正式釋出了,這時需要使用第四個接口,PublishThingModel這個api來釋出,這裡需要兩個參數,一個為産品id,一個為需要釋出的版本号.
XYsayFrO.IoT.Srv.PublishThingModel.a141rgUXgFl.V0x0x9.
釋出成功後,會有如下資訊:
當我們的産品很多,建立的物模型相似度又非常高的時候,可以使用第五個拷貝接口,具體名稱為CopyThingModel,根據這個接口的實際功能,需要三個參數分别為:拷貝源和目的的産品id,以及源産品的釋出版本号.
比如,我們現在把産品id為a141rgUXgFl的産品中物模型,拷貝到産品id為a17hjshDgiK的産品中,物模型的版本号為V0x0x9,那麼就可以使用下面的格式:
XYsayFrO.IoT.Srv.CopyThingModel.a141rgUXgFl.a17hjshDgiK.V0x0x9.
最後一個接口為删除産品的物模型,這個api隻需要一個參數:需要删除産品所對應的産品id.
XYsayFrO.IoT.Srv.DeleteThingModel.a141rgUXgFl.
運作後,會傳回如下資訊:
這個時候再去使用下面的指令查詢,會傳回所有相關的空資訊.
本次實踐示範程式下載下傳連接配接:
http://xysuger.xunyun17.xyz/v0.1.0.1模型.rar