我是靠谱客的博主 文静老虎,这篇文章主要介绍MQTT协议应用:外网手机控制内网树莓派,现在分享给大家,希望可以做个参考。

实验目的:将外网手机发送的字符串使用树莓派的串口输出
不了解MQTT协议的请参考:MQTT协议体验 Mosquitto安装和使用
不了解使用Python操作树莓派串口的请参考:Raspberry Pi B的UART极简例程

一、前期准备

  1. 服务器安装好Mosquitto(MQTT代理软件);
  2. 树莓派安装好Python(用来编写树莓派订阅代码),然后用pip安装paho-mqtt(实现了MQTT协议的Python扩展库)、wiringpi2(控制树莓派IO口的Python扩展库);
  3. 手机安装好MQTT安卓客户端。

二、编辑并运行树莓派订阅代码

在树莓派中编辑并保存如下代码为MQTT.py文件,并且增加可执行权限,然后用超级用户运行MQTT.py。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/usr/bin/env python import paho.mqtt.client as mqtt import wiringpi # 连接成功回调函数 def on_connect(client, userdata, flags, rc): print("Connected with result code " + str(rc)) # 连接完成之后订阅serial主题 client.subscribe("serial") # 消息推送回调函数 def on_message(client, userdata, msg): print(msg.topic+" "+str(msg.payload)) # 将负载通过串口发出 wiringpi.serialPuts(serial,str(msg.payload)) if __name__ == '__main__': client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message wiringpi.wiringPiSetup() serial = wiringpi.serialOpen('/dev/ttyAMA0',9600) try: # 请更改为自己MQTT代理服务器的公网IP client.connect("192.168.1.107", 1883, 60) client.loop_forever() except KeyboardInterrupt: client.disconnect() wiringpi.serialClose(serial)

三、开启服务器MQTT代理服务,并使用手机客户端发布消息

在服务器上执行mosquitto命令,运行MQTT代理服务。然后打开MQTT Client手机APP,输入MQTT代理服务器的IP地址、serial主题和消息内容,最后点击Publish,此时树莓派的串口就会输出消息内容了。

四、进一步学习

想了解paho-mqtt扩展库的更多功能的请参考:paho-mqtt 1.1 : Python Package Index
想了解wiringpi2扩展库的更多功能的请参考:WiringPi_WiringPi-Python: Python-wrapped version of Gordon Henderson’s WiringPi version 2.
想获取更多平台上的开源MQTT客户端的请参考:Paho - Open Source messaging for M2M

最后

以上就是文静老虎最近收集整理的关于MQTT协议应用:外网手机控制内网树莓派的全部内容,更多相关MQTT协议应用内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部