代码编织梦想

MQTT驱动配置简介

MQTT全称为消息队列遥测传输(英语:Message Queuing Telemetry Transport),是ISO 标准(ISO/IEC PRF 20922)下基于发布 (Publish)/订阅 (Subscribe)范式的消息协议,工作在 TCP/IP协议族上。

MQTT最大优点在于,可以用极少的数据和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

MQTT 协议定义了两种网络实体:消息代理(message broker)与客户端(client)。其中,消息代理用于接收来自客户端的消息并转发至目标客户端,也被称为MQTT服务器。MQTT 客户端可以是任何运行有 MQTT 库并通过网络连接至消息代理的设备,例如微型控制器或大型服务器。

在MQTT 协议中,消息的传输是通过主题(topic)管理的,消息的发布者和订阅者均为客户端(client)。消息由主题(Topic)和负载(payload)两部分组成。当某个客户端有需要分发的数据时,会向连接的消息代理(MQTT服务器)发送指定主题的携带有负载的消息。服务器收到消息后,会向订阅此主题的客户端分发此消息。发布者不需要配置订阅者的相关信息和具体位置;同样,订阅者也不需要配置发布者的相关信息和具体位置。

AIRIOT低代码物联网开发平台,专注物联网系统高效开发的专业化平台,相比于传统开发模式具有更快速、更全面、更低代码量、更易于学习等特点。

今天,我们将通过实操案例,来看看如何使用AIRIOT以拖拽式低代码,轻松实现配置MQTT驱动,帮助您有效降低在驱动配置方面的学习成本。

AirIot平台MQTT驱动配置说明

  1. 在系统模型管理界面中选择要配置的模型,右侧选项卡选择设备配置,在设备驱动一栏选择MQTT客户端。无无该选项时,点击右侧的驱动市场按钮在线安装驱动。

  1. 配置驱动参数

(1)MQTT服务器:填写要连接的mqtt服务器的地址。格式为

tcp://服务器IP或域名:服务器端口

例如:tcp://127.0.0.1:1883

(2)用户名、密码:填写MQTT服务器的用户名和密码。

(3)订阅消息主题:填写该模型要订阅的消息主题,可使用通配符#和+。

Topic是个utf-8编码的字符串,可由多个'/'分割开。

+:为单级通配符,如:check/+/baseline

#:为多级通配符,必须放在topic的最后,前一个字符必须是'/'

建议Topic中不要包含空格符。

(4)通讯监控参数:平台通用配置,当某个资产数据点中的最新上数时间距离当前时间超过此参数时,平台判定资产掉线。

(5)自定义脚本:由于mqtt协议中未规定具体的消息内容格式,因此需要用户编写自定义脚本,用于解析消息和组装要发送的消息内容。

使用示例

由于MQTT协议通过主题区分不同种类的消息,因此在使用时,不同的主题需要建立不同的模型,下边以网关常用的MQTT格式为例,介绍脚本的编写方法。

消息格式

数据采集网关发布的主题的为 box/网关唯一编号/data
假设网关唯一编号为8位,例:box/abcd1234/data
消息内容:{"data":{"d1":100},"time":1644290863000}

网关订阅的主题为 box/网关唯一编号/command
消息内容:{"d1":200}

脚本

脚本语言采用的是JavaScript,一部分为固定格式:

// 解析接收数据
// 该服务器和主题收到的消息会调用此方法进行解析,消息主题是方法参数topic,消息内容是方法参数package.
// topic类型为字符串,考虑到部分设备的消息内容为二进制数据,package类型为字节数组.
ParseHandle = function (topic, package) {

    // 解析数据
    let id = "abcd1234"      //id是资产编号,平台通过id判断数据和资产的对应关系,必需
    let values = {"d1":100}  // values是一个对象,key为数据点标识,值就是采集的具体数值,必需
    let time = 1644290863000 // 数据点采集时间,UNIX毫秒时间戳,没有time时,默认采用服务器时间
    return [                 //可返回多个对象,对应多个资产
        { id, values,time }  //返回的对象中的key的名字必须为id,values,time
    ]
}

