总体架构
![树莓派实现智能防盗 - 业猫]()
网站前台
![树莓派实现智能防盗 - 业猫]()
设备记录图
![树莓派实现智能防盗 - 业猫]()
设备列表图
![树莓派实现智能防盗 - 业猫]()
设备图
![树莓派实现智能防盗 - 业猫]()
![树莓派实现智能防盗 - 业猫]()
![树莓派实现智能防盗 - 业猫]()
![树莓派实现智能防盗 - 业猫]()
![树莓派实现智能防盗 - 业猫]()

网站前台

设备记录图
演示地址: demo 账号: admin 密码: password

设备列表图
本系统,全自动全方位监控,开启后不需要其他操作,人体感应器检测到人之后就会像后台记录一条数据,所以可以根据图片更加直观的显示,当然在有些时间段我们自己会触发警报,但是如果在你出去后,也有记录,那么代表很可能遭到物理入侵了。那么我们树莓派可以检测除了本人出现的时间段,可以给予相应的警报,发送邮件,微信等。
树莓派JAVA程序
设备图
红外传感器检测到人之后,树莓派会打开摄像头录像,之后会插入相应的记录到网站,并且上传视频到云备份,目前打算采用讯飞云存储,之后再做迁移到百度云盘,2T容量不要浪费了。将树莓派装到一个小盒子里用wifi和充电宝就完美了,也可以藏在隐蔽的地方。

名为SmartHome.jar的文件,代码可以在后面下载。有log.log日志文件,error.log日志文件。img是用来放视频文件和图片,抓拍存放小偷的视频的资料,晚上会自动上传到百度云空间。

运行后的程序并没有什么提示,因为会记录相应的错误日志和log到文件中。

百度云盘上的文件,我百度云可以存放2T视频,所以我很长一段时间不需要清空。

为啥和上面的文件名称不一样,嘻嘻,那是因为我经过转码以后上传的,这样手机还是电脑都可以直接看了。根据网站记录的名称,可以观看相应的视频。给个栗子除了可以这么用以外,我还怎么用:

我设置了一个地址用来传送json数据,然后贴上树莓派的栗子:
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import com.pi4j.io.gpio.GpioController; import com.pi4j.io.gpio.GpioFactory; import com.pi4j.io.gpio.GpioPinDigitalOutput; import com.pi4j.io.gpio.PinState; import com.pi4j.io.gpio.RaspiPin; /** * 远程控制树莓派上的GPIO实例 * @author 亓根火柴 */ public class ControlLed { GpioController gpio; GpioPinDigitalOutput pin; public static void main(String s[]){ //下面的链接就是你在Yeelink的设备的状态URL String urlStr = "http://wandoufilm.com/api"; ControlLed cl = new ControlLed(); cl.gpio = GpioFactory.getInstance(); cl.pin = cl.gpio.provisionDigitalOutputPin (RaspiPin.GPIO_01, "LED", PinState.HIGH); boolean current = cl.getStatus(urlStr); cl.setLedStatus(current); while(true){ try{ if(cl.getStatus(urlStr) != current){ current = cl.getStatus(urlStr); cl.setLedStatus(current); } Thread.sleep(2000); }catch(Exception e){e.printStackTrace();} } } public boolean getStatus(String urlStr){ URL url;boolean on = false; try { url = new URL(urlStr); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); InputStream in = conn.getInputStream(); BufferedReader rd = new BufferedReader(new InputStreamReader(in)); StringBuilder tempStr = new StringBuilder(); while (rd.read() != -1) { tempStr.append(rd.readLine()); } //System.out.print("--> 服务器上传感器的信息:"); String status = tempStr.substring (tempStr.lastIndexOf(":")+1, tempStr.length()-1); //System.out.println(status); on = status.equals("1")? true:false; //System.out.println(on);