ThingsBoard - 边缘管理(六)

549 阅读3分钟

1、ThingsBoard 的边缘计算软件产品 image.png

ThingsBoard Edge 用例

  • 自动驾驶汽车 边缘计算使收集、处理和响应道路事件成为可能,几乎没有延迟。现代自动驾驶汽车每天产生 5 TB 到 20 TB 的数据。4G 或 5G 无法提供该网络吞吐量,但使用 ThingsBoard Edge,您可以过滤数据。这些数据的大部分应该在本地处理,只有这些数据的子集会被推送到云端。
  • 智能农业 对远程站点的筒仓曝气系统的故障做出快速反应,即使目前从现场位置到云的连接是纯粹的。
  • 智能住宅 使处理和分析数据更接近智能家居,从而有可能在边缘保护敏感的用户信息。此外,由于智能家居解决方案的低延迟,它提供了良好的用户体验 - 与将边缘设备连接到云以做出一些决策相比,用户将从终端设备获得响应的速度要快得多。
  • 安全解决方案 有必要在几秒钟内对安全违规和威胁做出反应,而 Edge 提供了这种可能性。您无需关心与云的连接质量 - 决策将由远程站点上的本地边缘引擎实时做出。
  • 院内监测 为了保护医疗保健设备中的数据隐私,必须在边缘完成这些数据的处理。推送到云端只需要医疗设备的读数,同时将所有其他敏感数据存储在边缘。 在此用例中,边缘处理的额外好处 - 由于实时处理来自边缘医疗设备的数据,因此可以尽快对关键的医疗案例做出反应。
  • 预测性维护 使边缘设备读数的处理和存储更接近设备。在本地分析大量数据,并在故障发生之前检测生产线的变化。根据您的业务需求,仅将生产线的平均读数发送到云端。 2、创建边缘管理

image.png

image.png

image.png

2、下载源码 gitee.com/onionCircle…

image.png

image.png

image.png

image.png

# 使用 thingsboard/openjdk17:bookworm-slim 作为基础镜像
FROM thingsboard/openjdk17:bookworm-slim

# 添加维护者信息
LABEL maintainer="thingsboard-edge"

# 创建必要的目录
RUN mkdir -p /opt/project/thingsboard-edge/data
RUN mkdir -p /opt/project/thingsboard-edge/conf
RUN mkdir -p /opt/project/thingsboard-edge/var/log/tb-edge

# 设置工作目录
WORKDIR /opt/project/thingsboard-edge

# 暴露端口
EXPOSE 18081

# 设置环境变量
ENV TZ=Asia/Shanghai LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS="-Xms512m -Xmx1024m"

# 将 JAR 文件复制到容器中
ADD ./tb-edge-3.8.0EDGE-boot.jar ./thingsboard-edge.jar

