mqtt

mqtt协议-broker之moqutte源码研究一

感情迁移 提交于 2020-03-07 01:53:19
mqtt协议的broker有很多,但是java的支持集群的并不多,之前调研过一番,发现moqutte基本满足需求,就想着基于这个在自己做二次开发。后面会逐渐把自己对moqutte的研究发布出来,希望能给有相同需求的同学一定的参考意义。 github地址: https://github.com/andsel/moquette 一。将代码倒入idea 找到启动类 启动报错,是因为找不到moquette的配置文件 跟踪源码moquette的配置文件地址是config/moquette.conf 因为咱们是直接启动的Server类里面的main方法,而不是通过assebely打包的jar包,所有这个位置是没有配置文件的,但是moquette支持通过启动参数指定配置文件的位置 那就简单了,把启动需要的配置文件放到本地的某个地方,再通过启动参数指定就行了,在idea里面指定 我是放在/data/moquette目录下 另外idea启动需要的配置文件再,broker模块下的config包里面,或者distribution/src/main/resources 加入之后启动成功 二。配置文件讲解 moqutte的配置文件有五个,下面分别讲解一个有什么作用 1.moquette.conf 主配置文件,moquette启动需要的主要配置都在这里,包括端口号,认证鉴权,存储等

MQTT 消息中间件特性

南楼画角 提交于 2020-03-07 01:36:58
MQTT作为一种消息中间件,是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上。 MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。MQTT协议工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性 (1)使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。 (2)对负载内容屏蔽的消息传输。 (3)使用TCP/IP提供网络连接。 主流的MQTT是基于TCP连接进行数据推送的,但是同样有基于UDP的版本,叫做MQTT-SN。这两种版本由于基于不同的连接方式,优缺点自然也就各有不同了。 (4)有三种消息发布服务质量: "至多一次",消息发布完全依赖底层TCP/IP网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。这一种方式主要普通APP的推送,倘若你的智能设备在消息推送时未联网,推送过去没收到,再次联网也就收不到了。 "至少一次",确保消息到达,但消息重复可能会发生。 "只有一次",确保消息到达一次。在一些要求比较严格的计费系统中,可以使用此级别。在计费系统中

Qt开发MQTT(二) 之第三方QMQTT

若如初见. 提交于 2020-03-07 00:02:59
概述 上一篇文章 已经介绍了Qt官方提供的MQTT封装的使用方式,除此之外,还有另外一个第三方的公司也提供了针对MQTT的Qt封装接口,其使用方式都差不多,只是接口名称有些变化,这里也简单的介绍一下,可以根据个人喜好来选择使用那种方式。 官网地址: https://www.emqx.io/cn/ 下载编译 EMQ也提供了源码供大家下载使用, 地址在这里 我们将源码下载后进行编译,编译过程和上一篇文章介绍的差不多,这里就不再详细讲了。 我们使用Release模式编译后,同样也会得到和之前一样的生成文件: 根据 前一篇文章 的步骤我们将生成库部署到Qt的安装目录。 注意:这两种对MQTT的封装的源码编译生成出来的库名称是一样的,但是提供的接口不一样,所以如果编译了这两种源码,不要全部都部署到Qt安装目录,会覆盖的。如果编译了两份源码并且都想尝试使用, 那么可以将一个部署到Qt安装目录,另一个直接用外部库的方式导入到测试测试项目中进行使用,这两种方法都已经在前一篇文章中详细介绍过了。 接口 EMQ提供的这个MQTT的封装就不像Qt官方提供的那样完善了,我目前找到的也就只有github上的简短介绍,但其实我们有了源码,要去看相应的接口还是挺方便的。在源码里面对每个接口介绍挺详细的。 那么它提供的主要接口有以下这些: 槽 void setHost ( const QHostAddress &

Unable to control raspberry pi camera remotely using MQTT

