學習筆記--MQTT協議接入Onenet伺服器(C#)
一.使用.NET 開源庫
我們使用MQTTnet建立我們的MQTT通訊, 版本一直更新請下載最新版
二.Fixed header型別
名字 | 值 | 流向 | 描述 |
CONNECT | 1 | C->S | 客戶端請求與服務端建立連線 |
CONNACK | 2 | S->C | 服務端確認連線建立 |
PUBLISH | 3 | CóS | 釋出訊息 |
PUBACK | 4 | CóS | 收到釋出訊息確認 |
SUBSCRIBE | 8 | C->S | 訂閱請求 |
SUBACK | 9 | S->C | 訂閱確認 |
UNSUBSCRIBE | 10 | C->S | 取消訂閱 |
UNSUBACK | 11 | S->C | 取消訂閱確認 |
三.CONNECT報文連線
欄位設定 | 訊息示例 |
client_id設定為平臺建立裝置時的裝置id username設定為“專案ID” password設定為“鑑權資訊(auth_info)” | client_id=”123” username=”433223” password=”註冊的鑑權資訊” |
我們就要按照上表向平臺提交我們的CONNECT報文:
引數已經修改非我真確的ID和PASSWORD
var options = new MqttClientTcpOptions { //ProductID: 1199 userID: 83248 API-KEY: 5aldNFKeIjkmpS4XweG9=LI= //DeviceID: 259262 autn-info: pub12345 Server = "183.230.40.39", Port = 6002, ClientId = "259262", //deviceID UserName = "1199", //ProductId Password = "5aldNFKeIjkmpS4XwmeG9=LI=",//API-KEY or auth-info KeepAlivePeriod = ts2, CleanSession = true };
除此之外我們還想要客戶端和Onenet平臺保持長連線, 否則接上就斷開連線我們就無法實現我們的功能. 我們只需要設定KeepAlive引數就好了.
平臺文件中給出: 每個客戶端可自定義設定連線保持時間,最短120秒,最長65535秒。
KeepAlivePeriod = ts2,
ts2為一個TimeSpan物件, 大家自己設定就OK啦.
四.publish報文上傳資料
參考官方文件:
PS: 官方文件一小時 > 百度+維基+csdn+github+....好多天
資料型別1格式說明:
Byte 1 | 資料點型別值:1 //1: json格式1字串 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
Byte 2 | //指示後面json字串長度 固定兩位元組長度高位位元組,值為0x00 | ||||||||
Byte 3 | 固定兩位元組長度低位位元組,值為0x41 | ||||||||
Byte 4 | { “datastreams”:[// 可以同時傳遞多個數據流 { “id”:”temperature”, “datapoints”:[ { ”at”:”2013-04-22 22:22:22”,//可選 ”value”: 36.5//使用者自定義 } ] }, { “id”:”location” “datapoints”:[…] }, { … } ] } | ||||||||
… … … … … … … … … … | |||||||||
Byte n |
資料型別7(type == 7)格式說明:(每次最多500個數據流的浮點數)
Byte 1 | Bit0-5資料型別指示:type=7 //可離散浮點數資料流 Bit6:保留,置0 Bit7: 時間指示位,1,攜帶6位元組時間 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
Byte 2 | 年(後兩位),例如2016年,則該位元組為16 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
Byte 3 | 月(1-12) | ||||||||
Byte 4 | 日(1-31) | ||||||||
Byte 5 | 小時(0~23) | ||||||||
Byte 6 | 分鐘(0~59) | ||||||||
Byte7 | 秒(0~59) | ||||||||
Byte 8 | //資料流名稱(取值範圍1-65535) 高位位元組,值為0x00 | ||||||||
Byte 9 | 低位位元組,值為0x01 | ||||||||
Byte10 | //資料流個數(取值範圍1-500) 高位位元組,值為0x00 | ||||||||
Byte11 | 低位位元組,值為0x01 | ||||||||
Byte 10 | 4位元組float型別,低位在前,高位在後 | ||||||||
Byte 11 | |||||||||
Byte 12 | |||||||||
Byte 13 | |||||||||
... | |||||||||
Byte n | //資料流名稱(取值範圍1-65535) 高位位元組,值為0x24 | ||||||||
Byte n+1 | 低位位元組,值為0x37 | ||||||||
Byte n+2 | //資料流個數(取值範圍1-500) 高位位元組,值為0x01 | ||||||||
Byte n+3 | 低位位元組,值為0x00 | ||||||||
Byte n+2 | 4位元組float型別,低位在前,高位在後 | ||||||||
Byte n+4 | |||||||||
Byte n+5 | |||||||||
Byte n+6 |
將資料釋出到$dp系統Topic上
資料傳送格式
e.g.
{
"datastreams":[
{
"id":"Tempreture",
"datapoints":[
"value":36
]
}
]
}
執行效果:(傳送結束會自動斷開與伺服器的連線)
五.訂閱單裝置資料流
訂閱方式: 可以通過訂閱 /device_id/資料流名 的方式,及時獲取到某裝置最新的資料點資訊
PS: 注意反斜槓的方向
執行截圖:
六.執行結果
TIPS: 如果同時登陸兩個裝置是會被擠下線的哦.
登陸效果:
訂閱:
釋出:
相關推薦
學習筆記--MQTT協議接入Onenet伺服器(C#)
一.使用.NET 開源庫我們使用MQTTnet建立我們的MQTT通訊, 版本一直更新請下載最新版二.Fixed header型別名字 值 流向 描述 CONNECT 1 C->S 客戶端請求與服務端建立連線 CONNACK 2 S->C 服務端確
MQTT學習筆記——MQTT協議體驗 Mosquitto安裝和使用
0 前言 MQTT是IBM開發的一個即時通訊協議。MQTT是面向M2M和物聯網的連線協議,採用輕量級釋出和訂閱訊息傳輸機制。Mosquitto是一款實現了 MQTT v3.1 協議的開源訊息代理軟體,提供輕量級的,支援釋出/訂閱的的訊息推送模式,使裝置對裝置之間的短訊息
OneNET MQTT協議的簡單使用以及NBIOT晶片MT2625使用MQTT協議接入OneNET
一、OneNET MQTT協議的簡單使用 1、OneNET介紹 我們直接從OneNET的官網截圖: 2、建立產品和新增裝置 (1)在建立產品前,首先得有一個OneNET賬號,到OneNET註冊一個就行,註冊步驟很簡單,相信看到這篇文章的讀者都已經有了One
ROS學習筆記7-編寫簡單的伺服器和客戶端 (C++)
1 前提在/catkin_ws/src/beginner_tutorials/srv 目錄下建立好AddTwoInts.srv 1 int64 a 2 int64 b 3 --- 4 int64 sum 2 編寫server節點[~/catkin_ws/src/
Halcon學習筆記(2) VS2010 + Halcon12 C#鏈接相機
operator debug ets generic code locate != 目錄 empty 1.打開Halcon, 使用圖像采集助手獲取相機實時圖像: 1.1 獲取實時圖像: 1.2 插入采集實時圖像的Halcon代碼,並導出:
學習筆記:設計模式之抽象工廠(C#)
sta 實體 mys actor div ted rac int c# 1.創建抽象工廠類 public abstract class AbstractFactory { public abstract Connect CreatConne
ReactiveX 學習筆記(24)使用 RxCpp + C++ REST SDK 調用 REST API
x86-64 from space ces 測試 git clone delete let ann JSON : Placeholder JSON : Placeholder (https://jsonplaceholder.typicode.com/) 是一個用於測試的
學習:MQTT協議及原理
1 MQTT協議實現方式: 實現MQTT協議需要客戶端和伺服器端通訊完成,在通訊過程中,MQTT協議中有三種身份:釋出者(Publish)、代理(Broker)(伺服器)、訂閱者(Subscribe)。其中,訊息的釋出者和訂閱者都是客戶端,訊息代理是伺服器,訊息釋出者可以同時是訂閱者。
資料結構學習筆記------紅黑樹(附c++程式碼)
1、紅黑樹簡介 紅黑樹是二叉查詢樹的一種,其增刪改查的統計效能要優於AVL樹,查詢、插入、刪除演算法的複雜度都為O(log(n))。先附上紅黑樹這種資料結構的性質: 性質1、節點是紅色或黑色。 性質2、根節點是黑色。 性質3、每個葉節點(是指的空節點,nil節點)是黑色的。 性質4、
web前端學習(二)html學習筆記部分(8)--伺服器推送事件3
1.2.22 html5伺服器推送事件 1.2.22.1 html5伺服器推送事件介紹 伺服器推送事件(Server-sent Events)是HTML5規範中的一個組成部分,可以用來從伺服器端實時推送資料到瀏覽器端。 傳統的伺服器端推送資料技術:Websocket:We
MongoDB學習筆記(三)--MongoDB的C#驅動的基本使用
官方C#驅動:https://github.com/mongodb/mongo-csharp-driver/releases 在使用C#驅動時,要在專案中新增”MongoDB.Bson.dll”和”MongoDB.Driver.dll”的引用。同時要在程式碼中
資料結構學習筆記-線性表順序儲存(C語言實現)
寫了一天,終於將線性表的順序儲存實現了,順便惡補了一下指標內容。順序儲存,適合做查詢,鏈式儲存適合做增刪。新增方法主要就是將線性表從後往前遍歷,依次往後挪一位,直到空出想要插入的位置,刪除方法就是將線性表從要刪除的地方往後遍歷,依次往前挪一位。#include <std
Unity學習筆記007.Unity接入原生Android百度AR地圖
大概操作步驟按筆記006執行。 1.背景 環境: OS:Windows10 Android Studio3.2 Unity 2018.1.2f1 思路 Unity端:主調方,UI Android端:底層介面,打包aar方式 2.步驟 2.1 Android S
《組合語言程式設計》學習筆記(3)三、C與組合語言
3.1 80x86彙編與C語言-1 3.1.1 80x86彙編與C語言-1 - 彙編程式設計師眼中的系統結構 彙編程式設計師眼中的系統結構 如何從C程式碼生成彙編程式碼 gcc -O2 -S code.c -m32 -fno-omit-frame
TCP/IP詳解學習筆記——IP協議
一 概述 IP協議是TCP/IP協議簇中最核心的協議,所有的TCP、UDP、ICMP以及IGMP資料都以IP資料報格式傳輸。IP協議提供不可靠、無連線的資料傳輸服務。不可靠的意思是它不能保證IP資料報能成功到達目的地。IP僅僅提供最好的傳輸服務。意思就是,我盡我所能傳輸資料
學習筆記:windows下,用c語言來建立執行緒
#include <stdio.h>#include <windows.h> typedef void * HANDLE;#define SEMAPHORE HANDLE#define THREADHANDLE HANDLE#define THREAD
iOS學習筆記56(Runtime)-Objective-C Runtime 執行時之三:方法與訊息
前面我們討論了Runtime中對類和物件的處理,及對成員變數與屬性的處理。這一章,我們就要開始討論Runtime中最有意思的一部分:訊息處理機制。我們將詳細討論訊息的傳送及訊息的轉發。不過在討論訊息之前,我們先來了解一下與方法相關的一些內容。 基礎資料型別 SEL
h5學習筆記:vue 路由部署伺服器子目錄問題
《Egret 引擎入門》 這兩天一直在查詢vue經過打包後部署伺服器一直顯示不出來的問題。前端沒有報錯,資源載入也很正常。找了很多回答,最後定位在vue的訪問路由出了問題。 出現的現象 前端vuejs+vue-router+webpack的組合,打包是由w
BT協議學習筆記3--協議擴充套件
前段時間參考我在上一篇部落格裡面的內容,將BT協議的主要內容看了一看。 主要有: 一、Bencode and Metadata File Structure 二、Tracker HTTP Protocol/THP 三、Peer Wire Protocol/PWP 四、Alg
Java6學習筆記64——UDP客戶端/伺服器端
客戶端: import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import