導航:首頁 > 配伺服器 > mqtt協議傳數據到雲伺服器

mqtt協議傳數據到雲伺服器

發布時間:2022-08-26 05:03:35

① 怎麼將消息發送到mqtt代理伺服器

通過Cocoa Pods添加MQTTKit

MQTTKit在github上鏈接https://github.com/NormanLeeIOS/MQTTKit#send-a-message,down下來。

cd到工程目錄,輸入pod install,用xcode打開工程的打開xcworkspace擴展名的文件。

如果不是MQTTKit存在更新的版本,則輸入pod update。

新建一個MQTT的服務請求

NSString *clientID = ...
MQTTClient *client = [[MQTTClient alloc] initWithClientId:clientID];

發送消息,每次發送消息包括目標host和本地MQTT消息.具體MQTT格式消息見代碼。這里Host可以是Server的IP,不需要host表解析。

// connect to the MQTT server
[self.client connectToHost:@"iot.eclipse.org"
completionHandler:^(NSUInteger code) {
if (code == ConnectionAccepted) {
// when the client is connected, send a MQTT message
[self.client publishString:@"Hello, MQTT"
toTopic:@"/MQTTKit/example"
withQos:AtMostOnce
retain:NO
completionHandler:^(int mid) {
NSLog(@"message has been delivered");
}];
}
}];

訂閱主題並接受MQTT格式的消息,這部分在viewdidload中實現。

// define the handler that will be called when MQTT messages are received by the client
[self.client setMessageHandler:^(MQTTMessage *message) {
NSString *text = [message.payloadString];
NSLog(@"received message %@", text);
}];

// connect the MQTT client
[self.client connectToHost:@"iot.eclipse.org"
completionHandler:^(MQTTConnectionReturnCode code) {
if (code == ConnectionAccepted) {
// when the client is connected, subscribe to the topic to receive message.
[self.client subscribe:@"/MQTTKit/example"
withCompletionHandler:nil];
}
}];

斷開連接

[self.client :^(NSUInteger code) {
// The client is disconnected when this completion handler is called
NSLog(@"MQTT client is disconnected");
}];

整個連接建立、發送消息、接受消息、斷開連接都是通過Block的消息機制來實現,因此需要對block有很好地理解。

java 實現串口接收到數據,立馬將接收到的數據通過mqtt上傳到阿里雲。

也不是特別麻煩,你先要清楚串口和伺服器用的什麼協議,假設串口用232,伺服器採用TCP,那麼你需要做的是建立一個客戶端的發送模塊,和一個串口的操作模塊(結合必須要用到多線程,以隊列或者委託來做數據交換);在測試之前一定要保證串口和客戶端發送接收是ok的才能做結合功能。
因為你串口已經做好了,那你需要的是將採集到的數據(字元串)保存到數組中,然後創建一個指向數組的指針p,然後在客戶端模塊里,將發送的數據寫成&p。建議先將數據轉16進制發,應該沒毛病。

③ mqtt 怎麼實現android以後台service的方式獲取gps數據,並定時發送到伺服器

1 從Service繼承一個類。
2 創建startService()方法。
3 創建endService()方法 重載onCreate方法和onDestroy方法,並在這兩個方法裡面來調用startService以及endService。
4 在startService中,通過getSystemService方法獲取Context.LOCATION_SERVICE。
5 基於LocationListener實現一個新類。默認將重載四個方法onLocationChanged、onProviderDisabled、onProviderEnabled、onStatusChanged。對於onLocationChanged方法是我們更新最新的GPS數據的方法。一般我們的操作都只需要在這里進行處理。
6 調用LocationManager的requestLocationUpdates方法,來定期觸發獲取GPS數據即可。在onLocationChanged函數裡面可以實現我們對得到的經緯度的最終操作。
7 最後在我們的Activity裡面通過按鈕來啟動Service,停止Service。
示意代碼如下:
package com.offbye.gpsservice;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log;
public class GPSService extends Service {
// 2000ms
private static final long minTime = 2000;
// 最小變更距離10m
private static final float minDistance = 10;
String tag = this.toString();
private LocationManager locationManager;
private LocationListener locationListener;
private final IBinder mBinder = new GPSServiceBinder();
public void startService() {
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationListener = new GPSServiceListener();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, minTime, minDistance,
locationListener);
}
public void endService() {
if (locationManager != null && locationListener != null) {
locationManager.removeUpdates(locationListener);
}
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return mBinder;
}

