SORACOM LTE-M Button으로 LINE Notify하는 '바다 버튼'을 만들어 보았다
12018 단어 람다파이썬SORACOM그 버튼LineNotify
SMS나 Slack에 대한 통지는 아래의 가이드가 상세합니다.
버튼의 싱글 클릭, 더블 클릭, 길게 누르기에 따라 「아직이다 😆」 「바꾸어요 🐸」 「대체에 와서 🚗」를 LINE Notify로 알려드립니다.
아이가 외출시에 사용하는 것을 상정하고 있습니다.
(2017-2-20 : python3.6의 lambda와 그 후의 단풍 버튼을 추가했습니다.)
등록 및 초기 설정
이 가이드에 자세히 쓰여져 있기 때문에 쉽게 완료합니다. SMS 전송까지 순식간입니다.
SORACOM LTE-M 버튼을 클릭하여 Slack 알림으로 전환
LINE Notify 설정
LINE 마이 페이지에서 액세스 토큰을 발급합니다.
이쪽이 참고가 됩니다.
[초간단] LINE notify 사용해보기
Lambda 함수 만들기
python3.6
lambda_function.py# -*- coding: utf-8 -*-
import os
import urllib.request
import urllib.parse
def get_message(data):
clicktype = data['deviceEvent']['buttonClicked']['clickType']
if clicktype == 'SINGLE':
message = u'まだだよ\U0001f606'
elif clicktype == 'DOUBLE':
message = u'かえるよ\U0001f438'
elif clicktype == 'LONG':
message = u'むかえにきて\U0001f697'
else:
message = u'けろけろ'
return message
def line_notify(msg):
url = "https://notify-api.line.me/api/notify"
headers = {"Authorization" : "Bearer "+ os.environ['LINE_TOKEN']}
data = urllib.parse.urlencode({"message" : msg}).encode('utf-8')
request = urllib.request.Request(url, data=data, headers=headers)
r = urllib.request.urlopen(request)
print(r)
def lambda_handler(event, context):
message = get_message(event)
line_notify(message)
return
다음 python2.7의 lambda와는 http post가 urllib.request.Request()인 점이 다릅니다. python3.6의 lambda에서는 import urllib을 선언하기 만하면 라이브러리를 직접 추가 할 필요가 없습니다. 이쪽이 간편한 것에 나중에 깨달았습니다.
버튼으로부터 건네받는 이벤트는 클릭에 응해, 싱글 클릭, 더블 클릭, 길게 누르기가 clickType 에 SINGLE, DOUBLE, LONG 의 3종으로 건네받습니다.
click_type = event['deviceEvent']['buttonClicked']['clickType']
AWS Lambda 환경 변수 'LINE_TOKEN'에 LINE Notify 액세스 토큰을 저장하고 사용하고 있습니다.
token = os.environ['LINE_TOKEN']
python2.7
lambda_function.py# -*- coding: utf-8 -*-
from __future__ import print_function
import os
import json
import requests
def get_message(data):
clicktype = data['deviceEvent']['buttonClicked']['clickType']
if clicktype == 'SINGLE':
message = u'まだだよ\U0001f606'
elif clicktype == 'DOUBLE':
message = u'かえるよ\U0001f438'
elif clicktype == 'LONG':
message = u'むかえにきて\U0001f697'
else:
message = u'けろけろ'
return message
def line_notify(msg):
url = "https://notify-api.line.me/api/notify"
headers = {"Authorization" : "Bearer "+ os.environ['LINE_TOKEN']}
params = {"message" : msg}
r = requests.post(url, headers=headers, params=params)
print(r)
def lambda_handler(event, context):
message = get_message(event)
line_notify(message)
return
requests 라이브러리를 python2.7의 Lambda에서 사용하려면 lambda_function.py와 함께 zip하여 Lambda에 업로드해야합니다.
linux 환경 라즈파이와 같은 python2.7 환경에서 적절한 디렉토리를 만들고 lambda_function.py를 저장하고 requests 라이브러리를 동일한 디렉토리에 저장합니다.
모두 zip하여 zip 파일을 만듭니다.
$ pip install requests -t ./
$ zip -r lambda_line_notify.zip ./
AWS Lambda 생성 화면에서 코드 항목 유형인 .zip 파일 업로드를 선택하고 이 lambda_line_notify.zip을 저장하면 requests 라이브러리가 포함된 lambda 함수 세트가 AWS Lambda에 생성됩니다.
운영
버튼을 누르면 됩니다.
안전 알림이 왔습니다.
깨달은 것
LINE 마이 페이지에서 액세스 토큰을 발급합니다.
이쪽이 참고가 됩니다.
[초간단] LINE notify 사용해보기
Lambda 함수 만들기
python3.6
lambda_function.py# -*- coding: utf-8 -*-
import os
import urllib.request
import urllib.parse
def get_message(data):
clicktype = data['deviceEvent']['buttonClicked']['clickType']
if clicktype == 'SINGLE':
message = u'まだだよ\U0001f606'
elif clicktype == 'DOUBLE':
message = u'かえるよ\U0001f438'
elif clicktype == 'LONG':
message = u'むかえにきて\U0001f697'
else:
message = u'けろけろ'
return message
def line_notify(msg):
url = "https://notify-api.line.me/api/notify"
headers = {"Authorization" : "Bearer "+ os.environ['LINE_TOKEN']}
data = urllib.parse.urlencode({"message" : msg}).encode('utf-8')
request = urllib.request.Request(url, data=data, headers=headers)
r = urllib.request.urlopen(request)
print(r)
def lambda_handler(event, context):
message = get_message(event)
line_notify(message)
return
다음 python2.7의 lambda와는 http post가 urllib.request.Request()인 점이 다릅니다. python3.6의 lambda에서는 import urllib을 선언하기 만하면 라이브러리를 직접 추가 할 필요가 없습니다. 이쪽이 간편한 것에 나중에 깨달았습니다.
버튼으로부터 건네받는 이벤트는 클릭에 응해, 싱글 클릭, 더블 클릭, 길게 누르기가 clickType 에 SINGLE, DOUBLE, LONG 의 3종으로 건네받습니다.
click_type = event['deviceEvent']['buttonClicked']['clickType']
AWS Lambda 환경 변수 'LINE_TOKEN'에 LINE Notify 액세스 토큰을 저장하고 사용하고 있습니다.
token = os.environ['LINE_TOKEN']
python2.7
lambda_function.py# -*- coding: utf-8 -*-
from __future__ import print_function
import os
import json
import requests
def get_message(data):
clicktype = data['deviceEvent']['buttonClicked']['clickType']
if clicktype == 'SINGLE':
message = u'まだだよ\U0001f606'
elif clicktype == 'DOUBLE':
message = u'かえるよ\U0001f438'
elif clicktype == 'LONG':
message = u'むかえにきて\U0001f697'
else:
message = u'けろけろ'
return message
def line_notify(msg):
url = "https://notify-api.line.me/api/notify"
headers = {"Authorization" : "Bearer "+ os.environ['LINE_TOKEN']}
params = {"message" : msg}
r = requests.post(url, headers=headers, params=params)
print(r)
def lambda_handler(event, context):
message = get_message(event)
line_notify(message)
return
requests 라이브러리를 python2.7의 Lambda에서 사용하려면 lambda_function.py와 함께 zip하여 Lambda에 업로드해야합니다.
linux 환경 라즈파이와 같은 python2.7 환경에서 적절한 디렉토리를 만들고 lambda_function.py를 저장하고 requests 라이브러리를 동일한 디렉토리에 저장합니다.
모두 zip하여 zip 파일을 만듭니다.
$ pip install requests -t ./
$ zip -r lambda_line_notify.zip ./
AWS Lambda 생성 화면에서 코드 항목 유형인 .zip 파일 업로드를 선택하고 이 lambda_line_notify.zip을 저장하면 requests 라이브러리가 포함된 lambda 함수 세트가 AWS Lambda에 생성됩니다.
운영
버튼을 누르면 됩니다.
안전 알림이 왔습니다.
깨달은 것
# -*- coding: utf-8 -*-
import os
import urllib.request
import urllib.parse
def get_message(data):
clicktype = data['deviceEvent']['buttonClicked']['clickType']
if clicktype == 'SINGLE':
message = u'まだだよ\U0001f606'
elif clicktype == 'DOUBLE':
message = u'かえるよ\U0001f438'
elif clicktype == 'LONG':
message = u'むかえにきて\U0001f697'
else:
message = u'けろけろ'
return message
def line_notify(msg):
url = "https://notify-api.line.me/api/notify"
headers = {"Authorization" : "Bearer "+ os.environ['LINE_TOKEN']}
data = urllib.parse.urlencode({"message" : msg}).encode('utf-8')
request = urllib.request.Request(url, data=data, headers=headers)
r = urllib.request.urlopen(request)
print(r)
def lambda_handler(event, context):
message = get_message(event)
line_notify(message)
return
click_type = event['deviceEvent']['buttonClicked']['clickType']
token = os.environ['LINE_TOKEN']
# -*- coding: utf-8 -*-
from __future__ import print_function
import os
import json
import requests
def get_message(data):
clicktype = data['deviceEvent']['buttonClicked']['clickType']
if clicktype == 'SINGLE':
message = u'まだだよ\U0001f606'
elif clicktype == 'DOUBLE':
message = u'かえるよ\U0001f438'
elif clicktype == 'LONG':
message = u'むかえにきて\U0001f697'
else:
message = u'けろけろ'
return message
def line_notify(msg):
url = "https://notify-api.line.me/api/notify"
headers = {"Authorization" : "Bearer "+ os.environ['LINE_TOKEN']}
params = {"message" : msg}
r = requests.post(url, headers=headers, params=params)
print(r)
def lambda_handler(event, context):
message = get_message(event)
line_notify(message)
return
$ pip install requests -t ./
$ zip -r lambda_line_notify.zip ./
버튼을 누르면 됩니다.
안전 알림이 왔습니다.
깨달은 것
그 후의 「바꾸는 버튼」
2019년 2월 현재 3개월이 지났습니다. 아이가 배우거나 나갈 때 사용하고 있습니다. 안정적이고 운영 중입니다.
Reference
이 문제에 관하여(SORACOM LTE-M Button으로 LINE Notify하는 '바다 버튼'을 만들어 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/zoe6120/items/9a14fccbd62bcea27c44
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(SORACOM LTE-M Button으로 LINE Notify하는 '바다 버튼'을 만들어 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/zoe6120/items/9a14fccbd62bcea27c44텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)