paho

【整理操作】MQTT简单使用学习

淺唱寂寞╮ 提交于 2020-05-01 01:14:35
一、简述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。 MQTT协议中的方法: MQTT协议中定义了一些方法(也被称为动作),来于表示对确定资源所进行操作。这个资源可以代表预先存在的数据或动态生成数据,这取决于服务器的实现。通常来说,资源指服务器上的文件或输出。主要方法有: (1)Connect。等待与服务器建立连接。 (2)Disconnect。等待MQTT客户端完成所做的工作,并与服务器断开TCP/IP会话。 (3)Subscribe。等待完成订阅。 (4)UnSubscribe。等待服务器取消客户端的一个或多个topics订阅。 (5)Publish。MQTT客户端发送消息请求,发送完成后返回应用程序线程。 二、图说 MQTT协议的架构,用一个示例说明。比如有1个温度传感器(1个Machine),2个小的显示屏(2个Machine),显示屏要显示温度传感器的温度值。

消息中间件技术

北城以北 提交于 2020-05-01 00:06:24
作者:carter(佘虎),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可。 1.1概念 MQTT(MQ Telemetry Transport) 消息队列遥测传输协议是IBM开发的一种网络应用层的协议,提供轻量级的,支持可发布/可订阅的的消息推送模式,使设备对设备之间的短消息通信变得简单,比如现在应用广泛的低功耗传感器,手机、嵌入式计算机、微型控制器,卫星等移动设备。 1.2优点 1.2.1非常低的通信开销 MQTT 的独特之处在于,它的每消息标题可以短至 2 个byte。MQ 和 HTTP 都拥有高得多的每消息开销。对于 HTTP,为每个新请求消息重新建立 HTTP 连接会导致重大的开销。MQ 和 MQTT 所使用的永久连接显著减少了这一开销。 1.2.2低功耗,省电 您需要能够及时地将通知传递给客户。为此,必须采用某种定期轮询或推送方法;从电池、系统负载和带宽角度讲,推送是最佳解决方案。MQTT 是专门针对低功耗目标而设计的。HTTP 的设计没有考虑此因素,因此增加了功耗。 1.2.3单机百万级并发 在 HTTP 堆栈上,维护数百万个并发连接,需要做许多的工作来提供支持。尽管可以实现此支持,但大多数商业产品都为处理这一数量级的永久连接而进行了优化。IBM 提供了 IBM MessageSight

转 【MQTT】在Windows下搭建MQTT服务器

安稳与你 提交于 2020-04-30 20:45:55
MQTT简介 MQ 遥测传输 (MQTT) 是轻量级基于代理的发布/订阅的消息传输协议,设计思想是开放、简单、轻量、易于实现。这些特点使它适用于受限环境。该协议的特点有: 使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。 对负载内容屏蔽的消息传输。 使用 TCP/IP 提供网络连接。 小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量。 使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制。 有三种消息发布服务质量: “至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。 “至少一次”,确保消息到达,但消息重复可能会发生。 “只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。 Mosquitto 是一款「An Open Source MQTT v3.1/v3.1.1 Broker」——开源的MQTT代理服务器,其下也有Windows的安装包。 但是我使用的是Win10 64位系统,这两个都下载安装后不是报错就是缺少dll文件,不能使用。 最后参考了前面博客说的,搭建了Apollo服务器,这里使用的Apollo 1.7.1。 官网: http

QoS=1 with MqttAsyncClient subscription miss messages

試著忘記壹切 提交于 2020-03-25 16:07:19
问题 I have foreground service acting as MQTT client. I'm using MqttAsyncClient mqttClient for this purpose. I'm using QoS=1 on subscribe to topic: mqttClient.subscribe("sensors/s1/", 1); But in case my phone gets offline for some period of time it miss current period messages. Whole code is below. Im my another application I'm using MqttAndroidClient mqttAndroidClient and in this case QoS=1 brings all missed messages. mqttAndroidClient.subscribe(topic, 1, null, new IMqttActionListener() {...})

QoS=1 with MqttAsyncClient subscription miss messages

我与影子孤独终老i 提交于 2020-03-25 16:06:52
问题 I have foreground service acting as MQTT client. I'm using MqttAsyncClient mqttClient for this purpose. I'm using QoS=1 on subscribe to topic: mqttClient.subscribe("sensors/s1/", 1); But in case my phone gets offline for some period of time it miss current period messages. Whole code is below. Im my another application I'm using MqttAndroidClient mqttAndroidClient and in this case QoS=1 brings all missed messages. mqttAndroidClient.subscribe(topic, 1, null, new IMqttActionListener() {...})

QoS=1 with MqttAsyncClient subscription miss messages

瘦欲@ 提交于 2020-03-25 16:05:59
问题 I have foreground service acting as MQTT client. I'm using MqttAsyncClient mqttClient for this purpose. I'm using QoS=1 on subscribe to topic: mqttClient.subscribe("sensors/s1/", 1); But in case my phone gets offline for some period of time it miss current period messages. Whole code is below. Im my another application I'm using MqttAndroidClient mqttAndroidClient and in this case QoS=1 brings all missed messages. mqttAndroidClient.subscribe(topic, 1, null, new IMqttActionListener() {...})

阿里云物联网平台NET SDK实现RRPC服务端调用

↘锁芯ラ 提交于 2020-03-24 09:17:48
3 月,跳不动了?>>> 概述 MQTT协议是基于PUB/SUB的异步通信模式,不适用于服务端同步控制设备端返回结果的场景。前面博客 基于开源Java MQTT Client的阿里云物联网平台RRPC功能测试 介绍了RRPC原理,使用Open API实现服务端的调用实现。本文介绍如何使用NET SDK在本地实现RRPC的服务端调用。 Step By Step 1、创建产品与设备 参考 链接 准备工作部分。 2、设备端Code import com.alibaba.taro.AliyunIoTSignUtil; import org.eclipse.paho.client.mqttv3.*; import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; import java.util.HashMap; import java.util.Map; public class IoTRRPCForSysTopicDemo { // 设备三元组信息 public static String productKey = "a16MX******"; public static String deviceName = "RRPC******"; public static String deviceSecret =

使用apache-artemis搭建MQTT服务器

喜欢而已 提交于 2020-02-29 04:26:34
apache-artemis 搭建MQTT服务,windows下和Linux下操作方式基本一致 1、下载二进制包: 官网地址 https://activemq.apache.org/components/artemis/download/ linux 下载后缀为 .tar.gz 的包,windows 下请下载 .zip 后缀的包 $ wget https://mirrors.tuna.tsinghua.edu.cn/apache/activemq/activemq-artemis/2.7.0/apache-artemis-2.7.0-bin.tar.gz 2.解压 $ sudo tar -xzf apache-artemis-2.7.0-bin.tar.gz /opt/ 3.创建 broker 并启动服务 到这里就可以参照说明文档(apache-artemis-2.7.0/README.html)进行配置了 下面以Linux下为例来说明: $ sudo cd /opt/apache-artemis-2.7.0/bin/ $ sudo ./artemis create mybroker # 接下来会进入交互配置,按照提示输入默认用户名、密码、是否允许匿名登录 # 创建完成后可以按照提示启动服务 $ sudo /opt/apache-artemis-2.7.0/bin/mybroker

A call to SSPI failed, see inner exception paho m2mqtt Dot.Net(c#) client SSL/TLS connection

痴心易碎 提交于 2020-01-25 21:46:13
问题 I am trying to connect with mosquitto broker using m2mqtt c# client version 4.3.0 library via SSL/TLS. Below is the code I have tried static void Main(string[] args) { // create client instance MqttClient client = new MqttClient(IPAddress.Parse("127.0.0.1"), 8883, true, new X509Certificate2("C:\\Users\\hp\\Desktop\\certificate\\ca.crt"), new X509Certificate2("C:\\Users\\hp\\Desktop\\certificate\\client.crt"), MqttSslProtocols.TLSv1_2); // register to message received client

MQTT qos parameter has no effect

五迷三道 提交于 2020-01-25 11:57:07
问题 I have installed a mosquitto server on a raspberry server. This server works fine: I have test with mosquitto_sub and mosquitto_pub commands. I have write this python script: import paho.mqtt.client as mqtt import time client = mqtt.Client('module_test_4') client.connect('127.0.0.1', 1883, 10) client.loop_start() for i in range(10): client.publish('topic_2', "valeur %d" % i, qos=0) time.sleep(1) client.loop_stop() client.disconnect() I have launched this script twice on 2 consoles: mosquitto