센서의 아날로그 출력을 A/D 변환하여 알림을 채팅 앱으로 날리기
임계값을 넘으면 경고를 날리는 구조를 만들었으므로 메모해 둔다.
일단 Line과 Chatwork의 두 가지 앱에 경고를 날려 보았다.
Slack는 사용자 계층이 적합하지 않기 때문에 통과한다.
개요
포토 레지스터 (광 의존 저항)를 사용하여,
공장의 램프에 설치하고 램프가 붙으면 감지하여 경고를 날리도록 한다.
사용 부품
Raspberry Pi용 센서
회로
포토레지스터의 저항값을 측정하여 빛이 인가되었는지 여부를 결정하는 회로.
또한, 포토 레지스터의 출력을 ADC0832
로 A/D 변환한다.
단, 이 에 들어 있는 포토레지스터는, 아래 그림과 같이 되어 있어, 위 그림과 같이 저항을 끼우는 것이 아니라, Signal 핀으로부터 직접 청색선을 늘리면 된다.
또한, ADC0832는 이하와 같은 핀 배치로 되어 있다.
위 그림과 같이 CS를 GPIO11, CLK를 GPIO12, DI와 DO를 GPIO13에 연결했다.
라이브러리 준비
여기 에서 ADC0832.py
및 20_photoRes.py
를 다운로드하여 Raspberry Pi의 동일한 디렉토리에 넣습니다.
핀 번호가 아니라 GPIO 번호로 지정하는 것이 선호하므로 ADC0832.py
의 GPIO 지정 모드를 변경했다.
여기에 지정된 번호가 이전에 연결된 회로와 일치합니다.
ADC0832.pydef setup(cs=11, clk=12, dio=13):
global ADC_CS, ADC_CLK, ADC_DIO
ADC_CS = cs
ADC_CLK = clk
ADC_DIO = dio
GPIO.setwarnings(False)
- GPIO.setmode(GPIO.BOARD) # Number GPIOs by its physical location
+ GPIO.setmode(GPIO.BCM)
GPIO.setup(ADC_CS, GPIO.OUT) # Set pins' mode is output
GPIO.setup(ADC_CLK, GPIO.OUT) # Set pins' mode is output
Line에 경보를 날리기
LINE Developers Trial에 등록하기
(PUSH_MESSAGE를 사용할 수있는 계획이라면 뭐든지 좋다)
등록 방법은 여러가지 기사가 공개되어 있으므로 설명을 생략한다.
line-bot-sdk 설치
파이썬 용 SDK이 공개되어 있으므로 README대로 설치.
$ pip install line-bot-sdk
메시지 PUSH
20_photoRes.py
를 기반으로 PUSH 메시지를 지연하도록 다시 씁니다.
photo_regsiter.py#!/usr/bin/env python
# coding: UTF-8
import ADC0832
import sys
import time
from datetime import datetime
from linebot import (
LineBotApi
)
from linebot.exceptions import (
InvalidSignatureError
)
from linebot.models import (
MessageEvent, TextMessage, TextSendMessage,
)
line_bot_api = LineBotApi('Access Token')
def init():
ADC0832.setup()
def loop():
error = False
while True:
res = ADC0832.getResult()
if res <= 10:
if not error:
line_bot_api.push_message("Your user ID", TextSendMessage(text='エラーランプが点灯しました。'))
error = True
else:
error = False
time.sleep(0.4)
if __name__ == '__main__':
init()
try:
loop()
except KeyboardInterrupt:
ADC0832.destroy()
print 'The end !'
Access Token
와 Your user ID
는 Line Developers 콘솔에서 확인한다.
특히 Your user ID
는 일반 유저가 사용한다 @hogehoge
같은 녀석이 아니기 때문에 주의한다.
이것을 Raspberry Pi에서 실행하면, 포토 레지스터의 저항이 현저하게 내려갔을 경우(=빛이 비춰진) 경우에 라인의 메시지가 날아가게 된다.
적당한 계정으로 친구가 되어 있으면 메시지를 확인할 수 있다.
Chatwork에 알림 건너뛰기
이쪽도 API가 공개되어 있으므로, 사양없이 사용한다.
개인 계정을 가지고 있으면, 「API 설정」으로부터 간단하게 API 토큰을 취득할 수 있다.
파이썬에서 API를 사용하기 위해 requests
패키지 설치.
$ pip install requests
메시지 PUSH
photo_register_chatwork.py#!/usr/bin/env python
# coding: UTF-8
import ADC0832
import sys
import time
from datetime import datetime
import requests
APIKEY = 'API KEY'
ENDPOINT = 'https://api.chatwork.com/v2'
ROOMID = 'ROOM ID'
post_message_url = '{}/rooms/{}/messages'.format(ENDPOINT, ROOMID)
headers = {'X-ChatWorkToken': APIKEY}
params = {'body': 'エラーランプが点灯しました。'}
def init():
ADC0832.setup()
def loop():
error = False
while True:
res = ADC0832.getResult()
if res <= 10:
if not error:
resp = requests.post(post_message_url,
headers=headers,
params=params)
error = True
else:
error = False
time.sleep(0.4)
if __name__ == '__main__':
init()
try:
loop()
except KeyboardInterrupt:
ADC0832.destroy()
print 'The end !'
API KEY
는 이전에 취득한 API 토큰의 값을,ROOM ID
는 메시지를 PUSH하려는 대화방의 ID를 지정합니다.
ROOM ID
는 채팅방 주소의 rid
이후의 숫자이다.
요약
여기 에서
ADC0832.py
및 20_photoRes.py
를 다운로드하여 Raspberry Pi의 동일한 디렉토리에 넣습니다.핀 번호가 아니라 GPIO 번호로 지정하는 것이 선호하므로
ADC0832.py
의 GPIO 지정 모드를 변경했다.여기에 지정된 번호가 이전에 연결된 회로와 일치합니다.
ADC0832.py
def setup(cs=11, clk=12, dio=13):
global ADC_CS, ADC_CLK, ADC_DIO
ADC_CS = cs
ADC_CLK = clk
ADC_DIO = dio
GPIO.setwarnings(False)
- GPIO.setmode(GPIO.BOARD) # Number GPIOs by its physical location
+ GPIO.setmode(GPIO.BCM)
GPIO.setup(ADC_CS, GPIO.OUT) # Set pins' mode is output
GPIO.setup(ADC_CLK, GPIO.OUT) # Set pins' mode is output
Line에 경보를 날리기
LINE Developers Trial에 등록하기
(PUSH_MESSAGE를 사용할 수있는 계획이라면 뭐든지 좋다)
등록 방법은 여러가지 기사가 공개되어 있으므로 설명을 생략한다.
line-bot-sdk 설치
파이썬 용 SDK이 공개되어 있으므로 README대로 설치.
$ pip install line-bot-sdk
메시지 PUSH
20_photoRes.py
를 기반으로 PUSH 메시지를 지연하도록 다시 씁니다.
photo_regsiter.py#!/usr/bin/env python
# coding: UTF-8
import ADC0832
import sys
import time
from datetime import datetime
from linebot import (
LineBotApi
)
from linebot.exceptions import (
InvalidSignatureError
)
from linebot.models import (
MessageEvent, TextMessage, TextSendMessage,
)
line_bot_api = LineBotApi('Access Token')
def init():
ADC0832.setup()
def loop():
error = False
while True:
res = ADC0832.getResult()
if res <= 10:
if not error:
line_bot_api.push_message("Your user ID", TextSendMessage(text='エラーランプが点灯しました。'))
error = True
else:
error = False
time.sleep(0.4)
if __name__ == '__main__':
init()
try:
loop()
except KeyboardInterrupt:
ADC0832.destroy()
print 'The end !'
Access Token
와 Your user ID
는 Line Developers 콘솔에서 확인한다.
특히 Your user ID
는 일반 유저가 사용한다 @hogehoge
같은 녀석이 아니기 때문에 주의한다.
이것을 Raspberry Pi에서 실행하면, 포토 레지스터의 저항이 현저하게 내려갔을 경우(=빛이 비춰진) 경우에 라인의 메시지가 날아가게 된다.
적당한 계정으로 친구가 되어 있으면 메시지를 확인할 수 있다.
Chatwork에 알림 건너뛰기
이쪽도 API가 공개되어 있으므로, 사양없이 사용한다.
개인 계정을 가지고 있으면, 「API 설정」으로부터 간단하게 API 토큰을 취득할 수 있다.
파이썬에서 API를 사용하기 위해 requests
패키지 설치.
$ pip install requests
메시지 PUSH
photo_register_chatwork.py#!/usr/bin/env python
# coding: UTF-8
import ADC0832
import sys
import time
from datetime import datetime
import requests
APIKEY = 'API KEY'
ENDPOINT = 'https://api.chatwork.com/v2'
ROOMID = 'ROOM ID'
post_message_url = '{}/rooms/{}/messages'.format(ENDPOINT, ROOMID)
headers = {'X-ChatWorkToken': APIKEY}
params = {'body': 'エラーランプが点灯しました。'}
def init():
ADC0832.setup()
def loop():
error = False
while True:
res = ADC0832.getResult()
if res <= 10:
if not error:
resp = requests.post(post_message_url,
headers=headers,
params=params)
error = True
else:
error = False
time.sleep(0.4)
if __name__ == '__main__':
init()
try:
loop()
except KeyboardInterrupt:
ADC0832.destroy()
print 'The end !'
API KEY
는 이전에 취득한 API 토큰의 값을,ROOM ID
는 메시지를 PUSH하려는 대화방의 ID를 지정합니다.
ROOM ID
는 채팅방 주소의 rid
이후의 숫자이다.
요약
$ pip install line-bot-sdk
#!/usr/bin/env python
# coding: UTF-8
import ADC0832
import sys
import time
from datetime import datetime
from linebot import (
LineBotApi
)
from linebot.exceptions import (
InvalidSignatureError
)
from linebot.models import (
MessageEvent, TextMessage, TextSendMessage,
)
line_bot_api = LineBotApi('Access Token')
def init():
ADC0832.setup()
def loop():
error = False
while True:
res = ADC0832.getResult()
if res <= 10:
if not error:
line_bot_api.push_message("Your user ID", TextSendMessage(text='エラーランプが点灯しました。'))
error = True
else:
error = False
time.sleep(0.4)
if __name__ == '__main__':
init()
try:
loop()
except KeyboardInterrupt:
ADC0832.destroy()
print 'The end !'
이쪽도 API가 공개되어 있으므로, 사양없이 사용한다.
개인 계정을 가지고 있으면, 「API 설정」으로부터 간단하게 API 토큰을 취득할 수 있다.
파이썬에서 API를 사용하기 위해
requests
패키지 설치.$ pip install requests
메시지 PUSH
photo_register_chatwork.py
#!/usr/bin/env python
# coding: UTF-8
import ADC0832
import sys
import time
from datetime import datetime
import requests
APIKEY = 'API KEY'
ENDPOINT = 'https://api.chatwork.com/v2'
ROOMID = 'ROOM ID'
post_message_url = '{}/rooms/{}/messages'.format(ENDPOINT, ROOMID)
headers = {'X-ChatWorkToken': APIKEY}
params = {'body': 'エラーランプが点灯しました。'}
def init():
ADC0832.setup()
def loop():
error = False
while True:
res = ADC0832.getResult()
if res <= 10:
if not error:
resp = requests.post(post_message_url,
headers=headers,
params=params)
error = True
else:
error = False
time.sleep(0.4)
if __name__ == '__main__':
init()
try:
loop()
except KeyboardInterrupt:
ADC0832.destroy()
print 'The end !'
API KEY
는 이전에 취득한 API 토큰의 값을,ROOM ID
는 메시지를 PUSH하려는 대화방의 ID를 지정합니다.ROOM ID
는 채팅방 주소의 rid
이후의 숫자이다.요약
Reference
이 문제에 관하여(센서의 아날로그 출력을 A/D 변환하여 알림을 채팅 앱으로 날리기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/h-sakano/items/a3cffbe460e64f9ed064텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)