亿琪软件-开源博客 - ThingsBoard
type: channel
link: https://www.yiqisoft.cn/blogs/tag/ThingsBoard/
items: 喜报｜亿琪软件被认定为2023年高新技术企业
items: 分享｜五分钟学会使用 ThingsBoard 规则链
items: 分享｜五分钟了解 ThingsBoard 物联网平台多种部署场景
items: 分享｜五分钟快速学会 ThingsBoard 打包镜像和 Docker 部署
items: 分享｜五分钟快速学会 ThingsBoard DashBoard 基本操作
items: 分享｜五分钟学会 ThingsBoard 本地编译运行和 Linux 部署
items: 分享｜五分钟熟悉 ThingsBoard 前端二次开发。
items: 产品｜ThingsBoard 二次开发之报表系统YiREPORT
items: 分享｜ThingsBoard 扩展视频接入和实时点播/直播功能
items: 开源｜ThingsBoard FAQ 使用和二次开发常见问题汇总六

喜报｜亿琪软件被认定为2023年高新技术企业
type: item
date: 2024-01-08T08:48:00+00:00
description: 近日，根据科技部、财政部、国家税务总局《高新技术企业认定管理办法》（国科发火〔2016〕32号）、《高新技术企业认定管理工作指引》（国科发火〔2016〕195号）、《上海市高新技术企业认定管理实施办法》（沪科合〔2021〕21号）的有关规定，上海亿琪软件有限公司被认定为2023年度“高新技术企业”。 关于我们 上海亿琪软件有限公司，国家级高新技术企业，全球开放边缘计算和物联网领域的领导者，全球领先的工业物联网软件开发商和解决方案提供商，助力企业和组织实现数字化转型。公司专注于 5G 通信、AI 人工智能、边缘计算和大数据网络安全多项技术领域，致力于物联网领域前沿技术的创新，为用户提供全方位、智能化和安全的物联网解决方案。 2023 年，公司发布“ YiFUSION ｜工业边缘智能融合网关 ”产品，为工业客户提供一整套的边缘计算+AI 能力：高性能数据采集、多类型数据融合、AI 算法集成、云端业务对接。在边缘网关的基础上，集成了 IoT 平台的边缘协同能力、本地 Web SCADA 和 HMI 功能、本地数据存储、边缘 AI 视频分析、行业应用集成等。 2022 年，公司推出 “ YiCLOUD ｜亿琪云 ”一站式物联网应用解决方案。公司的业务涵盖了智慧城市、智慧农业、智能工厂和智慧园区等多个领域，公司软硬件产品和解决方案获得华为技术认证，得到中国移动 OCP 认证，公司还是边缘计算产业联盟 ECC 成员。 公司公众号 ThingsBoard中文社区 EdgeX爱好者社区 联系我们--商业服务 网站：http://yiqisoft.cn 邮件：support@yiqisoft.cn 电话：021-68863086 手机：186-1666-9123

