การประยุกต์ใช้ LINE Notify กับ PIR Sensor - mrolarik/simple-iot GitHub Wiki
จากบทความที่ได้เขียนไว้เกี่ยวกับ
บทความนี้จะแนะนำการประยุกต์ใช้ LINE Notify กับ PIR Sensor ซึ่งอาจนำไปปรับปรุงให้เป็นระบบการแจ้งเตือนการบุกรุกได้ในอนาคต
โปรแกรมการประยุกต์ใช้ LINE Notify กับ PIR Sensor
- ตัวอย่างโปรแกรมสามารถดาวน์โหลดได้จาก rpi-pir-line-notify.py
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
import requests
import RPi.GPIO as GPIO
import time
import datetime
# LINE notify
url = 'https://notify-api.line.me/api/notify'
token = 'MQxJL1wXd7e71PDUOUvFK3eYyqq4VySHQRVMfaobwiw'
headers = {'content-type':'application/x-www-form-urlencoded','Authorization':'Bearer '+token}
GPIO.setwarnings(False)
#GPIO.setmode(GPIO.BOARD)
GPIO.setmode(GPIO.BCM)
pir_sensor_pin = 17
led_pin = 4
GPIO.setup(pir_sensor_pin, GPIO.IN) #Read output from PIR motion sensor
GPIO.setup(led_pin, GPIO.OUT) #LED output pin
for i in range(0,3):
GPIO.output(led_pin,True)
#print("LED ON")
time.sleep(1)
GPIO.output(led_pin,False)
#print("LED OFF")
time.sleep(0.5)
print("Starting PIR motion sensor...")
while(True):
if(GPIO.input(pir_sensor_pin)):
for i in range(0,2):
GPIO.output(led_pin, True)
time.sleep(1)
GPIO.output(led_pin, False)
time.sleep(0.5)
# MSG
dt = datetime.datetime.now().strftime("%Y-%m-%d %H:%M")
msg = 'Motion Detected: ' + dt
r = requests.post(url, headers=headers, data = {'message':msg})
print r.text
print msg
time.sleep(3)
time.sleep(1) #loop delay
GPIO.cleanup()
การเรียกใช้งาน
จากตัวอย่างข้างต้นได้กำหนดชื่อไฟล์คือ rpi-pir-line-notify.py
ดังนั้นสามารถ run โปรแกรมดังนี้
$ python rpi-pir-line-notify.py
ผลลัพธ์ที่ได้
Starting PIR motion sensor...
{"status":200,"message":"ok"}
Motion Detected: 2018-08-01 01:23
{"status":200,"message":"ok"}
Motion Detected: 2018-08-01 01:24
ผลลัพธ์ที่ส่ง LINE Notify
อธิบายโปรแกรมเพิ่มเติม
กำหนดให้ระบบหยุดรอ ก่อนจะเริ่มทำงานใหม่อีกครั้ง
import time
time.sleep(1)
จากตัวอย่างข้างต้น time.sleep(1)
สั่งให้ระบบหยุดรอ 1 วินาที
- การกำหนดข้อความ (msg) ที่จะใช้ส่ง โดยจะแสดงข้อความ และวันเวลา
import datetime
dt = datetime.datetime.now().strftime("%Y-%m-%d %H:%M")
msg = 'Motion Detected: ' + dt
print msg
ผลลัพธ์ที่ได้คือ
Motion Detected: 2018-08-01 01:12
การสั่งให้หลอด LED กระพริบ
for i in range(0,3):
GPIO.output(led_pin,True)
#print("LED ON")
time.sleep(1)
GPIO.output(led_pin,False)
#print("LED OFF")
time.sleep(0.5)
- จากตัวอย่างสั่งให้หลอด LED กระพริบ 3 ครั้ง จากคำสั่ง
for i in range(0,3):
- สั่งให้เปิดหลอด LED 1 วินาที
GPIO.output(led_pin,True)
time.sleep(1)
- สั่งให้ปิดหลอด LED 0.5 วินาที
GPIO.output(led_pin,False)
time.sleep(0.5)