什么是MQTT?
MQTT(消息隊(duì)列遙測(cè)傳輸)是一種輕量級(jí)消息傳遞協(xié)議,非常適合物聯(lián)網(wǎng)連接設(shè)備的通信。
MQTT有三個(gè)組件:代理,發(fā)布者和訂閱者。一個(gè)受歡迎的在線經(jīng)紀(jì)人是Mosquitto。代理是一個(gè)中間實(shí)體,負(fù)責(zé)處理設(shè)備之間的通信。發(fā)布者是發(fā)送消息的設(shè)備。訂閱者監(jiān)聽(tīng)發(fā)布者發(fā)送的消息。
MQTT中還有一個(gè)重要的事情,那就是主題。不同設(shè)備之間的通信需要一個(gè)主題。例如,設(shè)備A想要向設(shè)備B發(fā)送消息。為此,兩者之間應(yīng)該存在共同點(diǎn),這就是主題。可以把它想象成一個(gè)電話號(hào)碼。
CloudMQTT
CloudMQTT是一種提供免費(fèi)MQTT通信的代理服務(wù)對(duì)于一定數(shù)量的設(shè)備。
設(shè)置MQTT
創(chuàng)建帳戶(hù)
轉(zhuǎn)到右上角的控制面板
點(diǎn)擊“創(chuàng)建”按鈕
在“名稱(chēng)”字段中輸入CMQTT
開(kāi)同一頁(yè)面,在管理用戶(hù)中添加用戶(hù):
名稱(chēng):pi
密碼:pi
點(diǎn)擊“保存”
再次在同一頁(yè)面上,添加:
用戶(hù):pi
主題:pi
點(diǎn)擊“保存”
現(xiàn)在,在頂部欄中,點(diǎn)擊“WebSocket UI”
您將看到一個(gè)頁(yè)面所有傳感器數(shù)據(jù)將顯示在哪里
將下面的代碼上傳到Arduino
下面的代碼是一個(gè)帶有虛擬字符串的示例代碼傳感器的位置。您可以使用來(lái)自傳感器的值替換字符串。
String randSensorsData=“”;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(A0,INPUT);//temperature sensor
pinMode(A1,INPUT);//windspeed sensor
pinMode(A2,INPUT);//wind direction sensor
pinMode(A3,INPUT);//rain fall sensor
pinMode(A4,INPUT);///barometric pressure sensor
}
void loop() {
// put your main code here, to run repeatedly:
sensorsData=String(“-”)+String(“S1=”)+String(analogRead(A0))+String(“,”)+String(“S2=”)+String(analogRead(A1))+String(“,”)+String(“S3=”)+String(analogRead(A2))+String(“,”)+String(“S4=”)+String(analogRead(A3))+String(“,”)+String(“S5=”)+String(analogRead(A4))+String(“+”);
randSensorsData=String(“-”)+String(“S1=”)+String(random(100))+String(“,”)+String(“S2=”)+String(random(200))+String(“,”)+String(“S3=”)+String(random(125))+String(“,”)+String(“S4=”)+String(random(500))+String(“,”)+String(“S5=”)+String(random(50))+String(“+”);
Serial.println(sensorsData);
Serial.println(randSensorsData);
delay(200);
}
此代碼使用Arduino的模擬引腳從傳感器獲取值,并傳遞給Raspberry Pi進(jìn)行處理和MQTT通信。上面的代碼使用隨機(jī)函數(shù)生成隨機(jī)值來(lái)模擬模擬引腳。
傳感器應(yīng)連接到A0,A1,A2,A3,A4引腳
Serial.println(randSensorsData);
此行發(fā)送隨機(jī)數(shù)據(jù)以檢查服務(wù)器
您還可以檢查WebSocket中顯示的隨機(jī)數(shù)據(jù)UI
打開(kāi)python 2.7并在其中編寫(xiě)以下代碼:
import paho.mqtt.client as mqtt
import time
data=”Hello from Raspberry Pi!”
while True:
print(data)
try:
client=mqtt.Client()
client.username_pw_set(“hgztvlwh”,“qDz_-oAWSfBR”)#replace with your user name and password
client.connect(“m13.cloudmqtt.com”,13017,60)
client.publish(“pi”,data)#pi is topic
time.sleep(1)
except KeyboardInterrupt:
print(“end”)
client.disconnect()
現(xiàn)在使用python 2.7運(yùn)行代碼
您會(huì)看到傳感器數(shù)據(jù)每秒都會(huì)在CloudMQTT的WebScoket UI中顯示。
在這里,您將看到從Raspberry Pi發(fā)送的數(shù)據(jù)。
-
IOT
+關(guān)注
關(guān)注
187文章
4229瀏覽量
197300 -
樹(shù)莓派
+關(guān)注
關(guān)注
117文章
1710瀏覽量
105795 -
MQTT
+關(guān)注
關(guān)注
5文章
653瀏覽量
22615
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論