天天看點

CoAP調試工具Mozi.IoT.CoAP應用詳解

前言

        CoAP是一種類HTTP協定的物聯網專用協定,其資料包為人類不可閱讀的位元組流形式,在開發相關應用的時候往往不能準确的了解資料包的内容。故需要專用的調試工具對資料和通訊進行調試。這篇文章是為了讓開發者更好的了解工具的特性。

CoAP協定介紹

        CoAP(Constrained Application Protocol)受限應用協定,是一種在物聯網世界的類web協定,RFC規範定義為RFC7252,7959,8613,8974。該協定使用在資源受限的物聯網裝置上。物聯網裝置的RAM,ROM都通常非常小,不能運作消耗資源比較多的TCP和HTTP。

CoAP調試工具

        工具名稱:Mozi.IoT.CoAP

        下載下傳位址:​​Mozi.Network 發行版 - Gitee.com​​

        調試位址:coap://coap.me

        調試環境:.Net4

指令行參數說明

用法:coap command url [options] [body]
         

      command 可選值:get | post | put | delete

      url 格式

        coap://{host}[:{port}]/{path}[?{query}]

      options 請求選項參數如下:

        -time                    監聽若幹秒,參數值為整數,機關為秒

        -dump                    值為檔案路徑,将編碼好的資料包轉儲到檔案,不發起請求

        -file                    需要上傳的檔案的路徑

        -round                   重複發起請求的次數(最高100次),需-time參數進行配合

        -type                    消息類型,取值

                                    con   --Confirmable

                                    non   --NonConfirmable

                                    ack   --Acknowledgement

                                    rst   --Reset

        -token                   格式:0x0f0e

        -ifmatch                 

        -etag                    

        -ifnonematch             

        -extendedtokenlength     

        -locationpath            

        -contentformat           

        -maxage                  

        -accept                  

        -locationquery           

        -block2                  Block2設定,格式:Num/MoreFlag/Size

        -block1                  Block1設定,格式:Num/MoreFlag/Size

                                 Num:0~1045785,MoreFlag:[0|1],Size:0~1024

        -size2                   

        -proxyuri                

        -proxyscheme             

        -size1  

        
        注:

            1.字元串變量值用""包裹

            2.整型變量值用,直接輸入整數即可,如 -size 1024

        body 說明:

            1.0x開始的字元串被識别為HEX字元串并被轉為位元組流

            2.其它識别為普通字元串同時被編碼成位元組流,編碼方式為UTF-8

            3.帶空格的字元串請用""進行包裹"

      示例:

         coap get coap://127.0.0.1:5683/core/time?type=1 -block1 0/0/128      

指令解釋

-time

值類型:整數

說明:

        此指令訓示程式持續監聽若幹秒,無論服務端是否有響應,程式都不會退出。預設情況下,程式在發起請求時會阻塞30s,直到收到一次服務端響應或逾時就會立即結束運作。有時候伺服器不會僅僅發送一次響應,而是将包進行分塊發送,或伺服器響應不時很及時。這兩種情況下就需要控制監聽的時間。

-dump

值類型:字元串

說明:

        此指令會将請求包以HEX字元串的形式,導出到指定的檔案,同時不會發起與伺服器的通訊請求。

-file

值類型:字元串

說明:

        設定上傳的檔案的完整路徑,檔案會按預設的分塊大小進行傳輸(預設128bit)

-round

值類型:整數

說明:

        設定重複發起請求的次數,為防止工具被用作攻擊工具,上限設定為100次

-type

值類型:枚舉

說明:

        消息的類型,取值範圍如下(忽略大小寫):

        Confirmable  |  CON

        NonConfirmable |  NON

        Acknowledgement |  ACK

        Reset |  RST

-token

值類型:二進制

說明:

        請使用HEX字元串的格式設定此值,如0x0f0e

-ifmatch

值類型:字元串

說明:

        請參考HTTP通訊中的if-match

-etag

值類型:字元串

說明:

        請參考HTTP通訊中的etag

-ifnonematch

值類型:字元串

說明:

        請參考HTTP通訊中的if-none-match

-extendedtokenlength

值類型:字元串

說明:

        這個值暫時不要使用,因為最新的規範文檔還沒有表述的很清楚,待後期實作後會加入

-contentformat

值類型:字元串或數字

說明:

        這個參數表示發起的請求内容的格式,用于POST/PUT兩種請求方式。如果不設定此參數,則通訊雙方預設内容格式為為text/plain,且此參數不會附加到資料包中。

        取值範圍如下表:

                "text/plain" | 0 

                "application/link-format" | 40

                "application/xml" | 41

                "application/octet-stream" | 42

                "application/exi" |  47

                "application/json" | 50

                "application/cbor" | 60  

-accept

值類型:字元串或數字

說明:

        表示用戶端期望伺服器傳回的内容的格式類型,參數取值請參看-contentformat。

-block1|block2

值類型:字元串

說明:

        表示期望使用的分塊值,格式為{Num}/{MoreFlag}/{Size}。例如:1/0/1024。

        Num:表示目前請求的塊在整個資源中的序号,取值範圍為0-1045785

        MoreFlag:表示是否有更多後序包,取值範圍為[0|1]  

        Size:表示分塊的大小,取值為2**[4-11],可取值為16,32,64,128,256,512,1024,2048 

-size2 | -size1

值類型:無符号整型

說明:

表示整個資源的大小,取值範圍為0-2**32,即無符号整型

-proxyuri   

值類型:字元串URI

說明:

-proxyscheme