[방범 DIY] CCTV를 만들어보자 #1

Posted by 백창
2017. 5. 10. 13:21 리눅스/라즈베리파이
반응형

#1


자취생들에게는 많은 고민이 있다. 

혼자 살기 때문에 생기는 많은 고민들 중 하나를 덜어보도록 하자.

(cctv를 만들꺼라고 하니까 느그집에서 뭐 훔쳐갈게있냐고 다들 그러긴하더라.)


출근 후면 우리집은 빈집이 된다. 짧게는 10시간 길게는 12시간이상까지...

도둑이 들지 않았을까? 문 단속은 잘 했나? 에어컨같은걸 켜놓고 왔으면 어떡하지?

부동산 등이 연락도 없이 집에 방문하지는 않을까?


혼자사는 사람들이 많아져서 이런 고민들이 늘어서 그런가? 필요한게 딱 홈 IoT네..


#2


어떤 구성으로 할까..


  • 라즈베리파이
  • 파이캠
  • 저장소
  • 도어센서


당장 생각나는 준비물은 이정도다.


만들고자 하는건 cctv라기보다는 필요한 시점에 필요한 만큼만 촬영하겠다는게 1차 목표이다.


대략적인 시나리오는


------------------------------------------------------------------------------------------------------------

[기본설정]

  1. 방해금지 시간대 설정
  2. 촬영시간 설정 


[시나리오]

문열림 감지  방해금지 시간대 여부 확인  동영상촬영시작or사진촬영  저장소에 저장

------------------------------------------------------------------------------------------------------------


시나리오를 적고 나니까 졸업과제랑 시나리오가 일맥상통하네 ㅎㅎ..

생각의 발전이 없군..


요즘 도둑들은 지능적이어서 cctv같은게 설치되있으면 컴퓨터 본체도 훔쳐간다더라, 잘숨기던가.. 클라우드로 올리는걸 추천한다.


#3


그럼 준비물을 구하고 다음 글로 갑시다..


반응형

[Python] 웹페이지 변화 감지하기

Posted by 백창
2017. 4. 27. 16:48 개발/Python
반응형

# 1


음.. 파이썬을 시작하게된 이유였던가 ?


웹 페이지에 변화를 감지하기 위해서 파이썬을 처음으로 깔았다.


페이지 변화를 감지해서 뭐하냐 싶겠지만 의외로 용도가 많다.


공지사항에 새로운글(있던 글이 지워지거나 수정된 것도 감지되겠지만)을 체크하여 알림을 보낼 수 있고,

뭐 다른 용도도 많이 있다.


내가 처음 사용한 용도는 회사 홈페이지가 뻑나면 복구 스크립트를 돌리는데 사용했다.

뻑난지를 이 방법으로 확인한거지


# 원리


원리는 별거 없다. 


일정 주기마다 페이지를 긁어 해쉬값으로 저장해두고 기존에 저장된 해쉬값과 비교를 하는 것이다.


페이지가 조금만 달라져도 해쉬값은 크게 변하니 쉽게 감지할 수 있다.


# 소스


1. 페이지를 긁어서 해쉬값으로 변환하여 저장


음.. getList는 긁어오고 싶은 사이트들을 저장해둔 파일을 불러오는 소스라서 무시해도된다.

그냥 주소써서 긁어오면됨


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# coding : utf-8
import requests
import hashlib
import time
import sys
import re
import getList
reload(sys)
sys.setdefaultencoding('utf-8')
 
# get check list
lines = getList.getList()
 
cnt = len(lines)
= 0
 
try :
 
    while i < cnt:
        chkList = re.split(r'[\s]',lines[i])
        i += 1
        with requests.Session() as c:
            URL = chkList[1]
 
            html = c.get(URL)
 
            m = hashlib.md5(html.text)
             now = time.localtime()
            file = open("PATH/md5_%s_%04d-%02d-%02d.log"%(chkList[0],now.tm_year, now.tm_mon, now.tm_mday),'a')
    
            print >> file, m.hexdigest()
            file.close()
 
    execfile("PATH/check.py",{})
except:
    print 'error'
 
cs



2. 페이지비교


offset에 따라 몇번째까지 비교할지 설정할 수 있고

2로 되어있으니 최근 2번 것과 비교하여 다르면 메시지를 보내도록 하였다.

(메시지는 텔레그램으로 보내면 편함)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#-*- coding: utf-8 -*-
import time
import re
import getList
import sendMsg
 
# get check List
lists = getList.getList()
lists_cnt = len(lists)
= 0
 
while i < lists_cnt:
    chkList = re.split(r'[\s]',lists[i])
    i += 1
    now = time.localtime()
 
    file = open("PATH/md5_%s_%04d-%02d-%02d.log"%(chkList[0], now.tm_year, now.tm_mon, now.tm_mday),'r')
    lines = file.readlines()
    file.close()
 
    flag = True
 
    cnt = len(lines)
 
    # set compare res
    offset = 2
    if cnt < offset:
        offset = cnt
 
    # compare hash value
    for j in range(cnt-offset, cnt):
        if lines[j] != lines[cnt-1]:
            flag = False
 
    # if unmatch
    if flag == False:
        # send msg
        for z in range(2len(chkList)):
            sendMsg.send_msg_to_telegram(chkList[z],'['+chkList[0]+'] 변화 감지 : \t'+chkList[1])
 
cs


# 마침


벌써 비슷한 방식으로 3개째 프로그램을 만들었다.

생각하기에 따라서 활용도가 많으니 잘 활용해봐야겠다.


반응형

'개발 > Python' 카테고리의 다른 글

[wxpython] 다중모니터 감지하기  (0) 2017.06.28

정규식을 이용해 숫자만 추출

Posted by 백창
2016. 6. 24. 10:09 개발/Java script
반응형

# 개요


 수업시간에는 정규식에 대해 깊이 생각해본적이 없었는데, 요즘 정말 활용분야가 다양하다는 걸 느끼고 있다.


Javascript에서 정규식을 이용하여 문자열에서 숫자만 추출해보도록 하자.



# 소스


1
2
3
4
5
function fn(str){
    var res;
    res = str.replace(/[^0-9]/g,"");
    return res;
}
cs


# 주절주절


 간단하게 해석해보자면 [^0-9] 즉, 숫자가 아닌 부분을 "" 공백으로 치환함으로써 숫자만 남기는 것.


 얼마나 편리한지 허허.

반응형

'개발 > Java script' 카테고리의 다른 글

배열 특정 값 지우기  (0) 2015.12.14
[d3] line chart 그리기  (0) 2015.03.31