④ 第三方軟體使用的MQTT協議,能向雲端伺服器要數據嗎如果可以該怎麼做

可以的
MQTT協議是為大量計算能力有限,且工作在低帶寬、不可靠的網路的遠程感測器和控制設備通訊而設計的協議,國內很多企業都廣泛使用MQTT作為Android手機客戶端與伺服器端推送消息的協議.

⑤ 在雲伺服器上搭建了mqtt,為什麼手機連接不上mqtt,要怎麼做才能連接上求求大神幫忙

MQTT協議是廣泛應用的物聯網協議,使用測試MQTT協議需要MQTT的代理。有兩種方法使用MQTT服務,一是租用現成的MQTT伺服器,如阿里雲,網路雲,華為雲等公用的雲平台提供的MQTT服務,使用公用的MQTT伺服器的好處是省事,但如果僅僅用於測試學習還需要注冊帳號,靈活性差些,有的平台還需要付費。另一方法是自己使用開源的MQTT組件來搭建。
MQTT伺服器非常多,如apache的ActiveMQ,emtqqd,HiveMQ,Emitter,Mosquitto,Moquette等等。
這里介紹的是用輕量級的mosquitto開源項目來搭建一個屬於自己的MQTT伺服器。
第一步:需要安裝一台linux主機,這不多介紹,可以使用真機安裝也可以使用虛擬機安裝。如果僅僅是自己測試使用都可以。
第二步:下載mosquitto需要的依賴
sudo apt-get install libssl-devsudo apt-get install uuid-devsudo apt-get install cmake

第三步:下載mosquitto並解壓,現在mosquitto官網最新的版本是1.5.1
tar xzvf mosquitto-1.5.1.tar.gz
第四步:編譯
cd mosquitto-1.5.1/
make
make install
第五步:啟動mosquitto
./mosquitto -v
1535473957: mosquitto version 1.5.1 starting
1535473957: Using default config.
1535473957: Opening ipv4 listen socket on port 1883.
1535473957: Opening ipv6 listen socket on port 1883.
這時候mosquitto就會以默認的參數啟動。如果需要帶配置文件可以修改配置文件mosquitto.conf,
啟動時候加上參數 -c,
./mosquitto -c mosquitto.conf
可以看到,mosquitto監聽的埠為1883.
這時候我們的MQTT伺服器就搭建好了。可找一個mqtt客戶端來測試一下。
先發布一個主題「home/garden/fountain/2」
內容是「hello world」
這時候在mosquitto會列印出下面的log
535474247: New connection from 192.168.1.105 on port 1883.
1535474247: New client connected from 192.168.1.105 as MQTT_FX_Client (c1, k60).
1535474247: No will message specified.
1535474247: Sending CONNACK to MQTT_FX_Client (0, 0)
1535474307: Received PINGREQ from MQTT_FX_Client
1535474307: Sending PINGRESP to MQTT_FX_Client
1535474339: Received PUBLISH from MQTT_FX_Client (d0, q0, r0, m0, 'home/garden/fountain/2', ... (12 bytes))
1535474367: Received PINGREQ from MQTT_FX_Client
1535474367: Sending PINGRESP to MQTT_FX_Client

訂閱主題「home/garden/fountain/2」

可以看到收到了自己發布的消息。
用wireshark抓包
可以看到抓到了一個MQTT的publish的報文。

⑥ 如何使用 NB-Iot + Arino 通過MQTT協議上傳數據至阿里雲平台

有很多通信模塊只有TCP功能,沒有MQTT功能,比如WIFI,W5500等模塊,還有一些NBIOT模塊,但是又想連接阿里雲物聯網平台,官方提供了操作系統,需要自己移植,很麻煩,比較難看得懂。就在想有沒有一些簡單一定的方法。
心想MQTT是基於TCP的,能否使用TCP轉MQTT?因此就想使用TCP協議然後轉MQTT協議連接阿里雲物聯網平台,經過試驗證明是可以的。

首先我們先分析一下如何登陸接入Onenet平台。

先從它數據格式開始分析。首先我們要從後台取出三個信息,我們以這個為例。

我們把產品ID,設備名稱,設備秘鑰,簡稱三要素 (具體是什麼看你自己的設備)

其實阿里雲物聯網平台的MQTT協議用的就是標準的,不過它加入了自己的認證方式。

