라즈파이와 GmailAPI와 LineAPI를 사용하여 간단한 서버리스 감시 카메라를 만드는 방법
15145 단어 파이 카메라파이썬GmailApiLineNotify라즈파이
0. 먼저
이번 만드는 것이 어떤 느낌으로 움직이는지 보고 싶은 분은 여기 (youtube의 동영상)에서 부디.
1. Gmail 설정
먼저 google cloud platform의 사이트로 이동하여 API 및 서비스 라이브러리를 찾습니다.
그런 다음 아래로 스크롤하여 GmailAPI를 찾아서 누릅니다.
그런 다음 활성화를 누릅니다.
화면이 바뀌면 왼쪽 메뉴 목록에있는 사람의 개요를 누릅니다.
화면이 바뀌면 오른쪽 끝의 자격 증명 만들기를 누릅니다.
그런 다음 그림과 같이 입력하고 아래의 필요한 인증 정보를 누릅니다.
이것도 입력이 끝나면 OAuth 클라이언트 ID 만들기를 누릅니다. 이름은 무엇이든 상관 없습니다.
아직, 완료는 누르지 않고,
다운로드를 누르십시오. 그러면 현재 디렉토리에 client_id.json이라는 파일이 작성된다.
2. 필요한 라이브러리 다운로드
pip install --upgrade google-api-python-client
pip install requests
pip install httplib2
이번에는 python3.6을 사용하고 있기 때문에 python3.7 등을 사용하고 있고 작동하지 않는 분은 pip3을 사용하여 설치하십시오.
3.LineAPI 설정
Line Developers 사이트로 가서 위의 메뉴에서 Documents를 누릅니다.
아래로 스크롤하여 LineNotify를 누르십시오.
페이지가 바뀌고 로그인하면 My page를 누른다.
그런 다음 Create token을 누릅니다. 그렇다면 이름을 듣지만 토크 메시지의 시작 부분에 붙는 것만이므로 아무것도 상관 없습니다.
그리고 token가 표시되기 때문에 그것을 베낀다. 그러나 한번 닫아 버리면 더 이상 볼 수 없기 때문에 주의.
4. Gmail 인증
아래의 파일을 client_id.json이 있는 디렉토리에 만들어 실행한다.
g_oauth.py import httplib2, os
from apiclient import discovery
from oauth2client import client
from oauth2client import tools
from oauth2client.file import Storage
SCOPES = 'https://www.googleapis.com/auth/gmail.readonly'
CLIENT_SECRET_FILE = '/home/igor-bond/Desktop/client_id.json'
USER_SECRET_FILE = '/home/igor-bond/Desktop/credentials_gmail.json'
def gmail_user_auth():
store = Storage(USER_SECRET_FILE)
credentials = store.get()
if not credentials or credentials.invalid:
flow = client.flow_from_clientsecrets(CLIENT_SECRET_FILE, SCOPES)
flow.user_agent = 'Python Gmail API'
credentials = tools.run_flow(flow, store, None)
print('認証結果を保存しました:' + USER_SECRET_FILE)
return credentials
여기에서 사용자의 비밀을 더 저장하는 credentials_gmail.json이라는 파일도 같은 디렉토리에 만들어집니다.
5. 메인 처리 작성
이 파일도 지금까지 만들어 온 것과 같은 디렉토리에 만듭니다. Your token의 곳은 방금 복사한 LineNotify의 token을 붙여 주세요.
gpio.py import os,httplib2
from apiclient import discovery
import g_oauth
import time
from datetime import datetime
import picamera
import requests
token = 'Your Token'
def gmail_get_service():
credentials = g_oauth.gmail_user_auth()
http = credentials.authorize(httplib2.Http())
service = discovery.build('gmail', 'v1', http=http)
return service
mail_list = []
def gmail_get_messages():
service = gmail_get_service()
messages = service.users().messages()
msg_list = messages.list(userId='me', maxResults=1).execute()
for msg in msg_list['messages']:
topid = msg['id']
msg = messages.get(userId='me', id=topid).execute()
if msg['snippet'] == 'Security Check2':
if not msg['id'] in mail_list:
mail_list.append(msg['id'])
send_msg()
def send_msg():
filename = datetime.now()
with picamera.PiCamera() as camera:
camera.resolution = (1024,768)
camera.capture(str(filename)+'.jpg')
url = 'https://notify-api.line.me/api/notify'
headers = {'Authorization':'Bearer '+token}
data = {"message":"Here is your room."}
img = f'/home/pi/Desktop/RaspberryPi_for_convenient_life/Projeect 1/{filename}.jpg'
file = {'imageFile': open(img, 'rb')}
r = requests.post(url, headers=headers, params=data, files=file,)
run = True
while run:
try:
time.sleep(30)
gmail_get_messages()
except KeyboardInterrupt:
run = False
여기에서는 30초마다 로그인하고 있는 사용자의 Gmail의 맨 위에 있는 메일을 꺼내, 만약 그 내용이 "Security Check2"한편, 같은 내용으로 처리 끝난 메일이 아니면 라즈파이로 사진을 찍어, LineNotify 놓는다. 라는 것입니다. 아직 구현하지 않았지만 사진을 보내고 나면 그 사진을 삭제하는 처리도 필요하다고 생각합니다. 사진이 쌓여 동작이 무거워지기 때문에,,,,,
마지막으로
이 간이적인 감시 카메라의 만드는 방법은 Youtube 하지만 해설하고 있으므로 그쪽도 좋으면 봐 주세요. 질문등이 있으면 그 동영상의 코멘트란 혹은, 이 기사의 코멘트란에서 부디. 또, 좋다고 생각하면 구독 부탁합니다.
Reference
이 문제에 관하여(라즈파이와 GmailAPI와 LineAPI를 사용하여 간단한 서버리스 감시 카메라를 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/igor-bond16/items/6b1ef5580dc2754497ad
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
먼저 google cloud platform의 사이트로 이동하여 API 및 서비스 라이브러리를 찾습니다.
그런 다음 아래로 스크롤하여 GmailAPI를 찾아서 누릅니다.
그런 다음 활성화를 누릅니다.
화면이 바뀌면 왼쪽 메뉴 목록에있는 사람의 개요를 누릅니다.
화면이 바뀌면 오른쪽 끝의 자격 증명 만들기를 누릅니다.
그런 다음 그림과 같이 입력하고 아래의 필요한 인증 정보를 누릅니다.
이것도 입력이 끝나면 OAuth 클라이언트 ID 만들기를 누릅니다. 이름은 무엇이든 상관 없습니다.
아직, 완료는 누르지 않고,
다운로드를 누르십시오. 그러면 현재 디렉토리에 client_id.json이라는 파일이 작성된다.
2. 필요한 라이브러리 다운로드
pip install --upgrade google-api-python-client
pip install requests
pip install httplib2
이번에는 python3.6을 사용하고 있기 때문에 python3.7 등을 사용하고 있고 작동하지 않는 분은 pip3을 사용하여 설치하십시오.
3.LineAPI 설정
Line Developers 사이트로 가서 위의 메뉴에서 Documents를 누릅니다.
아래로 스크롤하여 LineNotify를 누르십시오.
페이지가 바뀌고 로그인하면 My page를 누른다.
그런 다음 Create token을 누릅니다. 그렇다면 이름을 듣지만 토크 메시지의 시작 부분에 붙는 것만이므로 아무것도 상관 없습니다.
그리고 token가 표시되기 때문에 그것을 베낀다. 그러나 한번 닫아 버리면 더 이상 볼 수 없기 때문에 주의.
4. Gmail 인증
아래의 파일을 client_id.json이 있는 디렉토리에 만들어 실행한다.
g_oauth.py import httplib2, os
from apiclient import discovery
from oauth2client import client
from oauth2client import tools
from oauth2client.file import Storage
SCOPES = 'https://www.googleapis.com/auth/gmail.readonly'
CLIENT_SECRET_FILE = '/home/igor-bond/Desktop/client_id.json'
USER_SECRET_FILE = '/home/igor-bond/Desktop/credentials_gmail.json'
def gmail_user_auth():
store = Storage(USER_SECRET_FILE)
credentials = store.get()
if not credentials or credentials.invalid:
flow = client.flow_from_clientsecrets(CLIENT_SECRET_FILE, SCOPES)
flow.user_agent = 'Python Gmail API'
credentials = tools.run_flow(flow, store, None)
print('認証結果を保存しました:' + USER_SECRET_FILE)
return credentials
여기에서 사용자의 비밀을 더 저장하는 credentials_gmail.json이라는 파일도 같은 디렉토리에 만들어집니다.
5. 메인 처리 작성
이 파일도 지금까지 만들어 온 것과 같은 디렉토리에 만듭니다. Your token의 곳은 방금 복사한 LineNotify의 token을 붙여 주세요.
gpio.py import os,httplib2
from apiclient import discovery
import g_oauth
import time
from datetime import datetime
import picamera
import requests
token = 'Your Token'
def gmail_get_service():
credentials = g_oauth.gmail_user_auth()
http = credentials.authorize(httplib2.Http())
service = discovery.build('gmail', 'v1', http=http)
return service
mail_list = []
def gmail_get_messages():
service = gmail_get_service()
messages = service.users().messages()
msg_list = messages.list(userId='me', maxResults=1).execute()
for msg in msg_list['messages']:
topid = msg['id']
msg = messages.get(userId='me', id=topid).execute()
if msg['snippet'] == 'Security Check2':
if not msg['id'] in mail_list:
mail_list.append(msg['id'])
send_msg()
def send_msg():
filename = datetime.now()
with picamera.PiCamera() as camera:
camera.resolution = (1024,768)
camera.capture(str(filename)+'.jpg')
url = 'https://notify-api.line.me/api/notify'
headers = {'Authorization':'Bearer '+token}
data = {"message":"Here is your room."}
img = f'/home/pi/Desktop/RaspberryPi_for_convenient_life/Projeect 1/{filename}.jpg'
file = {'imageFile': open(img, 'rb')}
r = requests.post(url, headers=headers, params=data, files=file,)
run = True
while run:
try:
time.sleep(30)
gmail_get_messages()
except KeyboardInterrupt:
run = False
여기에서는 30초마다 로그인하고 있는 사용자의 Gmail의 맨 위에 있는 메일을 꺼내, 만약 그 내용이 "Security Check2"한편, 같은 내용으로 처리 끝난 메일이 아니면 라즈파이로 사진을 찍어, LineNotify 놓는다. 라는 것입니다. 아직 구현하지 않았지만 사진을 보내고 나면 그 사진을 삭제하는 처리도 필요하다고 생각합니다. 사진이 쌓여 동작이 무거워지기 때문에,,,,,
마지막으로
이 간이적인 감시 카메라의 만드는 방법은 Youtube 하지만 해설하고 있으므로 그쪽도 좋으면 봐 주세요. 질문등이 있으면 그 동영상의 코멘트란 혹은, 이 기사의 코멘트란에서 부디. 또, 좋다고 생각하면 구독 부탁합니다.
Reference
이 문제에 관하여(라즈파이와 GmailAPI와 LineAPI를 사용하여 간단한 서버리스 감시 카메라를 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/igor-bond16/items/6b1ef5580dc2754497ad
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
pip install --upgrade google-api-python-client
pip install requests
pip install httplib2
Line Developers 사이트로 가서 위의 메뉴에서 Documents를 누릅니다.
아래로 스크롤하여 LineNotify를 누르십시오.
페이지가 바뀌고 로그인하면 My page를 누른다.
그런 다음 Create token을 누릅니다. 그렇다면 이름을 듣지만 토크 메시지의 시작 부분에 붙는 것만이므로 아무것도 상관 없습니다.
그리고 token가 표시되기 때문에 그것을 베낀다. 그러나 한번 닫아 버리면 더 이상 볼 수 없기 때문에 주의.
4. Gmail 인증
아래의 파일을 client_id.json이 있는 디렉토리에 만들어 실행한다.
g_oauth.py import httplib2, os
from apiclient import discovery
from oauth2client import client
from oauth2client import tools
from oauth2client.file import Storage
SCOPES = 'https://www.googleapis.com/auth/gmail.readonly'
CLIENT_SECRET_FILE = '/home/igor-bond/Desktop/client_id.json'
USER_SECRET_FILE = '/home/igor-bond/Desktop/credentials_gmail.json'
def gmail_user_auth():
store = Storage(USER_SECRET_FILE)
credentials = store.get()
if not credentials or credentials.invalid:
flow = client.flow_from_clientsecrets(CLIENT_SECRET_FILE, SCOPES)
flow.user_agent = 'Python Gmail API'
credentials = tools.run_flow(flow, store, None)
print('認証結果を保存しました:' + USER_SECRET_FILE)
return credentials
여기에서 사용자의 비밀을 더 저장하는 credentials_gmail.json이라는 파일도 같은 디렉토리에 만들어집니다.
5. 메인 처리 작성
이 파일도 지금까지 만들어 온 것과 같은 디렉토리에 만듭니다. Your token의 곳은 방금 복사한 LineNotify의 token을 붙여 주세요.
gpio.py import os,httplib2
from apiclient import discovery
import g_oauth
import time
from datetime import datetime
import picamera
import requests
token = 'Your Token'
def gmail_get_service():
credentials = g_oauth.gmail_user_auth()
http = credentials.authorize(httplib2.Http())
service = discovery.build('gmail', 'v1', http=http)
return service
mail_list = []
def gmail_get_messages():
service = gmail_get_service()
messages = service.users().messages()
msg_list = messages.list(userId='me', maxResults=1).execute()
for msg in msg_list['messages']:
topid = msg['id']
msg = messages.get(userId='me', id=topid).execute()
if msg['snippet'] == 'Security Check2':
if not msg['id'] in mail_list:
mail_list.append(msg['id'])
send_msg()
def send_msg():
filename = datetime.now()
with picamera.PiCamera() as camera:
camera.resolution = (1024,768)
camera.capture(str(filename)+'.jpg')
url = 'https://notify-api.line.me/api/notify'
headers = {'Authorization':'Bearer '+token}
data = {"message":"Here is your room."}
img = f'/home/pi/Desktop/RaspberryPi_for_convenient_life/Projeect 1/{filename}.jpg'
file = {'imageFile': open(img, 'rb')}
r = requests.post(url, headers=headers, params=data, files=file,)
run = True
while run:
try:
time.sleep(30)
gmail_get_messages()
except KeyboardInterrupt:
run = False
여기에서는 30초마다 로그인하고 있는 사용자의 Gmail의 맨 위에 있는 메일을 꺼내, 만약 그 내용이 "Security Check2"한편, 같은 내용으로 처리 끝난 메일이 아니면 라즈파이로 사진을 찍어, LineNotify 놓는다. 라는 것입니다. 아직 구현하지 않았지만 사진을 보내고 나면 그 사진을 삭제하는 처리도 필요하다고 생각합니다. 사진이 쌓여 동작이 무거워지기 때문에,,,,,
마지막으로
이 간이적인 감시 카메라의 만드는 방법은 Youtube 하지만 해설하고 있으므로 그쪽도 좋으면 봐 주세요. 질문등이 있으면 그 동영상의 코멘트란 혹은, 이 기사의 코멘트란에서 부디. 또, 좋다고 생각하면 구독 부탁합니다.
Reference
이 문제에 관하여(라즈파이와 GmailAPI와 LineAPI를 사용하여 간단한 서버리스 감시 카메라를 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/igor-bond16/items/6b1ef5580dc2754497ad
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import httplib2, os
from apiclient import discovery
from oauth2client import client
from oauth2client import tools
from oauth2client.file import Storage
SCOPES = 'https://www.googleapis.com/auth/gmail.readonly'
CLIENT_SECRET_FILE = '/home/igor-bond/Desktop/client_id.json'
USER_SECRET_FILE = '/home/igor-bond/Desktop/credentials_gmail.json'
def gmail_user_auth():
store = Storage(USER_SECRET_FILE)
credentials = store.get()
if not credentials or credentials.invalid:
flow = client.flow_from_clientsecrets(CLIENT_SECRET_FILE, SCOPES)
flow.user_agent = 'Python Gmail API'
credentials = tools.run_flow(flow, store, None)
print('認証結果を保存しました:' + USER_SECRET_FILE)
return credentials
이 파일도 지금까지 만들어 온 것과 같은 디렉토리에 만듭니다. Your token의 곳은 방금 복사한 LineNotify의 token을 붙여 주세요.
gpio.py
import os,httplib2
from apiclient import discovery
import g_oauth
import time
from datetime import datetime
import picamera
import requests
token = 'Your Token'
def gmail_get_service():
credentials = g_oauth.gmail_user_auth()
http = credentials.authorize(httplib2.Http())
service = discovery.build('gmail', 'v1', http=http)
return service
mail_list = []
def gmail_get_messages():
service = gmail_get_service()
messages = service.users().messages()
msg_list = messages.list(userId='me', maxResults=1).execute()
for msg in msg_list['messages']:
topid = msg['id']
msg = messages.get(userId='me', id=topid).execute()
if msg['snippet'] == 'Security Check2':
if not msg['id'] in mail_list:
mail_list.append(msg['id'])
send_msg()
def send_msg():
filename = datetime.now()
with picamera.PiCamera() as camera:
camera.resolution = (1024,768)
camera.capture(str(filename)+'.jpg')
url = 'https://notify-api.line.me/api/notify'
headers = {'Authorization':'Bearer '+token}
data = {"message":"Here is your room."}
img = f'/home/pi/Desktop/RaspberryPi_for_convenient_life/Projeect 1/{filename}.jpg'
file = {'imageFile': open(img, 'rb')}
r = requests.post(url, headers=headers, params=data, files=file,)
run = True
while run:
try:
time.sleep(30)
gmail_get_messages()
except KeyboardInterrupt:
run = False
여기에서는 30초마다 로그인하고 있는 사용자의 Gmail의 맨 위에 있는 메일을 꺼내, 만약 그 내용이 "Security Check2"한편, 같은 내용으로 처리 끝난 메일이 아니면 라즈파이로 사진을 찍어, LineNotify 놓는다. 라는 것입니다. 아직 구현하지 않았지만 사진을 보내고 나면 그 사진을 삭제하는 처리도 필요하다고 생각합니다. 사진이 쌓여 동작이 무거워지기 때문에,,,,,
마지막으로
이 간이적인 감시 카메라의 만드는 방법은 Youtube 하지만 해설하고 있으므로 그쪽도 좋으면 봐 주세요. 질문등이 있으면 그 동영상의 코멘트란 혹은, 이 기사의 코멘트란에서 부디. 또, 좋다고 생각하면 구독 부탁합니다.
Reference
이 문제에 관하여(라즈파이와 GmailAPI와 LineAPI를 사용하여 간단한 서버리스 감시 카메라를 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/igor-bond16/items/6b1ef5580dc2754497ad
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(라즈파이와 GmailAPI와 LineAPI를 사용하여 간단한 서버리스 감시 카메라를 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/igor-bond16/items/6b1ef5580dc2754497ad텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)