项目简介
本项目是仅基于软件的 Pelion 虚拟演示设备,能连接到 Pelion 设备管理服务,无需设备硬件即可使用和演示该服务。在新冠疫情出行受限期间,有助于进行高级设备管理主题讨论;在无法面对面实体演示时,屏幕共享演示也很实用。
项目的主要特性和功能
- 模拟设备连接:无需实体硬件,在计算机上模拟连接设备,方便讲解物联网设备管理。
- 实时交互:可实时查看和写入设备管理服务中的设备数据。
- 多场景适用:适用于视频通话屏幕共享演示、实时试验 Pelion 设备管理门户、测试 FOTA 固件更新工具、实现和测试 Pelion 设备管理 REST API 等。
- 设备类型可定制:能模拟振动传感器、计数器设备、温度传感器等不同类型设备。
- 固件更新功能:支持全量固件更新和增量更新。
- 工厂预配模式:支持工厂预配模式,适用于生产部署。
安装使用步骤
假设用户已经下载了本项目的源码文件。
运行虚拟演示
- 从 Pelion 设备管理门户 生成一个访问密钥。
- 启动
pelion/virtual-demo
容器镜像,将CLOUD_SDK_API_KEY
替换为你的密钥:docker run --name pelion-demo -p 8888:8888 -e CLOUD_SDK_API_KEY=<YOUR_PELION_API_KEY> pelion/virtual-demo
可使用CLOUD_URL
环境变量指定默认的 Pelion 云地址,省略则使用默认生产地址api.us-east-1.mbedcloud.com
。 - 在浏览器中访问 http://localhost:8888 访问虚拟设备的用户界面。
- 记录设备 ID,在 Pelion 设备管理门户的设备列表中找到该设备,实时浏览资源并查看虚拟设备的数据更新。
指定设备类型和传感器更新间隔
若模拟计数器设备或温度传感器,在 docker run
指令中分别追加 -e SENSOR=counter
或 -e SENSOR=temperature
。默认传感器更新间隔为 5 秒,可通过追加 -e INTERVAL=secs
参数覆盖设置。
docker run --name pelion-demo -p 8888:8888 -e CLOUD_SDK_API_KEY=<YOUR_PELION_API_KEY> -e SENSOR=counter pelion/virtual-demo
执行固件更新
全量固件更新
- 复制虚拟演示仓库到本地。
- 切换到固件源代码所在目录:
cd mbed-cloud-client-example
- 从运行中的 Docker 容器复制凭证源和 manifest-tool 配置到本地文件夹:
docker cp pelion-demo:/build/mbed-cloud-client-example/mbed_cloud_dev_credentials.c . && docker cp pelion-demo:/build/mbed-cloud-client-example/update_default_resources.c . && docker cp pelion-demo:/build/mbed-cloud-client-example/.manifest-dev-tool .
- 修改虚拟演示发送的模拟值,使其乘以 1000:
vi source/blinky.cpp
导航到第 308 行,添加以下行:_sensed_count = _sensed_count * 1000;
保存并退出。 - 启动一个新的虚拟演示开发容器,用于构建新的固件:
docker run -it --name pelion-demo-dev \ -v $(pwd)/source/blinky.cpp:/build/mbed-cloud-client-example/source/blinky.cpp \ -v $(pwd)/mbed_cloud_dev_credentials.c:/build/mbed-cloud-client-example/mbed_cloud_dev_credentials.c \ -v $(pwd)/update_default_resources.c:/build/mbed-cloud-client-example/update_default_resources.c \ -v $(pwd)/.manifest-dev-tool/:/build/mbed-cloud-client-example/.manifest-dev-tool/ \ pelion/virtual-demo bash
- 切换到固件源代码目录:
cd /build/mbed-cloud-client-example/
- 调用
make
工具构建新的固件镜像:make -C __x86_x64_NativeLinux_mbedtls/ mbedCloudClientExample.elf
- 生成固件清单,上传到门户并启动更新活动:
manifest-dev-tool update -p __x86_x64_NativeLinux_mbedtls/Debug/mbedCloudClientExample.elf -w -n -v 0.2.0
增量更新
- 切换到主程序源目录:
cd /build/mbed-cloud-client-example/
- 假设已按上述建议修改
source/blinky.cpp
,生成新的固件:make -C __x86_x64_NativeLinux_mbedtls/ mbedCloudClientExample.elf
- 将新固件复制到
firmwares/
目录:cp __x86_x64_NativeLinux_mbedtls/Debug/mbedCloudClientExample.elf firmwares/new_fw.bin
- 使用
manifest-delta-tool
生成增量固件:manifest-delta-tool -c firmwares/current_fw.bin -n firmwares/new_fw.bin -o firmwares/delta-patch.bin
- 启动更新活动:
manifest-dev-tool update -p firmwares/delta-patch.bin -w -n -v 0.2.0
工厂预配模式
- 以工厂预配模式启动虚拟演示:
docker run -it --name pelion-demo -p 8888:8888 -e FACTORY_PROVISIONING_MODE=ON pelion/virtual-demo
- 假设已在本地机器上正确设置了工厂配置实用程序,将配置注入虚拟演示:
python3 ft_demo/sources/ft_demo.py inject --endpoint-name=virtual-demo --serial-number=10101 tcp --ip=localhost --port=8888
- 以生产模式启动虚拟演示:
docker start -a pelion-demo
开发模式
- 从 Pelion 设备管理门户生成一个访问密钥。
- 从复制的仓库根目录启动
pelion/virtual-demo
容器镜像,将CLOUD_SDK_API_KEY
替换为你的密钥,若要构建计数器设备而非默认的振动传感器,可添加-e SENSOR=counter
:docker run -it --name pelion-demo-dev -p 8888:8888 -v $(pwd):/build -e CLOUD_SDK_API_KEY=<YOUR_API_KEY> pelion/virtual-demo bash
- 在容器内创建构建环境:
cd ../mbed-cloud-client-example mbed config root . mbed deploy python3 pal-platform/pal-platform.py deploy --target=x86_x64_NativeLinux_mbedtls generate cd __x86_x64_NativeLinux_mbedtls cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=./../pal-platform/Toolchain/GCC/GCC.cmake \ -DEXTERNAL_DEFINE_FILE=./../define_linux_update.txt -DFOTA_ENABLE=ON -DFOTA_TRACE=ON cd ../../sim-webapp
- 构建代码更改:
rm -f firstrun && python3 sim-webapp.py
- 当系统编译完更改并运行演示时,在主机机器的 localhost:8888 URL 上找到运行的 Web 应用程序。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】