Questions tagged «mqtt»

对于与MQTT消息传递协议有关的问题,这是一种用于机器对机器通信的基于TCP / IP的轻量级系统。


2
Mosquitto可以支持多个经纪人吗?
我一直在考虑将Mosquitto用作家庭物联网网络的MQTT消息代理,但是我担心该代理可能是单点故障,如果发生故障,可能会破坏我的整个网络,因为所有消息都必须通过代理,并且如果代理出于任何原因(例如意外拔出,硬件故障等)脱机,则根本无法传输任何消息。 可以使用安装了Mosquitto的多个代理来提高网络的可靠性吗?如果有可能,使用多个代理是否有任何不利/大量的开销?

3
关于在MQTT中建立客户端-服务器连接的困惑
根据规范,始终应由客户端建立与服务器的连接。 客户: 使用MQTT的程序或设备。客户端始终与服务器建立网络连接。它可以 发布其他客户端可能感兴趣的应用程序消息。 订阅以请求有兴趣接收的应用程序消息。 退订以删除对应用程序消息的请求。 与服务器断开连接。 并且,如果此客户端订阅了应用程序消息,则服务器应将这些消息转发到此特定客户端。 服务器: 一种程序或设备,充当发布应用程序消息的客户端和进行订阅的客户端之间的中介。服务器 接受来自客户端的网络连接。 接受客户发布的应用程序消息。 处理来自客户端的订阅和取消订阅请求。 转发与客户端订阅匹配的应用程序消息。 这是否意味着如果客户端进行预订,那么即使大部分时间没有数据流,在预订有效的情况下它仍保持与服务器的连接? 我得出这个结论是因为,如果客户端在订阅后断开连接,则服务器无法将消息转发给它,因为客户端应该建立连接。但是它不知道何时重新建立它。
19 mqtt 

2
MQTT客户端可以订阅自己创建的主题吗?
以我的理解,在MQTT中,一旦客户发布具有相应主题名称的内容,就会创建一个主题。 无需配置主题,对其进行发布就足够了。 从这里。 客户可以在发布主题后订阅自己的主题吗?我在规格书中找不到任何限制。它也没有被列为可能的异常行为: 5.4.8检测异常行为 服务器实现可能会监视客户端行为以检测潜在的安全事件。例如: 重复尝试连接 重复的身份验证尝试 连接异常终止 主题扫描(尝试发送或订阅许多主题) 发送无法传递的消息(该主题无订阅者) 连接但不发送数据的客户端 基于此,我认为这肯定是可能的。因此,我对该功能的用例有兴趣吗? 为什么标准允许这种机制,跟踪主题的所有者会变得很复杂?因此,它只是允许客户订阅自己的主题。 我可以想到的一个用例是,客户可以通过这种方式验证其发布的数据。
18 mqtt 

2
MQTT和Web套接字之间有什么区别,什么时候应该使用它们?
MQTT和Web套接字之间的主要区别是什么? 将物联网用于家庭自动化时-控制和监视对不同设备的访问,当需要基于Rest API和基于浏览器的可访问性时,应使用其中之一。 我在Raspberry Pi 2 B +上使用Java(Pi4J库)。 我有几个传感器的设置,例如明暗,湿度,PID等。 我也有一个云服务器,可以根据需要在其中发送数据。

3
不订阅#-那么如何使用Mosquitto将所有消息转储到数据库?
当尝试将所有消息转储到数据库时,HiveMQ的博客在“最佳实践”下列出了不订阅多级通配符的内容。他们声称,订阅客户端可能无法跟上大量消息的需求,并建议使用代理插件直接代替消息流。 有时有必要订阅所有消息,这些消息是通过代理传输的,例如,将所有消息持久保存到数据库中时。不应通过使用MQTT客户端并订阅多级通配符来完成此操作。原因是,订阅客户端通常无法处理即将发送的消息负载。尤其是如果您的吞吐量很高。我们推荐的解决方案是在MQTT代理中实现扩展,例如,HiveMQ的插件系统允许您了解HiveMQ的行为,并添加异步例程来处理每条传入的消息并将其持久化到数据库中。 有没有 蚊子经纪人的类似系统(扩展程序/插件), 推荐的另一种与蚊子一起工作的方法,或者 有合理的证据证明这种方法根本没有必要,也就是说,订阅的客户#可以做得很好吗? /programming//q/31584613/3984613并未详尽解决此问题。
16 mqtt  mosquitto 