MQTT協議需要上傳四個參數,報活時間,clientID,用戶名,密碼。

那麼阿里雲的就在clientID,用戶名,密碼做了手腳。

clientID比較長,按照一定的格式

用戶名:設備名和秘鑰組成

密碼:使用了加密串進行了加密,有sha1或者MD5加密方式

下面我們來介紹一下

MQTT接入都是發十六進制的數據。

么我們發送的時候就是這樣子的一串數據

0x74 0x00 0x04 0x4d 0x51 0x54 0x54 0x04 0xC0 0078 0033 0x61 0x62 0x63 0x7c 0x73 0x65 0x63 0x75 0x72 0x65 0x6d 0x6f 0x64 0x65 0x3d 0x33 0x2c 0x73 0x69 0x67

0x6e 0x6d 0x65 0x74 0x68 0x6f 0x64 0x3d 0x68 0x6d 0x61 0x63 0x73 0x68 0x61 0x31 0x2c 0x74 0x69 0x6d 0x65 0x73 0x74 0x61 0x6d 0x70 0x3d 0x31 0x32 0x30 0x7c 0009

0x35 0x36 0x37 0x38 0x26 0x31 0x32 0x33 0x34 0028 0x32 0x32 0x32 0x37 0x35 0x30 0x44 0x45 0x44 0x46 0x45 0x34 0x46 0x37 0x37 0x34 0x30 0x30 0x32 0x45 0x45 0x38 0x37 0x45 0x45 0x44 0x32 0x39 0x43 0x46 0x44 0x30 0x36 0x33 0x38 0x43 0x35 0x46 0x36 0x36

十六進制解釋

數據長度:0x74

協議數據長度 0x00 0x04

協議類型: 0x4d 0x51 0x54 0x54

協議數據: 0x04 0xC0

keepAlive數據:0078

ClientID長度:0033

ClientID: 0x61 0x62 0x63 0x7c 0x73 0x65 0x63 0x75 0x72 0x65 0x6d 0x6f 0x64 0x65 0x3d 0x33 0x2c 0x73 0x69 0x67 0x6e 0x6d 0x65 0x74 0x68 0x6f 0x64 0x3d 0x68 0x6d 0x61 0x63 0x73 0x68 0x61 0x31 0x2c 0x74 0x69 0x6d 0x65 0x73 0x74 0x61 0x6d 0x70 0x3d 0x31 0x32 0x30 0x7c

用戶名:0009

用戶名: 0x35 0x36 0x37 0x38 0x26 0x31 0x32 0x33 0x34

密碼長度:0028

密碼: 0x32 0x32 0x32 0x37 0x35 0x30 0x44 0x45 0x44 0x46 0x45 0x34 0x46 0x37 0x37 0x34 0x30 0x30 0x32 0x45 0x45 0x38 0x37 0x45 0x45 0x44 0x32 0x39 0x43 0x46 0x44 0x30 0x36 0x33 0x38 0x43 0x35 0x46 0x36 0x36復制代碼上面的就是連接伺服器的連接包

下面呢,我們來做個發布包(上傳數據到伺服器)

0x30 0x1D 0009 2f7379732f706f7374 0x7b 0x70 0x61 0x72 0x61 0x6d 0x73 0x3a 0x7b 0x74 0x65 0x6d 0x70 0x3a 0x31 0x30 0x7d 0x7d

十六進制數據解釋

數據頭:0x30

數據長度:0x1D

TopicName數據長度:0009

TopicName數據內容:2f7379732f706f7374

主體json數據: 0x7b 0x70 0x61 0x72 0x61 0x6d 0x73 0x3a 0x7b 0x74 0x65 0x6d 0x70 0x3a 0x31 0x30 0x7d 0x7d復制代碼以上就是連接阿里雲的數據包格式及發布數據的格式,由於時間問題沒有做訂閱的數據包分析,下一次更新訂閱的內容。

⑦ 我的esp8266 想要通過mqtt協議連接華為雲,請問是否需要ca證書,如果需要,我該如何獲取證書

應該不需要,我的阿里雲iot就不需要,直接用給的信息連就可以。你連一下試試

⑧ 設備將數據發送到MQTT伺服器,那伺服器怎麼數據轉發到後台系統

