ThingsBoard 3.0 部件库之自定义部件开发

最近想学习下TB的部件开发,做一个简单的跑马灯组件,于是看了下官方文档,结合第三方组件实现一个简单的demo,在此记录下过程。

话不多说,先上效果图。
在这里插入图片描述

前言

ThingsBoard小部件是其他UI模块,可以轻松集成到任何IoT Dashboard中。它们提供了最终用户功能,例如数据可视化,远程设备控制,警报管理以及静态自定义html内容的显示。根据提供的功能,每个窗口小部件定义代表一个特定的窗口小部件类型。

部件编辑器分为四部分:

  1. 资源/ HTML / CSS窗口。(可在资源窗口cdn引入外部资源)
  2. JavaScript窗口(Widget API的所有与窗口小部件相关的JavaScript代码)
  3. 设置窗口。(用于为使用react-schema-form builder生成的UI表单自动指定小部件设置的json模式。生成的UI表单显示在窗口小部件设置的“ 高级”选项卡中。通过此模式序列化的Settings对象用于存储特定的窗口小部件设置,并且可以从窗口小部件JavaScript代码访问)
  4. 小部件预览窗口。(预览部件)
    在这里插入图片描述
    所有与小部件相关的代码都位于JavaScript部分。还提供了对小部件实例的引用的内置变量self。每个小部件函数都应定义为自变量的属性。 self变量的ctx属性类型为WidgetContext-对窗口小部件上下文的引用,其中包含窗口小部件实例使用的所有必需的API和数据。
    部件API参考地址:widget api文档

开发第一个部件

介绍完部件编辑器后,我们开始第一个部件:marquee组件的开发。

新增部件

  1. 进入部件包,点击右下角 “+” 图标,点击 “创建新的部件类型”。
  2. 选择静态部件。
    图1-1
  3. 进入部件编辑器后,安装下面步骤初始化组件,完成后保存。
    在这里插入图片描述

设置资源/ HTML / CSS

  1. 资源
    由于marquee组件使用了第三方组件,因此需要cdn引入。点击添加,添加marquee组件的cdn地址即可。
    在这里插入图片描述

  2. HTML

<div class="card">
    <div class="card-header card-header-info">
        <div class="demo">
            <h4 class="card-title">
                1、allowCss3Support: 是否使用CSS3动画。
                2、direction: 跑马灯动画的方向。
                3、duplicated: 是否复制文本。
                4、speed: 加载速度。
                5、gap: tickers之间的间隙。
                6、pauseOnHover: 在hover时暂停跑马灯。
                7、在循环结束,暂停跑马灯delayBeforeStart毫秒。
            </h4>

        </div>
    </div>
    <div class="card-body">
        <p class="card-category">
            <span class="text-success">
              <i class="fa fa-spinner fa-spin fa-lg fa-fw" style="color:red">
              </i> 7 
            </span> 
            Marquee Options.
        </p>
        <div class="marquee-container">
            <table>
                <tr>
                    <td><img src="your image path">
                    </td>
                    <td><img src="your image path">
                    </td>
                    <td><img src="your image path">
                    </td>
                </tr>
            </table>
        </div>
    </div>
    <div class="card-footer">
        <div class="stats">
            <i class="material-icons">access_time</i>
            updated 4 minutes ago
        </div>
    </div>
</div>
  1. CSS
.marquee-container {
    overflow: hidden;
}

.marquee-container img {
    max-height: 120px;
    height: 120px;
    width: 92%;
}

.demo {
    max-height: 10px;
    height: 10px;
    width: 92%;
}

设置 JavaScript

self.onInit = function() {
    var allowCss3Support = self.ctx.settings
        .allowCss3Support || true;
    var delayBeforeStart = self.ctx.settings
        .delayBeforeStart || 0;
    var direction = self.ctx.settings.direction ||
        "left";
    var duplicated = self.ctx.settings.duplicated ||
        true;
    var speed = self.ctx.settings.speed || 200;
    var gap = self.ctx.settings.gap || 50;
    var pauseOnHover = self.ctx.settings.pauseOnHover ||
        true;
    var pauseOnCycle = self.ctx.settings.pauseOnCycle ||
        0;
    $('.marquee-container').marquee({
        allowCss3Support: allowCss3Support,
        delayBeforeStart: delayBeforeStart,
        direction: direction,
        duplicated: duplicated,
        speed: speed,
        gap: gap,
        pauseOnHover: pauseOnHover,
        pauseOnCycle: pauseOnCycle
    });
    $('.demo').marquee({
        direction: 'left',
        speed: 100
    });
}