// 构建发送数据
CommandHandle = function (topic, id, op) {
		// 构建发送数据
    let sendTopic = ""
    let sendData = {"d1":200}
    return { sendTopic, sendData }} //返回的对象中的key的名字必须为sendTopic,sendData
}

脚本示例:

// 解析接收数据
// 消息内容:{"data":{"d1":100},"time":1644290863000}
ParseHandle = function (topic, package) {

    let id = topic.substring(4, 12)          // 从主题中截取资产编号
    let msg = JSON.parse(package.toString()) // 将消息从字节数组转为json对象
    let values = msg.data                    // 该消息内容的格式恰好符合平台的要求格式
    let time = msg.time                      // 毫秒时间戳
    return [
        { id, values,time }
    ]
}

// 构建发送数据
// 主题: box/abcd1234/command
// 内容: {"d1":200}
CommandHandle = function (topic, id, op) {
  
    let sendTopic = `box/${id}/command`
    let sendData = `{"${op.tag}":${op.value}}`
    return { sendTopic, sendData }
}

 产品试用:申请试用 | AIRIOT 让物联网项目更简单

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/AIRIOT/article/details/124707098

mqtt是什么,mqtt在物联网和应用中有什么优势?_人工智能爱好者的博客-爱代码爱编程_mqtt能干什么

MQTT是一个物联网传输协议,它被设计用于轻量级的发布/订阅式消息传输,旨在为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务。MQTT是专门针对物联网开发的轻量级传输协议。MQTT协议针对低带宽网络,低计算能力的设

项目实战-物联网平台搭建-mqtt服务器搭建(一)-爱代码爱编程

本项目为大四物联网中间件的课程设计 由于前期未拿到硬件平台以及传感器,所以先做软件方面 首先先搭建mqtt服务器,先看一下目前各类mqtt服务器的对比,下图: ServerQoS 0QoS 1QoS 2authBridge$SYSSSLDynamic topicsclusterwebsocketsplugin systemMqtt 5 support

每谈及物联网都难以离开的MQTT协议!-爱代码爱编程

MQTT梗概 MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。 实现MQTT协议需要客户端和服务器端

物联网消息传输协议——mqtt详解-爱代码爱编程

什么是Mqtt mqtt是为物联网场景设计的基于tcp的pub/sub协议, 是基于发布/订阅模式的物联网通信协议 具有简单易用、支持QoS、报文小、轻量、节省带宽、不关心数据具体格式、可以时刻感知设备是否在线等特点 出生背景 本名: Message Queue Telemetry(遥测,远距离测量) Transport 年龄: 22岁(1999-

阿里云物联网平台实现MQTT通信-爱代码爱编程

阿里云物联网平台实现MQTT通信 一、环境搭建一、阿里云物联网平台二、MQTT.fx总结 一、环境搭建 一、阿里云物联网平台 1.首先进入阿里云官网https://www.aliyun.com/?utm_content=se_1000301881注册并登录你的账号。 点击控制台。 搜索物联网平台并进入。 第一次使用阿里云物联网平台会弹

低代码构建物联网平台,让物联网项目更简单-爱代码爱编程

物联网(Internet of Things,IoT)是普遍联系的网络,是基于互联网、电信网等信息网络的承载体,可以视为互联网的延伸和升级,是科学技术发展的必然,也被称为继计算机、互联网和移动通信网络之后的第三次信息技术革命。 稳定、灵活、通用的物联网产品架构对促进物联网健康、规模发展具有重要意义,也是研究和关注的焦点,如欧洲IoT-A 项目,并不研究智

day15、3 - VTP-爱代码爱编程

一、VTP概述 1.VTP是什么 VLAN中继协议,也被称为虚拟局域网干道协议,是思科私有协议,属于二层交换机的协议!2.VTP的作用 主要用于管理在同一个域的网络范围内VLANs的建立、删除和重命名。在一台VTP Server 上配置一个新的VLAN时,该VLAN的配置信息将自动传播到本域内的其他所有交换机。这些交换机会自动地接收这些配置信息,使其

IBM WebSphere MQ-爱代码爱编程

目录 WebSphere MQ System Components Queue Manager Queue Message WebSphere MQ System Components Main components of a WebSphere MQ network and provides a basis for understan