pirius

echime.py

May 16th, 2017
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.93 KB | None | 0 0
  1. #echime.py: a small script that plays sounds when sensors are triggered
  2. version = '20170504-dev'
  3.  
  4. import logging
  5. logging.basicConfig(filename='/var/log/pi/echime.pylog',level=logging.INFO)
  6.  
  7. import sys
  8. import time
  9. import datetime
  10. from alarmdecoder import AlarmDecoder
  11. from alarmdecoder.devices import SocketDevice
  12. from subprocess import Popen, PIPE, STDOUT
  13.  
  14. ts = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
  15. HOSTNAME = 'localhost'
  16. PORT = 10000
  17.  
  18. def main():
  19.     ts = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
  20.     print "{} echime.py version {}".format(ts, version)
  21.     logging.info("{} echime.py version {}".format(ts, version))
  22.     while True:
  23.         try:
  24.             # Retrieve an AD2 device that has been exposed with ser2sock on localhost:10000.
  25.             device = AlarmDecoder(SocketDevice(interface=(HOSTNAME, PORT)))
  26.  
  27.             # Set up event handlers and open the device
  28.             device.on_rfx_message += handle_rfx
  29.             with device.open():
  30.                 while True:
  31.                     time.sleep(1)
  32.  
  33.         except Exception as ex:
  34.             print('Exception:', ex)
  35.             logging.error(ex)
  36.             continue
  37.  
  38.  
  39. def handle_rfx(sender, message):
  40.     ts = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
  41.     print "{} - RFX Detect Serial: {} Value: {}".format(ts, message.serial_number,message.value)
  42.     logging.debug("{} - RFX Detect Serial: {} Value: {}".format(ts, message.serial_number,message.value))
  43.  
  44.     if (message.value == 160 and message.serial_number == '0713027'): #Front Door open (zone 9)
  45.     ts = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
  46.         print "{} - the front door has been opened.".format(ts)
  47.     logging.info(ts + ' - the front door has been opened.')
  48.         player9 = Popen(["aplay", "/opt/alarmdecoder-scripts/echime9.wav"], stdin=PIPE, stdout=PIPE, stderr=PIPE)
  49.     elif message.value == 160 and message.serial_number == '0355961': #Garage Door open (zone 10)
  50.     ts = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
  51.         print "{} - the garage door is opening now.".format(ts)
  52.         logging.info(ts + ' - the garage door is opening now.')
  53.     player10 = Popen(["aplay", "/opt/alarmdecoder-scripts/echime10.wav"], stdin=PIPE, stdout=PIPE, stderr=PIPE)
  54.     elif message.value == 160 and message.serial_number == '0377711': #Back Door Main Open (zone 11)
  55.     ts = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
  56.         print "{} - the back door has been opened.".format(ts)
  57.     logging.info(ts + ' - the back door has been opened.')
  58.         player11 = Popen(["aplay", "/opt/alarmdecoder-scripts/echime11.wav"], stdin=PIPE, stdout=PIPE, stderr=PIPE)
  59.     elif message.value == 160 and message.serial_number == '0882784': #Back Door Garage open (zone 12)
  60.     ts = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
  61.         print "{} - the garage back door has been opened.".format(ts)
  62.     logging.info(ts + ' - the garage back door has been opened.')
  63.         player12 = Popen(["aplay", "/opt/alarmdecoder-scripts/echime12.wav"], stdin=PIPE, stdout=PIPE, stderr=PIPE)
  64.     elif message.value == 128 and message.serial_number == '0713027': #Front Door close (zone 9)
  65.     ts = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
  66.         print "{} - the front door has been closed.".format(ts)
  67.     logging.info(ts + ' - the front door has been closed.')
  68.         player9r = Popen(["aplay", "/opt/alarmdecoder-scripts/echime9r.wav"], stdin=PIPE, stdout=PIPE, stderr=PIPE)
  69.     elif message.value == 128 and message.serial_number == '0355961': #Garage Door close (zone 10)
  70.     ts = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
  71.         print "{} - the garage door has been closed.".format(ts)
  72.     logging.info(ts + ' - the garage door has been closed.')
  73.         player10r = Popen(["aplay", "/opt/alarmdecoder-scripts/echime10r.wav"], stdin=PIPE, stdout=PIPE, stderr=PIPE)
  74.     elif message.value == 128 and message.serial_number == '0377711': #Back Door Main close (zone 11)
  75.     ts = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
  76.         print "{} - the back door has been closed.".format(ts)
  77.     logging.info(ts + ' - the back door has been closed.')
  78.         player11r = Popen(["aplay", "/opt/alarmdecoder-scripts/echime11r.wav"], stdin=PIPE, stdout=PIPE, stderr=PIPE)
  79.     elif message.value == 128 and message.serial_number == '0882784': #Back Door Garage close (zone 12)
  80.     ts = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
  81.         print "{} - the garage back door has been closed.".format(ts)
  82.     logging.info(ts + ' - the garage back door has been closed.')
  83.         player12r = Popen(["aplay", "/opt/alarmdecoder-scripts/echime12r.wav"], stdin=PIPE, stdout=PIPE, stderr=PIPE)
  84.     else:
  85.         pass
  86.  
  87. if __name__ == '__main__':
  88.     main()
Add Comment
Please, Sign In to add comment