设置 Settings

部件代码完成后,可以预览查看效果,但是marquee组件的属性还不能自定义配置,因此我们需要通过Settings窗口设置组件的属性,用来绑定到marquee组件。
Settings schema配置如下:

{
    "schema": {
        "type": "object",
        "title": "Settings",
        "properties": {
            "allowCss3Support": {
                "title": "是否开启浏览器支持CSS3动画,默认true",
                "type": "boolean",
                "default": true
            },
            "delayBeforeStart": {
                "title": "开始动画的延迟时候,单位毫秒,默认为1000",
                "type": "integer",
                "default": 0
            },
            "direction": {
                "title": "跑马灯动画的方向。 'left' / 'right' / 'up' / 'down'",
                "type": "string",
                "default": "left"
            },
            "duplicated": {
                "title": "是否复制文本。默认为false",
                "type": "boolean",
                "default": true
            },
            "speed": {
                "title": "动画的加载速度,单位毫秒,默认为1000。",
                "type": "integer",
                "default": 300
            },
            "gap": {
                "title": "tickers之间的间隙。单位像素,默认为20",
                "type": "integer",
                "default": 50
            },
            "pauseOnHover": {
                "title": "在hover时暂停跑马灯。",
                "type": "boolean",
                "default": true
            },
            "pauseOnCycle": {
                "title": "在循环结束,暂停跑马灯delayBeforeStart毫秒。",
                "type": "integer",
                "default": 0
            }
        }
    },
    "form": [
        "allowCss3Support",           
        "delayBeforeStart",
        "direction",
        "duplicated",
        "speed",
        "gap",
        "pauseOnHover",
        "pauseOnCycle"
        
    ]
}

Setting Schema是基于react-schema-form构建的,在线构建地址:react-schema-form

预览部件

运行部件后,可以在预览窗口看到部件的运行效果,并且可以进入编辑模式,点击高级,查看自定义的配置项,从而进行设置部件的运行效果。
在这里插入图片描述

结语

部件开发的方式分在线开发和本地开发。本次学习选择了在线开发,这种方式的优点是开发速度快,比较直观,缺点是如果组件的逻辑过多,就不适用了,毕竟每次开发组件都要写这些繁琐的HTML、CSS和Javascript。相反,本地开发的速度较慢,需要在前端工程里面使用angular封装好组件,组件的参数项可以使用TS的Class类包装好,然后在在线编辑器引用ng组件。

ThingsBoard是一个开源的物联网平台,用于连接、管理和监控物联网设备。它提供丰富的功能和自定义配置,使用户可以根据自己的需求创建和定制不同类型的节点。 华为云SMS(Short Message Service)是一种用于发送短信的云服务。通过使用华为云SMS,用户可以方便地向设备用户发送短信通知和提醒。 为了自定义华为云SMS规则节点,我们可以按照以下步骤进行设置: 1. 在ThingsBoard平台中登录并导航到所需的设备或设备组。 2. 选择“规则引擎”选项卡并选择“新建规则链”。 3. 在规则链的页面中,选择“节点”选项卡,并从可用节点列表中选择“华为云SMS”节点。 4. 点击该节点,然后在右侧的配置面板中填写所需的信息,例如华为云SMS的API密钥、用户名、密码、目标手机号码、短信内容等。 5. 点击“保存”按钮保存并应用节点配置。 6. 返回到规则链页面,并根据需要添加其他节点来构建完整的规则链。 7. 最后,保存并应用规则链,使其生效。 通过配置自定义的华为云SMS规则节点,我们可以实现在满足特定条件时自动发送短信通知的功能。例如,当温度超过设定阈值或设备状态异常时,发送短信提醒给设备用户。 总结而言,通过使用ThingsBoard平台的自定义规则节点功能,并结合华为云SMS服务,我们可以轻松创建自定义的短信通知规则,以满足不同应用场景下的需求。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值