IP Camera视频流接入EdgeX Foundry操作实例

本文介绍了如何利用华乔老师提供的edgex-device-rtsp deviceservice连接并管理IPC设备。首先,通过修改docker-compose文件启动服务;接着,在UI界面上传profile文件并填写设备信息,包括设备名称、状态、协议等;最后,成功发送turnon和turnoff命令验证设备管理功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近华乔老师贡献了一个edgex-device-rtsp的device service,用来管理IPC设备,这个帖子展示了使用这个微服务连接摄像头的整个流程。
步骤一:拉取对应的docker启动edgex-device-rtsp

为了方便操作,这里我直接修改了docker-compose文件中,在device service段添加如下code:

  device-rtsp:
    image: badboyqiao/edgex-device-rtsp:0.1.0-dev
    ports:
    - "49983:49983"
    - "1935:1935"
    - "8089:8089"
    container_name: edgex-device-rtsp
    hostname: edgex-device-rtsp
    networks:
      edgex-network:
        aliases:
        - edgex-device-rtsp
    volumes:
    - db-data:/data/db
    - log-data:/edgex/logs
    - consul-config:/consul/config
    - consul-data:/consul/data
    depends_on:
    - data
    - command

改写完成之后,通过docker-compose文件正常启动edgex-foundry。
步骤二:打开UI,上传profile文件,填写Device信息
2.1 上传profile文件

首先需要填写edgexfoundry解析设备所需要的profile文件,将下面的内容保存为“test-rtsp-profile.yml”文件,保存在本地。

name: "test-rtsp-profile"
manufacturer: "VMware huaqiaoz"
model: "rtsp"
labels:
- "test"
description: "Test rtsp profile"
deviceResources:
-
  name: turnon
  description: "turnon actively"
  attributes:
    { name: "turnon" }
  properties:
    value:
      { type: "Bool", size: "1", readWrite: "RW", defaultValue: "false"  }
    units:
      { type: "String", readWrite: "RW", defaultValue: "ON" }
-
  name: turnoff
  description: "turnoff actively"
  attributes:
    { name: "turnoff" }
  properties:
    value:
      { type: "Bool", size: "1", readWrite: "RW", defaultValue: "false"  }
    units:
      { type: "String", readWrite: "RW", defaultValue: "OFF" }
deviceCommands:
-
  name: turnon
  set:
  - { index: "1", operation: "set", object: "turnon", parameter: "turnon", property: "value" }
-
  name: turnoff
  set:
  - { index: "1", operation: "set", object: "turnoff", parameter: "turnoff", property: "value" }
coreCommands:
-
  name: turnon
  put:
    path: "/api/v1/device/{deviceId}/turnon"
    parameterNames: ["turnon"]
    responses:
    -
      code: "204"
      description: "set the message."
      expectedValues: []
    -
      code: "503"
      description: "service unavailable"
      expectedValues: []
-
  name: turnoff
  put:
    path: "/api/v1/device/{deviceId}/turnoff"
    parameterNames: ["turnoff"]
    responses:
    -
      code: "204"
      description: "set the message."
      expectedValues: []
    -
      code: "503"
      description: "service unavailable"
      expectedValues: []

打开UI界面(http://localhost:4000)之后,首先添加网关,选择添加的网关,在左侧栏中选中“Deviceservice”,在右侧栏中可以看到Device Profile这一区域,选择添加profile,选择ipc对应的profile文件,上传,如下图箭头所示:
在这里插入图片描述

2.2填写device信息

在上面的Device-service区域,可以看到有edgex-device-service,然后点击下图箭头所指的位置,出现填写device信息的窗口。
例如,rtsp的流为:rtsp://admin:admin@10.5.5.11:554/h264/ch1/main/av_stream
注册设备所需填写的内容为(应该根据具体的rtsp流填写内容):

{
    "name":"ipc1_device_name",
    "adminState":"UNLOCKED",
    "operatingState":"ENABLED",
    "protocols":{
        "rtsp":{
            "Schema":"rtsp",
            "Host":"10.5.5.11",
            "Port":"554",
            "Password":"admin",
            "User":"admin",
            "Path":"/h264/ch1/main/av_stream",
            "DumpPath":"jianing"
        }
    },
    "service":{
        "name":"edgex-device-rtsp"  
    },
    "profile":{
        "name":"test-rtsp-profile"
    }
}

dumppath目前没有用,可以随便填写

填写之后的界面如图:
在这里插入图片描述

2.3 发送命令

根据下图箭头的顺序,首先调出来Command选项卡,”Method”选择”set”选项,”Parameter”填写”true”,发送命令,看到返回“Success”,说明操作成功。
在这里插入图片描述


原作者:lulililu
原文链接:https://www.edgexfoundry.club/user/lulililu/article/5d8d93356598210001292c9b

### EdgeX Foundry 集成 MQTT 方法和配置教程 #### 设备接入准备 为了使EdgeX Foundry支持MQTT协议下的设备通信,需先确认环境已安装好必要的组件和服务。通常情况下,这涉及到部署EdgeX Foundry的核心微服务以及特定于MQTT的支持模块[^1]。 #### 安装与配置MQTT Broker 在开始之前,确保有一个可用的MQTT消息代理(Broker)。可以选用Mosquitto或其他兼容的MQTT服务器作为消息中心。对于本地测试而言,在同一台机器上运行Broker即可满足需求;而对于生产环境,则建议采用高可用性的集群方案来保障稳定性[^2]。 #### 启动EdgeX Foundry核心服务 按照官方文档指导完成EdgeX Foundry平台的基础搭建工作之后,重点在于激活那些负责处理外部传感器或执行器连接请求的服务实例——特别是`device-mqtt-go`这一部分。该服务专门用于管理基于MQTT协议的数据交换过程[^3]。 ```bash docker-compose -f edgex-res/docker-compose.yml up -d ``` 上述命令会拉取并启动一系列预定义好的容器镜像文件,其中包括了所有必需的核心功能单元及其依赖项。 #### 创建自定义Device Profile JSON文件 针对具体应用场景定制化描述目标硬件特性和行为模式的一组参数集合被称为“设备档案”。这里需要创建一个适用于所选型号的JSON格式模板,并上传至EdgeX系统内供后续操作引用。此步骤至关重要因为它直接影响到实际业务逻辑的设计思路和发展方向。 #### 注册新设备 利用RESTful API接口向EdgeX Foundry注册新的物理实体对象时,除了常规的身份验证信息外还需要指定先前建立过的Profile ID以及其他附加属性字段。这样做的目的是为了让整个框架清楚知道当前正在尝试关联的是哪一类装置类型。 ```json { "name": "MyMqttSensor", "description": "A sample sensor connected via MQTT protocol.", "adminState": "UNLOCKED", "operatingState": "ENABLED", "labels": ["temperature", "humidity"], "location": null, "serviceId": "<your-service-id>", "profileName": "<your-profile-name>" } ``` 以上是一个简化版的例子用来说明如何构建有效的POST请求体结构以便顺利完成这项任务。 #### 测试连通性 最后一步就是检验一切设置是否正常运作了。可以通过发送简单指令给远端节点或者订阅主题监听实时更新的方式来初步判断双方之间是否存在有效链路存在。如果遇到任何异常情况也不要慌张,仔细查阅日志记录往往能帮助快速定位问题所在之处。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值