Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
PIR_mothion_sensor_and_HTTP.py
# -*- coding: utf-8 -*-
# ライブラリ呼び出し部
import RPi.GPIO as GPIO # GPIOライブラリを呼び出し
import time # 時間関連のライブラリを呼び出し
import requests
import signal
import sys
#################Ctrl+C###################
def exit_handler(signal, frame):
"""
Ctrl+Cが押されたときにデバイスを初期状態に戻して終了する。
"""
print("\nExit")
GPIO.cleanup()
sys.exit(0)
# 終了処理用のシグナルハンドラを準備
signal.signal(signal.SIGINT, exit_handler)
#########################################
# 初期設定部
GPIO.setmode( GPIO.BOARD ) # GPIOを端子番号で指定する
GPIO.setup( 40, GPIO.IN ) # 人感センサをつなげる端子を指定
sonzai = 0 # 存在フラグ
tentouzumi = 0 # 点灯フラグ
count = 0 # 秒数カウンタ
##############初回起動############
# 無条件で初回は点灯
tentouzumi = 1
requests.get('http://192.168.XXX.XXX:8080/light_on')
#print u"照明点灯"
##################################
# プログラム本体
while True: # 繰り返しを行う
time.sleep(1) # 1秒間スリープ
count = count + 1 # カウントアップ
# 30秒後に判定
if count == 30 :
count = 0 # カウンターリセット
#print u"30秒目の判定!"
#print sonzai
# 点灯しており、かつ誰も居ない時
if tentouzumi == 1 and sonzai == 0:
# 明かりを消す
requests.get('http://192.168.XXX.XXX:8080/light_off')
tentouzumi = 0 # 点灯済みフラグをクリア
sonzai = 0 # 存在フラグをクリア
#5秒間隔で判定
if count == 5 or count == 10 or count == 15 or count == 20 or count == 25:
# print u"5秒目!"
# print sonzai
#点灯しておらず、かつ誰か居る時
if tentouzumi == 0 and sonzai == 1 :
# 明かりを付ける
requests.get('http://192.168.XXX.XXX:8080/light_on')
tentouzumi = 1 # 点灯済みフラグをONに
count = 0 # カウンタリセット
#センサに反応があった場合(誰か居る場合)
if GPIO.input( 40 ) == GPIO.HIGH :
sonzai = 1 # 存在フラグをONに
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment