onenet設(shè)備終端接入?yún)f(xié)議范本2-EDP_第1頁(yè)
onenet設(shè)備終端接入?yún)f(xié)議范本2-EDP_第2頁(yè)
onenet設(shè)備終端接入?yún)f(xié)議范本2-EDP_第3頁(yè)
onenet設(shè)備終端接入?yún)f(xié)議范本2-EDP_第4頁(yè)
onenet設(shè)備終端接入?yún)f(xié)議范本2-EDP_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、PAGE25PAGE25Enhanced Device Protocol(EDP)歡迎訪問(wèn)設(shè)備云門(mén)戶(hù)網(wǎng)站/注冊(cè)用戶(hù),獲取最新文檔。版本號(hào)修訂日期修訂內(nèi)容說(shuō)明V1.12014.10.30EDP增加存儲(chǔ)數(shù)據(jù)報(bào)文;REST API 增加歷史數(shù)據(jù)查詢(xún)接口,用于上報(bào)數(shù)據(jù)點(diǎn),或者上報(bào)的同時(shí)轉(zhuǎn)發(fā)數(shù)據(jù)點(diǎn)。V1.1.12014/11/3EDP增加消息類(lèi)型9,以支持對(duì)存儲(chǔ)數(shù)據(jù)的確認(rèn)。V1.22015/07/17增加加密機(jī)制;命令請(qǐng)求和響應(yīng)報(bào)文;存儲(chǔ)數(shù)據(jù)點(diǎn),新增3中格式;修改登陸方式為2種;V1.32015/10/14添加連接關(guān)閉消息目錄 TOC o 1-3 h z u HYPERLINK l _Toc425932

2、409 Enhanced Device Protocol(EDP) PAGEREF _Toc425932409 h 1 HYPERLINK l _Toc425932410 1說(shuō)明 PAGEREF _Toc425932410 h 2 HYPERLINK l _Toc425932411 2設(shè)備與業(yè)務(wù)接入模式 PAGEREF _Toc425932411 h 2 HYPERLINK l _Toc425932412 3接入流程 PAGEREF _Toc425932412 h 2 HYPERLINK l _Toc425932413 4消息格式 PAGEREF _Toc425932413 h 3 HYPER

3、LINK l _Toc425932414 4.1消息類(lèi)型 PAGEREF _Toc425932414 h 3 HYPERLINK l _Toc425932415 4.2剩余消息長(zhǎng)度 PAGEREF _Toc425932415 h 3 HYPERLINK l _Toc425932416 4.3選項(xiàng) PAGEREF _Toc425932416 h 4 HYPERLINK l _Toc425932417 4.4消息體 PAGEREF _Toc425932417 h 5 HYPERLINK l _Toc425932418 5消息類(lèi)型 PAGEREF _Toc425932418 h 5 HYPERLIN

4、K l _Toc425932419 5.1連接請(qǐng)求 PAGEREF _Toc425932419 h 5 HYPERLINK l _Toc425932420 5.2連接響應(yīng) PAGEREF _Toc425932420 h 8 HYPERLINK l _Toc425932421 5.3轉(zhuǎn)發(fā)(透?jìng)?數(shù)據(jù) PAGEREF _Toc425932421 h 9 HYPERLINK l _Toc425932422 5.4存儲(chǔ)(&轉(zhuǎn)發(fā))數(shù)據(jù) PAGEREF _Toc425932422 h 10 HYPERLINK l _Toc425932423 5.5存儲(chǔ)確認(rèn) PAGEREF _Toc425932423 h

5、13 HYPERLINK l _Toc425932424 5.6命令請(qǐng)求 PAGEREF _Toc425932424 h 14 HYPERLINK l _Toc425932425 5.7命令響應(yīng) PAGEREF _Toc425932425 h 14 HYPERLINK l _Toc425932426 5.8心跳請(qǐng)求 PAGEREF _Toc425932426 h 15 HYPERLINK l _Toc425932427 5.9心跳響應(yīng) PAGEREF _Toc425932427 h 15 HYPERLINK l _Toc425932428 5.10加密請(qǐng)求 PAGEREF _Toc425932

6、428 h 16 HYPERLINK l _Toc425932429 5.11加密響應(yīng) PAGEREF _Toc425932429 h 16 HYPERLINK l _Toc425932430 6主要流程 PAGEREF _Toc425932430 h 17 HYPERLINK l _Toc425932431 6.1登錄 PAGEREF _Toc425932431 h 17 HYPERLINK l _Toc425932432 6.2數(shù)據(jù)收發(fā)(透?jìng)鳎?PAGEREF _Toc425932432 h 18 HYPERLINK l _Toc425932433 6.3存儲(chǔ)數(shù)據(jù)點(diǎn)(datapoint)

