4.6 KiB
4.6 KiB
开发环境搭建指南
系统要求
- Python 3.7+
- Raspberry Pi 或其他兼容的嵌入式Linux系统
- LoRa通信模块(如SX1278)
- RS485通信接口
协议栈架构
本系统采用标准物联网协议栈:
应用层: LwM2M
传输层: CoAP (Constrained Application Protocol)
网络层: LoRaWAN
数据链路层: LoRa
物理层: LoRa
安装步骤
1. 克隆项目
git clone <项目地址>
cd pig-house-controller
2. 创建虚拟环境
python3 -m venv venv
source venv/bin/activate # Linux/Mac
# 或
venv\Scripts\activate # Windows
3. 安装依赖
pip install -r requirements.txt
4. LwM2M支持的特殊处理
由于 lwm2m-client 包在 PyPI 上不可用,我们需要手动安装或使用替代方案:
方案一:使用 wakaama-python (推荐)
# 克隆 wakaama-python 仓库
git clone https://github.com/djarek/wakaama-python.git
cd wakaama-python
# 按照项目说明进行安装
方案二:使用 Eclipse Wakaama
Eclipse Wakaama 是一个成熟的 LwM2M 实现,可以作为 C 扩展集成到 Python 项目中。
方案三:自行实现 LwM2M 客户端
根据 LwM2M 规范自行实现必要的功能。
5. 配置系统
复制示例配置文件并根据实际环境进行修改:
cp config.json.example config.json
修改 config.json 文件中的参数,包括:
- LoRa通信参数
- 总线配置
- 设备配置
- 日志配置
6. 硬件连接
- 连接LoRa模块到树莓派的SPI接口
- 连接传感器总线RS485模块到树莓派的UART接口
- 连接执行器总线RS485模块到树莓派的另一个UART接口
7. 运行系统
python main.py
开发工具推荐
- IDE: PyCharm 或 VS Code
- 版本控制: Git
- 调试工具: Python内置pdb或IDE调试器
- 日志查看: tail命令或专业日志查看工具
测试环境
建议在实际部署前进行充分测试:
- 单元测试: 验证各模块功能
- 集成测试: 验证模块间协作
- 系统测试: 验证完整功能流程
- 硬件测试: 验证实际硬件连接和通信
协议栈实现说明
LoRaWAN层
使用SX1278等LoRa芯片,通过SPI接口与树莓派通信。实现基本的LoRaWAN功能:
- OTAA/ABP入网
- 数据加解密
- 数据包重传机制
CoAP层
实现CoAP协议栈,支持:
- GET/POST/PUT/DELETE方法
- 资源发现
- 块传输
- 观察者模式
LwM2M层
实现LwM2M客户端功能:
- 设备注册与管理
- 固件更新
- 参数配置
- 数据上报
注意:由于 lwm2m-client 包不可用,需要使用替代方案实现 LwM2M 功能。
SenML数据格式
所有传感器数据使用SenML格式进行编码和传输,确保数据标准化和互操作性。
抽象接口开发说明
系统定义了以下抽象接口,开发者在实现具体功能时需要继承这些基类:
通信接口 (BaseComm)
位于 comms/base_comm.py,定义了通信模块的基本操作:
connect(): 建立通信连接disconnect(): 断开通信连接send(): 发送数据receive(): 接收数据is_connected(): 检查连接状态
设备接口 (BaseDevice)
位于 devices/base_device.py,定义了设备的基本操作:
connect(): 连接设备disconnect(): 断开设备连接read_data(): 读取设备数据write_data(): 向设备写入数据get_status(): 获取设备状态
存储接口 (BaseStorage)
位于 storage/base_storage.py,定义了存储模块的基本操作:
save(): 保存数据load(): 加载数据delete(): 删除数据exists(): 检查键是否存在list_keys(): 列出所有键
命令处理器接口 (BaseHandler)
位于 core/base_handler.py,定义了命令处理的基本操作:
handle_command(): 处理命令register_command(): 注册命令处理函数unregister_command(): 注销命令处理函数
注意事项
- 确保硬件连接正确,特别是UART接口不要接反
- 根据实际硬件调整配置文件中的串口设备路径
- 注意LoRa频段的合法性,遵守当地无线电管理规定
- 建议在开发阶段使用DEBUG日志级别,生产环境使用INFO或更高
- LwM2M 功能需要特殊处理,因为标准包不可用