在本教程中,我们将使用 MQTT API 订阅资产属性值的更改,并从 MQTT 客户端向其发布数据。OpenRemote Manager 充当 MQTT 代理。在本教程中,您可以使用桌面 MQTT 客户端(例如 MQTT Explorer 或 MQTT X),或者最好使用要连接的设备。

我们将创建一个事物资产,但您可以随意使用与您的物理设备匹配的 AssetType

           1、在资产页面上,点击左侧资产树中的 +

2、选择 Thing 资产类型,为其指定一个友好名称,然后单击“Add”

    3、在 Edit asset (编辑资产) 模式下添加两个新属性:

                  i、  subscribeAttribute

              type: Custom Attribute(自定义属性)

              name: subscribeAttribute

              Valuetype: Boolean

                  ii、  writeAttribute

              type: Custom Attribute(自定义属性)

              name: writeAttribute

              Valuetype: Number

      Create a service user  创建服务用户

      服务用户将以编程方式授予对 MQTT 客户端的访问权限。

      1、转到 users 页面并创建新的服务用户(页面上的第二个面板)

      2、为方便起见,将服务用户命名为 mqttuser,并赋予该用户读写角色。建议为您的服务用户配置更受限制的角色。

      3、点击 'Create',将自动生成一个 secret。

        4、打开 mqttuser 用户以查看并复制密钥

                fU4JH63dMJAMCXWfD0IxCoadfAZZGTyV

          建立从客户端到 broker 的连接

          在您的 MQTT 客户端中设置一个新连接:

                     1、host:mqtt://localhost(192.168.2.82)

                      2、端口:启用 TLS/SSL 的 8883;大多数客户端将使用我们自行生成的 Let's Encrypt 证书,但如果使用自签名证书或您的客户端无法验证证书链,则可能需要将证书显式加载到客户端中或禁用/放宽客户端的 TLS 验证设置(请参阅特定客户端的文档)。通过在 Docker Compose 文件中的 Manager 服务上为该代理创建端口映射,可以在端口 1883 上公开未加密的代理

                      3、password:为 MQTT 服务用户生成的密钥(您可以在 MQTT User 用户页面找到)

                          用户名:master:mqttuser ({realm}:{user})注意英文半角:

                      4、clientID: client123 (这可以是您喜欢的任何内容,但必须是唯一的 - 具有相同客户端 ID 的任何现有连接都将被替换。确保此 clientID 保持相同。

          连接就可以连接上了。

          使用 MQTT API 订阅属性

          在本教程中,我们将了解特定资产的特定属性。订阅 assets 和 attributes 的 (所有) 更新还有更多选项 。您将订阅的资产属性可以由用户、规则写入,也可以是通过与现场其他设备的 Agent 链接收集的实时值。您可以想象这个布尔值可以切换订阅了该属性的设备的功能

                      1、通过导航到事物资产页面并复制 URL 中的 ID 来获取事物资产的 ID(例如 https://192.168.2.82/manager/#/assets/false/3IEs4aduCjNr1VHbd9Bhnz => 3IEs4aduCjNr1VHbd9Bhnz)

           2、在 MQTT 客户端中为 subscribeAttribute 创建主题为: {realm}/{clientId}/attribute/{attributeName}/{assetId} 的订阅。因此,在我们的例子中,这将是 master/client123/attribute/subscribeAttribute/3IEs4aduCjNr1VHbd9Bhnz

            3、在 OpenRemote Manager 中事物资产的查看模式下,通过单击复选框将新值写入“Subscribe attribute”。

              4、验证您是否在 MQTT 客户端上看到传入的值 (true/false)!

                (看mqttx返回消息)

                另一个参数也是一样订阅路径:

                master/client123/attribute/writeAttribute/3IEs4aduCjNr1VHbd9Bhnz

                从 MQTT 客户机发布属性值

                您可以将数据从 MQTT 客户端(设备)发布到 OpenRemote 管理器,以便监控设备并创建规则。

                          1、定义正确的主题。对于直接写入属性值: {realm}/{clientID}/writeattributevalue/{attributeName}/{assetID} .因此,在我们的例子中,这将是 master/client123/writeattributevalue/writeAttribute/3IEs4aduCjNr1VHbd9Bhnz

                2、通过此主题发送 JSON。对于数字,这真的很简单:23

                3、转到 Manager 并检查值是否已更新!

                更多推荐