7、PAGEREF _Toc425932433 h 18 HYPERLINK l _Toc425932434 6.4存儲(chǔ)數(shù)據(jù)點(diǎn)并獲得確認(rèn) PAGEREF _Toc425932434 h 19 HYPERLINK l _Toc425932435 6.5存儲(chǔ)數(shù)據(jù)點(diǎn)并轉(zhuǎn)發(fā) PAGEREF _Toc425932435 h 20 HYPERLINK l _Toc425932436 6.6命令請(qǐng)求及響應(yīng) PAGEREF _Toc425932436 h 20 HYPERLINK l _Toc425932437 6.7心跳保持 PAGEREF _Toc425932437 h 21 HYPERLINK l _Toc

8、425932438 6.8數(shù)據(jù)加密 PAGEREF _Toc425932438 h 21說(shuō)明該接口上的協(xié)議基于TCP,但只傳輸數(shù)據(jù)包到目的地,不保證傳輸?shù)捻樞蚺c到達(dá)的順序相同,事務(wù)機(jī)制需要在上層實(shí)現(xiàn);若客戶(hù)端同時(shí)發(fā)起兩次請(qǐng)求,服務(wù)器返回時(shí),不保障返回報(bào)文的順序。設(shè)備與業(yè)務(wù)接入模式設(shè)備層:利用平臺(tái)提供的EDPSDK,實(shí)現(xiàn)EDP協(xié)議,用于上報(bào)業(yè)務(wù)數(shù)據(jù)點(diǎn)到OnetNet。若需要實(shí)時(shí)接收業(yè)務(wù)層下發(fā)的控制命令,需要保持EDP長(zhǎng)連接。業(yè)務(wù)應(yīng)用層:若要自定義實(shí)現(xiàn)業(yè)務(wù)平臺(tái),可通過(guò)HTTP 協(xié)議的RESTful API操作OnetNet提供的資源(設(shè)備、數(shù)據(jù)點(diǎn)、命令控制等資源的增刪查改)。適用場(chǎng)景:在充分分析業(yè)

9、務(wù)數(shù)據(jù)模型的基礎(chǔ)上,認(rèn)為OneNet提供的設(shè)備-數(shù)據(jù)流-數(shù)據(jù)點(diǎn)模型適合業(yè)務(wù)數(shù)據(jù)存儲(chǔ)。優(yōu)先推薦新業(yè)務(wù)使用該模式。接入流程訪問(wèn)平臺(tái)/注冊(cè)用戶(hù);用戶(hù)根據(jù)業(yè)務(wù)情況,在“連接請(qǐng)求”章節(jié)中選擇EDP登錄方式;根據(jù)登錄方式,填寫(xiě)設(shè)備相關(guān)屬性,在項(xiàng)目下新增設(shè)備,獲取項(xiàng)目ID、設(shè)備ID,以及api-key等信息;設(shè)備發(fā)送TCP連接請(qǐng)求到以下地址,發(fā)送封裝的報(bào)文與平臺(tái)交互。平臺(tái)服務(wù)器地址,TCP 端口876,29876消息格式消息包括三個(gè)部分:必選的消息頭(綠色),可選的多個(gè)選項(xiàng)(黃色)以及可選的消息體(藍(lán)色)。字節(jié)bit76543210Byte 1消息類(lèi)型保留位(全零)Multi-bytes剩余消息長(zhǎng)度(1-4

10、字節(jié),指示選項(xiàng)+消息體的長(zhǎng)度)Multi-bytes選項(xiàng)(根據(jù)消息類(lèi)型0個(gè)或多個(gè))Multi-bytes消息體(根據(jù)消息類(lèi)型0或多個(gè)字節(jié))消息類(lèi)型占第一個(gè)字節(jié)的前4位,取值范圍(0-15),定義如下:類(lèi)型值含義方向1CONN_REQ:連接建立請(qǐng)求C(client)-S(server)2CONN_RESP:連接建立響應(yīng)S-C3PUSH_DATA:轉(zhuǎn)發(fā)(透?jìng)鳎?shù)據(jù)雙向4CONN_CLOSE:連接關(guān)閉S-C8SAVE_DATA:存儲(chǔ)(&轉(zhuǎn)發(fā))數(shù)據(jù)雙向9SAVE_ACK:存儲(chǔ)確認(rèn)S-C10CMD_REQS-C11CMD_RESPC-S12PING_REQ: 心跳請(qǐng)求C-S13PING_RESP: 心跳

11、響應(yīng)S-C14ENCRYPT_REQC-S15ENCRYPT_RESPS-C其他值保留剩余消息長(zhǎng)度用于指示選項(xiàng)和消息體的字節(jié)數(shù)。目前平臺(tái)限制EDP協(xié)議每條消息剩余長(zhǎng)度不能超過(guò)4M。該字段占用1-4個(gè)字節(jié),長(zhǎng)度值的低位部分放在傳輸?shù)那懊孀止?jié),高位放在后面。每個(gè)字節(jié)的最高位為延續(xù)指示位。延續(xù)指示位為1時(shí),標(biāo)示后面字節(jié)也是長(zhǎng)度值,最多可延續(xù)4個(gè)字節(jié)??杀硎緮?shù)據(jù)范圍如下:字節(jié)數(shù)最小值最大值10(0 x00)127(0 x7F)2128(0 x80, 0 x01)16383 (0 xFF, 0 x7F)316 384 (0 x80, 0 x80, 0 x01)2 097 151 (0 xFF, 0 xF

12、F, 0 x7F)42 097 152 (0 x80, 0 x80, 0 x80, 0 x01) 268 435 455 (0 xFF, 0 xFF, 0 xFF, 0 x7F)注意:消息剩余長(zhǎng)度 = 選項(xiàng)所占字節(jié)數(shù) + 消息體所占字節(jié)數(shù),根據(jù)該值的大小來(lái)確定消息剩余長(zhǎng)度字段在EDP數(shù)據(jù)包中占用多少個(gè)字節(jié),比如從上表可以看出,當(dāng)0剩余長(zhǎng)度=127的時(shí)候,消息剩余長(zhǎng)度字段在EDP數(shù)據(jù)包中只占一個(gè)字節(jié),而不是四個(gè)字節(jié);當(dāng) 127剩余長(zhǎng)度=16383的時(shí)候,消息剩余長(zhǎng)度字段在EDP數(shù)據(jù)包中占兩個(gè)字節(jié),而不是四個(gè)字節(jié);依此類(lèi)推。例如,若選項(xiàng)+消息體長(zhǎng)度共321=65+2*128字節(jié),則該域(剩余長(zhǎng)度)

13、需要兩個(gè)字節(jié)才能表示,第一個(gè)字節(jié)的延續(xù)位置1,按照傳輸順序格式如下:字節(jié)bit76543210Byte 111000001Byte 200000010解析該長(zhǎng)度值的C語(yǔ)言算法可表示為:( ( Byte2 & 127 ) S(設(shè)備到平臺(tái))平臺(tái)收到該消息,選項(xiàng)中的地址是該數(shù)據(jù)轉(zhuǎn)發(fā)的目的地址(目的設(shè)備ID號(hào));若目的地址的長(zhǎng)度為零,即沒(méi)有目的地址,則平臺(tái)將該消息轉(zhuǎn)發(fā)到設(shè)備注冊(cè)時(shí)的默認(rèn)目的地址(設(shè)備申請(qǐng)時(shí),填寫(xiě)的route_to字段)。S-C (平臺(tái)到設(shè)備)設(shè)備收到該消息,選項(xiàng)中的地址是該數(shù)據(jù)發(fā)送的發(fā)送者(源)地址;示例:通過(guò)設(shè)備云發(fā)送數(shù)據(jù)到ID為21573的設(shè)備。字節(jié)說(shuō)明bit76543210消息頭

14、Byte 1第一字節(jié):Bit(4-7):消息類(lèi)型,值為3;Bit(0-3):保留位,值為0;00110000剩余消息長(zhǎng)度(283編碼后需要占用2個(gè)字節(jié))Byte 2消息剩余字節(jié)長(zhǎng)度(283)-編碼第一字節(jié)(低)10011011Byte 3消息剩余字節(jié)長(zhǎng)度(283)-編碼第二字節(jié)(高)00000010選項(xiàng)1:目的或源地址(字符串格式)Byte 4固定兩字節(jié)長(zhǎng)度高位字節(jié),值為000000000Byte 5固定兩字節(jié)長(zhǎng)度低位字節(jié),值為500000101Byte 6字符200110010Byte 7字母100110001Byte 8字母500000101Byte 9字母700110111Byte 10

15、字母300110011消息體(用戶(hù)數(shù)據(jù))Byte 11/最大支持3M用戶(hù)自定義的數(shù)據(jù),本例中為276字節(jié)Byte 286連接關(guān)閉當(dāng)平臺(tái)解析協(xié)議時(shí),如果發(fā)現(xiàn)協(xié)議格式錯(cuò)誤或者未按要求封裝,則會(huì)向設(shè)備發(fā)送連接關(guān)閉消息,然后斷開(kāi)連接。此消息的消息體為一個(gè)字節(jié),表示錯(cuò)誤原因。需要注意的是,錯(cuò)誤碼并一定能完全正確地反應(yīng)真正出錯(cuò)的字段。比如有相鄰的兩個(gè)字段A和B,A要求長(zhǎng)度為4字節(jié),但是實(shí)際上封裝了5個(gè)字節(jié)在里面,這樣第五個(gè)字節(jié)就會(huì)被當(dāng)作B的內(nèi)容被讀取解析,平臺(tái)解析到B字段時(shí),有可能認(rèn)為字段B封裝出錯(cuò),但是實(shí)際上是因?yàn)锳字段封裝錯(cuò)誤引起的。消息格式如下:字節(jié)說(shuō)明bit76543210消息頭Byte 1第一字

