Questions tagged «mqtt»

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

2
订阅MQTT的诞生以及主题?(emqttd)
我正在运行emqttd(emqtt.io)。我想监视客户端从一个单独的进程连接和断开的过程,该进程将订阅一个发布出生和遗嘱消息的系统主题。什么是正确的方法?
11 mqtt  emq 

4
将证书保留在外部存储器上是一种不好的做法吗?
我们正在使用STM32微控制器开发AWS-IoT。 直到今天,我们仍将证书写入闪存,并锁定闪存以防止外部读取。随着应用程序代码的增加,我们在闪存上的空间越来越小,因此我们计划将证书从外部移动到SD卡/ EEPROM中,并在连接到AWS-IoT之前在需要时随时读取。 笔记: 为该事物编写的策略将仅允许具有特定名称的设备连接该特定证书。 事物只能发布到2个通道(它的名称和数据馈送通道)上,该通道连接到数据处理器,该处理器将忽略进入其的任何恶意数据包。 如果该事物发布/订阅了其他任何主题,则AWS将立即断开该事物的连接。 如果我检测到设备被盗/流氓,则会从服务器上停用密钥。 开发者可以使用证书(RootCA,服务器密钥,客户端密钥)做什么? 将此类用例的证书保留在可由开发人员访问的外部存储上是一种不好的做法吗?
11 security  mqtt  aws-iot 

1
Arch Linux上的mosquitto_sub“连接被拒绝”
所以我安装mosquitto并mosquitto-client在树莓派运行Raspbian杰西通过apt-get以及mosquitto在另一个丕通过运行Arch Linux的pacman。在Arch上,不需要单独安装客户端utils。 开箱即用地测试在Raspbian上的简单订阅/发布。 mosquitto_sub –d –t blub mosquitto_pub –d –t blub –m “test” 从Arch框发布也可以: mosquitto_pub -h <IP-Raspbian> -t blub -m "test" 订阅Arch系统上的一个主题就可以使我得到: mosquitto_sub –d –t blub Error: Connection refused 现在,这非常通用。怎么了

3
我应该使用Mosquitto的Web套接字还是直接连接客户端?
根据此博客,Mosquitto(MQTT经纪人)现在支持通过Web套接字连接到客户端。该博客文章似乎暗示Web套接字对浏览器应用程序更有用,因为Web浏览器尚不支持正确的TCP套接字(尽管),尽管大多数现代浏览器都支持Web套接字协议。 如果我在网络中只有多个客户端(例如,基于Raspberry Pi等微控制器的传感器和执行器),使用Web套接字比直接TCP连接有任何优势吗?仅当与浏览器进行通信时,Web套接字协议的开销才值得吗?

2
在Web浏览器中检测IoT设备?
最近,我从小米那里买了几个无线中继器。到目前为止,尽管它们表现稳定,但我真的不喜欢小米的应用程序。但是,我很喜欢它实际上可以在LAN和Internet上运行的想法。考虑到小米的服务器在中国,在局域网中时,它们可以快速打开和关闭。 因此,我想推出自己的基于ESP8266的继电器(我知道我可以准备好硬件,所以这是一个好处)。我的问题是,如何从网页上自动检测网络中的中继? 从“应用程序”中,我可以使用SSDP,mDNS-SD或UPNP来检测事物。但是我还没有从网络浏览器(基本上是Android上的Chrome)上找到信息。自从我将气象站的网页更改为渐进式Web应用程序以来,我就迷上了。我真的很喜欢仅作为网页而不是必须安装的应用程序的想法。而且PWA也在离线模式下填补了空白。 但是,奇怪的是,“困难的”部分(从LAN外部打开和关闭中继)很难通过MQTT服务器解决。但是我不希望不依赖外部MQTT服务器。如果我在局域网上,我想直接与中继交谈。如果不是,则通过MQTT发送命令。 我当然可以依靠服务器查询中继,但是在那种情况下,我需要Internet连接(如果我的MQTT服务器位于“云”上)或家庭托管的服务器。我确实有一个服务器,即使没有,树莓派也可以轻松填补空白。但是理想的情况是,通过LAN与设备(在这种情况下为Wifi)通信时,甚至不需要服务器。我更喜欢尽可能地保持P2P,并且仅当我在WAN上时才使用MQTT作为后备(MQTT解决了CG-NAT和端口转发的问题)。

1
MQTT始终连接并加载4G数据
我正在从事一个涉及数千个MQTT客户端的物联网项目,这些客户端通过4G / WiFi路由器/调制解调器连接到代理(mosquitto)。少于10个客户端连接到同一路由器,并且这些路由器来自不同的地方(不同的城市)。 目前,我们的客户很少,他们总是与经纪人保持联系。通过这次讨论,我知道即使它们增长到1000多个单位也不会有问题。 我的问题是关于4G连接的流量负载。最终用户担心在打开并不使用所有“通道”的情况下会消耗数据。 据我了解,当没有活动时,仅发送保持活动数据包,尽管我无法在MQTT文档中找到此信息。 当没有数据包发布时,我可以假设流量可以忽略不计吗?
10 mqtt 

2
MQTT是否可以扩展到1000多个客户端?
场景 IoT设备(当前为IPv4设备)每天通过TCP套接字向服务器发送一个有效负载。服务器具有公共IP地址,设备位于路由器/ NAT之后。我将使用基于ESP8266的模块(即Olimex一个) 目标 的服务器应该能够将数据发送到任何客户端,只要它需要。我对直接的客户端到客户端通信(即从智能手机连接到设备)不感兴趣,就像打孔一样。 其他要求 IoT设备可能会增长到数千个。它们的Internet连接由许多启用4G的路由器/调制解调器提供。每个将处理10-20个客户。 建议的解决方案 据我了解,MQTT是一个常见的解决方案。客户端定期将数据发送到代理(即在托管服务器上运行的Mosquitto),代理再更新在同一服务器上运行的主Web应用程序。 问题 MQTT方法是否适合“大量”设备(1000多个),其中大多数设备位于4G路由器之后?
10 mqtt  wifi  routers 