2
如何在STM32F030K6T6上实现MQTT?
所涉及的控制器是STM32F030K6T6,它具有ARM®32位Cortex®-M0低功耗内核,32 kB闪存和4 kB SRAM。它与SIM808接口以实现Internet连接。 关于内存的资源非常有限。 是否可以在此设备上实现MQTT? 微控制器应匹配哪些要求才能使用/运行MQTT? (我并不是在问完整的协议栈实现。)

1
是否有通过Wi-Fi提供开源协议的设备?
我知道如何使用Arduino编程IoT ; 但是我想要一些现成的便携式IoT设备,这些设备不需要在设备端进行任何编程。我只是想购买这些设备并将它们添加到网络中(经过一些配置),并(通过使用公司提供的文档)为它们编写控制器逻辑。 例如: 现成的MQTT温控器连接到某些代理,并发布有关某个主题的温度。有人可以购买安装该恒温器并使用MQTT客户端读取该温度。 连接到某些CoAP服务器的现成的CoAP常规灯,有人购买时用它替换其家用灯,并通过使用CoAP客户端向该设备发送一些CoAP消息,可以打开/关闭该灯。 请分享公司名称或链接(仅适用于REST / COAP / MQTT),我尝试搜索,但未找到任何东西,除了Rachio Smart WiFi Sprinkler(Docs)

2
我可以在MQTT网络上执行哪些简单的安全测试?
我将在家里建立一个MQTT网络。我想通过实践练习来积累一些知识。这将是一个小型网络,其中的代理托管在我的笔记本电脑(Windows 7)和一些Raspberry Pi支持的客户端上。我也在考虑在我的手机(Android)上建立客户端。 我的目标是拥有一个可以在其上进行实验的简单网络,并且我想先进行一些安全性测试。 我发现了一个旨在充当恶意MQTT客户端的MQTT服务器测试套件。首先是很有希望的。 测试工具的一般功能 全自动黑盒阴性测试 现成的测试用例 用Java(tm)编写 GUI,命令行,远程接口模式 仪表(健康检查)功能 支持与维护 全面的用户文档 结果报告与分析 但是我也对一些我可以用来验证MQTT安全性功能的简单实践感兴趣。初学者在MQTT网络上执行一些基本安全验证的最简单方法是什么?

2
MQTT协议是否适合通过BLE传输传感器读数?
假设有许多弱传感器(例如Arduino级设备)依赖BLE作为通信手段,并且这些设备已连接到功能更强大的网关(例如Raspberry pi级设备)。 我想知道MQTT是否被认为是传输其读数(短而频繁的突发消息)的合适协议。 许多博客/文档都认为MQTT适用于“ IoT应用程序”,因为与HTTP相比,MQTT的重量更轻,并且可以节省功耗。但是,据我所知,它要求保持连接开放,而BLE或其他适用于IoT的通信协议并非如此。BLE不会长时间保持连接打开以保留能量。显然,当使用MAC层协议(例如WiFi)时,MQTT是合适的。首先,这几乎打破了使用MQTT的基本原理(即,如果设备可计算地处理诸如WiFi之类的协议,则它可能不需要诸如MQTT之类的协议)。您是否看到这种逻辑上的缺陷? 为此有任何其他应用层协议吗?当它们与网关通信以及直接与服务器通信时,这些类型的消息(例如原始二进制数据,JSON,XML)中最常见的结构是什么?

