树莓派学习笔记:MQTT协议的简单应用
2017-05-19 22:54
417 查看
前言
基于MQTT的协议,将外网手机发送的字符通过树莓派输出。PC上搭建MQTT服务器,树莓派和手机作为客户端,发布和订阅消息。
MQTT简介
MQTT 是轻量级基于代理的发布/订阅的消息传输协议,设计思想是开放、简单、轻量、易于实现。这些特点使它适用于受限环境。该协议的特点有:使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。
对负载内容屏蔽的消息传输。
使用 TCP/IP 提供网络连接。
小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量。
使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制。
有三种消息发布服务质量:
“至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
“至少一次”,确保消息到达,但消息重复可能会发生。
“只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
MQTT服务器的搭建:
选择Apollo搭建MQTT服务器下载地址:http://activemq.apache.org/apollo/download.html
步骤:
1.下载Apollo服务器并解压,在CMD环境运行其工作目录下的 bin\apollo.cmd,命令后面带上参数「create mybroker」,创建服务器实例。这里需要Java环境,系统环境变量下要有JAVA_HOME。
2.进入 mybroker\bin\ 目录,在CMD输入命令「apollo-broker.cmd run」
3.mybroker文件夹中 etc\apollo.xml 是配置服务器信息的文件etc\users.properties 文件包含连接MQTT服务器时用到的用户名和密码,初始默认帐号是admin,密码password;
登录接口:https://127.0.0.1:61681/或http://127.0.0.1:61680/
树莓派订阅:
3.1 安装paho-mqtt使用pip工具安装paho-mqtt,输入以下指令即可:
sudo pip install paho-mqtt
3.2 树莓派订阅代码——client.py
# File Name:mqtt_chat_client.py # Python Version:3.5.1 import paho.mqtt.client as mqtt def on_connect(client, userdata, flags, rc): print("Connected with result code "+str(rc)) client.subscribe("gpio") def on_message(client, userdata, msg): print(msg.payload) if __name__ == '__main__': client = mqtt.Client() client.username_pw_set("admin", "password") client.on_connect = on_connect client.on_message = on_message HOST = "192.168.0.105" client.connect(HOST, 61613, 60) user = raw_input("enter name:") client.user_data_set(user) client.loop_start() while True: str = raw_input() if str: client.publish("gpio", str)
手机端发布订阅
下载mqtt的app软件,输入MQTT代理服务器的IP地址,账号 密码登录。树莓派运行mqtt代码 python client.py
app输入订阅主题和消息内容,最后点击Publish,此时树莓派的串口就会输出消息内容了
树莓派输出:
最后:
paho-mqtt扩展库的更多功能的请参考:paho-mqtt 1.1 : Python Package Index相关文章推荐
- c++pirmer 学习笔记之指针简单应用。
- mybatis学习笔记2-SQL的简单应用
- IOS学习笔记之二:Object C的简单应用(对比Java)
- ios自用学习笔记一委托协议的简单了解
- 学习笔记之Oracle(简单应用)
- 【狂人C】学习笔记之一个简单的乘法函数的应用
- iPhone/iPad高级应用与手游开发学习笔记:sqlite3学习(简单英文生词本demo)
- Chrome扩展,应用开发学习笔记之1---从简单的时钟入手
- DayDayUP之HTML5学习笔记 三 article、hgroup、figure、figcaption、dialog标签简单应用
- 【算法学习笔记】53.单调队列的简单应用 SJTU OJ 1034 二哥的金链
- Web Services 应用开发学习笔记(五):创建WebService的简单例子
- jQuery EasyUI学习笔记_1.easyui简介和简单应用
- jQuery EasyUI学习笔记_1.easyui简介和简单应用
- Cocos2d-x学习笔记(六) 定时器Schedule的简单应用
- JavaScript 学习笔记3 CSS的ID、CLASS简单应用
- hadoop学习笔记-基于hdfs搭建简单网盘应用
- Linux——bash应用技巧简单学习笔记
- 构建一个简单的WCF应用——WCF学习笔记(1)
- MQTT学习笔记——MQTT协议体验 Mosquitto安装和使用
- IOS学习笔记之十七:Category的简单理解和应用