16、節(jié):Bit(4-7):消息類(lèi)型,值為0 x40;Bit(0-3):保留位,值為0;01000000Byte 2第二字節(jié):消息剩余字節(jié)長(zhǎng)度,值為100000001Byte 3第三字節(jié):連接關(guān)閉錯(cuò)誤碼。錯(cuò)誤碼及含義如下:錯(cuò)誤碼出錯(cuò)消息含義全局錯(cuò)誤碼,不與某條消息關(guān)聯(lián)1未知錯(cuò)誤2服務(wù)不可用,當(dāng)服務(wù)器端因分配內(nèi)存失敗等內(nèi)部原因?qū)е滦枰獢嚅_(kāi)連接時(shí),會(huì)返回此錯(cuò)誤。3解析消息類(lèi)型時(shí)出錯(cuò)。4消息類(lèi)型不屬于4.1節(jié)消息類(lèi)型中定義的任何一種消息。5解析剩余消息長(zhǎng)度時(shí)出錯(cuò),或者剩余消息長(zhǎng)度不合法。加解密10ENCRYPT_REQRSA加密算法的E、N等長(zhǎng)度不合法。11在CONN_REQ消息之后收到ENCRYPT_R

17、EQ消息。12解析對(duì)稱(chēng)加密算法類(lèi)型時(shí)出錯(cuò)。13指定的對(duì)稱(chēng)加密算法暫時(shí)不支持。14利用收到E、N初始化RSA密鑰失敗。15解密收到的數(shù)據(jù)時(shí)出錯(cuò)。連接請(qǐng)求20CONN_REQ解析協(xié)議名稱(chēng)出錯(cuò),或者不支持給定的協(xié)議名稱(chēng)。21解析協(xié)議版本出錯(cuò),或者不支持給定的協(xié)議版本。22解析連接標(biāo)志時(shí)出錯(cuò)。23連接標(biāo)志中未將鑒權(quán)信息標(biāo)志位(第6位)置上。24解析?;顣r(shí)間時(shí)出錯(cuò)。25解析設(shè)備ID時(shí)出錯(cuò),或者設(shè)備ID長(zhǎng)度大于限定值。26指定了UserID標(biāo)志位,但是解析UserID出錯(cuò),或者UserID長(zhǎng)度大于限定值,或者UserID為0。27解析鑒權(quán)信息時(shí)出錯(cuò)或者鑒權(quán)信息為空。28同一個(gè)連接內(nèi)發(fā)送了多個(gè)連接請(qǐng)求。29

18、利用激活碼激活失敗。30鑒權(quán)碼不是有效的json格式。31利用鑒權(quán)碼鑒權(quán)失敗。32利用devid+apikey的方式鑒權(quán)失敗。33利用devid+apikey的方式鑒權(quán),指定了UserID,但是查詢(xún)到的UserID與指定的不一致。34利用UserID+鑒權(quán)信息鑒權(quán),但是鑒權(quán)信息不是有效的Json格式。35利用UserID+鑒權(quán)信息鑒權(quán)失敗。36利用UserID+鑒權(quán)信息鑒權(quán),未查詢(xún)到相應(yīng)的設(shè)備。37連接標(biāo)志不合法。轉(zhuǎn)發(fā)(透?jìng)鳎?0PUSH_DATA解析目的設(shè)備ID時(shí)出錯(cuò)。51在發(fā)送連接請(qǐng)求以前發(fā)送了PUSH_DATA消息。存儲(chǔ)(轉(zhuǎn)發(fā))60SAVE_DATA在發(fā)送連接請(qǐng)求以前發(fā)送了SAVE_DA

19、TA消息。61解析存儲(chǔ)轉(zhuǎn)發(fā)標(biāo)志消息標(biāo)志位時(shí)出錯(cuò)。62標(biāo)志位中指定了目的設(shè)備ID,但是解析目的設(shè)備ID時(shí)出錯(cuò)。63解析存儲(chǔ)轉(zhuǎn)發(fā)數(shù)據(jù)封裝類(lèi)型時(shí)出錯(cuò)。64數(shù)據(jù)類(lèi)型為1,解析其消息體時(shí)出錯(cuò)。65數(shù)據(jù)類(lèi)型為1,其消息體不是有效的Json格式。66數(shù)據(jù)類(lèi)型為1,缺少datastreams字段,或者此字段不是數(shù)組。67數(shù)據(jù)類(lèi)型為1,缺少id字段,或者此字段不是字符串類(lèi)型,或者此字段內(nèi)容為空。68數(shù)據(jù)類(lèi)型為1,缺少datapoints字段,或者此字段不是數(shù)組類(lèi)型。69數(shù)據(jù)類(lèi)型為1,缺少value字段。70數(shù)據(jù)類(lèi)型為2,解析二進(jìn)制數(shù)據(jù)描述項(xiàng)時(shí)出錯(cuò)。71數(shù)據(jù)類(lèi)型為2,解析二進(jìn)制數(shù)據(jù)長(zhǎng)度時(shí)出錯(cuò),或者數(shù)據(jù)長(zhǎng)度不合法。

20、72數(shù)據(jù)類(lèi)型為2,二進(jìn)制描述項(xiàng)不是有效的Json格式。73數(shù)據(jù)類(lèi)型為2,二進(jìn)制描述項(xiàng)中不包含ds_id字段,或者其不是字符串類(lèi)型,或者其值為空。74數(shù)據(jù)類(lèi)型為3或者4,解析消息體時(shí)出錯(cuò)。75數(shù)據(jù)類(lèi)型為3或者4,消息體不是有效的Json格式。76數(shù)據(jù)類(lèi)型為3,數(shù)據(jù)流名稱(chēng)為空。77數(shù)據(jù)類(lèi)型為4,消息體不是對(duì)象類(lèi)型。78數(shù)據(jù)類(lèi)型為4,數(shù)據(jù)流名稱(chēng)為空。79數(shù)據(jù)類(lèi)型為5,解析消息體時(shí)出錯(cuò)。80數(shù)據(jù)類(lèi)型為5,消息體格式有誤。81不支持的數(shù)據(jù)類(lèi)型。命令響應(yīng)100CMD_RESP在發(fā)送連接請(qǐng)求以前發(fā)送了CMD_RESP消息。101解析命令響應(yīng)的cmdid時(shí)出錯(cuò)。102命令響應(yīng)消息體長(zhǎng)度不合法。心跳請(qǐng)求110P

21、ING_REQ在發(fā)送連接請(qǐng)求以前發(fā)送了PING_REQ消息。存儲(chǔ)(&轉(zhuǎn)發(fā))數(shù)據(jù)該消息是一個(gè)雙向消息,可以從設(shè)備到云,也可以由設(shè)備云發(fā)向設(shè)備。由消息頭、一到2個(gè)選項(xiàng)和消息體組成,其中選項(xiàng)標(biāo)志位為必填,其他根據(jù)標(biāo)志位選填。若同時(shí)發(fā)送多個(gè)數(shù)據(jù)點(diǎn),平臺(tái)最多一次處理100條。save_data消息方向選項(xiàng)(地址)說(shuō)明C-S(設(shè)備到平臺(tái))平臺(tái)收到該消息,選項(xiàng)中的地址是該數(shù)據(jù)轉(zhuǎn)發(fā)的目的地址(目的設(shè)備ID號(hào));若目的地址的長(zhǎng)度為零,即沒(méi)有目的地址,則平臺(tái)將該消息轉(zhuǎn)發(fā)到設(shè)備注冊(cè)時(shí)的默認(rèn)目的地址(設(shè)備申請(qǐng)時(shí),填寫(xiě)的route_to字段)。S-C (平臺(tái)到設(shè)備)設(shè)備收到該消息,選項(xiàng)中的地址是該數(shù)據(jù)發(fā)送的發(fā)送者(源)

22、地址;例A :上報(bào)數(shù)據(jù)點(diǎn)報(bào)文,并轉(zhuǎn)發(fā)數(shù)據(jù)到ID 為10011的設(shè)備。字節(jié)說(shuō)明bit76543210消息頭Byte 1第一字節(jié):Bit(4-7):消息類(lèi)型,值為8;Bit(0-3):保留位,值為0;10000000剩余消息長(zhǎng)度(16664編碼后需要占用3個(gè)字節(jié))Byte 2消息剩余字節(jié)長(zhǎng)度(16664)-編碼第一字節(jié)(低)10011000Byte 3消息剩余字節(jié)長(zhǎng)度(16664)-編碼第二字節(jié)10000010Byte 4消息剩余字節(jié)長(zhǎng)度(16664)-編碼第三字節(jié)(高)10000001固定選項(xiàng):標(biāo)志Byte 5Bit 7:轉(zhuǎn)發(fā)地址指示,置1,后面有地址信息。Bit 0-6:系統(tǒng)保留,全零。100

23、00000目的或源地址(根據(jù)上面的標(biāo)志位確定存在與否)Byte 6固定兩字節(jié)長(zhǎng)度高位字節(jié),值為000000000Byte 7固定兩字節(jié)長(zhǎng)度低位字節(jié),值為500000101Byte 8字符100110001Byte 9字母000110000Byte 10字母000110000Byte 11字母100110001Byte 12字母100110001消息體(設(shè)備云規(guī)定的數(shù)據(jù)類(lèi)型格式)Byte 135種數(shù)據(jù)結(jié)構(gòu),具體格式見(jiàn)后續(xù)說(shuō)明:type = 5:分號(hào)間隔字符串格式;type = 4:JSON格式3字符串;type = 3:JSON格式2字符串;type = 2:二進(jìn)制數(shù)據(jù)點(diǎn);type = 1:JS

24、ON格式1字符串;Byte n數(shù)據(jù)類(lèi)型5格式說(shuō)明:Byte 13數(shù)據(jù)點(diǎn)類(lèi)型指示:type=5 /分號(hào)間隔字符串格式00000101Byte 14/指示后面字符串長(zhǎng)度固定兩字節(jié)長(zhǎng)度高位字節(jié),值為0 x00Byte 15固定兩字節(jié)長(zhǎng)度低位字節(jié),值為0 x41Byte 16消息中最前面兩位為用戶(hù)自定義的域中分隔符和域間分隔符,這兩個(gè)分隔符不能相同。比如采用逗號(hào)作為域中分隔符,分號(hào)作為域間分隔符的格式如下:,;feild0;feild1;feildn其中,每個(gè)field格式支持3種:field格式1: 3個(gè)子字段,分別是數(shù)據(jù)流ID,時(shí)間戳,數(shù)據(jù)值。通用格式:Datastream_id,datetime

25、,valuefield格式2: 2個(gè)子字段,分別是數(shù)據(jù)流ID和數(shù)據(jù)值,省略時(shí)間戳。通用格式:Datastream_id,valuefield格式3: 1個(gè)子字段,省略了數(shù)據(jù)ID和時(shí)間戳,只傳輸數(shù)據(jù)值,平臺(tái)將用該域(feild)所在的位置號(hào)(從0開(kāi)始)作為數(shù)據(jù)流ID。通用格式:value示例:(1),;temperature,2015-03-22 22:31:12,22.5;102;pm2.5,89;10(2)#temperature#2015-03-22 22:31:12#22.5102pm2.5#8910Byte n數(shù)據(jù)類(lèi)型4格式說(shuō)明:Byte 13數(shù)據(jù)點(diǎn)類(lèi)型指示:type=4 / JSON

26、格式3字符串00000100Byte 14/指示后面字符串長(zhǎng)度固定兩字節(jié)長(zhǎng)度高位字節(jié),值為0 x00Byte 15固定兩字節(jié)長(zhǎng)度低位字節(jié),值為0 x46Byte 16通用格式: “datastream_id1”:“datetime1”:”value1”,“datastream_id2”: “datetime2”:”value2”,示例:“temperature”:“2015-03-22 22:31:12”:22.5Byte n數(shù)據(jù)類(lèi)型3格式說(shuō)明:Byte 13數(shù)據(jù)點(diǎn)類(lèi)型指示:type=3 / JSON格式2字符串00000011Byte 14/指示后面字符串長(zhǎng)度固定兩字節(jié)長(zhǎng)度高位字節(jié),值為0

27、x00Byte 15固定兩字節(jié)長(zhǎng)度低位字節(jié),值為0 x46Byte 16通用格式: “datastream_id1”:”value1”, “datastream_id2”:”value2”,示例:“temperature”:22.5,”humidity”:”95.2%”Byte n數(shù)據(jù)點(diǎn)類(lèi)型2格式說(shuō)明:Byte 13數(shù)據(jù)點(diǎn)類(lèi)型指示:type=2 /二進(jìn)制數(shù)據(jù)00000010Byte 14/指示后面json字符串長(zhǎng)度固定兩字節(jié)長(zhǎng)度-高位字節(jié),值為0 x00Byte 15固定兩字節(jié)長(zhǎng)度-低位字節(jié),值為0 x10Byte 16“token”:”1232”, /用戶(hù)定義token,當(dāng)含有該字段,平臺(tái)將

28、用消息類(lèi)型9“存儲(chǔ)確認(rèn)”進(jìn)行存儲(chǔ)確認(rèn)?!眃s_id”:”image”, /創(chuàng)建數(shù)據(jù)流時(shí)定義的ID,(必填)“at”:”2014-10-25 12:23:23”, /時(shí)間,(可選)”desc”:字符串或json對(duì)象/對(duì)該數(shù)據(jù)的描述(可選)Byte nByte n+1/指示后面二進(jìn)制數(shù)據(jù)長(zhǎng)度固定四字節(jié)長(zhǎng)度-第1字節(jié)(最高),值為0 x00Byte n+1固定四字節(jié)長(zhǎng)度-第2字節(jié),值為0 x00Byte n+2固定四字節(jié)長(zhǎng)度-第3字節(jié),值為0 x01Byte n+3固定四字節(jié)長(zhǎng)度-第4字節(jié)(最低),值為0 x00Byte n+4/該域目前最大支持3M本例中的該域256字節(jié)數(shù)據(jù)Byte n+260數(shù)據(jù)

29、類(lèi)型1格式說(shuō)明:Byte 13數(shù)據(jù)點(diǎn)類(lèi)型值:1 /1: json格式1字符串00000001Byte 14/指示后面json字符串長(zhǎng)度固定兩字節(jié)長(zhǎng)度高位字節(jié),值為0 x00Byte 15固定兩字節(jié)長(zhǎng)度低位字節(jié),值為0 x41Byte 16“token”:”1231”, /用戶(hù)定義token,當(dāng)含有該字段,平臺(tái)將用消息類(lèi)型9“存儲(chǔ)確認(rèn)”進(jìn)行存儲(chǔ)確認(rèn)?!癲atastreams”:/ 可以同時(shí)傳遞多個(gè)數(shù)據(jù)流 “id”:”temperature”, “datapoints”:”at”:”2013-04-22 22:22:22”,/可選”value”: 36.5/用戶(hù)自定義, “id”:”locatio

