何时应使用MQTT-SN?它与MQTT有何不同?

何时应使用MQTT-SN?它与MQTT有何不同?,mqtt,Mqtt,如果MQTT已经是一个轻量级协议,并且它使用了少量的功率和带宽,那么为什么我们要使用MQTT-SN呢。何时适合使用MQTT以及何时MQTT-SN?MQTT-SN(wher SN表示传感器网络)与MQTT不同。 MQTT通过TCP/IP传输,可以用于局域网通信,也可以通过Internet和云(如果您的网络中有一个客户端,但代理在Internet上的外部)。 MQTT-SN可用于ZigBee、Z-Wave等更适合传感器网络的协议。 该规范不同于MQTT。。。因此,它不是通过TCP/IP的MQTT。

如果MQTT已经是一个轻量级协议,并且它使用了少量的功率和带宽,那么为什么我们要使用MQTT-SN呢。何时适合使用MQTT以及何时MQTT-SN?

MQTT-SN(wher SN表示传感器网络)与MQTT不同。 MQTT通过TCP/IP传输,可以用于局域网通信,也可以通过Internet和云(如果您的网络中有一个客户端,但代理在Internet上的外部)。 MQTT-SN可用于ZigBee、Z-Wave等更适合传感器网络的协议。 该规范不同于MQTT。。。因此,它不是通过TCP/IP的MQTT。 它更轻量级,需要一个桥接器将MQTT-SN消息转换为MQTT消息


Paolo.

与MQTT相比,MQTT-SN(传感器网络的SN)几乎没有什么优势,尤其是对于嵌入式设备

优势
  • MQTT-SN使用主题ID而不是主题名称。第一个客户端向代理发送一个带有主题名和主题ID(2个八位字节)的注册请求。注册被接受后,客户端使用主题ID引用主题名称。这样可以节省媒体带宽和设备内存—在内存中为每个发布消息保留和发送主题名称(例如:
    home/livingroom/socket2/meter
    )的成本相当高
  • 可以在MQTT-SN网关中配置主题名称到主题ID,以便在发布之前跳过主题注册消息
  • MQTT-SN不需要TCP/IP堆栈。它可以通过串行链路(首选方式)使用,其中使用简单的链路协议(用于区分线路上的不同设备)开销非常小。或者,它可以通过UDP使用,UDP比TCP更不需要
  • 缺点
  • 您需要某种网关,它只不过是移动到不同设备的TCP或UDP堆栈。这也可以是一个简单的设备(例如:Arduino Uno),只服务于多个MQTT-SN设备,而不做其他工作
  • MQTT-SN没有得到很好的支持

  • 如果资源不足,或者设备中没有以太网/Wifi,请使用MQTT-SN。

    您能否解释一下应该使用MQTT-SN的场景。为什么不能使用MQTT?这种情况可能是当您的传感器(在网络中)不支持TCP/IP,但支持ZigBee、Z-Wave、BLE等其他协议时。。。。在这种情况下,您不能使用MQTT,只能使用MQTT-SN,因为您没有TCP/IP堆栈。那么MQTT\u-SN是ZigBee或Bluetooth的替代方案吗?如果是,我应该在哪里安装代理。在蓝牙的情况下,我们将直接配对2个设备,无需任何中间工作即可进行通信,但对于MQTT-SN,我们需要一个代理作为中间人。MQTT_-SN通过ZigBee,它不是替代方案。在传感器网络中,您没有配对设备的概念。。。您有发布数据的传感器,并且执行器数据可以在网络中接收命令,而不是以1:1的通信方式。因此,您需要一个代理或其他类型的协议lize 0MQ(但我从未使用过它)不要忘记电池电源。保持WiFi或手机连接需要相当大的电量(即使在省电模式下)。MQTT-SN实际上支持使用非IP网络,如BLE,这允许显著降低功耗,但在延迟、end2end加密和其他功能上有所妥协。@Ikanab:您的论点绝对有效。你知道支持MQTT-SN的消息代理吗?试试这个:另外,这个项目在BLE上使用MQTT-SN:@MichalFoksa这是一个用javascript编写的MQTT-SN网关:@teeeee当然,短主题名可以在两个协议中节省资源。