谁说我不能喝 提交于 2020-03-06 11:06:29
问题 I am trying to start and stop the recording of camera attached to a Raspberry Pi Zero W (client) using MQTT. Below is the specific part of the code which I am trying to use to achieve this: continueRecording = 1 def shopRecording(): global shop_record_flag_start, camera, continueRecording print("Starting Recording") while 1: print(shop_record_flag_start) with picamera.PiCamera() as camera: camera.resolution = (640, 480) camera.framerate = 20 camera.start_recording("/home/pi/camera-recording

esp8266 mqtt ccs811空气质量检测

旧巷老猫 提交于 2020-03-05 21:39:34
ccs811 能够检测 空气中的CO2 以及 VOC(挥发性有机物) arduino开发 安装Adafruit_CCS811 库 GitHub链接 使用代码 CCS811_test 示例代码 按照下图连线 使用的I2C通信 SDA----数据线 SCL-----控制线. 是SCL\SDA是I2C总线的信号线. SDA是双向数据线,SCL是时钟线SCL. 示例代码 # include "Adafruit_CCS811.h" Adafruit_CCS811 ccs ; void setup ( ) { Serial . begin ( 9600 ) ; Serial . println ( "CCS811 test" ) ; if ( ! ccs . begin ( ) ) { Serial . println ( "Failed to start sensor! Please check your wiring." ) ; while ( 1 ) ; } // Wait for the sensor to be ready while ( ! ccs . available ( ) ) ; } void loop ( ) { if ( ccs . available ( ) ) { if ( ! ccs . readData ( ) ) { Serial . print ( "CO2

为什么 MQTT 是最适合物联网的网络协议

荒凉一梦 提交于 2020-03-05 14:03:47
物联网 (IoT) 设备必须连接互联网。通过连接到互联网,设备就能相互协作,以及与后端服务协同工作。互联网的基础网络协议是 TCP/IP。MQTT(消息队列遥测传输) 是基于 TCP/IP 协议栈而构建的,已成为 IoT 通信的标准。 MQTT 最初由 IBM 于上世纪 90 年代晚期发明和开发。它最初的用途是将石油管道上的传感器与卫星相链接。顾名思义,它是一种支持在各方之间异步通信的消息协议。异步消息协议在空间和时间上将消息发送者与接收者分离,因此可以在不可靠的网络环境中进行扩展。虽然叫做消息队列遥测传输,但它与消息队列毫无关系,而是使用了一个发布和订阅的模型。在 2014 年末,它正式成为了一种 OASIS 开放标准,而且在一些流行的编程语言中受到支持(通过使用多种开源实现)。 为何选择 MQTT MQTT 是一种轻量级的、灵活的网络协议,致力于为 IoT 开发人员实现适当的平衡: 1、 这个轻量级协议可在严重受限的设备硬件和高延迟/带宽有限的网络上实现。 2、 它的灵活性使得为 IoT 设备和服务的多样化应用场景提供支持成为可能。 为了了解为什么 MQTT 如此适合 IoT 开发人员,我们首先来分析一下为什么其他流行网络协议未在 IoT 中得到成功应用。 为什么不选择HTTP 大多数开发人员已经熟悉 HTTP Web 服务。那么为什么不让 IoT 设备连接到 Web 服务

MQTT / Mosquitto bridge not authorised with broker ACL

我是研究僧i 提交于 2020-03-05 06:04:12
问题 I have bridge to a Mosquitto broker that works fine. But it shows error: Connection Refused: not authorised when I try to use this simple ACL file on bridged broker: user topic1_user topic topic1/# In my bridge config I have these settings under Bridges section: connection bridge-conn1 address remotebroker:8887 topic topic1/# both remote_username topic1_user remote_password secret Am I missing something? 来源: https://stackoverflow.com/questions/60005331/mqtt-mosquitto-bridge-not-authorised

React Native MQTT.js does not work on Android 9+

孤者浪人 提交于 2020-03-03 19:02:51
问题 I am building an Android app using React Native 0.61 (CLI) and use common MQTT.js packages here: https://www.npmjs.com/package/mqtt (v.3.0.0) This is my build.gradle buildToolsVersion = "28.0.3" minSdkVersion = 25 compileSdkVersion = 28 targetSdkVersion = 28 supportLibVersion = "28.0.0" I use WebSocket protocol to connect to my own mqtt broker. In debug mode, everything works perfectly on any phone. But weird that when I release APK by command ( gradlew assembleRelease (signed)), it can not

React Native MQTT.js does not work on Android 9+

让人想犯罪 __ 提交于 2020-03-03 18:58:12
问题 I am building an Android app using React Native 0.61 (CLI) and use common MQTT.js packages here: https://www.npmjs.com/package/mqtt (v.3.0.0) This is my build.gradle buildToolsVersion = "28.0.3" minSdkVersion = 25 compileSdkVersion = 28 targetSdkVersion = 28 supportLibVersion = "28.0.0" I use WebSocket protocol to connect to my own mqtt broker. In debug mode, everything works perfectly on any phone. But weird that when I release APK by command ( gradlew assembleRelease (signed)), it can not

How to build paho mqtt c++ on windows

拟墨画扇 提交于 2020-03-03 05:25:41
问题 I have few json data which I need to upload on azure iot hub . I am writing code in c++ and need mqtt to publish all the data to iot hub. I am referring this github page: https://github.com/eclipse/paho.mqtt.cpp But instruction on how to build it is a bit confusing and not seems to be working. Can anyone please explain how can I install mqtt in windows and can use it with visual studio c++. Please help. Thanks 回答1: I struggled the last few days too and I finally got it running. I succeeded