# 容器启动命令
ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar thingsboard-edge.jar ${JAVA_OPTS}
version: '3.8'
services:
  thingsboard-edge:
    build:
      context: .
      dockerfile: Dockerfile
      args:
        BUILD_VERSION: latest
    container_name: thingsboard-edge
    network_mode: "host"
    ports:
      - "18081:18081"
      - "11883:11883"
      - "15683-15688:15683-15688/udp"
    volumes:
      - ./data:/opt/project/thingsboard/data  
      - ./conf:/opt/project/thingsboard/conf
      - ./log:/opt/project/thingsboard/var/log/tb-edge
    environment:
      TZ: Asia/Shanghai
      # 避免thingsboard端口冲突
      HTTP_BIND_PORT: 18081
      MQTT_BIND_PORT: 11883
      COAP_BIND_PORT: 15683
      COAP_DTLS_BIND_PORT: 15684
      LWM2M_BIND_PORT: 15685
      LWM2M_SECURITY_BIND_PORT: 15686
      LWM2M_BS_BIND_PORT: 15687
      SNMP_BIND_PORT: 11620
      LWM2M_BS_SECURITY_BIND_PORT: 15688
      DEVICE_CONNECTIVITY_HTTP_PORT: 18081
      DEVICE_CONNECTIVITY_MQTT_PORT: 11883
      DEVICE_CONNECTIVITY_COAP_PORT: 15683

      CLOUD_ROUTING_KEY: e4ed59c8-8830-6078-2133-2a1d4e029553
      CLOUD_ROUTING_SECRET: 1z3xibo463lf48kevwdi
      CLOUD_RPC_HOST: 106.119.162.97
      CLOUD_RPC_PORT: 7070
      CLOUD_RPC_SSL_ENABLED: false

      SPRING_DATASOURCE_URL: jdbc:postgresql://106.119.162.97:5432/tb_edge
      SPRING_DATASOURCE_USERNAME: postgres
      SPRING_DATASOURCE_PASSWORD: password
      # 创建租户会报错Not valid working directory: /opt/project/thingsboard. Please use either root project directory, application module directory or specify valid "install.data_dir" ENV variable to avoid automatic data directory lookup!
      # 在thingsboard.yml最下面增加
      #install:
      #  data_dir: "${INSTALL_DATA_DIR:/opt/project/thingsboard}"
      #  load_demo: "${INSTALL_LOAD_DEMO:true}"
      INSTALL_DATA_DIR: /opt/project/thingsboard-edge/data
      # caffeine or redis(7.2 - latest compatible version)
      CACHE_TYPE: redis
      REDIS_DB: 11
      # redis密码
      REDIS_PASSWORD: password
      # 默认 10分钟不活动超时
      DEFAULT_INACTIVITY_TIMEOUT: 600
      # 一分钟扫描一次设备是否在线状态
      DEFAULT_STATE_CHECK_INTERVAL: 60
      # 最大队列数,如果设备很多,数据频繁可以调大一下
      TB_SERVER_WS_DEFAULT_QUEUE_MESSAGES_PER_SESSION: 10000


  thingsboard-edge1:
    build:
      context: .
      dockerfile: Dockerfile
      args:
        BUILD_VERSION: latest
    container_name: thingsboard-edge1
    network_mode: "host"
    ports:
      - "28081:28081"
      - "21883:21883"
      - "25683-25688:25683-25688/udp"
    volumes:
      - ./data:/opt/project/thingsboard/data  
      - ./conf:/opt/project/thingsboard/conf
      - ./log:/opt/project/thingsboard/var/log/tb-edge
    environment:
      TZ: Asia/Shanghai
      # 避免thingsboard端口冲突
      HTTP_BIND_PORT: 28081
      MQTT_BIND_PORT: 21883
      COAP_BIND_PORT: 25683
      COAP_DTLS_BIND_PORT: 25684
      LWM2M_BIND_PORT: 25685
      LWM2M_SECURITY_BIND_PORT: 25686
      LWM2M_BS_BIND_PORT: 25687
      SNMP_BIND_PORT: 21620
      LWM2M_BS_SECURITY_BIND_PORT: 25688
      DEVICE_CONNECTIVITY_HTTP_PORT: 28081
      DEVICE_CONNECTIVITY_MQTT_PORT: 21883
      DEVICE_CONNECTIVITY_COAP_PORT: 25683

      CLOUD_ROUTING_KEY: aca86310-f2be-b669-27cd-2942e2ac0540
      CLOUD_ROUTING_SECRET: ekzs3k10o2gjx4ahkhi2
      CLOUD_RPC_HOST: 106.119.162.97
      CLOUD_RPC_PORT: 7070
      CLOUD_RPC_SSL_ENABLED: false

      SPRING_DATASOURCE_URL: jdbc:postgresql://106.119.162.97:5432/tb_edge1
      SPRING_DATASOURCE_USERNAME: postgres
      SPRING_DATASOURCE_PASSWORD: password
      # 创建租户会报错Not valid working directory: /opt/project/thingsboard. Please use either root project directory, application module directory or specify valid "install.data_dir" ENV variable to avoid automatic data directory lookup!
      # 在thingsboard.yml最下面增加
      #install:
      #  data_dir: "${INSTALL_DATA_DIR:/opt/project/thingsboard}"
      #  load_demo: "${INSTALL_LOAD_DEMO:true}"
      INSTALL_DATA_DIR: /opt/project/thingsboard-edge/data
      # caffeine or redis(7.2 - latest compatible version)
      CACHE_TYPE: redis
      REDIS_DB: 12
      # redis密码
      REDIS_PASSWORD: password
      # 默认 10分钟不活动超时
      DEFAULT_INACTIVITY_TIMEOUT: 600
      # 一分钟扫描一次设备是否在线状态
      DEFAULT_STATE_CHECK_INTERVAL: 60
      # 最大队列数,如果设备很多,数据频繁可以调大一下
      TB_SERVER_WS_DEFAULT_QUEUE_MESSAGES_PER_SESSION: 10000

 docker-compose up -d thingsboard-edge thingsboard-edge1

启动完成之后,点击同步(云服务器记得开放一下 7070 端口,当然 ip 写 localhost 则不需要开端口,主要是边缘跟 tb 不在一个服务的话,需要写 ip) image.png image.png image.png image.png image.png 资产配置和设备配置是自动同步的,资产、设备、规则链、实体视图、仪表盘需要手动绑定 image.png

image.png

image.png image.png image.png image.png 边缘创建同步到 tb

image.png

image.png

image.png

在边缘创建的设备,不会自动同步到其他边缘,之后同步到 tb 里面 image.png

image.png

image.png

边缘上传实时数据,会自动同步到 tb 中

image.png

image.png

image.png 管理边缘设备上的警报和 RPC 请求

image.png

image.png

image.png

image.png

image.png

image.png image.png image.png

说明切换成功了

image.png image.png

image.png

例如一个设备 100 个遥测,通过边缘给主站上传有用的遥测,减少流量 image.png

image.png

image.png