国内综合精彩aⅤ无码不卡_日本少妇做爰全过程_欧美性爱在线播放免费_午夜?V日韩一区二区_免费a级毛片无码免费播放_成在人线av无码喷水_亚洲精品网站色视频_国产婷婷精品成人_老师撩起裙子让我桶的视频_秋霞影院国产

貝殼物聯(lián)平臺通訊協(xié)議

貝殼物聯(lián)平臺通訊協(xié)議TCP、UDP、HTTP、Websocket說明,設備登錄服務器,收發(fā)命令,發(fā)送實時數(shù)據(jù),上傳圖片等協(xié)議。

目錄

一、概述

二、通訊地址

三、通訊數(shù)據(jù)格式

四、命令列表

1、設備登錄 2、發(fā)送實時數(shù)據(jù) 3、用戶和設備上線通知 4、用戶和設備下線通知 5、用戶與設備、設備與設備、用戶與用戶間溝通指令數(shù)據(jù) 6、查詢設備或用戶是否在線 7、查詢當前設備狀態(tài) 8、發(fā)送報警信息 9、查詢服務器時間 10、強制目標設備下線

五、PC端模擬測試

六、用戶相關指令

一、概述

    貝殼物聯(lián)云平臺采用以TCP協(xié)議為主,UDP協(xié)議為輔的形式進行通訊,兩種協(xié)議間信息互通(主要為UDP可以發(fā)送指令給TCP在線設備)。

    在TCP協(xié)議的基礎上,可以直接使用TCP或者websocket建立長連接,定時發(fā)送心跳數(shù)據(jù),保持用戶、設備在線,在線期間與服務器可進行Json字符串格式數(shù)據(jù)進行通訊,也可采用http(s)通訊協(xié)議獲取用戶資源、向設備發(fā)送指令、上傳圖片等。

    以UDP協(xié)議為基礎的通訊,設備可不必保持在線,隨時在需要的時候向服務器發(fā)送指令進行相關操作。

  1. https上傳圖片協(xié)議

  2. UDP通訊協(xié)議

  3. TCP(websocket)長連接協(xié)議,如下。

二、通訊地址

貝殼物聯(lián)通訊框架圖

通訊方式:TCP或websocket

地址:www.placeboworld.cn

TCP端口:8181、8282、8585(ssl加密)

Websocket端口:8383、8484(ssl加密)

8181端口——服務器不主動發(fā)送心跳包,靠客戶端主動發(fā)送心跳包保持在線,心跳間隔以40~50s為佳;

8282端口——服務器主動向客戶端發(fā)送心跳包

{"M":"b"}\n

每40s發(fā)送一次,如果兩次沒有應答(即在80s內(nèi)沒有向服務器發(fā)送有效數(shù)據(jù)),服務將自動與客戶端斷開連接。

