gtermors

homewizardServer.py

Mar 17th, 2014
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.55 KB | None | 0 0
  1. from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
  2. from urlparse import parse_qs
  3. from datetime import datetime, timedelta
  4. import time
  5. import SocketServer
  6. import foscamcamera
  7. import pushover
  8.  
  9. class S(BaseHTTPRequestHandler):
  10.  
  11.     def _set_headers(self):
  12.         self.send_response(200)
  13.         self.send_header('Content-type', 'text/html')
  14.         self.end_headers()
  15.  
  16.     def do_GET(self):
  17.         self._set_headers()
  18.  
  19.     def do_HEAD(self):
  20.         self._set_headers()
  21.        
  22.     def do_POST(self):
  23.         # Get Post Body/Vars
  24.         length = int(self.headers['content-length'])
  25.         postbody = self.rfile.read(length)
  26.         postvars = parse_qs(postbody,keep_blank_values=1)
  27.  
  28.         #Extract Vars
  29.         notTitle = postvars['Title'][0]
  30.         notText  = postvars['Text'][0]
  31.  
  32.         #Debug
  33.         print
  34.         print 'Headers:'
  35.         print self.headers
  36.         print
  37.         print 'Body:'
  38.         print postbody
  39.         print
  40.         print 'Vars:'
  41.         print postvars
  42.         print
  43.         print 'Title: ' + notTitle
  44.         print 'Text : ' + notText
  45.         print
  46.  
  47.         if notTitle == 'HomeWizard' and notText == 'Deurbel pressed.':
  48.             #Take snapshot from camera
  49.             filename = datetime.now().strftime('%Y%m%d_%H%M%S%f') +'.jpg'
  50.             fullpath = '/share/MD0_DATA/Qweb/homewizard/' + filename
  51.             weburl = 'http://termors.com:84/' + filename
  52.  
  53.             print 'Filename: ' + filename
  54.             print 'URL     : ' + weburl
  55.        
  56.             foscam.snapshotToFile(fullpath)
  57.  
  58.             #PushOver Notify
  59.             pushover.notify('Deurbel!',
  60.                             'Time: ' + datetime.strftime(datetime.now(),'%Y-%m-%d %H:%M:%S'),
  61.                             0,
  62.                             'magic',
  63.                             weburl,
  64.                             'Foto')
  65.  
  66.         # Set Response Headers
  67.         self._set_headers()
  68.        
  69. def run(port):
  70.     try:
  71.         server_address = ('', port)
  72.         httpd = HTTPServer(server_address, S)
  73.         print 'Starting httpd...'
  74.         httpd.serve_forever()
  75.     except KeyboardInterrupt:
  76.         httpd.socket.close()
  77.  
  78. if __name__ == "__main__":
  79.     from sys import argv
  80.  
  81.     # Create Foscam Object
  82.     foscam = foscamcamera.FoscamCamera()
  83.  
  84.     # Read Foscam Config
  85.     foConfigRead = foscam.readconfig()
  86.  
  87.     # Read PushOver Config
  88.     poConfigRead = pushover.readconfig()
  89.    
  90.     # Get port from argument
  91.     if len(argv) == 2:
  92.         run(port=int(argv[1]))
  93.     else:
  94.         run(85)
Advertisement
Add Comment
Please, Sign In to add comment