看到有博客上采用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 
 #!/bin/sh

 #在单引号中填入yeelink给你的API KEY
YL_ApiKey='xxxxx'
YL_URL=http://api.yeelink.net/v1.0/device/7376/sensor/11703/photos while :
do
# 查找/dev/shm/motion_pic文件夹下最旧的1个以 motion.jpg 结尾的文件,并获取其文件名
PIC=$(find /dev/shm/motion_pic -name "*motion.jpg" | xargs ls -rt | head -n )
echo $PIC > /dev/shm/motion_name
grep -q "motion.jpg" /dev/shm/motion_name && status=yes || status=no
echo $status
if [ $status = yes ];
then
upcmd="curl --request POST --data-binary @"$PIC" --header U-ApiKey:$YL_ApiKey --verbose $YL_URL"
echo $upcmd|sh
rm $PIC
sleep # 延时15s 因为yeelink上传数据要求最小间隔10s,否则报错
echo "upload motion picture finish"
else
echo "no motion"
break
fi
done
2.2 上传定时抓拍数据脚本post_timelapse.sh 
 #!/bin/sh

 #在单引号中填入yeelink给你的API KEY

 YL_ApiKey='xxxxx'
YL_URL=http://api.yeelink.net/v1.0/device/7376/sensor/11703/photos
PIC=/dev/shm/motion_pic/snapshot.jpg upcmd="curl --request POST --data-binary @"$PIC" --header U-ApiKey:$YL_ApiKey --verbose $YL_URL" 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)
使用说明及操作步骤:
 /**
* @file readme.txt
* @brief 基于tiny6410、USB摄像头、motion、curl的远程移动图像监测实现说明
* @details
* @version V1.0.0
* @author Richard.hmm
* @date 2014-2-9
*/ 、拷贝motion所需的动态库到tiny6410开发板系统的/lib/下
cp /sdcard/motion_lib/* /lib/ 2、拷贝motion到usr/sbin/下
cp /sdcard/motion /usr/sbin/ 3、拷贝curl到usr/bin/下
cp /sdcard/curl /usr/bin/ 4、拷贝脚本文件到tiny6410的内存文件系统/dev/shm中
cp /sdcard/post_timelapse.sh /dev/shm/
cp /sdcard/post_motion.sh /dev/shm/
cp /sdcard/motion_alarm.sh /dev/shm/ 5、配置crontab
[root@FriendlyARM crontabs]# crontab -e
*/ * * * * /dev/shm/post_timelapse.sh // 新增任务
*/ * * * * /dev/shm/post_motion.sh // 新增任务
[root@FriendlyARM crontabs]# crond& // 开启crond 、拷贝配置文件到/etc下
cp /sdcard/motion.conf /etc/motion/ 、后台运行motion
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
 

DIY远程移动图像监测(tiny6410+USB摄像头+motion+yeelink+curl)的更多相关文章

  1. Raspberry Pi + 3个USB摄像头 + Motion(简易监控设备配置记录1——介绍以及安装) 分类: Raspberry Pi 服务器搭建 2015-04-12 19:21 226人阅读 评论(0) 收藏

    参考: Debian官网链接 Motion官网链接 首先,参见Debian官网链接对Motion的介绍,网页中包含了所有相关依赖包,请首先确保这些依赖包的安装. Motion介绍 摘出对Motion的 ...

  2. DIY远程监控室内温度设备(tiny6410+ds18b20+yeelink+curl)

    春节了,趁着假期的空闲时间,抽空捣鼓了下tiny6410开发板,发现这个东东尘封许久,很长时间没用过了.貌似最近物联网大热,谷歌收购Nest,其设计的恒温器能够智能调节和远程控制房间的温度,UI和设计 ...

  3. linux下的开源移动图像监测程序--motion编译与配置

    前几天在网上偶然看到一篇博客,是利用linxu下的开源的motion搭建嵌入式视频动态监控系统,感觉很好很强大于,是就想自己编译移植一下试试. 所谓移动图像监测,简单来说就是利用摄像头定点监测某个区域 ...

  4. DIY远程控制开关(tiny6410+LED+yeelink+curl)

    上一次,介绍了如何实现远程监控室内温度,大家伙反响还是很热烈的,笔者很欣慰,独乐乐不如众乐乐啊.不过话说回来,那个实现只能是远程监测家中温度,假如发现家里热得很,想远程打开空调开关提前降降温,回家后不 ...

  5. linux下的开源移动图像监测程序--motion编译与配置【转】

    本文转载自:http://www.cnblogs.com/qinyg/p/3355707.html 前几天在网上偶然看到一篇博客,是利用linxu下的开源的motion搭建嵌入式视频动态监控系统,感觉 ...

  6. Linux下移动图像监测系统——motion的移植及应用

    移动图像监控主系统的开发 移动图像监控的原理方法: 通过获取摄像头图像,比较前后每一帧的图像数据,从而实现移动物体监控.所有移动监控均是如此,只是图像帧的比较算法不同. 移动图像监控系统的实现 选择开 ...

  7. Raspberry Pi使用USB摄像头远程监控

    用到了开源项目:MJPG-streamer 开源项目的下载地址: http://sourceforge.net/p/mjpg-streamer/code/HEAD/tree/mjpg-streamer ...

  8. 【智能无线小车系列十】通过USB摄像头实现网络监控功能

    如果仅有静态图像可能还不足以满足我们的需求,我们可能会需要用到实时的监控功能.这里介绍一款小应用:motion.motion的功能可强大了,不仅可以将监控的画面通过视频传输,实时展现,更为强大的是,m ...

  9. 荣品四核4412开发板的USB摄像头问题

    RP4412开发板是荣品电子研发的一款三星四核Exynos4412评估板开发板,支持WIFI+LAN上网.蓝牙4.0.4G上网.500万自动对焦摄像头.GPS.网卡.音频,1080P HDMI音视频同 ...