分享｜五分钟学会使用 ThingsBoard 规则链
type: item
date: 2023-12-29T08:29:00+00:00
description: 规则链概述 创建规则链 规则链元素介绍 应用案例 总结与建议 ThingsBoard是一款强大的开源平台，提供了丰富的功能来管理和监控物联网设备。其中，规则链（Rule Chains）是ThingsBoard中一个关键的特性，它允许用户定义和执行自定义的业务规则，实现设备数据的处理、转换和触发特定动作。本篇博客将带你在短短五分钟内学会使用ThingsBoard规则链，让你更灵活地管理你的物联网应用。 规则链概述 规则链，即低代码的逻辑处理模块，简而言之，描述了服务器在接收数据后的处理流程 有 3 个主要组成部分： 消息： 任何传入事件。它可以是来自设备的传入数据、设备生命周期事件、REST API 事件、RPC 请求等。 规则节点： 对传入消息执行的函数。有许多不同的节点类型可以对传入消息进行过滤、转换或执行某些操作。 规则链： 节点通过关系相互连接，因此来自规则节点的出站消息被发送到下一个连接的规则节点。 创建规则链 在控制台的左侧导航栏中，找到并点击“规则链”选项。这将带你进入规则链管理页面，其中你可以查看和管理现有的规则链。 在设备配置管理页面，填写规则链的名称。保存后使用规则链。 规则链元素介绍 节点类型及其功能 在规则链中，有不同类型的节点，每个节点都有特定的功能。常见的节点类型包括： 过滤器节点： 用于筛选数据，只允许满足特定条件的数据通过。 属性集节点：用于更新传入消息的元数据 转换器节点： 用于将数据从一种格式或单位转换为另一种格式或单位。 动作节点： 用于触发特定的动作或通知。 外部节点：用于与外部系统进行交互，提供将消息及数据路由到外部。 示例规则链 在 Thingsboard UI 中，转到规则链部分并打开根规则链。这个示例可以包括一系列节点，如上传遥测、存储日志和RPC调用等。 应用案例 数据过滤和清理 考虑一个场景，设备传感器每秒钟发送一批数据，但我们只对特定阈值以上的数据感兴趣。通过使用规则链的过滤器节点，可以轻松地过滤掉那些不满足条件的数据，只保留我们关心的数据。 在本案例中，我们将配置 ThingsBoard 规则引擎来存储 -40 到 80°C 范围内的所有温度。 我们将使用此脚本进行数据验证： return msg.temperature < -40 || msg.temperature > 80 如果温度在有效范围内，脚本将返回True，否则将返回False。如果脚本返回True，传入消息将被路由到以True关系连接的下一个节点。 现在我们使用Post Telemetry关系将Message Type Switch节点与Script Filter节点连接： 接下来，我们需要使用True关系将Script Filter节点与Save Telemetry节点连接起来。因此所有有效的遥测数据都将被保存： 上传telemetry温度为200，我们将看到设备最新遥测部分中未添加遥测： { "temperature": "200" } 现在修改温度为24，再次发送请求 { "temperature": "24" } 我们将看到遥测数据已成功保存。 实时数据转换 假设设备传感器提供的数据是以摄氏度为单位，但我们更喜欢使用华氏度。通过规则链中的转换器节点，可以将摄氏度转换为华氏度，确保我们得到的数据在我们熟悉的单位中。 下面的案例中，通过配置 ThingsBoard 规则引擎区分设备A和设备B，同时根据设备属性值分别将遥测数据中的温度进行不同处理。 我们使用到属性集节点中的originator attributes 在消息元数据中添加消息发起者属性(client\shared\server)和最新的遥测值，通过isTempCalculate属性区分设备A和设备B 我们会使用脚本来验证传入的温度是否在有效范围内，并返回Success或Failure。 我们将使用此脚本进行数据验证： if (metadata.isTempCalculate && metadata.isTempCalculate === "true") { if (typeof msg.temperature !== 'undefined') { msg.temperature = precisionRound(msg.temperature / 10, 2); } }else{ } function precisionRound(number, precision) { var factor = Math.pow(10, precision); return Math.round(number * factor) / factor; } return {msg: msg, metadata: metadata, msgType: msgTy…

分享｜五分钟了解 ThingsBoard 物联网平台多种部署场景
type: item
date: 2023-12-21T09:31:00+00:00
description: 部署场景概览 单机部署 场景A-All in One 场景B-外部数据库 集群部署 场景C-Docker 部署 场景D-Docker Swarm 部署 场景E-k8s部署 总结与建议 常见问题FAQ ThingsBoard作为一款强大的物联网平台，支持多种部署架构，根据不同的需求和场景，用户可以选择最适合的部署方式。本文将快速概述ThingsBoard支持的三种主要部署场景，并对它们的优缺点以及使用场景进行简要介绍。 不同的部署方式取决于用户对性能要求 生产中或每年连接的设备、资产、客户、客户用户和租户的总数； 每台设备每天的最大和平均消息量； 设备有效负载的最大和平均大小； 每条消息中的平均数据点数量； 用于设备连接的通信协议或集成类型； 实体数据生命周期（以年为单位）。 示例： 100,000 个 LoRaWAN 设备每小时向云端发送一次消息。每个消息结构如下： { "pulseCounter": 1234567, "leakage": false, "batteryLevel": 81 } ThingsBoard 通过 HTTP 或 MQTT 从可用网络服务器之一接收上行链路消息。在这种情况下，ThingsBoard 持续维护 10,000 个设备，典型的消息速率为每秒 100,000 / 3600 = 28 条消息，每条消息传递 3 个数据点。 部署场景概览 单机部署 场景A-All in One 架构 ThingsBoard 平台 与 PostgreSQL 数据库部署在一台机器中 默认的内存队列 硬件要求: 一台具备足够计算和内存资源的服务器，具体要求取决于设备和数据规模。推荐使用至少2核CPU和8GB RAM的服务器。 适用场景： 小规模应用： 单机部署适用于设备数量较少、数据流量相对较小的小规模应用场景。这可以包括家庭自动化系统、小型工业监控等。 开发和测试环境： 在开发和测试过程中，为了简化部署和调试，通常会选择单机部署。这有助于加速开发周期，快速验证新功能和设备接入。 优缺点 优点 缺点 简单易用： 单机部署是最简单的 ThingsBoard 部署方式之一，无需复杂的架构和配置。 可伸缩性有限： 单机部署的主要限制在于其有限的可伸缩性，当设备数量和数据流量增加时，可能会面临性能瓶颈。 资源消耗低： 单机部署相对较轻量，适用于资源有限的环境。 单点故障： 由于所有组件运行在单一服务器上，存在单点故障的风险。一旦服务器发生故障，整个系统将不可用。 快速启动： 由于只涉及一个服务器，启动和配置过程相对迅速。 不适用于大规模应用： 对于大规模 IoT 应用，单机部署可能无法满足高并发和大量设备管理的需求。 实施部署 关于如何进行单机部署，可以参考文章分享｜五分钟学会 ThingsBoard 本地编译运行和 Linux 部署 场景B-外部数据库 与场景A相似，但数据库运行在单独服务器中。 架构 ThingsBoard 平台 外部托管的数据库（PostgreSQL或Cassandra） 内存队列或 MQ 硬件要求： 一台服务器用于运行 ThingsBoard 的核心组件。 一台独立的服务器用于运行数据库，需要足够的计算和内存资源。 适用场景： 外部数据库单机部署适用于需要独立管理数据库的场景，通常是因为对数据库性能、可用性和备份有更高要求。这种部署方式使得数据库可以独立于 ThingsBoard 服务器进行升级、维护和备份。 优缺点 优点 缺点 数据库独立性： 外部数据库的单机部署使得数据库可以独立于 ThingsBoard 服务器运行，提高了系统的灵活性和可维护性。 复杂性增加： 部署和管理两个独立的服务器（ThingsBoard 和数据库）可能会增加部署的复杂性。 性能和可用性： 可以通过专用的数据库服务器来优化数据库性能，提高可用性和容错性。 部署成本： 需要额外的硬件资源和维护成本，可能会增加整体部署的成本。 单点故障： 由于所有组件运行在单一服务器上，存在单点故障的风险。一旦服务器发生故障，整个系统将不可用。 集群部署 场景C-Docker 部署 将 ThingsBoard 的各个核心微服务（如 Core、JS-Executor、Web-UI 等）进行容器化处理。在一台 Docker 主机上，构建、启动并连接这些微服务容器，形成一个高度整合的 ThingsBoard 环境。 架构 单服务器，支持 Docker 容器化部署 ThingsBoard 微服务（传输、规则引擎等） Kafka 消息队列 Cassandra 或 PostgreSQL 数据库 硬件要求： 用于运行 ThingsBoard 的多个微服务的 Docker 容器。 服务器需要足够的计算和内存资源。 根据预期的负载，可能需要使用负载均衡器。 适用场…

分享｜五分钟快速学会 ThingsBoard 打包镜像和 Docker 部署
type: item
date: 2023-12-15T02:20:00+00:00
description: 编译 部署 启动 验证 常见问题FAQ 关于我们 "亿琪软件" "联系我们--商业服务" 编译 在前面的博客中详细介绍了如何进行编译，本篇博客需要确保您的系统已经安装了 Docker 和 Docker Compose。如果尚未安装，您可以通过官方网站获取安装说明。 在进行镜像打包时需要在命令行添加-Ddockerfile.skip=false mvn clean install -DskipTests -Ddockerfile.skip=false 或者可以修改msa目录下的pom.xml，查找dockerfile.skip，并修改为false 编译成功可以看到BUILD SUCCESS，如下图所示 此时在终端输入docker images，查看已经生成的镜像 部署 在微服务启动前，首先修改相关配置 修改.env 根据.env中选择的缓存和数据库，修改对应.env postgres.env 修改docker-compose 注释掉不用的协议 修改容器中数据库配置 修改镜像 启动 ThingsBoard 微服务在 Docker 化环境中运行。在开始之前，请确保您的系统中已安装Docker CE和Docker Compose。 执行以下命令为服务创建日志文件夹，并将这些文件夹的 chown 给 docker 容器用户。为了能够更改用户，使用chown命令，这需要 sudo 权限（脚本将请求 sudo 访问的密码）： ./docker-create-log-folders.sh 执行以下命令来运行安装： --loadDemo- 可选参数。是否加载额外的演示数据 ./docker-install-tb.sh --loadDemo 执行以下命令启动服务： 一段时间后，所有服务都将成功启动，可以在浏览器中打开http://{your-host-ip} ./docker-start-services.sh 如果出现任何问题，您可以检查服务日志中是否有错误。例如，要查看 ThingsBoard 节点日志，请执行以下命令： $ docker-compose logs -f tb-core1 tb-core2 tb-rule-engine1 tb-rule-engine2 tb-mqtt-transport1 tb-mqtt-transport2 或者用来docker-compose ps查看所有容器的状态。用docker-compose logs --f检查所有正在运行的服务的日志。 执行以下命令停止服务： ./docker-stop-services.sh 执行以下命令来停止并完全删除已部署的 docker 容器： ./docker-remove-services.sh 执行以下命令来更新特定或所有服务（拉取较新的 docker 映像并重建容器）： [SERVICE...]- 要更新的服务列表（在 docker-compose 配置中定义）。如果未指定，所有服务都将更新 $ ./docker-update-service.sh [SERVICE...] 验证 访问部署服务，端口默认为80可以省略 查看此时docker中运行的容器docker ps 常见问题FAQ Error changing permissions of ‘/var/lib/postgresql/data’: Permission denied 此问题可对postgres日志及挂载目录使用chmod 777进行解决。或是在docker-compose.postgres.yml中添加volumes挂载。 Error opening log file ‘/var/log/thingsboard/tb-core1-gc.log 若遇到此报错问题，可能是因为在未授予配置文件权限的情况下进行了一次启动。这时已经生成了挂载文件，即使再次对配置文件赋予权限，仍然会导致上述报错的出现。 对日志目录和挂载目录重新赋权chown -R 799:799 ./tb-node/log 关于我们 "亿琪软件" 上海亿琪软件有限公司成立于 2016 年，专注于 5G 通信、AI 人工智能、边缘计算和大数据网络安全多项技术领域，致力于物联网领域前沿技术的创新，为用户提供全方位、智能化和安全的物联网解决方案。 2023 年，公司发布“YiFUSION ｜工业边缘智能融合一体机”产品，为工业客户提供一整套的边缘计算+AI 能力：高性能数据采集、多类型数据融合、AI 算法集成、云端业务对接。在边缘网关的基础上，集成了 IoT 平台的边缘协同能力、本地 Web SCADA 和 HMI 功能、本地数据存储、边缘 AI 视频分析、行业应用集成等。 2022 年，公司推出 “YiCLOUD ｜亿琪云”一站式物联网应用解决…

分享｜五分钟快速学会 ThingsBoard DashBoard 基本操作
type: item
date: 2023-12-05T02:40:00+00:00
description: 引言 快速使用 创建新的 Dashboard 添加 Widgets 到 Dashboard 数据源的配置 更新频率 小部件操作 小结与进一步探索 关于我们 "亿琪软件" "联系我们--商业服务" 引言 ThingsBoard Dashboard 的作用与优势 ThingsBoard Dashboard 是一款开源的物联网平台，提供了强大的数据可视化功能。其主要作用和优势包括： 实时监控与控制： ThingsBoard Dashboard 可以实时监控连接到平台的设备的数据，并支持远程控制设备。 灵活的 Widgets： Dashboard 支持各种不同类型的 Widgets，包括图表、地图、仪表盘等，可以根据用户的需求自由配置。 设备管理： 通过 Dashboard，用户可以方便地管理和配置连接到 ThingsBoard 的各类设备。 用户友好的界面： ThingsBoard Dashboard 提供直观友好的用户界面，使得用户无需深入学习即可快速上手。 快速使用 仪表板工具栏 在开始使用仪表板之前，请熟悉其界面，了解哪些功能负责哪些操作。 仪表板工具栏允许您管理 状态、 布局、 设置、 别名、 过滤器、 版本控制、配置时间窗口、 进入编辑模式以及使用工具栏中相应的图标添加新的小部件。 其中一些图标（状态、布局、设置、实体别名、过滤器、版本控制、添加新小部件）仅在“编辑”模式下可见。所有其他图标在“查看”和“编辑”模式下均可见。您可以隐藏这些图标或使用设置将工具栏配置为默认最小化。 创建新的 Dashboard 要添加新的仪表板，您应该： 通过屏幕左侧的主菜单导航到“仪表板”页面。然后，点击屏幕右上角的“+”号，并从下拉菜单中选择“创建新仪表板”； 在打开的对话框中，需要输入仪表板标题，描述是可选的。点击“添加”； 创建仪表板后，它将自动打开。单击右上角的“保存”按钮保存。 您的第一个仪表板已成功创建。当您继续添加新仪表板时，它们将显示在列表顶部。此默认排序基于创建时间戳。 添加 Widgets 到 Dashboard Widgets 的配置选项 所有物联网仪表板都是使用 ThingsBoard 小部件构建的。小部件用于可视化数据、远程设备控制、警报管理以及显示静态自定义 HTML 内容。 打开仪表板并进入编辑模式，单击屏幕顶部的“+ 添加小部件”图标，或者（如果这是此仪表板上的第一个小部件）单击屏幕中间的大“添加新小部件”标志以打开“选择小部件捆绑包”对话框; 选择一个小部件包，例如“图表”。要快速找到所需的小部件，请通过单击放大镜图标并输入小部件的名称来使用搜索栏； 选择一个小部件，例如“时间序列折线图”，然后单击它以打开“添加小部件”对话框窗口； 指定数据源，添加数据键，然后单击“添加”按钮。最后，应用您的更改； 数据源的配置 添加实体别名 别名是对小部件中使用的单个实体或一组实体的引用。别名可以是静态的或动态的。要创建仪表板，您首先需要创建别名来定义将使用实体的数据。别名可以像引用单个设备一样简单，也可以像为列表中的特定资产创建复杂的搜索查询一样复杂。 在打开的实体别名窗口中，单击对话框左侧的“添加别名”按钮。 在打开的对话框添加别名中，输入别名的名称，选择过滤器类型。从“类型”下拉菜单中选择，并输入所需设备的名称（开始输入名称，系统会自动找到该名称）。 更新频率 时间窗 仪表板时间窗口表示将用于获取时间序列或警报数据的时间间隔和聚合函数。对于时间序列小部件，ThingsBoard 会使用与时间窗口匹配的时间戳来获取遥测数据。对于警报小部件，ThingsBoard 会使用与时间窗口匹配的创建时间来获取警报。 在实时模式下，小部件不断从服务器接收更新，并自动仅向您显示与当前时间戳的时间窗口匹配的数据； 在历史模式下，小部件仅在初始加载期间接收数据，并且不会通过 WebSocket 发出更新 有时时间间隔很长，您希望更近地查看数据，因此，您需要放大，按住鼠标进行拖动。要缩小到图表的原始大小，请双击小部件。 小部件操作 添加动作按钮 操作功能可以视为仪表板状态之间或不同仪表板之间的导航。操作允许快速轻松地配置到创建状态的转换、转移到其他仪表板，甚至更新您所在的仪表板。根据小部件的不同，操作源也有所不同。 在小部件的编辑模式下，移至最后一个单元格“操作，单击窗口右侧的“+”图标添加新操作。 在下拉菜单“类型”中，选择仪表板状态操作类型。 选择操作类型后，将出现下拉菜单“目标仪表板状态”。选择您想要转换到的先前创建的状态。 现在您可以看到配置的操作，因此您可以仔细检查操作源、图标和操作类型。 小结与进一步探索 进一步学习高级定制和功能 虽然 ThingsBoard Dashboard 的基本使用非常简单，但平台还提供了许多高级定…

分享｜五分钟学会 ThingsBoard 本地编译运行和 Linux 部署
type: item
date: 2023-12-01T03:38:00+00:00
description: 本地部署 准备条件 源码下载 编译 项目运行 Linux 部署 安装Java 11 ThingsBoard服务安装 配置 ThingsBoard 数据库 ThingsBoard 配置 运行安装脚本 启动 ThingsBoard 服务 常见问题FAQ 关于我们 "亿琪软件" "联系我们--商业服务" 本地部署 准备条件 ThingsBoard 服务在 Java 11 上运行。您可以使用以下命令检查安装情况： java -version 源码下载 源码地址：https://github.com/thingsboard/thingsboard.git git clone https://github.com/thingsboard/thingsboard.git 在源码根目录找到pom.xml，查找license-maven-plugin，如下图，注释掉整个plugin。 编译 cd thingsboard mvn clean install -DskipTests !!! warning "注意！！！有时因为各种奇怪原因导致编译失败，这时可以删除本地的maven仓库重新下载依赖" 项目运行 修改thingsboard.yml中数据库相关配置，替换用户名密码。 将dao模块下，sql文件拷贝至application模块data/sql目录中 运行 ThingsboardInstallApplication，完成thingsboard表结构和数据的初始化。默认情况下，使用系统管理员sysadmin@thingsboard.org，sysadmin进行登录 。当然，初始化用户可以在配置文件中自定义。 接着运行ThingsboardServerApplication，访问http://localhost:8080/ 自动跳转至登录页面 Linux 部署 安装Java 11 sudo apt update sudo apt install openjdk-11-jdk ThingsBoard服务安装 下载安装包。 wget https://github.com/thingsboard/thingsboard/releases/download/v3.6.1/thingsboard-3.6.1.deb 或者将编译好的二进制文件上传至 Linux scp /Users/bijw/devel/thingsboard/application/target/thingsboard.deb pi@linux ip: 将 ThingsBoard 安装为服务 sudo dpkg -i thingsboard.deb 配置 ThingsBoard 数据库 PostgreSQL 安装 # install **wget** if not already installed: sudo apt install -y wget # import the repository signing key: wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - # add repository contents to your system: echo "deb https://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list # install and launch the postgresql service: sudo apt update sudo apt -y install postgresql-15 sudo service postgresql start ThingsBoard 配置 编辑 ThingsBoard 配置文件 sudo nano /etc/thingsboard/conf/thingsboard.conf 将以下行添加到配置文件中。不要忘记将PUT_YOUR_POSTGRESQL_PASSWORD_HERE替换为您真实的 postgres 用户密码： # DB Configuration export DATABASE_TS_TYPE=sql export SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/thingsboard export SPRING_DATASOURCE_USERNAME=postgres export SPRING_DATASOURCE_PASSWORD=PUT_YOU…

分享｜五分钟熟悉 ThingsBoard 前端二次开发。
type: item
date: 2023-11-10T02:28:00+00:00
description: 五分钟系列文章一：五分钟熟悉 ThingsBoard 前端二次开发。 介绍 准备工作 快速入门 修改 LOGO 修改色系 修改文本 定制化开发 自定义菜单 添加按钮 结语 关于我们 "亿琪软件" "联系我们--商业服务" 介绍 ThingsBoard 简介 ThingsBoard 是一个开源的物联网平台，提供强大的设备管理、数据采集、数据分析等功能。ThingsBoard 的前端使用 Angular 开发，可以通过修改前端代码来满足特定的业务需求。 !!! question 前端进行二次开发有什么优势呢？ [x] 定制化需求满足： 在某些情况下，ThingsBoard 默认功能可能无法满足某些特殊功能的需求，通过前端二次开发，可以集成自定义的业务流程，将 ThingsBoard 与其他系统或服务更紧密地结合，提高系统的整体效能。 [x] 灵活性强：前端二次开发可以根据业务需求进行灵活的修改，可以添加新的页面、修改现有页面的布局和内容、修改现有页面的样式、添加新的功能、修改现有功能的逻辑等。 [ ] 开发效率高：前端二次开发可以利用现有的基础设施，可以快速地开发出满足业务需求的应用。 [ ] 成本低：前端二次开发不需要重新开发整个应用，可以节省开发成本。 准备工作 安装 ThingsBoard 要开始 ThingsBoard 前端二次开发，首先需要安装 ThingsBoard。 以3.4.4版本为例 git clone https://github.com/thingsboard/thingsboard.git 编译前端代码 ThingsBoard UI 部分可以单独作为一个模块启动，并且对node版本有所要求，因此这里选择使用nvm来管理node cd thingsboard/ui-ngx nvm use 16.17 yarn install yarn start 快速入门 修改 LOGO !!! success "修改 LOGO 有两种方式。" 替换LOGO所在位置的图片assets/logo_title_white.svg， 另一种方式是修改home.component.ts中logo = 'assets/logo_title_white.svg'; 修改色系 !!! success "修改色系也是非常简单的操作！" 只需要找到对应scss文件ui-ngx/src/theme.scss，并修改这段代码$tb-primary-color: #4779bd;即可完成 ThingsBoard 页面色系的修改，同时还可在theme.scss中修改其他组件颜色。 修改文本 !!! success "ThingsBoard 文本是根据语言自动进行识别的。" 在ui-ngx/src/assets/locale中可以找到对应的json文件。可以在原本的字段中进行修改或是参照相同的结构新增。 定制化开发 !!! info "在进行一些菜单按钮的修改之前，首先要了解 ThingsBoard 前端代码的结构" 文件结构 angular.json //angular框架的工作目录配置文件 src //所有源码所在地 app //核心代码——页面布局及数据相关 assets //静态资源——图片、国际化配置 environments //环境变量 scss //提取出的公共样式 theme.scss //主题配置 style.scss //样式定义 thingsboard.ico //LOGO 模块和组件 主要的页面布局相关代码位于ui-ngx/src/app/modules/home目录下。这个目录下的代码展示了 ThingsBoard 页面是如何由各种模块和组件组装而成的。这种清晰的模块化结构使得定制化工作更为直观和可控。 主题和样式 除了模块和组件，主题和样式也是前端开发中需要注意的关键点。ThingsBoard 的主题和样式主要由两个文件管理，分别是theme.scss和style.scss。ThingsBoard 中UI框架使用的是Material-UI，并已经在style.scss中定义好了组件的样式。这意味着，在使用时，开发者只需要进行极小的细节调整，有时甚至无需修改，就能达到定制化的效果。 自定义菜单 !!! success "以新增一个报表功能为例。" 在menu.service.ts中找到buildXXXHome和buildXXXMenu， buildXXXHome对应的是首页的大图标菜单，buildXXXMenu对应的是侧边栏菜单。XXX分别代表Sysadmin、Tenant、Customer三个不同的页面，选择在你想要修改的页面对应的函数下，添加以下结构代码 { id: guid(), name: 'report.repor…

产品｜ThingsBoard 二次开发之报表系统YiREPORT
type: item
date: 2023-11-01T06:01:00+00:00
description: 目录 产品概述 有人可能会问：这些数据在 ThingsBoard 中都能找到，为什么还需要做成报表呢？ 客户需求与应用场景 应用场景 设计概述 使用流程 效果展示 常见问题FAQ 关于我们 "亿琪软件" "联系我们--商业服务" YiREPORT 报表生成工具 演示 产品概述 YiREPORT 是一个基于 ThingsBoard 的报表系统，它可以生成各种类型的报表，满足用户的不同需求。 有人可能会问：这些数据在 ThingsBoard 中都能找到，为什么还需要做成报表呢？ 答案是，报表可以帮助用户更有效地分析数据。通过报表，用户可以直观地查看数据，并发现数据中的趋势和异常情况。这对于用户做出正确决策和优化业务至关重要。 客户需求与应用场景 YiREPORT解决了以下客户需求： * 模板设计：用户可以使用 Jasperreport 的设计工具来创建自定义报表模板，包括报表布局、数据源和参数设置。 * 数据来源：YiREPORT 可以从 YiCONNECT 的数据库中实时获取数据，确保报表内容始终是最新的。 * 配置文件生成：提供了配置文件生成工具，使用户能够轻松地绑定静态数据与模板参数，简化报表生成流程。 * 模板和配置文件存储：YiREPORT 安全地存储用户上传的模板和配置文件，确保数据的机密性和完整性。 * 版本控制：提供版本控制功能，使用户能够跟踪模板和配置文件的变更，有助于维护和管理报表模板。 * 操作便捷：用户只需上传一个 `Zip` 压缩包，其中包含一个 `jrxml` 模版和配置文件以及需要填充的图片。 应用场景 YiREPORT 可应用于各种物联网应用，例如： * 设备监控：生成设备信息报表，用于监控设备的详细情况。 * 数据分析：生成数据分析报表，用于分析数据趋势和异常情况。 * 业务报表：生成业务报表，用于展示业务数据。 设计概述 逻辑设计架构图如下： 用户只需要上传一个文件，其余繁琐的操作交由系统自动处理，即可实现报表的生成，并且使用数据库存储模版与配置文件等，方便使用者后续使用。 使用流程 YiREPORT 的使用流程如下： 首先在 Jasperreport Studio 中设计好一个模版 第二步，将模版与配置文件（如下图，可使用 YiREPORT 提供的 JSON 配置工具生成，只需进行简单的鼠标点击即可实现）打包成一个 Zip 压缩文件并上传。 同时呢，允许用户在报表管理界面预览历史报表以及进行模版的管理 效果展示 设备信息总览报表 常见问题FAQ Q1: 如何设计报表模板？ A1: 报表模板可以使用 Jasperreport Studio 中的设计工具创建，包括定义报表布局、数据源和参数。详细步骤请参考Jasperreport Studio 文档。 Q2: 如何生成配置文件？ A2: 使用 YiREPORT 提供的配置文件生成工具，上传模板后，可以轻松绑定静态数据和模板参数，生成配置文件。 Q3: 如何管理模板和配置文件的版本？ A3: YiREPORT 提供版本控制功能，允许用户跟踪模板和配置文件的变更，以便维护和管理不同版本的报表模板。 Q4: 可以生成哪种类型的报表？ A4: YiREPORT 支持总览报表和单实体详细报表。总览报表可以通过导航栏按钮生成，而单实体报表通过点击数据后的 `PDF` 按钮生成。 Q5: 如何预览历史生成的报表？ A5: 用户可以在 YiREPORT 中预览历史生成的报表，以便查看报表的内容和格式。 关于我们 "亿琪软件" 上海亿琪软件有限公司成立于 2016 年，专注于 5G 通信、AI 人工智能、边缘计算和大数据网络安全多项技术领域，致力于物联网领域前沿技术的创新，为用户提供全方位、智能化和安全的物联网解决方案。 2023 年，公司发布“YiFUSION ｜工业边缘智能融合一体机”产品，为工业客户提供一整套的边缘计算+AI 能力：高性能数据采集、多类型数据融合、AI 算法集成、云端业务对接。在边缘网关的基础上，集成了 IoT 平台的边缘协同能力、本地 Web SCADA 和 HMI 功能、本地数据存储、边缘 AI 视频分析、行业应用集成等。 2022 年，公司推出 “YiCLOUD ｜亿琪云”一站式物联网应用解决方案。公司的业务涵盖了智慧城市、智慧农业、智能工厂和智慧园区等多个领域，公司软硬件产品和解决方案获得华为技术认证，得到中国移动 OCP 认证，公司还是边缘计算产业联盟 ECC 成员。 "联系我们--商业服务" 网站：http://yiqisoft.cn 邮件：support@yiqisoft.cn 电话：021-68863086 手机：186-1666-9123

分享｜ThingsBoard 扩展视频接入和实时点播/直播功能
type: item
date: 2023-09-08T05:22:00+00:00
description: 目录 关注我们 关注 ThingsBoard 微信公众号 访问 ThingsBoard 中文社区网站 ThingsBoard 扩展视频接入和实时点播/直播功能 社区经常问到的问题：TB 怎么接视频？ 我们要实现的目标（需求分析） 技术实现原理（解决方案） 架构设计 简单架构设计逻辑 复杂产品化框图 网络摄像头（IPC） USB 摄像头（WebCam） 流媒体服务器 YiMEDIA 效果展示 IPC 视频监控 360P 720P 1080P 关于亿琪软件 关注我们 关注 ThingsBoard 微信公众号 手动增加微信公众号：thingsboard_cn 访问 ThingsBoard 中文社区网站 访问网址：http://www.thingsboard.club ThingsBoard 扩展视频接入和实时点播/直播功能 本文所涉及到的视频技术主要是 ffmpeg, rtsp, onvif, webrtc, 如果不太了解的话，建议去先预习一下。 另外，本文所描述的应用场景主要是跟流媒体服务相关，没有过多的 ThingsBoard 配置管理。 社区经常问到的问题：TB 怎么接视频？ !!! success "答案是：肯定的，支持！" 这个问题困扰着很多人，有的解决了，有的还在苦苦挣扎中，那这篇文章将可能帮助那些还没有解决的伙伴一个思路和指引。 我们要实现的目标（需求分析） !!! question "视频采集要简单（点几下鼠标，自动发现或输入连接信息）" **不管是 USB 摄像头还是 IPC 网络摄像头，要很 *方便 *的管理和视频采集。** - USB 摄像头一般都是 WebCam，通过 USB 接在网关或主机上，比如 Linux 下： `/dev/video0, /dev/video1` - IPC 网络摄像头： 1. 绝大部分都支持 `ONVIF` 协议，对接相对便捷，输入用户名和密码，自动获取 `StreamURI；` 1. 不支持 `ONVIF` 协议，可以采用 `RTSP` 协议进行对接，配置起来相对比较麻烦些，必须要知道`摄像头流播放地址`，就是 `StreamURI` ； 1. 最好是支持 `POE` 供电的网络摄像头，这样就不需要为摄像头拉电源线和转换器； !!! question "在 Web 浏览器查看视频流（谁还愿意安装一个 App 来看视频呢？）" - 坚决抵制（*客户要求*）安装 App 来查看视频，是不是太原始了； - 能够兼容绝大部分的浏览器（对不起：IE 不支持 :fontawesome-regular-face-sad-cry: ）； !!! question "查看视频流延迟尽量小（< 1 秒）" **客户需求肯定是希望视频流越快越好，最好没有延迟和卡顿（ *基本做不到* :material-emoticon-sad:，那就尽量提高查看视频效率吧** - 人眼感知度在 `1秒` 内，还是可以忍受的范围，市面上大部分摄像头也就能达到这个级别； - 视频和音频同步播放，怕就怕在声音来了图像还没有到，那种感觉太难受了； - 不同的播放终端设备，其实延迟都不一样，比如 `HLS` 协议相对就比较延迟一些； - 采用更高效的 `WebRTC` 协议，的确效果改善不少（需要浏览器支持）； !!! question "按需点播/直播，空闲时节省服务器资源" ** *占着茅坑不拉屎*，就是形容某些没有点播/直播的时候网关/服务器还占着资源不释放，所以 `按需` 才是王道。** - 没有点播/直播时，要处于 `suspend 或 standby` 的状态，以便节省计算和网络资源； - *即点即播*，一旦有客户端发起点播指令，应该在 `几百毫秒` 之内完成 `采集->编码->解码->视频流` 这一系列工作； - *按需*，根据需要来驱动视频流的相关流程和处理，是客户所认同的观点。 技术实现原理（解决方案） 架构设计 简单架构设计逻辑 !!! info "架构" 如上图所示，需要一系列的组建来完成这个架构设计，我司经过多年的经验和精密的设计，完成了高效的框架，以便满足在边缘端实现视频流处理。 复杂产品化框图 !!! success "产品级" 要想达到产品级的要求，需要更多逻辑来配合上述简单设计，如果需要产品资料可与 [文末](#_8) 管理员联系。 网络摄像头（IPC） !!! note "支持 ONVIF 协议" 这是首要条件，也是必备条件，请认准 ONVIF 标志在你的网络摄像头上支持程度。 - [x] 海康、大华、TPLINK、华为等工业摄像头都是支持这个 ONVIF 协议的产品； - [x] 支持 PoE 接入是最好的了，方便快捷，一根网线搞定； - [ ] 家庭监控的摄像头基本都不支持 ONVIF 协议…

开源｜ThingsBoard FAQ 使用和二次开发常见问题汇总六
type: item
date: 2023-07-13T01:30:00+00:00
description: 目录 关注我们 关注 ThingsBoard 微信公众号 访问 ThingsBoard 中文社区网站 ThingsBoard 开源 IoT 平台有什么优势和劣势 优势 劣势 ThingsBoard 如何显示告警信息？ Dashboard 直接显示 历史数据库查询 ThingsBoard 是否可以作为物联网协议解析？标识解析？ 建议 ThingsBoard 如何统计资产相关的数据？ 关于 亿琪软件 关注我们 关注 ThingsBoard 微信公众号 手动增加微信公众号：thingsboard_cn 访问 ThingsBoard 中文社区网站 访问网址：http://www.thingsboard.club 往期文章中，总结了很多 FAQ 问答，得到很多使用者的反馈，最近问题并没有那么多，总结如下。 ThingsBoard 开源 IoT 平台有什么优势和劣势 前期，我们针对 TB 平台的优势和劣势做过一些总结，可以在本博客搜索关键词即可定位到文章。 优势 一键部署：单一部署环境下，启动 jar 包即可完成部署； 开箱即用：配置都已经内置在 demo 环境下， 直接可以测试； 多租户：原生多租户模式，可以方便租户之间的隔离； 横向扩展：微服务环境下，可以支持横向扩展； 数据收集：统一的设备管理，数据收集方便快捷； 微服务：原生支持 docker，使用 docker compose 即可部署； 可视化：内置多种可视化工具，直接将遥测数据展现出来。 劣势 二次开发难度高，主要是有其独特的设计风格； 前端是 Angular 开发，框架重，难以驾驭； 封装层次高，理解其设计原理难度大； 不适合大项目使用，业务功能单一； 遇到问题，没有官方技术支持，全靠自己理解和判断； 测试很好用，商用很难，用好更难。 ThingsBoard 如何显示告警信息？ 告警信息，是由规则引擎产生，队列中有，数据库中也有，通过 WebSocket 订阅也有，使用方法多种多样。 Dashboard 直接显示 可以直接使用开源版本内置的 Dashboard 来直接展示，并且可以直接进行一些操作：关闭，确认等； 还可以修改/二次开发其 widget，使得功能更加丰富和完善； 既可以用规则引擎来实现告警，也可以通过 device profile 来定义一些基本规则； 历史数据库查询 那就是自己开发代码来读取数据库历史记录，进行一系列的增删改查操作，如果能基于开源版本的前端来修改，那就更好了。 ThingsBoard 是否可以作为物联网协议解析？标识解析？ 其实，不建议使用 TB 来作为协议解析或标识解析，不合适，因为 TB 有自身的设计理念，不能与其他的 IoT 平台来进行对比着使用，其设计理念在于对 Thing 的管理，和 Board 的展示。 建议 使用 TB Gateway 软网关进行协议解析，再与服务器交互； 使用第三方协议解析工具或设备，进行最底层的数据解析和处理，再使用 Gateway API 进行数据交互； 直接在物联网终端感知层二次开发，满足 TB transport 协议入口数据格式，满足数据接受和处理。 ThingsBoard 如何统计资产相关的数据？ 首先，需要了解相关的基础知识，比如：资产实体和其他实体之间的关系； 其次，针对资产相关的数据处理作用是什么？是不是一定需要用到资产相关的概念？ 最后，针对资产相关的数据处理，与其他实体的处理上是一样流程； 这里，需要说明的是，资产本身并没有 API 暴露出来可以直接使用与数据相关的操作，也就说，都是需要基于 设备来完成数据采集，再通过关联来迁移数据到资产实体中。 关于 亿琪软件 上海亿琪软件有限公司成立于 2016 年，专注于 5G 通信、AI 人工智能、边缘计算和大数据网络安全多项技术领域，致力于物联网领域前沿技术的创新，为用户提供全方位、智能化和安全的物联网解决方案。 2023 年，公司发布“YiFUSION ｜工业边缘智能融合一体机”产品，为工业客户提供一整套的边缘计算+AI 能力：高性能数据采集、多类型数据融合、AI 算法集成、云端业务对接。在边缘网关的基础上，集成了 IoT 平台的边缘协同能力、本地 Web SCADA 和 HMI 功能、本地数据存储、边缘 AI 视频分析、行业应用集成等。 2022 年公司推出 “YiCLOUD ｜亿琪云”一站式物联网应用解决方案。公司的业务涵盖了智慧城市、智慧农业、智能工厂和智慧园区等多个领域，公司软硬件产品和解决方案获得华为技术认证，得到中国移动 OCP 认证，公司还是边缘计算产业联盟 ECC 成员。 感知物联，畅快无限。 联系我们 网站：http://yiqisoft.cn 邮件：support@yiqisoft.cn 电话：021-68863086 手机…