MQTT
消息队列遥测传输 (MQTT) 是一种用于 M2M (机器到机器) 通信的开放消息协议,支持沿高延迟或受限的网络将来自普及设备的消息形式的遥测数据传输到服务器或小型消息代理。普及设备可以是传感器和传动器,也可以是移动电话、车辆嵌入式系统或便携式计算机及全尺寸计算机。
MQTT 适用于发布/订阅体系结构。MQTT 需要消息代理和通信设备。通信设备可以称为客户端。代理和客户端可以发布和订阅名为 "Topic" 的参数。可以使用 SSL 来确保通过 MQTT 进行通信的安全性。
MQTT 扩展提供了到小型电子设备和传感器的连接,并使它们能够与 ThingWorx 进行通信。
您可以根据组织的需求,对 MQTT 使用任何标准代理。有关任何用户控制设置的信息,请参阅所要安装的代理的产品文档。
* 
在 Windows 操作系统中,代理在安装后将作为服务运行。
导入 MQTT
* 
ThingWorx 扩展支持模型最近已更改。大多数扩展不再提供在下载页面中。有关详细信息,请参阅本文章
请参阅导入扩展并将 MQTT_Extension.zip 导入到 ThingWorx 中。扩展安装完成后,“事物模板”列表中将显示以下内容:
MQTTConnection
允许 MQTTSubscriber 事物的共享连接。
MQTTSubscriber
允许订阅 MQTT 服务器上的一个或多个主题。将“配置”>“属性”下的属性添加到 MQTT 主题映射部分。
编辑 MQTTSubscriber 事物时,重新启动要刷新的关联 MQTTConnection
MQTT
允许在单一事物中使用上述所有配置。
配置 MQTT
以下部分将介绍在 ThingWorx 中安装扩展后,如果需要与代理建立连接,应该如何配置 MQTT 中的参数。
1. 运行您在计算机中安装的代理。
2. 在 ThingWorx 中,创建新“事物”,选择 MQTT 作为“事物模板”,然后单击“保存”
3. 单击“属性和警报”视图,随即显示以下屏幕:
在上图中,标注 1 和 2 表示的含义如下:
标注
说明
1
绿色图标表示您所创建的事物已连接到代理。如果事物处于未连接状态,则图标将显示为红色。
2
当事物和代理之间已建立连接时,系统会将“值”字段中的 isConnected 属性设置为 TRUE。如果未连接,则系统会将“值”字段设置为 FALSE。
当 ThingWorx HA 环境中的单例节点与代理的连接存在问题时,该属性设置为 false。但是,即使属性为 false,其他节点也会继续发布消息。
4. 单击“添加”以添加属性。
5. 会显示下列屏幕:
6. 输入属性名称、基本类型和其他必填详细信息。
7. 保存与属性相关的信息。
* 
要成功执行数据更改事件,请确保系统用户具有以下权限。
集合级别的 Service ExecuteEvent Subscribe 权限。例如,对于 Thing、ThingTemplate 或 ThingShape。
8. 单击“配置”视图,随即显示以下屏幕:
下表将介绍“配置”视图中提供的不同参数。
JDBC Settings
说明
clientIdFormat
在 MQTT 代理中注册的客户端的名称。
* 
对于一个 MQTT 代理,其客户端名称应是唯一的。
令牌 {s} 用于 ThingWorx Platform 的服务器名称。它采用服务器名称的 Federation Subsystem 配置中涉及的值。
令牌 {t} 用于当前事物名称。如果希望将不同平台连接到同一代理并使得事物使用相同的名称,则建议在 Federation Subsystem 中指定服务器名称。
useSSL
如果您的代理支持安全连接,请选择此方式。
serverName
MQTT 代理运行时所在主机的主机名。
* 
如果代理与 ThingWorx Platform 在同一计算机上运行,请将该字段留空。
serverPort
MQTT 代理的端口。默认值为 1883。
userId
要连接到代理的用户名。
Password
用户 ID 的密码。
Timeout
发布请求成功之前的等待时间 (以毫秒为单位)。默认值为 5000 mS。
ConnectTimeout
在 ThingWorx Platform 和 MQTT 代理之间建立连接时的等待时间 (以毫秒为单位)。
retryInterval
与 MQTT 代理的连接发生中断时,重试连接的间隔时间 (以毫秒为单位)。
仅当在某一时刻建立连接且在稍后发生中断时,才会用到重试机制。
retryAttempts
进行重试连接尝试的次数。
例如,当已建立的连接因网络扰动或其他问题而中断时,重置连接的尝试次数将通过在此字段中输入的值提供。每次重试尝试将间隔上文所提到的 retryInterval
pingInterval
定期检查 ThingWorx Platform 与 MQTT 代理之间连接状况的时间 (以毫秒为单位)。
默认值为 45 秒。每隔 45 秒,系统会向 MQTT 代理发送一条 ping 消息,以检查是否发生响应。接收到来自代理的响应意味着连接有效。
connectionIdleTimeout
连接的空闲时间 (以毫秒为单位)。
如果连接的空闲时间超出此设置时间,则表示信道内没有任何信息通信,系统会将该事物标记为已中断连接。
如果未发布或未订阅属性,则 pingInterval 会持续更新最近的活动时间,以使事物不会断开连接。
qos
此值将设置代理与其客户端之间通信的优先级级别。
AutoMapping 配置表包含用于自动映射发布或订阅属性的设置。启用自动映射时,则无需为 Mappings 指定表。在事物中创建的任何属性都会自动映射到主题。主题名称由如下所述的 format 确定:
AutoMapping
说明
format
与属性相对应的主题名称的格式。
令牌 {s} 用于服务器名称,{t} 用于事物名称,{p} 用于属性名称。
enabled
可以选择自动映射功能。
9. 要手动将事物属性映射到 MQTT 主题,请单击 Mappings 部分下的“添加”
会显示下列屏幕:
下表列出了可用于每个映射的配置选项:
Subscribe
订阅属性以接收来自 MQTT 代理指定主题的已发布更改。
Publish
使用指定主题将属性值更改发布到 MQTT 代理。
Retain
在 MQTT 代理中保留上次发布的属性值。当新设备或客户端订阅包含保留消息的主题时,代理会自动发送包含上次发布值的消息。当客户端需要初始值时,保留消息值可能会很有用。将发送保留值,而不是设置初始占位符值并等待下一条消息。
名称
要将 MQTT 代理映射到的事物属性的名称。
主题
要在 MQTT 代理上发布或订阅的主题的名称。
10. 在此处输入您在步骤 6 中添加的属性名称,输入主题名称,然后选取“订阅”“发布”“保留”。该属性将发布或订阅您输入的主题名称。
11. 单击“添加”
12. Properties and Alerts 视图中,单击“设置值”
13. 系统会显示下列屏幕。
在字段中输入属性值并保存。
14. 遵循特定于计算机中安装的代理的运行命令,并检查事物属性和代理之间的发布及预订活动。
这对您有帮助吗?