随机推荐

  1. Notepad++插件安装和使用和打开大文件

    版权声明:本文为博主皮皮http://blog.csdn.net/pipisorry原创文章,未经博主同意不得转载. https://blog.csdn.net/pipisorry/article/d ...

  2. Java-idea-FindBugs、PMD和CheckStyle对比

    一.对比 工具 目的 检查项 备注 FindBugs 检查.class 基于Bug Patterns概念,查找javabytecode (.class文件)中的潜在bug 主要检查bytecode中的 ...

  3. Windows上的巧克力味Chocolatey详解

    Chocolatey是什么?很简单,Chocolatey就是Windows系统的yum或apt-get. 一.Chocolatey介绍 Chocolatey是一款专为Windows系统开发的.基于Nu ...

  4. TCP协议通讯工作原理

    TCP协议通讯工作原理   一.TCP三次握手 传输控制协议(Transport Control Protocol)是一种面向连接的,可靠的传输层协议.面向连接是指一次正常的TCP传输需要通过在TCP ...

  5. OpenCV Windows7 VC6.0安装以及HelloWorld

    anna在实验室配置OpenCV的时候,按照中文网站的介绍,很顺利的就完成了.可是回到家情况就大不一样!!总是在链接的时候报错,不是少这个lib就是少那个lib大哭最后查明是anna马虎,忘了将C:\ ...

  6. 【转】Deep Learning(深度学习)学习笔记整理系列之(二)

    因为我们要学习的是特征的表达,那么关于特征,或者说关于这个层级特征,我们需要了解地更深入点.所以在说Deep Learning之前,我们有必要再啰嗦下特征(呵呵,实际上是看到那么好的对特征的解释,不放 ...

  7. SLG手游Java服务器的设计与开发——网络通信

    文章版权归腾讯GAD所有,禁止匿名转载:禁止商业使用:禁止个人使用. 一.前言 上文分析了我们这款SLG的架构,本章着重讲解我们的网络通信架构,由上文的功能分析我们可以得知,游戏的所有功能基本上属于非 ...

  8. SQL: coalesce()函数

    ①用途: 将空值替换成其他值 返回第一个非空值 ②表达式: COALESCE是一个函数, (expression_1, expression_2, ...,expression_n)依次参考各参数表达 ...

  9. jQuery源码分析--Event模块(1)

    jQuery的Event模块提供了强大的功能:事件代理,自定义事件,自定义数据等.今天记录一下它实现的原理. 我们都知道,在js的原生事件中,有事件对象和回调函数这两样东西.但是事件对象是只读的,所以 ...

  10. netty4.1.6源码2-------创建服务端的channel

    1. netty在哪里调用jdk底层的socket去创建netty服务端的socket. 2. 在哪里accept连接. 服务端的启动: 1. 调用jdk底层的api去创建jdk的服务端的channe ...