8383端口(ws://)——服務器主動向客戶端發(fā)送心跳包

{"M":"ping"}

每30s發(fā)送一次,如果兩次沒有應答(即在60s內(nèi)沒有向服務器發(fā)送有效數(shù)據(jù)),服務將自動與客戶端斷開連接。

8484端口(wss://)——心跳同8383

8585端口(tcp+ssl)——心跳同8181

心跳包格式:任何符合通訊數(shù)據(jù)格式的字符串均可(websocket可不帶\n),如:

{"M":"beat"}\n

三、通訊數(shù)據(jù)格式

Json字符串+換行符
形如:{"M":"beat"}\n
稱之為Json New Line。

四、命令列表

1、設備登錄 (加密

{"M":"checkin","ID":"xx1","K":"xx2"}\n

說明:
M —— 固定(Method)
checkin —— 固定,登錄指令
ID —— 固定
xx1 —— 可變,設備ID,在會員中心查看
K —— 固定(apiKey)
xx2 —— 可變,設備apikey,在會員中心查看
設備登錄后,如果在1分鐘內(nèi)無數(shù)據(jù)傳送,連接將被自動關閉。
若保持設備長期在線,可每隔50秒向服務器發(fā)送一次信息,任何信息均可。

返回結果(登錄信息正確時返回,錯誤無任何返回,如果設備已登錄,也將無任何返回信息,且不會登錄成功):

{"M":"checkinok","ID":"xx1","NAME":"xx2","T":"xx3"}\n

說明:
M —— 固定(Method)
checkinok —— 固定,設備登錄成功指令
ID —— 固定
xx1 —— 可變,設備登錄成功后,用于通訊的唯一ID,其組成為字符“D"+設備ID,如D24

NAME —— 固定
xx2 —— 可變,該設備的名稱
T —— 固定(time)
xx3 —— 可變,服務器發(fā)送信息時的時間戳,自從 Unix 紀元(格林威治時間 1970 年 1 月 1 日 00:00:00)到當前時間的秒數(shù)。

2、發(fā)送實時數(shù)據(jù)

{"M":"update","ID":"xx1","V":{"id1":"value1",...}}\n

說明:此命令無返回信息,兩次發(fā)送間隔不得小于5s,發(fā)送數(shù)據(jù)前應確保該設備已登錄在線。

M —— 固定(Method)
update —— 固定,實時更新數(shù)據(jù)指令(可用 u 代替 update,減小命令長度)
ID —— 固定
xx1 —— 可變,設備ID,在會員中心查看
V —— 固定(Value)
    id1 —— 可變,數(shù)據(jù)接口ID,在會員中心查看
    value1 —— 可變(數(shù)值型),本地數(shù)據(jù)(譬如:傳感器測量數(shù)據(jù))
    ... —— 可以更新該設備下多個數(shù)據(jù)接口的數(shù)據(jù)

示例

一次上傳單個接口數(shù)據(jù)示例:

{"M":"update","ID":"2","V":{"2":"120"}}\n

同時上傳多個接口數(shù)據(jù)示例:

{"M":"update","ID":"112","V":{"6":"1","36":"116"}}\n

實時上傳定位接口數(shù)據(jù)示例:

{"M":"update","ID":"112","V":{"36":"116,40"}}\n

其中116為經(jīng)度值,40是為維度值,詳見:定位數(shù)據(jù)上傳說明。

3、用戶和設備上線通知數(shù)據(jù)

{"M":"login","ID":"xx1","NAME":"xx2","T":"xx3"}\n

說明:用戶和設備登錄成功后,貝殼服務器會向所屬用戶,及該用戶名下所有其他設備發(fā)此信息

M —— 固定(Method)
login —— 固定,用戶或設備登錄成功指令
ID —— 固定
xx1 —— 可變,用戶登錄成功后,用于通訊的唯一ID,其組成為字符“U"+用戶ID,如U23
NAME —— 固定
xx2 —— 可變,用戶的名稱
T —— 固定(time)
xx3 —— 可變,服務器發(fā)送信息時的時間戳,自從 Unix 紀元(格林威治時間 1970 年 1 月 1 日 00:00:00)到當前時間的秒數(shù)。

4、用戶或設備下線通知數(shù)據(jù)

{"M":"logout","ID":"xx1","NAME":"xx2","T":"xx3"}\n

說明:設備和用戶離線后,貝殼服務器會向所屬用戶,及該用戶名下其他所有設備發(fā)此信息

M —— 固定(Method)

logout —— 固定,用戶或設備下線指令

ID —— 固定

xx1 —— 可變,下線設備或用戶的唯一通訊ID,其組成為字符"D"+設備ID、"U"+用戶ID、"P"+游客ID,如D24、U23

NAME —— 固定

xx2 —— 可變,下線設備或用戶的名稱

T —— 固定(time)
xx3 —— 可變,服務器發(fā)送信息時的時間戳,自從 Unix 紀元(格林威治時間 1970 年 1 月 1 日 00:00:00)到當前時間的秒數(shù)

5、用戶與設備、設備與設備、用戶與用戶間溝通指令數(shù)據(jù)

發(fā)送指令格式:

{"M":"say","ID":"xx1","C":"xx2","SIGN":"xx3"}\n

提醒:此命令發(fā)送目標不受限制,無論目標是否屬于自己,無論是用戶、游客還是設備,只要對方在線都將收到此指令(設置為不公開監(jiān)聽的除外)。

M —— 固定(Method)
say —— 固定,溝通指令(可用 s 代替 say,減小命令長度)
ID —— 固定

xx1 —— 可變,發(fā)送目標的唯一通訊ID,其組成為字符"D"+設備ID、"U"+用戶ID、"G"+群組ID、"P"+游客ID,如D24、U23,當xx1為“ALL”時,將向該用戶及其名下所有設備發(fā)送該消息

              xx1也可以是多個通訊ID組成的數(shù)組,用于同時向多個設備發(fā)送信息,此時的寫法為 "ID":["U2","D112","D21","G11"] ,方括號及其內(nèi)容替代"xx1"

              注:當發(fā)送目標是群組時,只有當前登錄設備或用戶屬于目標群組,才能發(fā)送成功。

C —— 固定(content)

xx2 —— 可變(數(shù)據(jù)類型自定,符合Json字符串要求即可),發(fā)送指令內(nèi)容

SIGN —— 固定(可選)

xx3 —— 可變(可選),自定義字符串,可用于對指令的簽名標識

對方接收到的指令格式:

{"M":"say","ID":"xx1","NAME":"xx2","C":"xx3","SIGN":"xx4","T":"xx5","G":"xx6"}\n

提醒:此指令不管設備公開還是隱藏都將收到,可能來自游客、其他用戶或其他用戶的設備,重要操作請對指令來源ID進行判斷。設備設置為不公開監(jiān)聽,可拒絕接收非同一用戶名下設備發(fā)來的消息(當信息來自群組消息時,不受此限制)。

M —— 固定(Method)

say —— 固定,溝通指令

ID —— 固定

xx1 —— 可變,指令來源的唯一通訊ID,其組成為字符"D"+設備ID、"U"+用戶ID、"P"+游客ID,如D24、U23

NAME —— 固定

xx2 —— 可變,指令來源的名稱

C —— 固定(content)

xx3 —— 可變(數(shù)據(jù)類型自定,符合Json字符穿要求即可),發(fā)送指令內(nèi)容

SIGN —— 固定(可選)

xx4 —— 可變(可選),來自指令發(fā)送方的簽名標識

T —— 固定(time)
xx5 —— 可變,服務器發(fā)送信息時的時間戳,自從 Unix 紀元(格林威治時間 1970 年 1 月 1 日 00:00:00)到當前時間的秒數(shù)

G —— 固定(可選),當信息來自群組時,會有此項,可用此項判斷信息是否來自群組。

xx6 —— 可變,群組ID,形如"G20"

6、查詢設備或用戶是否在線

{"M":"isOL","ID":["xx1",...]}\n

說明:可以查詢設備自身和其他設備及用戶在線狀態(tài),兩次查詢間隔不得小于10s,此命令使用前需登錄。

M —— 固定(Method)

isOL —— 固定,是否在線查詢指令

ID —— 固定

    xx1 —— 可變,目標設備或用戶的唯一通訊ID,其組成為字符"D"+設備ID、"U"+用戶ID、"P"+游客ID,如D24、U23

    ... —— 可以同時查詢多個目標

返回結果:

{"M":"isOL","R":{"XX1":"xx1",...},"T"":"xx3"}\n

M —— 固定(Method)

isOL —— 固定,是否在線查詢指令

R —— 固定(Respone)

    XX1 —— 可變,查詢目標設備或用戶的唯一通訊ID,其組成為字符"D"+設備ID、"U"+用戶ID、"P"+游客ID,如D24、U23

    xx1 —— 可變,XX1的查詢結果0或1,0代表不在線,1代表在線

    ... —— 多個查詢結果

T —— 固定(time)
xx2—— 可變,服務器發(fā)送信息時的時間戳,自從 Unix 紀元(格林威治時間 1970 年 1 月 1 日 00:00:00)到當前時間的秒數(shù)

7、查詢當前設備狀態(tài)

{"M":"status"}\n

說明:(兩次查詢間隔不得小于10s)

M —— 固定(Method)

status —— 固定,查詢當前設備狀態(tài)指令(可用 t 代替 status,減小命令長度)

返回結果:

{"M":"xx1"}\n

M —— 固定(Method)

xx1 —— 可變(connected/checked),當前設備狀態(tài),connected代表已連接服務器尚未登錄,checked代表已連接且登錄成功

8、發(fā)送報警信息

{"M":"alert","ID":"xx1","C":"xx2"}\n

說明:(設備主動發(fā)送報警信息,通過觸發(fā)已在用戶中心設置的報警提示,可通過郵件、微博、釘釘機器人、微信(方糖)、webhook等方式,對外發(fā)送指定提示內(nèi)容。兩次發(fā)送間隔不得小于10min,無返回)

M —— 固定(Method)

alert —— 固定,設備主動發(fā)送報警指令

ID —— 固定

xx1 —— 可變,要觸發(fā)的報警提示ID,可在用戶中心查看或添加。

C —— 固定(Content)

xx1 —— 可變,自定義的報警內(nèi)容。

9、查詢服務器時間

{"M":"time","F":"xx1"}\n

說明:(需在設備登錄后進行查詢,兩次查詢間隔不得小于10s)

M —— 固定(Method)

time —— 固定,查詢服務器時間指令

F —— 固定(Format)

xx1 —— 可變,定義返回格式stamp(返回:1466659300)、Y-m-d(返回:2016-06-21)、Y.m.d(返回:2016.06.21)、Y-m-d H:i:s(返回:2016-06-21 10:25:30)

返回結果

說明:查詢過快或格式錯誤無返回

{"M":"time","T":"xx1"}\n

M —— 固定(Method)

time —— 固定,查詢服務器時間返回指令

T —— 固定(Time)

xx1 —— 可變,根據(jù)查詢格式返回服務器的時間

10、強制目標設備下線

{"M":"checkout","ID":"xx1","K":"xx2"}\n

說明:發(fā)送此命令無需登錄,只需與服務建立連接即可。用于清除設備在極端情況掉線(斷電、斷網(wǎng)等)后,有一分多鐘在線滯留,在這段時間內(nèi)無法checkin成功,如果無法接受一分鐘等待,可使用此命令消除滯留,消除后即可登錄。也可用于在其他地方強制目標設備下線。

M —— 固定(Method)

checkout —— 固定,強制目標設備下線指令

ID —— 固定
xx1 —— 可變,設備ID,在會員中心查看
K —— 固定(apiKey)
xx2 —— 可變,設備apikey,在會員中心查看

發(fā)送命令端返回結果

說明:發(fā)送頻率過快或apikey錯誤無返回,目標設備不在線無返回。

{"M":"checkout","ID":"xx1","T":"xx2"}\n

M —— 固定(Method)

checkout —— 固定,強制目標設備下線成功返回指令

ID —— 固定
xx1 —— 可變,成功下線設備ID,可在會員中心查看

T —— 固定(time)
xx2—— 可變,服務器發(fā)送信息時的時間戳,自從 Unix 紀元(格林威治時間 1970 年 1 月 1 日 00:00:00)到當前時間的秒數(shù)

被強制下線設備在下線前收到信息

{"M":"checkout","IP":"xx1","T":"xx2"}\n

說明:可根據(jù)此命令判斷是否人為強制下線,從而決定是否需要繼續(xù)自動重連、登錄。

M —— 固定(Method)

checkout —— 固定,強制目標設備下線成功返回指令

IP —— 固定
xx1 —— 可變,發(fā)送強制命令設備IP地址

T —— 固定(time)
xx2—— 可變,服務器發(fā)送信息時的時間戳,自從 Unix 紀元(格林威治時間 1970 年 1 月 1 日 00:00:00)到當前時間的秒數(shù)

五、PC端模擬測試

PC模擬測試TCP長連接教程見:《貝殼物聯(lián)通訊協(xié)議TCP連接測試教程

Windows測試工具見:http://www.placeboworld.cn/talk/1140.html

六、用戶相關指令

用戶相關指令另起一章說明,詳見:《貝殼物聯(lián)用戶通訊協(xié)議


上一篇:沒有了
下一篇:遠程控制通訊——基于Arduino + ESP8266控制LED燈并返回控制結果
返回頂部