3
Raspberry Pi上的Mosquitto更改日志设置后拒绝连接
为了使Raspberry Pi能够掌控我的工作,我建立了Mosquitto MQTT经纪人。在基本设置中,一切正常。 我可以使用publish命令发布测试消息,并使用subscription命令接收它们。然后,我决定提高日志级别,并如下修改了mosquitto.conf文件。基本上整个日志部分的版本都注释掉了。另一个没有。 我将其范围缩小到了日志文件所在的行。 $ diff mosquitto.conf mosquitto.conf.old 408,410c408,410 < #log_dest file /var/log/mosquitto/mosquitto.log --- > log_dest file /var/log/mosquitto/mosquitto.log 该文件存在,并由mosquitto:mosquitto运行服务的用户拥有。 尝试进行日志记录时,得到的非常有用的信息如下: mosquitto_pub -h localhost -t thisisme -m 5 Error: Connection refused 到现在为止,我确信该服务将死于无声死亡。 $ sudo service mosquitto status ● mosquitto.service - LSB: mosquitto MQTT v3.1 message broker Loaded: loaded (/etc/init.d/mosquitto) Active: …

4
如何在MQTT网络中使用2FA?
将新设备连接到代理时,如果可能的话,如何使用2FA(两因素身份验证)? 因为看起来比较容易,所以第二个因素可以首先是软件解决方案,但是我欢迎有关如何引入硬令牌(可能是RFID)的想法。 如果设备仅在第一次连接时进行身份验证,并且服务器会记住“旧”客户端,这将是有意义的。 这个想法可能不寻常或不合适-如果这是一个坏主意,请告诉我原因。

1
当MQTT中没有任何主题的订户时,会发生什么?
情况如下: 有一个客户端,一个发布者,它没有订阅任何主题。该客户端具有其自己的单个主题,并规律地向其发布数据。但是没有其他任何订阅此主题的客户端。 因此,这个贫穷而孤独的客户可能被视为异常(第5.4.8章)。 服务器实现可能会监视客户端行为以检测潜在的安全事件。例如: [...] 发送无法传递的消息(该主题没有订阅者) 它不知道有多少客户订阅了该主题。因此,它不知道它可能被视为具有异常行为的客户端。 那么,这种客户端会发生什么情况将取决于服务器的实现?有什么做法,应该简单地断开连接,但是然后不尝试重新连接吗?
12 mqtt 

2
如何通过AWS IoT为作业队列设置主要和故障转移MQTT订阅者?
我有一个系统,客户机(我们称其为ClientA)可以将请求发布到特定的MQTT主题。代理(如果需要的话)是Amazon Web Services。然后,我有另一个客户端(我们称其为MainSubscriber),该客户端始终订阅相同的主题,以便它可以接收来自ClientA的请求并进行某些工作,最后将其转换为数据库操作。如果需要的话,数据库是DynamoDB。 由于MainSubscriber可能不总是可访问/在线的,因此希望有一个故障转移订户作为主订户的故障转移备份。这样的想法是,如果主用户未及时处理请求,则故障转移用户将加入并进行等效的工作/数据库操作。挑战在于,主订户和故障转移订户都不能复制“工作”和所得的“数据库操作”。 这是此系统的逻辑系统架构图。 -----> MainSubscriber ---- / \ ClientA --> Broker ---> Database \ / ---> FailoverSubscriber -- 显然,这种系统存在一些挑战: 主订户如何向故障转移订户指示它正在处理请求? 故障转移订户如何检测到主订户尚未接听请求并需要开始处理该请求? 如果故障转移订阅者突然回到联机状态并接收请求,那么该如何转移主订阅者呢? 如何处理主订户与故障转移订户之间的同步性问题? 如果这样的方案已经存在一个解决方案,我宁愿不必重新发明轮子。所以,我的第一个问题是是否已经有东西了? 如果不是,那么我正在考虑使用具有强烈一致性读取的DynamoDB作为Main和Failover订户之间的中介。所以,我的第二个问题是,是否有完善的方案来做到这一点?
11 mqtt  aws-iot  aws 

3
是否有将QoS 1/2消息持久保存到磁盘的MQTT代理?
到目前为止,EMQ(Erlang MQTT Broker)似乎尚未将QoS 1/2消息持久保存到磁盘:EMQ如何将QoS 1/2消息持久保存到磁盘? 因此,在服务器意外重启的情况下,尽管必须至少或恰好一次传递QoS 1/2级消息,但内存限制或其他事件消息可能会丢失。 是否有MQTT代理将QoS 1/2消息持久保存到磁盘从而确保传递?
11 mqtt 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.