规则链概述 创建规则链 规则链元素介绍 应用案例 总结与建议 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: msgType}; 上传一个温度值，确保规则链正确地执行了转换脚本并将数据保存。 { "temperature": "200" } 设备A： 设备B： 设备状态监控 在这个场景中，我们想要监控设备的状态，当设备状态发生变化时触发通知。通过规则链的动作节点，我们可以设置条件，例如设备断线或异常状态，以触发相应的通知或报警动作。 本节的案例，通过配置 ThingsBoard 规则引擎，当温度不在-40～80之间时发送设备告警，并向外部MQTT中发送原始数据信息 遥测数据上传成功后，通过script脚本判断温度是否在正常范围内，并添加新增告警和清除告警节点 我们将使用此脚本进行新增告警的逻辑处理： var details = {}; details.temperature = msg.temperature; if (metadata.prevAlarmDetails) { details = JSON.parse(metadata.prevAlarmDetails); //remove prevAlarmDetails from metadata delete metadata.prevAlarmDetails; //now metadata is the same as it comes IN this rule node details.count = details.count + 1; }else { details.count = 1; } return details; 可以将规则链配置为使用转换节点链，以将正确的有效负载发送到MQTT代理。在成功发布消息的情况下，原始消息将通过Success链传递到下一个节点，否则将使用Failure链。 配置MQTT节点： 向Device发送一条带有温度 = 200 的遥测请求，查看设备的告警页面 同时MQTT接收到规则链发送的JSON { "tenantId": { "entityType": "TENANT", "id": "4d22a670-a52a-11ee-a5a6-494c5c858852" }, "customerId": { "entityType": "CUSTOMER", "id": "13814000-1dd2-11b2-8080-808080808080" }, "type": "General Alarm", "originator": { "entityType": "DEVICE", "id": "33441de0-a5e5-11ee-a3e5-494c5c858852" }, "severity": "CRITICAL", "status": "ACTIVE_UNACK", "startTs": 1703837072025, "endTs": 1703837072025, "ackTs": 0, "clearTs": 0, "details": { "temperature": 200, "count": 1 }, "propagate": false, "propagateToOwner": false, "propagateToTenant": false, "propagateRelationTypes": [], "id": { "entityType": "ALARM", "id": "e5ea5cd0-a620-11ee-948b-d78826584bf8" }, "createdTime": 1703837072157, "name": "General Alarm" } 总结与建议 通过这篇博客，你将能够快速上手使用ThingsBoard规则链，包括规则链的元素介绍、实际应用示例、总结和建议等，后续将会进一步深入介绍和展示如何在ThingsBoard中灵活使用规则链，使读者能够在短时间内掌握这一强大功能。
分享｜五分钟了解 ThingsBoard 物联网平台多种部署场景
部署场景概览 单机部署 场景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，上一篇文章分享｜五分钟快速学会 ThingsBoard 打包镜像和 Docker 部署中有简单的案例（虽然是单节点）。 场景D-Docker Swarm 部署 将 ThingsBoard 的各个微服务（包括 Core、JS-Executor、Web-UI等）容器化，并在多个 Docker 主机上构建 Swarm 集群，其中包括 Swarm Manager 和多个 Worker 节点。 架构 Docker Swarm 集群 ThingsBoard 微服务（传输、规则引擎等） Kafka 消息队列 Cassandra 或 PostgreSQL 数据库 Docker单节点部署与Docker Swarm集群对比 特性 Docker Compose Docker Swarm 部署复杂度 相对简单，小规模生产环境 较为复杂，适用于小型到中型生产环境 可扩展性 适用于小规模，不太适合横向扩展 提供横向扩展和自动化管理，适用于大规模应用 高可用性 对高可用性的支持相对较弱 多节点集群提供高可用性，无单点故障 学习成本 低，快速上手 较高，学习曲线较陡峭 资源需求 较低，适用于轻量级应用 需要更多硬件资源，适用于大规模复杂应用 场景E-k8s部署 支持微服务架构，可扩展到数百万台设备。 架构 Kubernetes 集群 ThingsBoard 微服务（传输、规则引擎等） Kafka 消息队列 Redis 分布式缓存 Cassandra 或 PostgreSQL 数据库 硬件要求： 用于运行 ThingsBoard 的多个服务的服务器群集。 每个服务器需要足够的计算和内存资源。 根据预期的负载，可能需要使用负载均衡器。 适用场景： 微服务架构集群部署适用于大规模 IoT 应用，其中包含大量设备、高并发数据处理和复杂的业务逻辑。这种部署方式允许横向扩展，以适应不断增长的设备和数据负载。 优缺点 优点 缺点 高度可伸缩： 微服务架构允许根据需要添加或移除微服务实例，以适应负载的变化。 部署和管理复杂性： 微服务架构的部署和管理相对复杂，需要了解容器编排和微服务治理的概念。 灵活性和模块化： 微服务可以独立开发、部署和维护，提高了系统的灵活性和模块化程度。 资源消耗较大： 相对于单机部署，微服务架构可能需要更多的硬件资源。 容器化部署： 使用容器化技术，可以更方便地部署、升级和管理微服务。 高可用性： 部署在集群中的微服务可以通过负载均衡器提高系统的可用性和容错性。 总结与建议 不同场景适用于不同规模和需求的物联网解决方案。单机部署适用于开发环境和初创公司，而微服务架构集群部署适用于大规模的物联网应用。选择正确的部署场景取决于TCO、性能和高可用性的要求。在投入生产之前，建议设置数据备份脚本并定期将数据库快照上传到持久存储，以确保系统的可靠性和稳定性。希望本文对您理解ThingsBoard的部署场景提供了帮助。 常见问题FAQ Q：Docker Swarm 与 Kubernetes（K8s）如何取舍？ A：Docker Swarm 适用于轻量级、简单的部署，相较于 K8S 更简单，适用于较小规模和较简单的部署需求。 以下是我总结的两者间的对比： 使用 Kubernetes（K8s） 使用 Docker Swarm 使用场景 使用场景 大规模集群管理： 当需要部署和管理大规模的微服务集群时，K8s提供了强大的自动化和调度功能，适用于复杂的场景。 简单部署需求： Docker Swarm 更适合对部署要求相对简单的场景，特别是对于初学者或小规模的部署。 优点 优点 强大的自动化和编排： K8s 提供了强大的自动化能力，包括自动扩展、滚动升级、服务发现等。 简化的架构： Docker Swarm 的架构相对简单，易于理解和使用，适用于小规模团队和简单应用场景。 广泛的社区支持： K8s 有庞大的社区，提供了大量的文档、教程和支持资源。 集成 Docker： 与 Docker 无缝集成，对于已经使用 Docker 的用户来说更加直观。 多云环境适用性： K8s 能够在多云环境中运行，使其成为跨云平台部署的理想选择。 启动速度快： 相对于 K8s，Docker Swarm 的启动速度更快，更适用于快速部署和测试。 缺点 缺点 学习曲线较陡峭： K8s 的学习曲线相对较陡峭，初学者可能需要一些时间适应。 功能相对简化： Docker Swarm 在功能上相对于 K8s 较为简化，可能在复杂场景下缺乏一些高级功能。 资源消耗较大： K8s 在一些较小规模的部署中可能显得过于繁重，对资源的要求较高。 生态系统相对狭窄： 相较于 K8s，Docker Swarm 的生态系统相对狭窄，可用的插件和工具相对较少。
编译 部署 启动 验证 常见问题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 ｜亿琪云”一站式物联网应用解决方案。公司的业务涵盖了智慧城市、智慧农业、智能工厂和智慧园区等多个领域，公司软硬件产品和解决方案获得华为技术认证，得到中国移动 OCP 认证，公司还是边缘计算产业联盟 ECC 成员。 "联系我们--商业服务" 网站：http://yiqisoft.cn 邮件：support@yiqisoft.cn 电话：021-68863086 手机：186-1666-9123
分享｜五分钟快速学会 ThingsBoard 对接物联网网关
如何将物联网网关与ThingsBoard集成？ 准备工作 ThingsBoard 对接物联网网关的步骤 配置ThingsBoard设备 配置ThingsBoard仪表板 与映翰通网关IG902建立连接 验证连接 小结与进一步探索 常见问题FAQ 关于我们 "亿琪软件" "联系我们--商业服务" 如何将物联网网关与ThingsBoard集成？ 准备工作 安装配置映翰通网关 连接设备 添加控制器 添加测点 ThingsBoard 对接物联网网关的步骤 配置ThingsBoard设备 在 ThingsBoard 中创建一个新设备 转到设备管理页面，创建设备并为设备分配唯一标识符和其他必要的信息。 添加凭证，获取设备的 Access Token，以便设备与平台进行通信。 连接成功后自动同步控制器与遥测数据 配置ThingsBoard仪表板 在 ThingsBoard 中创建仪表板 转到仪表板管理页面，创建一个新仪表板，为其分配一个易记的名称。 添加设备相关的控件，例如图表、指示灯等，以显示设备的实时数据。 与映翰通网关IG902建立连接 找到物联网连接或 MQTT 配置选项 进入映翰通网关 IG902 的管理界面。 输入 ThingsBoard 的 MQTT 服务器地址、端口和认证信息 添加 MQTT 消息发布 保存配置并启动网关 验证连接 确保设备状态显示为在线 返回 ThingsBoard 仪表板，检查仪表板上的控件，确保它们显示来自映翰通网关 IG902 的实时数据。 小结与进一步探索 通过本篇文章的学习，读者可以快速的了解并学会如何使用 ThingsBoard 进行与物联网网关的对接。本篇文章使用的是映翰通网关，读者可自由更换进行配置，步骤总体来说是大同小异的。 ThingsBoard平台集成网关的优势 集成的好处： 将物联网网关与 ThingsBoard 平台集成，带来了实时监控、数据可视化、分析和报告的诸多好处。这种集成不仅简化了数据管理，还提高了系统的可维护性，加强了对设备性能的洞察。 潜在的应用场景： 物联网网关与 ThingsBoard 的集成在各个行业都有广泛的应用场景。从工业自动化到智能城市，从农业到医疗保健，这种集成能够为不同领域的物联网应用提供更强大、高效的解决方案。 常见问题FAQ 物联网网关无法连接到ThingsBoard平台，应该如何排除问题？ 首先，检查物联网网关的配置是否正确，包括 MQTT 服务器地址、端口和认证信息。确保网络连接正常。 验证ThingsBoard服务器的可访问性。同时，查看ThingsBoard的日志以获取更多详细信息。 关于我们 "亿琪软件" 上海亿琪软件有限公司成立于 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
引言 快速使用 创建新的 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 的规则引擎是其强大功能之一，通过深入学习规则引擎的高级用法，可以实现更复杂的数据处理和设备响应逻辑。 Widgets 的自定义： ThingsBoard 提供了一些默认的 Widgets，但用户也可以通过学习如何自定义 Widgets，满足个性化的需求，甚至开发自己的 Widgets。 数据源与数据存储： 了解 ThingsBoard 如何处理数据源和存储，有助于更好地管理和分析物联网设备产生的海量数据。 关于我们 "亿琪软件" 上海亿琪软件有限公司成立于 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
本地部署 准备条件 源码下载 编译 项目运行 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_YOUR_POSTGRESQL_PASSWORD_HERE # Specify partitioning size for timestamp key-value storage. Allowed values: DAYS, MONTHS, YEARS, INDEFINITE. export SQL_POSTGRES_TS_KV_PARTITIONING=MONTHS 运行安装脚本 安装 ThingsBoard 服务并更新数据库配置后，您可以执行以下脚本： sudo /usr/share/thingsboard/bin/install/install.sh 启动 ThingsBoard 服务 sudo service thingsboard start 常见问题FAQ !!! question "如何查看 thingsboard 运行日志？" tail -f /var/log/thingsboard/thingsboard.log !!! question "关于如何停止或卸载thingsboard服务" 查看运行的所有服务 systemctl list-units --all --type=service 停止服务 systemctl service stop thingsboard 如果您想删除软件包本身（不带配置文件），则必须运行： dpkg -r thingsboard 如果您想完全删除（清除）软件包（带有配置文件），则必须运行： dpkg -P thingsboard 您可以检查包是否已成功删除 - 只需运行： dpkg -l '*thingsboard*' 关于我们 "亿琪软件" 上海亿琪软件有限公司成立于 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 前端二次开发。 介绍 准备工作 快速入门 修改 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.reports', type: 'link', path: '/reports', icon: 'picture_as_pdf' } 在新增组件report-routing.module.ts中添加以下路由 const routes: Routes = [ { path: 'reports', data: { breadcrumb: { label: 'report.reports', icon: 'picture_as_pdf' } }, children: [ { path: '', component: EntitiesTableComponent, data: { auth: [Authority.TENANT_ADMIN, Authority.CUSTOMER_USER], title: 'report.reports', reportsType: 'tenant' }, resolve: { entitiesTableConfig: ReportsTableConfigResolver } }, ] } ]; 添加按钮 !!! info "修改数据详情页的按钮。" 找到device.component.html，很容易可以发现，每一个button对应详情页的一个按钮，想要修改或着添加新的按钮，只需依照原有结构进行修改即可。 {{'device.make-public' | translate }} !!! info "修改每条数据后的按钮。" 找到devices-table-config.resolver.ts 参考configureCellActions函数下代码，添加自定义按钮 { name: this.translate.instant('device.make-pdf'), icon: 'picture_as_pdf', isEnabled: () => true, onAction: ($event, entity) => this.openReportDialog($event, 'DeviceDetail', entity) }, !!! info "或者你也可以在导航栏添加按钮或子菜单。" 如下图，只需在entities-table.compoent.html文件中，依葫芦画瓢的进行些许修改即可。 结语 通过以上步骤，就可以在五分钟内熟悉 ThingsBoard 前端二次开发的基本步骤。 !!! info "以下是一些额外的建议：" 在修改 ThingsBoard 前端代码之前，建议先阅读 ThingsBoard 的前端文档。 在修改 ThingsBoard 前端代码时，注意不要破坏 ThingsBoard 原有的结构。 关于我们 "亿琪软件" 上海亿琪软件有限公司成立于 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 中都能找到，为什么还需要做成报表呢？ 客户需求与应用场景 应用场景 设计概述 使用流程 效果展示 常见问题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 扩展视频接入和实时点播/直播功能
目录 关注我们 关注 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 协议，购买时请与商家确认好需求； - [ ] Wi-Fi 摄像头不够稳定，选择时需要慎重:octicons-blocked-16:； - [ ] 4G LTE 摄像头不能被局域网管理，不能选:material-block-helper:； USB 摄像头（WebCam） !!! example "USB 摄像头仅仅作为测试用途" 如果暂时没有 IPC，也可以用 USB 摄像头来测试/演示，笔记本自带摄像头或购买 USB 外置摄像头。 - [x] 视频流实现起来非常容易，几行命令就可以驱动摄像头工作； - [x] 测试效果比 IPC 要好，尤其是延迟会减少，不要被这个性能所迷惑了:material-robot-confused:； - [ ] 无法批量增加摄像头，并行查看效果，功能比较单一； 流媒体服务器 YiMEDIA !!! tip "流媒体服务器器是必须的组件" 更多的流媒体服务器软件知识可以在互联网找到，如果需要我司支持，请与我们商务人员联系。 - [x] 如 [架构图](#_4) 所示，YiMEDIA 流媒体服务器是一个盘路的工具，不影响整个系统的稳定性； - [x] `宿主服务器`的处理性能决定了所接入的 IPC 摄像头的数量和可点播的客户端数量； - [ ] 第三方流媒体服务器不能在本项目中支持:material-block-helper:； 效果展示 IPC 视频监控 !!! warning "两路 IPC 监控（内部网络，不支持在线实时点播:fontawesome-regular-face-smile:）" 局域网延迟在 300ms 以内，效果非常不错。 录制了一段演示视频，3个 IPC（左上：OEM，右上：海康，右下：TPLINK），一个 USB WebCam（左下：最普通了像素很低），抬手的同时，可以观察到稍微有点延迟，不过效果已经非常好了。 360P !!! warning "点击图片在线查看 DEMO，2 个实时 360P 视频流播放" - 编/解码 完全没压力，刚刚的； - CPU 要求低，1核心 可以处理8路视频源； - 同时播放几路视频，无卡顿现象； 720P !!! warning "点击图片在线查看 DEMO， 1 个实时 720P 视频流播放" - 视频解码要求一般，720P 绰绰有余； - `1核心` CPU 可以处理好几路视频源； - 2Mb 互联网带宽播放没有卡顿现象； 1080P !!! warning "1 个实时 1080P 视频流播放（服务器带宽不足，就不能提供实时 DEMO 查看效果了）" - 服务器处理要求高，1010P `编/解码耗资源`； - 至少需要 `1核心` CPU 来负责处理 `1路` 视频源； - 网络传输要求高，`流量大`，缓存现象严重； 关于亿琪软件 !!! success "打个广告" 上海亿琪软件有限公司成立于 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 http://demo.yiqisoft.cn/dashboard/d38ca5d0-4be8-11ee-a001-f365932952a4?publicId=21dcd1a0-0c2f-11ee-ac9d-0b3447f67253 http://demo.yiqisoft.cn/dashboard/38981e50-4bf8-11ee-a001-f365932952a4?publicId=21dcd1a0-0c2f-11ee-ac9d-0b3447f67253
目录 关注我们 关注 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 手机：186-1666-9123