• DIY远程移动图像监测(tiny6410+USB摄像头+motion+yeelink+curl)


        看到有博客上采用motion搭建移动图像监测系统,感觉很强大,但大多缺少远程监测能力,大多局限于局域网。OK,笔者手头刚好有一个30W像素的USB摄像头,那么借用yeelink服务,也来DIY一把,哈哈。

     笔者DIY系列参考文章:
    DIY远程监控室内温度设备(tiny6410+ds18b20+yeelink+curl) http://www.cnblogs.com/IDoIUnderstand/p/3537858.html
    DIY远程控制开关(tiny6410+LED+yeelink+curl)                     http://www.cnblogs.com/IDoIUnderstand/p/3538356.html
     
    一、目的
          DIY一个远程移动图像监控的系统,可以自动抓拍移动图像并上传服务器同时具有定时抓拍功能,实现可以通过web/android/ios/微信查看或接收报警。效果:提供个链接,欢迎大家围观:http://www.yeelink.net/devices/7376
     
    二、软硬件环境
          硬件:tiny6410+USB摄像头+有线网络 or USB wifi
          软件:linux+QT/motion/curl/crontab/shell/YeeLink服务
     
    三、移动图像监控实现
    1、工作原理
        所谓移动图像监测,简单来说就是利用USB摄像头定点监测某个区域,平时摄像头并不拍照,只有当有移动物体经过时,摄像头便自动抓拍(要监测多大物体、按拍照速率都是可调的),并把拍到的图像存储在指定目录或网络服务器,实现无人监控功能。
        motion 是一套免费开源的移动图像监测程序。
     
    2、motion移植(在ubuntu中进行的交叉编译)
    下载一个motion-3.2.12.tar.gz,通过samba拷到ubuntu下,然后按如下步骤
    tar zxvf motion-3.2.12.tar.gz
    cd motion-3.2.12
    ./configure  --prefix=/自定义安装目录,我是直接安装源码下${PWD}/_install /  --host=arm-linux --with-ffmpeg=/home/ffmpeg/ffmpeg-0.5.1/_install/ (若要视频记录则添上蓝色字体,否则会报出一大堆ffmpeg错误,但不影响拍照功能,这部分我没有使用
    make
    make install
    mkdir -p /开发板根文件系统目录/var/run/motion
    cp /motion安装目录/bin motion /开发板根文件系统目录/usr/sbin/
    cp /motion安装目录/etc/motion-dist.conf /开发板根文件系统目录/etc/motion/motion.conf
     
    3、motion配置
    motion.conf中的基本配置见资料1中说明,详情见“七、详细操作步骤小结”中提供的下载文件包。
    一些重要配置:
    snapshot_interval 600 //设置定时600s抓拍一次
    target_dir /dev/shm/motion_pic  //设置抓拍图片存放路径
    snapshot_filename snapshot //设置定时抓拍图片文件名
    jpeg_filename %v-%Y%m%d%H%M%S-%q_motion //设置移动抓拍图片文件名格式,方便后续shell中进行文件分析处理
     
    四、tiny6410实现定时获取yeelink开关状态
    1、在yeelink中注册一个图像传感器。 
     
    2、根据yeelink的api接口上传数据。在tiny6410 linux系统上采用shell脚本进行实现。
    2.1 上传移动图像抓拍数据脚本post_motion.sh 
     1 #!/bin/sh
     2  
     3 #在单引号中填入yeelink给你的API KEY
     4 YL_ApiKey='xxxxx'
     5 YL_URL=http://api.yeelink.net/v1.0/device/7376/sensor/11703/photos
     6  
     7 while :
     8 do
     9 # 查找/dev/shm/motion_pic文件夹下最旧的1个以 motion.jpg 结尾的文件,并获取其文件名
    10 PIC=$(find /dev/shm/motion_pic -name "*motion.jpg" | xargs ls -rt | head -n 1)
    11 echo $PIC > /dev/shm/motion_name
    12 grep -q "motion.jpg" /dev/shm/motion_name && status=yes || status=no
    13 echo $status
    14 if [ $status = yes ];
    15 then
    16 upcmd="curl --request POST --data-binary @"$PIC" --header U-ApiKey:$YL_ApiKey --verbose $YL_URL"
    17 echo $upcmd|sh
    18 rm $PIC
    19 sleep 15 # 延时15s 因为yeelink上传数据要求最小间隔10s,否则报错
    20 echo "upload motion picture finish"
    21 else
    22 echo "no motion"
    23 break
    24 fi
    25 done
    2.2 上传定时抓拍数据脚本post_timelapse.sh 
     1 #!/bin/sh
     2 
     3 #在单引号中填入yeelink给你的API KEY
     4 
     5 YL_ApiKey='xxxxx'
     6 YL_URL=http://api.yeelink.net/v1.0/device/7376/sensor/11703/photos
     7 PIC=/dev/shm/motion_pic/snapshot.jpg
     8 
     9 upcmd="curl --request POST --data-binary @"$PIC" --header U-ApiKey:$YL_ApiKey --verbose $YL_URL"
    10 
    11 echo $upcmd|sh
    六、增加定时运行服务
    在crontab服务中加入下面加红的一行, 让脚本每分钟运行一次, 保存退出。
    [root@FriendlyARM crontabs]# crontab -e
    */10 * * * * /dev/shm/post_timelapse.sh  // 新增任务
    */1 * * * * /dev/shm/post_motion.sh  // 新增任务
    [root@FriendlyARM crontabs]# crond&  // 开启crond
     
    七、详细操作步骤小结
    下面提供了交叉编译后的可执行文件(交叉工具链为:FriendlyARM/toolschain/4.5.1/bin/arm-linux-gcc)
    使用说明及操作步骤:
     1 /**
     2  * @file readme.txt
     3  * @brief 基于tiny6410、USB摄像头、motion、curl的远程移动图像监测实现说明
     4  * @details
     5  * @version V1.0.0
     6  * @author Richard.hmm
     7  * @date 2014-2-9
     8  */
     9  
    10 1、拷贝motion所需的动态库到tiny6410开发板系统的/lib/11 cp /sdcard/motion_lib/* /lib/
    12  
    13 2、拷贝motion到usr/sbin/下
    14 cp /sdcard/motion /usr/sbin/
    15  
    16 3、拷贝curl到usr/bin/下
    17 cp /sdcard/curl /usr/bin/
    18  
    19 4、拷贝脚本文件到tiny6410的内存文件系统/dev/shm中
    20 cp /sdcard/post_timelapse.sh /dev/shm/
    21 cp /sdcard/post_motion.sh /dev/shm/
    22 cp /sdcard/motion_alarm.sh /dev/shm/
    23  
    24 5、配置crontab
    25 [root@FriendlyARM crontabs]# crontab -e
    26 */10 * * * * /dev/shm/post_timelapse.sh  // 新增任务
    27 */1 * * * * /dev/shm/post_motion.sh  // 新增任务
    28 [root@FriendlyARM crontabs]# crond&  // 开启crond
    29  
    30 6、拷贝配置文件到/etc下
    31 cp /sdcard/motion.conf /etc/motion/
    32  
    33 7、后台运行motion
    34 motion -c /etc/motion/motion.conf &
    八、实现效果
    yeelink的web页面效果图
     
     
    移动抓拍到的手指图片
     
     
    九、参考资料
    1、Linux下移植motion到6410开发板(移动图像监测系统) http://blog.csdn.net/l461269717/article/details/8008086
    2、树莓派玩家5分钟内将树莓派-USB摄像头与Yeelink连接–最好玩的网页监控器 http://blog.yeelink.net/?p=468
    3、linux下的开源移动图像监测程序--motion编译与配置 http://www.cnblogs.com/qinyg/p/3355707.html
     
  • 相关阅读:
    PostgreSQL备份工具-pg_probackup
    Multi-Master Replication Solutions for PostgreSQL
    PostgreSQL高可用:多主复制解决方案
    Postgressql高可用(pgpool+异步流复制)转
    AudioFlinger
    GPIO口配置为上拉,下拉输入
    转【Qualcomm高通音频】音效调试_录音文件播放有杂音,如何定位原因?
    转【Qualcomm高通音频】如何使用QXDM、QCAT、CoolEditor音频日志抓取、解析和分析?
    转【Qualcomm高通音频】调试工具QACT_如何新增一套音效
    转【Qualcomm高通音频】调试工具QACT_如何更换音效的音频拓扑
  • 原文地址:https://www.cnblogs.com/IDoIUnderstand/p/3541716.html
Copyright © 2020-2023  润新知