之前我在linux上有搭建过MQTT环境,我们也在树莓派上搭建这样的环境试试

当然你不搭建也可以,毕竟是和linux同一个道理

使用ssh登录树莓派,搭建完毕后,我们输入指令启动程序:

mosquitto -c /etc/mosquitto/mosquitto.conf -d  

我们打开两个窗口,在一个(订阅)窗口输入:

mosquitto_sub -t hello  

另一个(发布)窗口输入:

mosquitto_pub -t hello -h localhost -m "hello world!"  

程序截图:

这样我们依旧能够通过指令来实现两个服务器之间的通信,如果同一网段的IP地址不同,那么-h的后面添加IP地址就行

但是我们要怎样来通过程序进行通信呢??我们先来看一张图片:

图片参考:https://blog.csdn.net/xukai871105/article/details/39255089

其实这张图片是不完善的,树莓派在这里可以做信息发布者,也可以做代理服务器,更可以做消息订阅者

这里我们就要新介绍一个库,它就是paho-mqtt,输入:

pip install paho-mqtt

我们将图简化成只有一个发布者和订阅者,先来看看订阅者的代码:

# mqttc.py
import paho.mqtt.client as mqtt                # 导入mqtt客户端库def on_connect(client, userdata, flags, rc):            # 连接成功回调函数print("Connected with result code " + str(rc))client.subscribe("serial")                      # 订阅serial主题def on_message(client, userdata, msg):                  # 消息推送回调函数print(msg.topic+" "+str(msg.payload))           # 打印主题和消息client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_messagetry:client.connect("localhost", 1883, 60)client.loop_forever()            # 循环等待消息
except KeyboardInterrupt:client.disconnect()              # 关闭连接

如果有哪几个参数不明白,可以浏览我上面给你的网站

我们不急着先发布者的代码,运行mqttc.py,并打开另一个树莓派窗口,输入指令:

mosquitto_pub -t serial -h localhost -m "hello world!"

确认订阅收到serial主题的消息后,我们再来看发布者的代码:

# mqttc.py
import paho.mqtt.publish as publishpublish.single("serial", payload="hello world!",qos=0,hostname="localhost")

其实主要的代码简洁得不行,直接就是一行

最后再来运行mqttc.py的代码,程序截图:

我们成功收到主题为serial的hello world!的信息

别以为到这里就结束了,我们还要通过之前学习的树莓派通过串口接发数据其中的serial模块,结合在一起构成一个真正从串口接收数据并将其发送至服务器的发布者的角色

我们只需在之前的serial代码中添加几句就行

程序如下:

# -*- coding: utf-8 -*
import serial
import time
import paho.mqtt.publish as publishser = serial.Serial('/dev/ttyAMA0',115200)
if ser.isOpen == False:ser.open()
ser.write(b"Raspberry pi is ready")
try:while True:size = ser.inWaiting()if size != 0:response = ser.read(size)        # 如果消息过长可以改为具体数字# print(response)publish.single("serial", payload=response,qos=0,hostname="localhost")# ser.flushInput()                    # 不清除输入缓存区time.sleep(0.1)
except KeyboardInterrupt:print('quit')ser.close()

之后再打开一个树莓派窗口(服务器)输入:

mosquitto_sub -t serial

最后打开串口调试助手,运行上述python程序,成功接收到Raspberry pi is ready的消息后,我们从调试助手发送消息

作为服务器的树莓派窗口成功收到消息:

树莓派实现MQTT通信相关推荐

  1. c# 批量mqtt_C#使用 MQTTnet 快速实现 MQTT 通信(文末有完整Demo下载)

    MQTT(一)C#使用 MQTTnet 快速实现 MQTT 通信(文末有完整Demo下载) 原创weixin_pwtank1983 发布于2018-02-03 10:22:24 阅读数 36681 收 ...

  2. 阿里云服务器ECS搭建EMQ快速实现MQTT通信

    文章目录 一.简介 二.环境准备 1.树莓派 2.阿里云ECS 3.PC 三.ECS搭建部署EMQ 1.EMQ X Enterprise的安装 2.添加License文件 四.MQTT通信 1.准备工 ...

  3. MQTT(一)C#使用 MQTTnet 快速实现 MQTT 通信(文末有完整Demo下载)

    目录 MQTT(一)C#使用 MQTTnet 快速实现 MQTT 通信(文末有完整Demo下载) MQTT(二)在windows64位上安装Python环境 MQTT(三)Python客户端+net客 ...

  4. 使用 MQTTnet 快速实现 MQTT 通信

    1 什么是 MQTT ? MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是 IBM 开发的一个即时通讯协议,有可能成为物联网的重要组成部分.MQT ...

  5. 手机端(APP点灯blinker)-PC端(Node-red)-设备端(ESP32)-客户端(MQTTX客户端)四者之间的通信——通过MQTT通信(上)

    手机端(APP点灯blinker)-PC端(Node-red)-设备端(ESP32)-客户端(MQTTX客户端)四者之间的通信--通过MQTT通信(上) 前言: 本次实验是通过MQTT来进行手机端-设 ...

  6. 搭建阿里云物联网平台实现MQTT通信

    1,点击进入阿里云官方网站:阿里云-上云就上阿里云 (aliyun.com) 2,注册登录并且进行实名认证: 如下图: 点击右上角 控制台,进入如图界面: 3,在阿里物联网云平台创建设备: 首先创建产 ...

  7. WiFi-ESP8266入门http(3-4)网页一键配网(1若为普通wifi直连 2若为西电网页认证自动网页post请求连接)+网页按钮灯控+MQTT通信...

    网页一键配网(1若为普通wifi直连  2若为西电网页认证自动网页post请求连接)+网页按钮灯控+MQTT通信 工程连接:https://github.com/Dongvdong/ESP8266_H ...

  8. 语音模块LD3320模块的二次开发,并与树莓派进行串口通信

    一.首先模块介绍 (1)参数详解 型号:YS-LDV7 名称:一体化语音识别模块 规格:43*29.7MM 供电电压:5V (内部工作电压 3.3V) 待机电流:30MA 识别时电流:45MA IO ...

  9. 物联网温湿度显示控制项目(网页、Android双端显示搭载linux平台网关MQTT通信)

    演示视频如下: 物联网项目案例-温湿度检测及mqtt实现控制(带双端显示) 代码资源可在我的资源中免费下载学习使用~ 资源链接:https://download.csdn.net/download/q ...

最新文章

  1. 122网络各层中的设备是什么以及工作原理
  2. html5交互效果,浅谈HTML5 CSS3的新交互特性
  3. Qt Creator使用灯光
  4. 【算法竞赛学习】数据分析达人赛3:汽车产品聚类分析
  5. TensorFlow学习笔记01:TensorFlow入门
  6. Java中的序列问题-2
  7. 科锐c语言,科锐C语言学习视频,资源教程下载
  8. java子窗口获取父窗口句柄_java获得窗口句柄
  9. PC机并口、并口扩展卡使用EPP模式通信,ECP SPP等
  10. 论文查重算法 python_个人项目之论文查重
  11. 打开我的计算机我的文档不见,我电脑桌面上的我的文档不见了,是什么原因造成我的文档不见了呢?是? 爱问知识人...
  12. Mac 连接显示器,外接显示器不出影像
  13. 第二十章 齐桓公大婚冤家又聚首 宋闵公嘲笑重臣丢君命(
  14. php import mdf,mdf文件用什么打开 mdf是什么文件
  15. 倡议书格式范文_写倡议书的格式及范文
  16. 少儿编程scratch如何快速上手?
  17. Vue3响应式API ref和reactive
  18. 高校微信小程序开发心得
  19. 找出你的高价值潜在用户 - 通过归因分析实现用户画像和精准营销
  20. react 对象克隆_如何使用React&GraphQL(Dune World Edition)创建全栈Yelp克隆

热门文章

  1. vue-amap实现实现初始化并定位当前位置,搜索,定位,增加点标记
  2. 批处理注销计算机当前用户名,批处理实现重起和注销的指令是什么?
  3. excel函数公式透视表案例--车辆保养统计分析及预测案例
  4. 当代研究生英语读写教程的前5章译文
  5. 时间序列模型相关说明和模型介绍
  6. Android Studio报错 “java.lang.IllegalStateException: Room cannot verify the data integrity” 解决方法
  7. Linux服务器上使用nginx搭建mp4、flv流媒体服务器
  8. 优秀的项目周报应该如何写?【实例模板】
  9. 【张宇2021考研】数学二(样卷)扫描版
  10. 计算机微格教学心得体会,微格教学心得体会6篇_微格教学体会报告(2)