littlebot
Published on 2025-04-07 / 4 Visits
0

【源码】基于C++Python和AWS IoT的相机状态通知系统

项目简介

本项目将AWS IoT C++/Python SDK集成到QCS610平台,开发了一个小型应用程序,可将相机的当前状态通知到AWS IoT Core控制台。项目以应用目录 /home/user/aws-iot 为源树起始点,具备视频录制、数据发布等功能。

项目的主要特性和功能

  1. 支持多种视频格式录制,涵盖4K、HD视频,还支持TCP流。
  2. 集成AWS IoT C++/Python SDK,能将相机状态以JSON格式发布到特定主题。
  3. 支持视频下载和实时流播放。

安装使用步骤

依赖环境

  • Ubuntu System 18.04或更高版本。
  • 主机系统安装Adb工具(Android调试桥)。
  • 搭建QCS - 610 Yocto构建环境。
  • 有效的亚马逊AWS用户账户。
  • 主机系统安装Python 3.5或更高版本。

前提条件设置

  1. 设置主机系统的应用程序SDK
    • https://thundercomm.s3.ap-northeast-1.amazonaws.com/shop/doc/1593776185472315/Turbox-C610_Application-SDK_v1.0.tar.gz 下载应用程序SDK。
    • 使用 tar -xzvf Turbox-C610_Application-SDK_v1.0.tar.gz 解压SDK。
    • 执行 ./oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.sh 脚本,按提示操作完成环境设置。
  2. 设置目标设备的相机环境配置 参考文档 https://www.thundercomm.com/app_en/product/1593776185472315 中的 Turbox-C610_Open_Kit_Software_User_Manual_LE1.0_v2.0.pdf 文件的2.10.1节进行设置。
  3. 设置AWS - IoT连接 参考 https://docs.aws.amazon.com/iot/latest/developerguide/iot-quick-start.html,创建事物对象时选择Python设备,将凭证保存到应用程序目录的 certificates 文件夹。
  4. 在Yocto环境中编译AWS - IoT - C++ SDK
    • 复制 meta-aws-master/recipes-sdk/ 到Yocto项目环境。
    • 初始化构建环境,选择机器和发行版。
    • bblayers.conf 文件中添加 aws-meta 路径。
    • 运行 bitbake aws-iot-device-sdk-cpp-v2 命令。
    • 复制编译后的库到应用程序目录。
    • 编译应用程序代码,替换 basic_pub_sub 文件夹,再次编译生成目标二进制文件。
    • 重命名二进制文件并复制到应用程序目录,同时复制 libcJSON.so 文件到 lib 文件夹。

构建相机应用程序

  1. 设置主机系统的交叉编译环境: git clone <source repository> cp <source repository> /home/user/aws-iot/ cd aws-iot source /usr/local/oecore-x86_64/environment-setup-armv7ahf-neon-oe-linux-gnueabi
  2. 构建相机应用程序二进制文件: $CC video_record.c video_record.h -o videoaws `pkg-config --cflags --libs gstreamer-1.0`
  3. 使用adb命令将相机应用程序二进制文件推送到目标板: adb root adb remount adb shell mount -o remount,rw / adb forward tcp:8900 tcp:8900 adb push videoaws /data/aws-iot/

包含AWS证书密钥文件

  1. 编辑 publish.pybasic_pub_sub/main.cpp 文件,更新证书详细信息。
  2. 使用 adb push certificates /data/aws-iot/ 命令将证书推送到目标板。

AWS Python IoT SDK集成

  1. 使用 adb push AWSIoTPythonSDK/ /data/aws-iot/ 命令将SDK推送到目标板。
  2. 使用 adb publish.py /data/aws-iot/ 命令推送Python源代码。
  3. 使用 adb push json/ /usr/lib/python3.5/ 命令将JSON库文件夹推送到目标板的Python 3.5库文件夹。

AWS IoT C++ SDK集成到目标板

确保已下载 meta-aws 仓库源代码并在Yocto环境中编译AWS - IoT - C++ SDK。 1. 使用 adb push lib/ /data/aws-iot/ 命令推送编译后的库到目标板。 2. 使用 adb push publish /data/aws-iot/ 命令推送C++目标可执行文件到目标板。

执行目标环境中的二进制文件

  1. 在QCS610板上运行以下命令启动应用程序: adb shell /# chmod +x /data/aws-iot/videoaws /# cd data/aws-iot/
  2. 启用WiFi连接: /# wpa_supplicant -Dnl80211 -iwlan0 -c /etc/misc/wifi/Wpa_Supplicant.conf -ddddt & /# dhcpcd wlan0
  3. data/aws-library 添加到库路径: / # export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/aws-iot/lib/
  4. 执行命令: /# ./videoaws {video_format} {output_path/ip} {c++/python} 例如,播放4K视频: /# ./videoaws 4k /data/video/4k.mp4 c++

下载视频和查看实时流

  • 下载视频:使用 adb pull /data/4k.mp4 命令将视频下载到主机系统。
  • 查看实时流:在主机系统打开新终端,运行 adb forward tcp:8900 tcp:8900vlc -vvv tcp://127.0.0.1:8900 命令,确保已安装VLC播放器。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】