在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连接程序中。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构