一、起因
新房子买在2楼,反水概率较大,加上无良开发商的劣质材料,就我所在楼栋已经发生几起反水事件,而且是高层反水,有几户重复出现反水,原因是管道中间有一个钢筋 :(



二、解决方案
1.水浸传感器+Wifi模块(ESP8266)

-
- 优点:局域网内实时高报警效率快、成本相对低、声光报警
- 缺点:需要ESP8266二次开发,搭建开发环境比较麻烦
2.水浸报警器成品套件

-
- 优点:提供http接口,二次开发成本低。
- 缺点:实时性差需要不断轮询接口、成本高WiFi版要200以上、无声光报警。
3.水浸传感器+萤石云摄像头+边缘计算

-
- 优点:保留方案1的优势,另外通过采集报警声音识别,实现远程预警。
- 缺点:增加摄像头和边缘计算盒子,成本较高。
三、最终选型
最开始准备采用方案二,后面考虑到成本有点小贵,因为有2个卫生间,需要买2套。最后采用方案三,因为摄像头是开发商配置的,边缘计算盒子很早之前就买回来做测试和开发用。总体实现步骤,先预先训练好报警声波图,后期定时监测摄像头音频进行比对,如果发现声波异常就发送预警通知,之前早就有模拟发送微信自动化脚本。下面就是具体实现细节:
1.采集摄像头音频
使用ffmpeg命令提取摄像头音频文件

2.生成梅尔音谱图
这里花了一点时间,一开始准备直接采用梅尔特征值进行深度学习,后面找了不少资料都是将指标生成图,然后使用深度学习进行图像分类。
先用NWaves实现梅尔指标算法,然后用NPlot进行画图。

生成之后效果
3.机器学习训练音谱图
这里使用ML.NET进行图像分类模型训练。

4.模型测试
报警声谱图
非报警声谱图
整体测试效果还行,但是效率有点低,后面可能还是使用ONNX模型。
5.正式部署模型

采集摄像头和音频生成图片已经完成,推理模型还要再优化,下一步准备整合到智能家居平台。