🌱 温室异常报警·实战 30章

📡 从传感器到远程通知 Python + MQTT
课程导论:痛点与架构
温室环境监控的痛点、报警系统架构概览、技术选型(Python + MQTT + 短信API)。
传感器数据采集基础
温湿度传感器(DHT22)原理、树莓派GPIO引脚介绍、Python的GPIO库安装。
读取DHT22传感器数据
编写Python脚本读取温湿度、数据格式化与校验、常见读取错误处理。
数据清洗与预处理
异常值检测(阈值法)、缺失值处理(插值法)、数据平滑(移动平均)。
阈值报警逻辑设计
定义温湿度上下限、单阈值触发机制、多条件组合报警(如高温高湿)。
报警状态机实现
正常态、预警态、报警态、恢复态的状态转换、Python状态机库(transitions)入门。
本地报警通知
蜂鸣器驱动、LED指示灯控制、本地日志记录(logging模块)。
MQTT协议入门
MQTT原理(发布/订阅)、QoS级别、Broker选择(Mosquitto)。
搭建MQTT Broker
在树莓派上安装Mosquitto、配置用户认证、测试连接。
Python MQTT客户端
paho-mqtt库安装、连接Broker、发布传感器数据。
远程通知渠道概览
短信(Twilio)、邮件(SMTP)、微信(Server酱)、钉钉机器人。
集成Twilio发送短信
注册Twilio账号、获取API密钥、Python发送短信代码。
集成SMTP发送邮件
配置QQ邮箱/163邮箱的SMTP服务、Python发送带附件的报警邮件。
集成钉钉机器人
创建钉钉群聊机器人、Webhook地址配置、Python发送Markdown消息。
集成Server酱
注册Server酱、获取SendKey、Python推送微信消息。
报警消息模板设计
JSON格式定义、动态填充变量(温度、时间、位置)、多语言支持。
报警频率控制
防抖机制(时间窗口)、重复报警抑制(去重)、报警升级策略。
数据库存储报警记录
SQLite入门、创建报警记录表、插入与查询报警历史。
Web可视化面板 (Flask入门)
Flask框架搭建、路由设计、展示实时传感器数据。
Web可视化面板 (数据展示)
使用Chart.js绘制温湿度曲线、报警事件时间线。
Web可视化面板 (报警配置)
前端表单修改阈值、后端API保存配置。
系统配置文件管理
YAML/JSON配置文件读取、热加载配置、多环境配置(开发/生产)。
日志系统完善
日志分级(DEBUG/INFO/WARNING/ERROR)、日志轮转、远程日志收集。
系统异常处理
Python异常捕获最佳实践、自定义异常类、优雅降级(如网络中断时本地缓存)。
单元测试
pytest框架入门、模拟传感器数据、测试报警逻辑。
集成测试
模拟全链路流程(传感器→报警→通知)、测试MQTT消息可靠性。
部署与运维
设置开机自启(systemd)、Docker容器化部署、监控进程健康。
安全加固
MQTT TLS加密、API密钥管理(环境变量)、防止SQL注入。
项目实战:完整系统搭建
搭建一个完整的温室监控报警系统(从硬件到通知)。
课程总结与扩展
边缘计算与云平台对接、AI预测性报警、LoRa无线传感器网络。