在Widora(openwrt)上用fswebcam来实时上传图片,做个简单的远程监控

我在Widora-NEO上安装了fswebcam,然后用python来调用它 ,并通过curl将图片发送到BIGIOT.net,这样就实现了简单的远程监控。以下是具体步骤和脚本,供大家参考。
1. 把支持UVC标准的USB摄像头插入widora-neo,正常情况下会在 /dev目录下出现设备video0。
2. 要想拍摄照片,你要安装fswebcam,这是一款小型摄像头程序。   (如果你另外装了motion, 与它可能有冲突。运行时需要将它停
止!)
先编辑下 vi   /etc/opkg.conf  增加下载源, 最后看起来这样:
src/gz attitude_adjustment http://downloads.openwrt.org/att ... /ramips/rt305x/pack
dest root /
dest usb /usb/optware
dest ram /tmp
lists_dir ext /var/opkg-lists
option overlay_root /overlay
option check_signature 1
保存一下opkg.conf, 然后更新一下下载源
opkg update
接着可以安装fswebcam了,直接用命令
opkg install fswebcam
3. 安装curl: (直接用python的pyCurl模块应该也可以,我没有试过)
opkg install curl
4. fswebcam安装完成后,在终端中运行下面的命令来拍摄一张照片:
fswebcam --no-banner -r 640x480 /tmp/image.jpg   
这条命令可以抓取一张640x480分辨率的照片,并且用jpg格式保存在/tmp目录下。  --no-banner 表示图片中不要加入时间水印,  时间水印在
widora里好像加不上去,应该是字库的问题。
5. 安装python,也很简单:
opkg install python
这个可能要费点时间.
6. 用命令 vi  webcam.py 编辑一个如下的python脚本
( 其中 ***** 里分别是你的API-KEY, 设备ID 和接口ID )
#!/usr/bin/env python
from os import system
from time import sleep
str1="curl --request POST -F 'data=@"
str2="' --header 'API-KEY: *********http://www.bigiot.net/pubapi/uploadImg/did/***/inputid/***"
strImage='/tmp/webcam.jpg'   #------webcam存放的图片位置
strcmd=str1+strImage+str2  #--- 完整的curl的命令格式,具体可以参考 BIGIOT.net的图片接口协议(http)
while(1):
   system("fswebcam -r 480x320 /tmp/webcam.jpg")   #---可以根据你的摄像头规格来调整,480x320大小一般的摄像头都可以做到
   system (strcmd)
   print "Webcam photo send!"
   sleep(15)       #-------等待一会  

保存后,赋予脚本执行权限 chmod 755 webcam.py 。 然后试一下命令 ./webcam.py   看看是否能够正确运行。按下Ctrl+c退出。
7. 安装screen,让webcam.py 在后台运行。
安装screen是为了让程序能一直在后台运行,即使你关闭当前控制台Shell,程序也不会退出.
安装screen同样执行 opkg install screen 就可以了。
比如要将程序play一直放在后台运行,你可以执行 screen play ,等play运行的时侯按一下Ctl+a 再按一下d,它就放到后台去了. 如果要调到前台,
执行screen -r. 如果有多个程序在后台,它会提示各程序的PID. 执行 screen -r PID 就可以了.
安装完成后运行:
screen ./webcam.py
等程序运行的时候按一下Ctl+a 再按一下d, 让它在后台默默地运行吧!
最后你可以将上面的脚本整合到其他bigiot.net连接程序中。

posted @ 2020-12-17 17:32  流水江湖  阅读(774)  评论(0编辑  收藏  举报