怎样用MQTT连接树莓派IoT设备

电子说

1.3w人已加入

描述

什么是MQTT?

MQTT(消息队列遥测传输)是一种轻量级消息传递协议,非常适合物联网连接设备的通信。

MQTT有三个组件:代理,发布者和订阅者。一个受欢迎的在线经纪人是Mosquitto。代理是一个中间实体,负责处理设备之间的通信。发布者是发送消息的设备。订阅者监听发布者发送的消息。

MQTT中还有一个重要的事情,那就是主题。不同设备之间的通信需要一个主题。例如,设备A想要向设备B发送消息。为此,两者之间应该存在共同点,这就是主题。可以把它想象成一个电话号码。

CloudMQTT

CloudMQTT是一种提供免费MQTT通信的代理服务对于一定数量的设备。

设置MQTT

创建帐户

转到右上角的控制面板

点击“创建”按钮

在“名称”字段中输入CMQTT

开同一页面,在管理用户中添加用户:

名称:pi

密码:pi

点击“保存”

再次在同一页面上,添加:

用户:pi

主题:pi

点击“保存”

现在,在顶部栏中,点击“WebSocket UI”

您将看到一个页面所有传感器数据将显示在哪里

将下面的代码上传到Arduino

下面的代码是一个带有虚拟字符串的示例代码传感器的位置。您可以使用来自传感器的值替换字符串。

String sensorsData=“”;

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进行处理和MQTT通信。上面的代码使用随机函数生成随机值来模拟模拟引脚。

传感器应连接到A0,A1,A2,A3,A4引脚

Serial.println(randSensorsData);

此行发送随机数据以检查服务器

您还可以检查WebSocket中显示的随机数据UI

打开python 2.7并在其中编写以下代码:

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()

现在使用python 2.7运行代码

您会看到传感器数据每秒都会在CloudMQTT的WebScoket UI中显示。

在这里,您将看到从Raspberry Pi发送的数据。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分