在这次测评中要用到MQTT的服务,需要在开发板上创建MQTT服务器,在开发板的终端里输入下面命令搜索mqtt相关的包:
搜索结果如下,其中mosquitto是MQTT的服务。
mosquitto默认已经安装到开发板上了,不过mosquitto-clients没有安装,使用如下命令安装mosquitto-clients。
apt-get install mosquitto-clients
通过下面的命令查看mosquitto服务是否启动
systemctl status mosquitto
从图中可以看到服务已经启用了。
接下来测试一下mosquitto服务。MQTT服务是基于“订阅-发布”机制的,因此先订阅一个主题,这里使用后台运行的方式去订阅一个主题,这样就不需要打开一个新的终端了。订阅命令如下:
mosquitto_sub -h localhost -t "mqtt/manhuami" &
然后使用如下命令向主题”mqtt/manhuami”发布一个消息”hello manhuami”
mosquitto_pub -h localhost -t "mqtt/manhuami" -m "hello manhuami"
在发送之后,就能够在终端收到发送的消息。
也可以尝试局域网内的发送,比如在笔记本电脑上使用MQTTX软件向开发板上的MQTT服务发送消息。
在发送消息之前,需要先设置开发板上的mosquitto服务,使其能够被其它设备访问。使用vi打开文件
vi /etc/mosquitto/mosquitto.conf
在第234行修改为
在第532行,修改为
修改之后重启mosquitto服务
systemctl restart mosquitto
这时在电脑上使用mqttx软件就可以连接开发板,并发布消息了
在开发板上就能收到
使用python作为客户端
首先安装paho包
apt-get install python3-paho
编写代码
import paho.mqtt.client as mqtt
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
def on_message(client, userdata, msg):
print(msg.topic+" "+str(msg.payload))
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("192.168.137.78", 1883, 60) #开发板的IP地址
client.subscribe(topic="mqtt/manhuami")
client.loop_forever()
这时就能够通过python代码订阅mqtt的消息了。