伺服器發給中間kafka kafka轉存到資料庫,可以應對高並發。
也可以直接轉存,比如emq。但是emq的直接連接資料庫是收費的大約5000一年。

⑨ 如何應用MQTT協議到物聯網中

以原生支持「MQTT協議」切入物聯網戰場
原生支持MQTT協議成為網路開放雲推出的物聯網服務一大特點。首先需要解讀的是,為什麼網路開放雲會選擇「MQTT協議」?
網路開放雲支持的MQTT(Message Queuing Telemetry Transport)是國際物聯網標准協議,旨在為低帶寬和不穩定的網路環境中的物聯網設備提供可靠的網路服務,可以適應各種物聯網應用場景。
相對於其它標准協議,MQTT屬於輕量級雙向消息傳輸協議,主要優勢是開源、可靠、輕巧、簡單。MQTT的傳輸格式非常精小,最小的數據包只有2個比特,且無應用消息頭。MQTT可以保證消息的可靠性,它包括三種不同的服務質量(最多隻傳一次、最少被傳一次、一次且只傳一次),如果客戶端意外掉線,可以使用「遺願」發布一條消息,同時支持持久訂閱。
MQTT在物聯網應用中的主要優勢有:一,可靠傳輸。MQTT可以保證消息可靠安全的傳輸,並可以與企業應用簡易集成;二,消息推送。支持消息實時通知、豐富的推送內容、靈活的Pub-Sub以及消息存儲和過濾。三,低帶寬、低耗能、低成本。佔用移動應用程序帶寬小,並且帶寬利用率高,耗電量較少。
MQTT的優勢還表現在安全性。安全設計對於物聯網項目而言,是需要非常重視的問題,但是卻常常容易被工程師所輕視。今年央視315晚會,揭秘了無人機、智能攝像頭、智能POS機、智能汽車、洗衣機、電烤箱、智能插座等智能家居存在的三大安全隱患——泄露隱私、財產損失、甚至危及生命安全。而MQTT協議則可以提供多層次的安全特性,在傳輸層上可以使用TLS加密;在應用層提供了客戶標識(Client Identifier)以及用戶名密碼,不但傳輸的內容是二進制位元組,而且還受惠於傳輸層的TLS加密。
MQTT開放協議已有17年歷史,先期在2014年被國際標准化組織定義為物聯網的推薦協議。在應用層傳輸協議這個領域,它已經走在了其它協議的前面。正因為MQTT的綜合優勢非常突顯,業界不少專家認為,MQTT非常適合各種物聯網場景,有望是未來最主流的物聯網標准協議。

原生支持「MQTT協議」背後旨在推動物聯網標准化
接下來的問題是,那麼為什麼網路開放雲要在國內率先成為原生支持MQTT協議的公有雲服務商?
在筆者看來,首先,這和網路開放雲在物聯網行業的核心目標有著緊密的關系。在去年的「網路世界2015」開放雲論壇上,網路開放雲高層曾對物聯網的發展戰略做出闡述,指出:打破行業與行業之間的界限,以「連接人與服務」為核

⑩ Java項目:mqtt發送的數據如何保存到資料庫里

循環遍歷set的元素,通過java.sql.PreparedStatement的setObject方法將set的元素按順序放入預編譯的參數化SQL中

閱讀全文

與mqtt協議傳數據到雲伺服器相關的資料

熱點內容
加拿大程序員加班嗎 瀏覽:72
xsmax怎麼加密 瀏覽:802
富爸爸與窮爸爸pdf 瀏覽:651
天正怎樣炸開加密圖紙 瀏覽:663
輪胎出氣解壓 瀏覽:430
最好的自己pdf 瀏覽:301
哈弗vv7壓縮機不工作 瀏覽:466
什麼電腦app可以看老友記 瀏覽:742
伺服器如何刪除安裝包 瀏覽:890
編譯器代碼查找鍵 瀏覽:265
音樂劇編譯是啥 瀏覽:200
專家系統pdf 瀏覽:717
編譯使用dos命令 瀏覽:52
我的世界伺服器為什麼有時候總是進不去 瀏覽:68
虹軟演算法工程師 瀏覽:180
程序員失業被帶走 瀏覽:90
萊陽設計圖紙加密價格 瀏覽:680
王者嘗試連接伺服器是什麼意思 瀏覽:396
有雲伺服器可以做穿牆嗎 瀏覽:187
安卓如何徹底刪除瀏覽器 瀏覽:207