项目简介
本项目是基于C++和ROS(Robot Operating System)的物联网设备控制程序。借助MQTT协议与阿里云IoT平台通信,可实现对窗帘、门铃、灯等物联网设备的控制,还能实时更新并发布设备状态信息。
项目的主要特性和功能
- 完成ROS节点初始化和MQTT连接参数配置,包含产品密钥、设备名称、设备秘钥、服务器地址和订阅/发布主题等。
- 利用阿里云IoT平台的MQTT服务,建立连接并完成参数配置。
- 定义MQTT事件处理函数,处理连接、重连和断开等事件。
- 定义MQTT消息处理函数,处理从MQTT服务器接收的消息,根据消息内容更新设备状态。
- 定义ROS节点订阅器和发布者,接收和发送控制指令与状态信息。
- 根据接收到的ROS控制指令,通过MQTT协议向设备发送控制指令,控制设备状态。
- 定期更新并发布设备状态信息,如窗帘、灯光、门铃状态等。
- 定义信号处理函数,在接收到特定信号(如SIGINT)时,断开MQTT连接并退出程序。
安装使用步骤
环境准备
安装ROS和阿里云IoT SDK,确保ROS环境变量设置正确。
代码编译
- 生成python的动态链接库,在
scripts
目录下运行python3 setup.py build_ext --inplace
。 - 生成deb,在
castlex_bringup
目录下依次运行bloom-generate rosdebian --os-name ubuntu --ros-distro melodic
和fakeroot debian/rules binary
。 - 使用C++编译器编译项目代码,生成可执行文件。
运行程序
运行生成的可执行文件,程序会自动连接到MQTT服务器,开始接收和发送消息。
测试控制
通过发送ROS控制指令,如rostopic pub -1 /door_control Int32 1
控制门的状态,通过rostopic echo /door_state
查看门的当前状态。
查看设备状态
程序会定期发布设备状态信息到MQTT主题,可通过MQTT客户端工具查看设备状态。
关闭程序
通过发送中断信号(如Ctrl+C)或手动关闭程序,确保程序优雅地退出。
注意:以上步骤假设用户已经下载并解压了项目的源码文件,且具备相应的编程环境和工具。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】