1
非IP设备通信协议
我有关于非IP设备通信的问题。 从我的研究中,我了解到CoAP和DDS可用于设备到设备的通信。 MQTT对于设备到网关或设备到服务或云很有用。 我的问题是,非IP设备(在没有IP的情况下通过简单的RF或蓝牙等通信)如何使用这些协议? MQTT使用TCP / IP COAP,DDS,MQTT-SN使用UDP / IP 因此,这意味着他们使用IP。这怎么可能?是否还有其他不将TCP或UDP用于D2D和设备到网关的协议?

3
MQTT是否有标准化的RPC机制?
在堆栈溢出上,存在一个有关通过MQTT实现请求/响应交互的问题。作为一个答案,您可以通过在一个主题上发布请求并在请求中包含的另一个令牌上侦听响应来实现。有点尴尬,但可以。 我想知道,由于MQTT在整个IoT中得到了广泛使用,因此是否出于互操作性的目的而进行了任何标准化此RPC类型交互的尝试?
10 mqtt  standards 


1
我可以在一个请求中发布多个MQTT主题吗?
我有一个带有多个传感器的设备,该设备将每个传感器的读数分别发布到诸如 device1-id/sensor1-id = 10.2 device1-id/sensor2-id = 15.5 [...] 我们使用Amazon AWS IoT SDK将其提供给AWS IoT,即 mqtt_params.qos = QOS1; mqtt_params.payload = payload; mqtt_params.payloadLen = payload_len; rc = aws_iot_mqtt_publish(&client, topic, topic_len, &mqtt_params); 每个调用都会生成一个单独的TCP数据包和一个来自AWS MQTT代理的单独响应。问题是我们的某些节点位于非常慢的网络上,并且在每个数据包延迟发布后都等待ACK。 有什么方法可以将所有传感器读数捆绑到一个TCP数据包中,同时将它们发布到单独的主题中并保持QOS = 1?
10 mqtt  aws-iot 

3
MQTT over TLS与MQTT的性能
虽然MQTT具有多种用途,但它本身也不安全。这是设计使然。 根据Stanford-Clark的说法,安全性最初被有意识地排除在协议之外,因为他和Nipper知道安全性机制可以围绕MQTT来增强安全性。而且,当时,斯坦福-克拉克(Stanford-Clark)说,通过MQTT发送的信息(例如来自气象站的风速数据)并不是特别需要保护。- 来源 可以封装在MQTT上的安全机制之一是TLS。如今,大多数经纪人都支持。当然,任何包装措施都会产生开销。此开销可以忽略不计(请参阅HiveMQ blog)。 目前,我正在寻找有关TLS与普通MQTT相比TLS上MQTT性能损失的信息(希望是权威来源),以评估我项目的MQTT可行性。尤其是当技术扩展到大量订户时。 除了原型之外,还有没有其他方法可以通过TLS获得有关MQTT性能的有效数据?
10 security  mqtt  tls 

1
如何在Arduino上使用MQTT,使用串行com将AT命令发送到ESP8266
我刚刚开始研究MQTT协议。 情况 目前,在我的大学项目中,我使用Arduino作为主要MCU,并在其中做所有工作并使用Serial Comm。发送AT指令到esp8266(用于HTTP请求,在服务器上运行脚本等)。我基本上需要在网页(由本地服务器托管)上推送一些数据(来自Arduino)。我搜索并找到了关于MQTT协议的信息,该协议可以在客户端上发布和订阅数据(正是我想要的)。但是我发现的大多数教程要么完全在Arduino(带wifi屏蔽)上,要么完全在esp8266上。 我想知道的是,是否有可能将MQTT与当前配置一起使用?也就是说,使用Arduino通过串行通讯来完成所有工作。仅通过MQTT上的AT命令发布数据。 这里提到有关我的项目的其他信息:对智能家居系统中使用的技术感到困惑
10 mqtt  esp8266 

1
Mosquitto MQTT客户端可以强制断开另一个客户端的连接吗?
我一直想知道MQTT客户端如何指示经纪人通过某种方式断开客户端连接,以防万一我需要强制断开客户端与MQTT服务器的连接(例如,如果客户端行为不当且无法正确响应)。 上一个问题强调了仅使用与您要杀死的客户端相同的客户端ID连接的可能性,但这充其量似乎并不可靠,我想知道是否有更可靠的选项可以满足我的需求: 允许授权的客户端通过客户端ID断开任何其他客户端与网络的连接 理想情况下,防止未经授权的客户端断开其他客户端的连接(以便只有“受信任”的客户端才能断开其他客户端的连接) 有满足这些要求的功能吗?
10 mqtt  mosquitto 

1
EMQ如何保持QoS 1/2消息?
该EMQ(二郎MQTT代理)是一个“分布式的,可大规模扩展的,高度可扩展的MQTT消息代理”有报道的“130万个并发连接MQTT” -所以它潜在地允许大量客户端的发布和订阅。似乎某些客户端可能在任何给定时间断开连接。 作为这个问题,如果Mosquitto的内存不足以存储QoS 1/2消息会发生什么?询问蚊子: 在MQTT,具有QoS 1或2的消息必须至少被递送一次质量(QoS 2级的消息必须被递送恰好一次)。如果客户端未连接,则代理必须存储该消息,直到客户端准备好接收它为止。 那么,EMQ如何在发送之前一直保持QoS 1/2消息,即重新启动代理或关于内存限制?
10 mqtt  emq 

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.