30、n”“datapoints”:, datastreams:id:location,datapoints:value:lon:106,lat:29Byte n注意:在封裝存儲(chǔ)(轉(zhuǎn)發(fā))數(shù)據(jù)包的時(shí)候,如果只是實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ),目的地址設(shè)置為空;如果實(shí)現(xiàn)存儲(chǔ)并轉(zhuǎn)發(fā),可以分為以下兩種情況,第一,是在平臺(tái)設(shè)備注冊(cè)時(shí)設(shè)置了默認(rèn)目的地址(設(shè)備申請(qǐng)時(shí),填寫(xiě)的route_to字段),數(shù)據(jù)包中的目的地址為空,此時(shí)數(shù)據(jù)存儲(chǔ)后轉(zhuǎn)發(fā)到默認(rèn)目的地址對(duì)應(yīng)的設(shè)備;第二,數(shù)據(jù)包中的目的地址不為空,數(shù)據(jù)包存儲(chǔ)后被轉(zhuǎn)發(fā)到數(shù)據(jù)包中設(shè)備ID對(duì)應(yīng)的設(shè)備。存儲(chǔ)確認(rèn)當(dāng)消息類(lèi)型“存儲(chǔ)數(shù)據(jù)”中,采用數(shù)據(jù)類(lèi)型1或2時(shí)含有token時(shí),平臺(tái)下發(fā)該消息,用

31、作存儲(chǔ)消息的確認(rèn)。該消息包含:消息頭,1個(gè)必選項(xiàng)和可能的消息體。其中,選項(xiàng)包括一個(gè)字節(jié)的標(biāo)志;消息體根據(jù)標(biāo)志位,可能攜帶返回描述。舉例格式如下:字節(jié)說(shuō)明bit76543210消息頭Byte 1第一字節(jié):Bit(4-7):消息類(lèi)型,值為9;Bit(0-3):保留位,值為0;10010000Byte 2第二字節(jié):消息剩余字節(jié)長(zhǎng)度,值為3500100000選項(xiàng):標(biāo)志Byte 3Bit(7):指示后面有響應(yīng)描述(json)Bit(6-0):系統(tǒng)保留位10000000消息體:返回描述(字符串格式)Byte 4固定兩字節(jié)長(zhǎng)度-高位,值為0 x00(指示json長(zhǎng)度)Byte 5固定兩字節(jié)長(zhǎng)度-低位,值為0

32、 x20(指示json長(zhǎng)度)Byte 6”errno”:0, /錯(cuò)誤碼“error”:”succ”, /錯(cuò)誤描述”token”:”1234”,/消息8中傳遞的token值”index”:”23F23-2FW” /其他附件信息,如,二進(jìn)制數(shù)據(jù)索引Byte 37命令請(qǐng)求該消息由服務(wù)器發(fā)往客戶(hù)端,以執(zhí)行指定的命令。格式如下:字節(jié)說(shuō)明bit76543210消息頭Byte 1第一字節(jié):Bit(4-7):消息類(lèi)型,值為10;Bit(0-3):保留位,值為0;10100000剩余消息長(zhǎng)度(長(zhǎng)度不定1-4字節(jié))Byte 2剩余長(zhǎng)度.Byte xByte x+1cmdid兩字節(jié)長(zhǎng)度高位字節(jié)Byte x+2cmd

33、id兩字節(jié)長(zhǎng)度低位字節(jié)Byte x+3cmdid .Byte yByte y+1命令消息體四字節(jié)長(zhǎng)度第1字節(jié)(高位)Byte y+2命令消息體四字節(jié)長(zhǎng)度第2字節(jié)Byte y+3命令消息體四字節(jié)長(zhǎng)度第3字節(jié)Byte y+4命令消息體四字節(jié)長(zhǎng)度第4字節(jié)(低位)Byte y+5命令消息體(不超過(guò)64k).Byte z命令響應(yīng)該消息由客戶(hù)端發(fā)往服務(wù)器,以響應(yīng)相應(yīng)的命令。格式如下:字節(jié)說(shuō)明bit76543210消息頭Byte 1第一字節(jié):Bit(4-7):消息類(lèi)型,值為11;Bit(0-3):保留位,值為0;10110000剩余消息長(zhǎng)度(長(zhǎng)度不定1-4字節(jié))Byte 2剩余長(zhǎng)度.Byte xByte x

34、+1cmdid兩字節(jié)長(zhǎng)度高位字節(jié)Byte x+2cmdid兩字節(jié)長(zhǎng)度低位字節(jié)Byte x+3cmdid .Byte yByte y+1命令響應(yīng)消息體四字節(jié)長(zhǎng)度第1字節(jié)(高位)Byte y+2命令響應(yīng)消息體四字節(jié)長(zhǎng)度第2字節(jié)Byte y+3命令響應(yīng)消息體四字節(jié)長(zhǎng)度第3字節(jié)Byte y+4命令響應(yīng)消息體四字節(jié)長(zhǎng)度第4字節(jié)(低位)Byte y+5命令響應(yīng)消息體(不超過(guò)64k).Byte z心跳請(qǐng)求該消息只有消息頭,由客戶(hù)端發(fā)向服務(wù)器,格式如下:字節(jié)說(shuō)明bit76543210消息頭Byte 1第一字節(jié):Bit(4-7):消息類(lèi)型,值為12;Bit(0-3):保留位,值為0;11000000Byte 2

