forked from Krautspace/doorstatus
54 lines
1.3 KiB
Python
Executable file
54 lines
1.3 KiB
Python
Executable file
#!/usr/bin/env python
|
|
#coding: utf8
|
|
|
|
# file: watchdoor.py
|
|
# date: 06.09.2020
|
|
# mail: berhsi@web.de
|
|
# desc: deamon who deals with edge detection at pin 18
|
|
|
|
import logging
|
|
loglevel = logging.INFO
|
|
formatstring = '%(asctime)s: %(levelname)s: %(message)s'
|
|
logging.basicConfig(format=formatstring, level=loglevel)
|
|
import time
|
|
import RPi.GPIO as GPIO
|
|
try:
|
|
from setstatus import SetStatus
|
|
except Exception as e:
|
|
logging.error('Cant import module setstatus')
|
|
logging.error('Error: {}'.format(e))
|
|
|
|
|
|
GPIO.setmode(GPIO.BOARD) # kind of enumeration
|
|
GPIO.setup(18, GPIO.IN, pull_up_down = GPIO.PUD_DOWN) # pin 18 (GPIO 24)
|
|
channel = 18
|
|
|
|
def voltage_changed(channel):
|
|
'''
|
|
callback-function
|
|
'''
|
|
if GPIO.input(channel) == GPIO.HIGH:
|
|
# door closed -> pin hight
|
|
logging.info('Pin high triggered - Space closed')
|
|
s = SetStatus()
|
|
s.run(0)
|
|
else:
|
|
# door open -> pin low
|
|
logging.info('Pin low triggered - Space is open')
|
|
s = SetStatus()
|
|
s.run(1)
|
|
|
|
def main():
|
|
'''
|
|
'''
|
|
logging.info('watchdoor.py started')
|
|
GPIO.add_event_detect(channel,
|
|
GPIO.BOTH,
|
|
callback = voltage_changed,
|
|
bouncetime = 200)
|
|
while 1:
|
|
time.sleep(0.1)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|