Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #echime.py: a small script that plays sounds when sensors are triggered
- version = '20170504-dev'
- import logging
- logging.basicConfig(filename='/var/log/pi/echime.pylog',level=logging.INFO)
- import sys
- import time
- import datetime
- from alarmdecoder import AlarmDecoder
- from alarmdecoder.devices import SocketDevice
- from subprocess import Popen, PIPE, STDOUT
- ts = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
- HOSTNAME = 'localhost'
- PORT = 10000
- def main():
- ts = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
- print "{} echime.py version {}".format(ts, version)
- logging.info("{} echime.py version {}".format(ts, version))
- while True:
- try:
- # Retrieve an AD2 device that has been exposed with ser2sock on localhost:10000.
- device = AlarmDecoder(SocketDevice(interface=(HOSTNAME, PORT)))
- # Set up event handlers and open the device
- device.on_rfx_message += handle_rfx
- with device.open():
- while True:
- time.sleep(1)
- except Exception as ex:
- print('Exception:', ex)
- logging.error(ex)
- continue
- def handle_rfx(sender, message):
- ts = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
- print "{} - RFX Detect Serial: {} Value: {}".format(ts, message.serial_number,message.value)
- logging.debug("{} - RFX Detect Serial: {} Value: {}".format(ts, message.serial_number,message.value))
- if (message.value == 160 and message.serial_number == '0713027'): #Front Door open (zone 9)
- ts = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
- print "{} - the front door has been opened.".format(ts)
- logging.info(ts + ' - the front door has been opened.')
- player9 = Popen(["aplay", "/opt/alarmdecoder-scripts/echime9.wav"], stdin=PIPE, stdout=PIPE, stderr=PIPE)
- elif message.value == 160 and message.serial_number == '0355961': #Garage Door open (zone 10)
- ts = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
- print "{} - the garage door is opening now.".format(ts)
- logging.info(ts + ' - the garage door is opening now.')
- player10 = Popen(["aplay", "/opt/alarmdecoder-scripts/echime10.wav"], stdin=PIPE, stdout=PIPE, stderr=PIPE)
- elif message.value == 160 and message.serial_number == '0377711': #Back Door Main Open (zone 11)
- ts = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
- print "{} - the back door has been opened.".format(ts)
- logging.info(ts + ' - the back door has been opened.')
- player11 = Popen(["aplay", "/opt/alarmdecoder-scripts/echime11.wav"], stdin=PIPE, stdout=PIPE, stderr=PIPE)
- elif message.value == 160 and message.serial_number == '0882784': #Back Door Garage open (zone 12)
- ts = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
- print "{} - the garage back door has been opened.".format(ts)
- logging.info(ts + ' - the garage back door has been opened.')
- player12 = Popen(["aplay", "/opt/alarmdecoder-scripts/echime12.wav"], stdin=PIPE, stdout=PIPE, stderr=PIPE)
- elif message.value == 128 and message.serial_number == '0713027': #Front Door close (zone 9)
- ts = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
- print "{} - the front door has been closed.".format(ts)
- logging.info(ts + ' - the front door has been closed.')
- player9r = Popen(["aplay", "/opt/alarmdecoder-scripts/echime9r.wav"], stdin=PIPE, stdout=PIPE, stderr=PIPE)
- elif message.value == 128 and message.serial_number == '0355961': #Garage Door close (zone 10)
- ts = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
- print "{} - the garage door has been closed.".format(ts)
- logging.info(ts + ' - the garage door has been closed.')
- player10r = Popen(["aplay", "/opt/alarmdecoder-scripts/echime10r.wav"], stdin=PIPE, stdout=PIPE, stderr=PIPE)
- elif message.value == 128 and message.serial_number == '0377711': #Back Door Main close (zone 11)
- ts = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
- print "{} - the back door has been closed.".format(ts)
- logging.info(ts + ' - the back door has been closed.')
- player11r = Popen(["aplay", "/opt/alarmdecoder-scripts/echime11r.wav"], stdin=PIPE, stdout=PIPE, stderr=PIPE)
- elif message.value == 128 and message.serial_number == '0882784': #Back Door Garage close (zone 12)
- ts = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
- print "{} - the garage back door has been closed.".format(ts)
- logging.info(ts + ' - the garage back door has been closed.')
- player12r = Popen(["aplay", "/opt/alarmdecoder-scripts/echime12r.wav"], stdin=PIPE, stdout=PIPE, stderr=PIPE)
- else:
- pass
- if __name__ == '__main__':
- main()
Add Comment
Please, Sign In to add comment