35、第二字節(jié):消息剩余字節(jié)長(zhǎng)度,值為000000000心跳響應(yīng)該消息只有消息頭,從服務(wù)器返回客戶(hù)端,格式如下:字節(jié)說(shuō)明bit76543210消息頭Byte 1第一字節(jié):Bit(4-7):消息類(lèi)型,值為13;Bit(0-3):保留位,值為0;11010000Byte 2第二字節(jié):消息剩余字節(jié)長(zhǎng)度,值為000000000加密請(qǐng)求該消息由客戶(hù)端發(fā)向服務(wù)器端,表明此后客戶(hù)端與服務(wù)器之間的通信數(shù)據(jù)需要加密,否則采用明文通信。加密內(nèi)容為剩余消息長(zhǎng)度之后的內(nèi)容,被加密命令的剩余消息長(zhǎng)度設(shè)置為加密后的數(shù)據(jù)長(zhǎng)度。服務(wù)器端收到此消息后,隨機(jī)選擇一個(gè)對(duì)稱(chēng)加密算法的密鑰,利用接收到的RSA公鑰,以RSA_PKCS1_PA

36、DDING模式加密,之后發(fā)送給客戶(hù)端。此后服務(wù)器端與客戶(hù)端之間傳遞的數(shù)據(jù)利用對(duì)稱(chēng)加密算法加密。對(duì)稱(chēng)加密算法由客戶(hù)端在本消息中指定,目前服務(wù)器端只支持AES加密算法,代碼為1,密鑰長(zhǎng)度采用128位,加密模式為ECB模式,填充方式為ISO10126padding方式。此消息需要在連接請(qǐng)求之前發(fā)送,若服務(wù)器端在收到連接請(qǐng)求之后再收到此消息,則認(rèn)為消息序列混亂,關(guān)閉連接。消息體包含客戶(hù)端RSA公鑰中的e和n,e為DWORD類(lèi)型,按照大端字節(jié)序方式傳輸,n為128字節(jié)的BYTE類(lèi)型,按照字節(jié)流的順序傳輸。其中DWORD為32位的無(wú)符號(hào)四字節(jié)整形,BYTE為8位的無(wú)符號(hào)單字節(jié)整形。消息體格式如下:字節(jié)說(shuō)明

37、bit76543210消息頭Byte 1第一字節(jié):Bit(4-7):消息類(lèi)型,值為14;Bit(0-3):保留位,值為0;11100000剩余消息長(zhǎng)度(133編碼后需要占用2個(gè)字節(jié))Byte 2消息剩余字節(jié)長(zhǎng)度(133)-編碼第一字節(jié)(低)10000100Byte 3消息剩余字節(jié)長(zhǎng)度(133)-編碼第二字節(jié)(高)00000001Byte 4公鑰信息中的e編碼后的第一字節(jié)(高)Byte 5公鑰信息中的e編碼后的第二字節(jié)Byte 6公鑰信息中的e編碼后的第三字節(jié)Byte 7公鑰信息中的e編碼后的第四字節(jié)(低)Byte 8公鑰信息中的n,共128字節(jié).Byte 135Byte1361:AES加密算法

38、代碼00000001加密響應(yīng)該消息由服務(wù)器端發(fā)往客戶(hù)端,以響應(yīng)加密請(qǐng)求。格式如下:字節(jié)說(shuō)明bit76543210消息頭Byte 1第一字節(jié):Bit(4-7):消息類(lèi)型,值為15;Bit(0-3):保留位,值為0;11110000剩余消息長(zhǎng)度(長(zhǎng)度不定1-4字節(jié))Byte 2剩余長(zhǎng)度.Byte xByte x+1密鑰加密后兩字節(jié)長(zhǎng)度高位字節(jié)Byte x+2密鑰加密后兩字節(jié)長(zhǎng)度低位字節(jié)Byte x+3加密后密鑰信息.Byte y主要流程登錄EDP設(shè)備登錄設(shè)備云流程:訪問(wèn)設(shè)備云門(mén)戶(hù)/注冊(cè)用戶(hù);用戶(hù)根據(jù)業(yè)務(wù)情況,在”連接請(qǐng)求”章節(jié)中選擇EDP登錄方式;根據(jù)登錄方式,填寫(xiě)設(shè)備相關(guān)屬性,在項(xiàng)目下新增設(shè)備,獲取項(xiàng)目ID、設(shè)備ID,以及api-key等信息;設(shè)備發(fā)送連接請(qǐng)求報(bào)文到設(shè)備云服務(wù)器地址:,端口 876或29876EDP登陸消息流根據(jù)相關(guān)登陸方式,在CONN_REQ消息中攜帶驗(yàn)證信息;平臺(tái)驗(yàn)證后,返回鑒權(quán)響應(yīng)碼。數(shù)據(jù)收發(fā)(透?jìng)鳎┮獙?shí)現(xiàn)透?jìng)?,通信雙方必須都要登陸到設(shè)備云;設(shè)備1使用消息類(lèi)型3“發(fā)送數(shù)據(jù)”發(fā)送數(shù)據(jù)到設(shè)備云,目的地址寫(xiě)明設(shè)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論