#!/usr/bin/python import smtplib import mimetypes import email import email.mime.application import time import glob import MySQLdb import os import sys import commands # Basic setup owire_address = str(sys.argv[1]) owire_status = str(sys.argv[2]) path = '/opt/sensiplicity' def getVarFromFile(filename): import imp f = open(filename) global data data = imp.load_source('data', '', f) f.close() getVarFromFile(path + '/etc/SS-L1.conf') # MySQL Connection db = MySQLdb.connect(data.servername,data.username,data.password,data.dbname) cursor = db.cursor() # find the path of a sensor directory that starts with 28 i = 1 devicelist = glob.glob('/sys/bus/w1/devices/*/state') send_out_email = "no" send_out_sms = "no" all_sensor_data = '' all_sms_data = '' def hostname_sql(): host = "TempberryPi" cursor.execute("SELECT value FROM sensors_system WHERE name = 'server_hostname'") row = cursor.fetchone() if row: host = row[0] return host hostname = hostname_sql() def get_email(): email = "" cursor.execute("SELECT sensor_limit2 FROM sensors_info WHERE sensor_id = '"+ str(owire_address)+"'") row = cursor.fetchone() if row: email = row[0] return email email_address = get_email() def get_txt(): txt = "" cursor.execute("SELECT sensor_limit3 FROM sensors_info WHERE sensor_id = '"+ str(owire_address)+"'") row = cursor.fetchone() if row: txt = row[0] return txt txt_address = get_txt() def get_state(): state = "" cursor.execute("SELECT sensor_limit4 FROM sensors_info WHERE sensor_id = '"+ str(owire_address)+"'") row = cursor.fetchone() if row: state = row[0] return state current_state = get_state() def email_status(): # Select qSQL with id=4. smtp_state = "on" cursor.execute("SELECT value FROM sensors_system WHERE name = 'smtp_state'") #data = cursor.fetchall() #print "data = "+str(data[1]) row = cursor.fetchone() if row: smtp_state = row[0] return smtp_state smtp_state = email_status() def sms_status(): # Select qSQL with id=4. sms_state = "on" cursor.execute("SELECT value FROM sensors_system WHERE name = 'sms_state'") #data = cursor.fetchall() #print "data = "+str(data[1]) row = cursor.fetchone() if row: sms_state = row[0] return sms_state sms_state = sms_status() def server_timezone(): # Select qSQL with id=4. tz = "UTC" cursor.execute("SELECT value FROM sensors_system WHERE name = 'server_timezone'") row = cursor.fetchone() if row: tz = row[0] return tz date_tz = server_timezone() date_cmd = 'TZ='+ str(date_tz) +' /bin/date;' date = commands.getstatusoutput('TZ='+ str(date_tz) +' /bin/date') if (sms_state == "off" and smtp_state == "off"): sys.exit() # Create a text/plain message msg = email.mime.Multipart.MIMEMultipart() msg['Subject'] = ''+ hostname +' Emergency Button!' msg['From'] = data.send_address msg['To'] = email_address msgsms = email.mime.Multipart.MIMEMultipart() msgsms['Subject'] = ''+ hostname +' Emergency Button!' msgsms['From'] = data.send_address msgsms['To'] = email_address #print "address = "+str(owire_address)+", email = "+email_address+", txt = "+txt_address+"\n" #sys.exit() for sensor in devicelist: sensor_file = sensor #print "sensor = "+str(sensor)+", sensor_file = "+str(sensor_file)+"\n"; sensor_id = sensor_file.split('/') cursor.execute("SELECT * FROM sensors_info WHERE sensor_id = '"+ str(sensor_id[5]) +"'") row = cursor.fetchone() if row: if (row[4] == "on" and row[5] == "yes"): if (owire_address == sensor_id[5]): name = row[1] if (row[3] != ''): name = row[3] if (owire_status == 'ON'): cursor.execute("UPDATE sensors_info SET sensor_limit4 = 'alarm' WHERE `sensor_id` = '"+ str(sensor_id[5]) +"'") db.commit() sensor_data = "==========================================================================\n" sensor_data = sensor_data + "= \n" sensor_data = sensor_data + "= The E-Button %s" % name + " is in EMERGENCY STATE!!!\n" sensor_data = sensor_data + "= Time: "+str(date[1])+"\n" sensor_data = sensor_data + "= \n" sensor_data = sensor_data + "==========================================================================\n" sensor_data = sensor_data + " \n" sms_data = '"'+ name +'" is in EMERGENCY STATE!!!\nTime: '+str(date[1])+'\n' if (owire_status == 'ERROR'): cursor.execute("UPDATE sensors_info SET sensor_limit4 = 'error' WHERE `sensor_id` = '"+ str(sensor_id[5]) +"'") db.commit() sensor_data = "==========================================================================\n" sensor_data = sensor_data + "= \n" sensor_data = sensor_data + "= The E-Button %s" % name + " is in ERROR STATE!!!\n" sensor_data = sensor_data + "= Time: "+str(date[1])+"\n" sensor_data = sensor_data + "= \n" sensor_data = sensor_data + "==========================================================================\n" sensor_data = sensor_data + " \n" sms_data = '"'+ name +'" is in ERROR STATE!!!\nTime: '+str(date[1])+'\n' elif (owire_status == 'OFF'): cursor.execute("UPDATE sensors_info SET sensor_limit4 = 'off' WHERE `sensor_id` = '"+ str(sensor_id[5]) +"'") db.commit() sensor_data = "==========================================================================\n" sensor_data = sensor_data + "= \n" sensor_data = sensor_data + "= The E-Button %s" % name + " is RESTORED OK!!!\n" sensor_data = sensor_data + "= Time: "+str(date[1])+"\n" sensor_data = sensor_data + "= \n" sensor_data = sensor_data + "==========================================================================\n" sensor_data = sensor_data + " \n" sms_data = '"'+ name +'" is RESTORED OK!!!\nTime: '+str(date[1])+'\n' elif (owire_status == 'DISCONNECTED'): cursor.execute("UPDATE sensors_info SET sensor_limit4 = 'disconnected' WHERE `sensor_id` = '"+ str(sensor_id[5]) +"'") db.commit() sensor_data = "==========================================================================\n" sensor_data = sensor_data + "= \n" sensor_data = sensor_data + "= The E-Button %s" % name + " is DISCONNECTED!!!\n" sensor_data = sensor_data + "= Time: "+str(date[1])+"\n" sensor_data = sensor_data + "= \n" sensor_data = sensor_data + "==========================================================================\n" sensor_data = sensor_data + " \n" sms_data = '"'+ name +'" is DISCONNECTED!!!\nTime: '+str(date[1])+'\n' send_out_email = "yes" send_out_sms = "yes" all_sensor_data = sensor_data + all_sensor_data all_sms_data = sms_data + all_sms_data print all_sensor_data if (send_out_email == "yes" and smtp_state != "off"): # The main body is just another attachment body_text = all_sensor_data body = email.mime.Text.MIMEText(body_text) msg.attach(body) # send via Gmail server # port 25 packets to be port 587 and it is trashing port 587 packets. # So, I use the default port 25, but I authenticate. s = smtplib.SMTP(data.smtp_server + ':' + data.smtp_port) s.starttls() s.login(data.smtp_login,data.smtp_pass) s.sendmail(email_address,[email_address], msg.as_string()) s.quit() if (send_out_sms == "yes" and sms_state != "off"): # The main body is just another attachment body_text_txt = all_sms_data body_txt = email.mime.Text.MIMEText(body_text_txt) msgsms.attach(body_txt) # send via Gmail server # port 25 packets to be port 587 and it is trashing port 587 packets. # So, I use the default port 25, but I authenticate. s = smtplib.SMTP(data.smtp_server + ':' + data.smtp_port) s.starttls() s.login(data.smtp_login,data.smtp_pass) s.sendmail(txt_address,[txt_address], msgsms.as_string()) s.quit() os.system(path + "/bin/check_temp_lcd_i2c.py") #os.system("/bin/rm ./c")