Home Assistant Green 性能释放

ha-green-armbian1

Green 出厂的 HAOS 其实并没有把它的 CPU RK3566 的能力完全利用起来。Rockchip官网可以看到 RK3566 其实有如下两个好东西

  • NPU

    支持 1Tops 算力

  • VPU

    硬解码 4K 60fps H.265/H.264/VP9

    硬编码 1080P 60fps H.265/H.264

为了让 Green 发挥出最佳性能,我编译了支持 NPU 和 VPU 的 Armbian。分两个版本,5.1 内核和 6.1 内核,唯一区别是 5.1 内核的支持 GPU 开源驱动 Panfrost。6.1 的 Panfrost 驱动还要等大佬们适配,不过应该也快了。如果只是玩 HA,那 GPU 基本没啥用,GPU 的驱动可以更流畅的跑桌面应用比如 Kodi 等

刷机

刷机教程我在之前 Green 评测文章里有,系统下载也在那

应用

首先要感谢大佬 @MarcA711@nyanmisaka 为 RK35xx 系列 CPU 适配了 Friagte 和 Jellyfin 等

以下应用是朋友 @紫易辰 和 @r-MT 推荐的,更多用法可以自己摸索,我只是为了验证 CPU 性能,顺便写下教程

Frigate

Frigate 可以利用 RK3566 的 NPU 来识别监控 RTSP 流中人等事物,VPU 的解码器则用来处理视频流,可以实时转换视频流码率大小等

  • docker-compose.yml

    version: "3"
    services:
      frigate:
        image: docker.io/marca711/frigate:latest-rk
        container_name: frigate
        volumes:
          - /etc/localtime:/etc/localtime:ro
          - /opt/frigate/conf:/config
          - /opt/frigate/data:/media/frigate
          - type: tmpfs
            target: /tmp/cache
            tmpfs:
              size: 1gb
        environment:
          - TZ=Asia/Shanghai
          - FRIGATE_RTSP_PASSWORD=frigate
        network_mode: host
        restart: always
        privileged: true
    
  • frigate 配置

    模型我选的小的 n,NPU 识别速度在 60ms。如果是最大的 s 模型,那速度会降低到 130ms 左右,模型按我的写法会自动下载,如果没有自动下载请手动下载后扔到对应目录

    实测监控在 2.4G 网络下,3 秒内能识别到人,建议换有线连接效果会更好,RTSP 无线延迟比较高

    2 两监控 CPU 的占用情况,一个 1080P H264,一个 480P H265,都实时转成 720P

    如果监控的流超过 1080P,建议用子 RTSP 流(TPLINK,水星都有),RK3566 硬转码只支持 1080P,超过会消耗更多 CPU

    ha-green-armbian2

    ha-green-armbian3

    config.yml

    mqtt:
      enabled: false
    
    ffmpeg:
      hwaccel_args: preset-rk-h264
    
    cameras:
      living_camera:
        detect:
          width: 1280
          height: 720
          fps: 5
        ffmpeg:
          inputs:
            - path: rtsp://admin:xxx@192.168.x.x:554/h264/ch1/main/av_stream
              roles:
                - detect
      balcony_camera:
        detect:
          width: 1280
          height: 720
          fps: 5
        ffmpeg:
          inputs:
            - path: rtsp://admin:xxx@192.168.x.x:554/stream2
              roles:
                - detect
    
    detectors:
      rknn:
        type: rknn
        core_mask: 0
    
    model:
      path: default-yolov8n
      width: 320
      height: 320
      input_pixel_format: bgr
      input_tensor: nhwc
    

Jellyfin

Jellyfin 不多做介绍了,不怎么会玩,实时转码不要超过 1080P 的视频就行,配置中记得开启 RKMPP

ha-green-armbian4

  • docker-compose.yml

    version: "3"
    services:
      jellyfin:
        image: nyanmisaka/jellyfin:240220-arm64
        container_name: jellyfin
        volumes:
          - /etc/localtime:/etc/localtime:ro
          - /opt/jellyfin/conf:/config
          - /opt/jellyfin/cache:/cache
          - /opt/jellyfin/media:/media
        environment:
          - TZ=Asia/Shanghai
        network_mode: host
        restart: always
        privileged: true
        command:
          - for dev in dri dma_heap mali0 rga mpp_service iep mpp-service vpu_service vpu-service hevc_service hevc-service rkvdec rkvenc vepu h265e ; do [ -e "/dev/$dev" ] && echo " --device /dev/$dev"; done
    

其他

国产 RK35xx 系类 CPU 真的很不错,RK3566 虽然是比较低端的一款,但各方面表现都很不错。如果换成 RK3588(8 核 CPU,6 TOPS NPU,8K 编解码等) 那所有性能都会起飞

工作原因,时间太少,只能抽空搞搞,接下来可能会抽空适配一些其他类似 CPU 的机器