Advertisement
Srxon05

skutija

Sep 19th, 2018
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 12.08 KB | None | 0 0
  1. from flask import Flask,render_template,redirect,url_for,request,abort
  2. ad = Flask(__name__)
  3. import RPi.GPIO as GPIO
  4. GPIO.setmode(GPIO.BCM)
  5. GPIO.setwarnings(False)
  6. import time as t
  7. import xlsxwriter
  8. import brojac as b
  9. import serial
  10. i=5
  11. P12=14
  12. P21=15
  13. P22=18
  14. P11=17
  15. P13=24
  16. Ref=25
  17. GPIO.setup( P12, GPIO.OUT)
  18. GPIO.setup( P11, GPIO.OUT)
  19. GPIO.setup( P13, GPIO.OUT)
  20. GPIO.setup( P21, GPIO.OUT)
  21. GPIO.setup( P22, GPIO.OUT)
  22. GPIO.setup( Ref, GPIO.OUT)
  23. workbook = xlsxwriter.Workbook('rezultati.xlsx')
  24. worksheet=workbook.add_worksheet()
  25. mejl = ""
  26.  
  27.    
  28. #def cit():
  29. #   locations=['/dev/ttyUSB0','/dev/ttyUSB1','/dev/ttyUSB2','/dev/ttyUSB3','/dev/ttyACM0']
  30. #   for device in locations:
  31. #       try:
  32. #           print "Trying...",device
  33. #           ser = serial.Serial(device, 9600)
  34. #           break
  35. #       except:
  36. #           print "Failed to connect on",device
  37. #
  38. #   return 1
  39.    
  40.  
  41. def mer(naziv, dev):
  42.     j=10
  43.  
  44.     connected = False  
  45.     device=dev
  46.  
  47.     try:
  48.         print "Trying...",device
  49.         ser = serial.Serial(device, 9600)
  50.     except:
  51.         print "Failed to connect on",device
  52.        
  53.  
  54.        
  55.  
  56.     #ser. write('7')
  57.     while not connected:
  58.         serin = ser.read()
  59.         connected = True
  60.  
  61.     ## open text file to store the current  
  62.     text_file = open(naziv, 'w+')
  63.     ## read serial data from arduino and
  64.     ## write it to the text file 'position.txt'
  65.     while j:
  66.         if ser.inWaiting():
  67.             x=ser.read()
  68.             print(x)
  69.             text_file.write(x)
  70.             if x=="\n":
  71.                     ## text_file.seek(0)
  72.                     text_file.truncate()
  73.                 j=j-1
  74.         text_file.flush()
  75.  
  76.  
  77.     text_file.close()
  78.     ser.close()
  79.     return 1
  80.  
  81. #def nadji(fpp):
  82. #   i=0
  83. #   s=0
  84. #   while 1:
  85. #       linija=fpp.readline()
  86. #       if(linija == "?\n"):
  87. #           s=i
  88. #       i=i+1
  89. #       if not linija:
  90. #           break  
  91. #   print s
  92. #   fpp.seek(0)
  93. #   return s
  94. #def cit(f, poz):
  95. #   f.seek(0)
  96. #   p=False
  97. #   k=0
  98. #   i=0
  99. #   linija=""
  100. #   n=""
  101. #   st=""
  102. #   sn=""
  103. #   print "pozicija"
  104. #   print poz
  105. #   while 1:
  106. #           linija=f.readline()
  107.  
  108.            
  109. #           if not linija:
  110. #               break
  111. #           if linija=="?\n":
  112. #               if p==False:
  113. #                   if k==1:
  114. #                       napon1=linija
  115. #                   if k==2:
  116. #                       struja1=linija
  117. #                   if k==3:                   
  118. #                       snaga1=linija
  119. #                       p=True
  120.  
  121. #               if p==True:
  122. #                   p=False
  123. #                   k=0
  124. #                   if(i==poz):
  125. #                       n=napon1
  126. #                       st=struja1
  127. #                       sn=snaga1
  128. #                       p=True
  129. #           i=i+1
  130. #           k=k+1
  131. #   print n
  132. #   print st
  133. #   print sn
  134. #   return n, st, sn
  135.            
  136. try:
  137.     #import serial
  138.  
  139.         #workbook = xlsxwriter.Workbook('reyultati.xlsx')
  140.         #worksheet=workbook.add_worksheet()
  141.         #worksheet.set_column('A:A', 20)
  142.     #connected = False
  143.  
  144.     #locations=['/dev/ttyUSB0','/dev/ttyUSB1','/dev/ttyUSB2','/dev/ttyUSB3','/dev/ttyACM0']
  145.  
  146.     #for device in locations:
  147.     #    try:
  148.     #        print "Trying...",device
  149.     #        ser = serial.Serial(device, 9600)
  150.     #        break
  151.     #   except:
  152.     #   print "Failed to connect on",device
  153.     #while not connected:
  154.     #    serin = ser.read()
  155.     #    connected = True
  156.     #@ad.route('/rey')
  157.     #def Reyultati():
  158.     #   if ser.inWaiting():
  159.     #       x=ser.read()
  160.     #       print(x)
  161.     #       worksheet.write(0,0,x)
  162.     #   workbook.close()
  163.     #   ser.close()
  164.     #
  165.     class Reflektor(object):
  166.         def __init__(self):
  167.             self.upaljena = False
  168.      
  169.         def upali(self, pin):
  170.        
  171.             GPIO.output(pin,0)
  172.             self.upaljena = True
  173.            
  174.         def ugasi(self, pin):
  175.        
  176.             GPIO.output(pin,1)
  177.             self.upaljena = False
  178.  
  179.     class Relej(object):
  180.         def __init__(self):
  181.             self.upaljen=False
  182.         def Ugasi(self):
  183.             GPIO.output(P11,1)
  184.             GPIO.output(P12,1)
  185.             GPIO.output(P13,1)
  186.             GPIO.output(P21,1)
  187.             GPIO.output(P22,1)
  188.             t.sleep(2)
  189.            
  190.     ref=Reflektor()
  191.     rel=Relej()
  192.     @ad.route("/")
  193.     def main():
  194.         #print "Sine neko ti je usao na sajt"
  195.  
  196.         return render_template('login.html')
  197.  
  198.     @ad.route("/toAdmin",methods=['POST'])
  199.     def pocetna():
  200.         global mejl
  201.         mejl = request.form['ime']
  202.         print mejl
  203.         if len(mejl) < 10:
  204.             return render_template('login.html')
  205.         else:
  206.             if mejl[len(mejl)-10:] == '@gmail.com':
  207.                 u = open("mejlovi.txt",'a')
  208.                 u.write(mejl+"\n")
  209.                 u.close()
  210.                 return render_template('index.html')
  211.             else:
  212.                 return render_template('login.html')
  213.     @ad.route("/vezba1")
  214.     def v1():
  215.         print "vezba 1"
  216.         GPIO.output(25,0)
  217.         rel.Ugasi()
  218.         ref.upali(P22)
  219.         print "Upaljen P22"
  220.         ref.upali(P12)
  221.         print "Upaljen P12"
  222.        
  223.         return render_template('prva_vezba.html')
  224.  
  225.     @ad.route("/vezba1V")
  226.     def v1V():
  227.         q = mer("struja.txt",'/dev/ttyACM1')
  228.         print "vezba 1V"
  229.         rel.Ugasi()
  230.         ref.upali(P21)
  231.         print "Upaljen P21"
  232.         ref.upali(P12)
  233.         print "Upaljen P12"
  234.         #f=open("Merenje.txt", 'r')
  235.     #   content=f.read()
  236.         #print(content)
  237.         #f.closed
  238.         return render_template('prva_vezbaV.html')#content=content)
  239.  
  240.     @ad.route("/vezba2")
  241.     def v2():
  242.         print "vezba 2"
  243.         rel.Ugasi()
  244.         ref.upali(P22)
  245.         print "Upaljen P22"
  246.         ref.upali(P11)
  247.  
  248.         print "Upaljen P11"
  249.        
  250.         return render_template('druga_vezba.html')
  251.  
  252.     @ad.route("/vezba2V")
  253.     def v2V():
  254.         q = mer("struja.txt",'/dev/ttyACM1')
  255.         print "vezba 2V"
  256.         rel.Ugasi()
  257.         ref.upali(P21)
  258.         print "Upaljen P21"
  259.         ref.upali(P11)
  260.  
  261.         print "Upaljen P11"
  262.         return render_template('druga_vezbaV.html')
  263.  
  264.     @ad.route("/vezba3")
  265.     def v3():
  266.         print "vezba 3"
  267.         rel.Ugasi()
  268.         ref.upali(P22)
  269.         print "Upaljen P22"
  270.         ref.upali(P13)
  271.         print "Upaljen P13"
  272.         ref.upali(P12)
  273.  
  274.         print "Upaljen P12"
  275.         return render_template('treca_vezba.html')
  276.  
  277.     @ad.route("/vezba3V")
  278.     def v3V():
  279.         q = mer("struja.txt",'/dev/ttyACM1')
  280.         print "vezba 3V"
  281.         rel.Ugasi()
  282.         ref.upali(P21)
  283.         print "Upaljen P21"
  284.         ref.upali(P12)
  285.         print "Upaljen P12"
  286.         ref.upali(P13)
  287.         print "Upaljen P13"
  288.         return render_template('treca_vezbaV.html')
  289.  
  290.     @ad.route("/nazad1")
  291.     def nazad1():
  292.         global worksheet
  293.         q = mer("napon.txt",'/dev/ttyACM0')
  294.  
  295.         f=open("struja.txt", "r")
  296.         print "rezultati\n"
  297.         #rel.Ugasi()
  298.         d=open("text.txt",'w+')
  299.  
  300.  
  301.         i=0
  302.         napon="0.00"
  303.         struja="0.00"
  304.         snaga="snaga"
  305.    
  306.  
  307.         fp=open("napon.txt", "r")
  308.         f.seek(0)
  309.         n=(b.brln("struja.txt"))-4
  310.         m=(b.brln("napon.txt"))-4
  311.  
  312.  
  313.         while 1:
  314.             linija=f.readline()
  315.             print linija
  316.             if not linija:
  317.                 break
  318.             print len(linija)-3
  319.             if (i<n-1):
  320.     #           if(linija[len(linija)-3]=='V'):
  321.     #               napon=linija
  322.                 if(linija[len(linija)-3]=='A'):
  323.                     struja=linija
  324.                 #if(linija[len(linija)-3]=='W'):
  325.                 #   snaga=linija
  326.             i=i+1
  327.         i=0
  328.         while 1:
  329.             linija=fp.readline()
  330.             print linija
  331.             if not linija:
  332.                 break
  333.             print linija[len(linija)-3]
  334.             if (i<m-1):
  335.                 print linija[len(linija)-3]
  336.                 if(linija[len(linija)-3]=='V'):
  337.                     napon=linija
  338.             #   if(linija[len(linija)-3]=='A'):
  339.             #       struja=linija
  340.                 #if(linija[len(linija)-3]=='W'):
  341.                 #   snaga=linija
  342.             i=i+1
  343.  
  344.         snaga=str(round((float(napon[:len(napon)-5])*float(struja[:len(struja)-6])),3))+" mW"
  345.         f.close()
  346.         fp.close()
  347.         d.write(napon+""+struja+""+snaga+"\n")
  348.         d.close()
  349.         worksheet.write(0,0,"Broj merenja")
  350.         worksheet.write(0,1,"Napon (V)")
  351.         worksheet.write(0,2,"Struja (mA)")
  352.         worksheet.write(0,3,"Snaga (mW)")
  353.         worksheet.write(1,0,"1.")
  354.         worksheet.write(1,1,napon[:-3])
  355.         worksheet.write(1,2,struja[:-4])
  356.         worksheet.write(1,3,snaga[:-2]+"")
  357.    
  358.         rel.Ugasi()
  359.  
  360.         return render_template('results.html', napon=napon, struja=struja, snaga=snaga)
  361.        
  362.     #-----------------------------------------------------------------------------
  363.  
  364.     @ad.route("/nazad2")
  365.     def nazad2():
  366.         global worksheet
  367.         q = mer("napon.txt",'/dev/ttyACM0')
  368.  
  369.         f=open("struja.txt", "r")
  370.         print "rezultati\n"
  371.         #rel.Ugasi()
  372.         d=open("text.txt",'a')
  373.  
  374.  
  375.         i=0
  376.         napon="0.00"
  377.         struja="0.00"
  378.         snaga="snaga"
  379.    
  380.  
  381.         fp=open("napon.txt", "r")
  382.         f.seek(0)
  383.         n=(b.brln("struja.txt"))-4
  384.         m=(b.brln("napon.txt"))-4
  385.  
  386.  
  387.         while 1:
  388.             linija=f.readline()
  389.             print linija
  390.             if not linija:
  391.                 break
  392.             print len(linija)-3
  393.             if (i<n-1):
  394.     #           if(linija[len(linija)-3]=='V'):
  395.     #               napon=linija
  396.                 if(linija[len(linija)-3]=='A'):
  397.                     struja=linija
  398.                 #if(linija[len(linija)-3]=='W'):
  399.                 #   snaga=linija
  400.             i=i+1
  401.         i=0
  402.         while 1:
  403.             linija=fp.readline()
  404.             print linija
  405.             if not linija:
  406.                 break
  407.             print linija[len(linija)-3]
  408.             if (i<m-1):
  409.                 print linija[len(linija)-3]
  410.                 if(linija[len(linija)-3]=='V'):
  411.                     napon=linija
  412.             #   if(linija[len(linija)-3]=='A'):
  413.             #       struja=linija
  414.                 #if(linija[len(linija)-3]=='W'):
  415.                 #   snaga=linija
  416.             i=i+1
  417.  
  418.         snaga=str(round((float(napon[:len(napon)-5])*float(struja[:len(struja)-6])),3))+" mW"
  419.         f.close()
  420.         fp.close()
  421.         d.write(napon+""+struja+""+snaga+"\n")
  422.         d.close()
  423.         worksheet.write(2,0,"2.")
  424.         worksheet.write(2,1,napon[:-3])
  425.         worksheet.write(2,2,struja[:-4])
  426.         worksheet.write(2,3,snaga[:-2])
  427.  
  428.  
  429.         rel.Ugasi()
  430.    
  431.         return render_template('results1.html', napon=napon, struja=struja, snaga=snaga)
  432.  
  433.     #-----------------------------------------------------------------------------
  434.  
  435.     @ad.route("/nazad3")
  436.     def nazad3():
  437.         global worksheet, workbook
  438.         q = mer("napon.txt",'/dev/ttyACM0')
  439.         f=open("struja.txt", "r")
  440.         print "rezultati\n"
  441.         #rel.Ugasi()
  442.         d=open("text.txt",'a')
  443.  
  444.  
  445.         i=0
  446.         napon="0.00"
  447.         struja="0.00"
  448.         snaga="snaga"
  449.    
  450.  
  451.         fp=open("napon.txt", "r")
  452.         f.seek(0)
  453.         n=(b.brln("struja.txt"))-4
  454.         m=(b.brln("napon.txt"))-4
  455.  
  456.  
  457.         while 1:
  458.             linija=f.readline()
  459.             print linija
  460.             if not linija:
  461.                 break
  462.             print len(linija)-3
  463.             if (i<n-1):
  464.     #           if(linija[len(linija)-3]=='V'):
  465.     #               napon=linija
  466.                 if(linija[len(linija)-3]=='A'):
  467.                     struja=linija
  468.                 #if(linija[len(linija)-3]=='W'):
  469.                 #   snaga=linija
  470.             i=i+1
  471.         i=0
  472.         while 1:
  473.             linija=fp.readline()
  474.             print linija
  475.             if not linija:
  476.                 break
  477.             print linija[len(linija)-3]
  478.             if (i<m-1):
  479.                 print linija[len(linija)-3]
  480.                 if(linija[len(linija)-3]=='V'):
  481.                     napon=linija
  482.             #   if(linija[len(linija)-3]=='A'):
  483.             #       struja=linija
  484.                 #if(linija[len(linija)-3]=='W'):
  485.                 #   snaga=linija
  486.             i=i+1
  487.  
  488.         snaga=str(round((float(napon[:len(napon)-5])*float(struja[:len(struja)-6])),3))+" mW"
  489.         f.close()
  490.         fp.close()
  491.         d.write(napon+""+struja+""+snaga+"\n")
  492.         d.close()
  493.         worksheet.write(3,0,"3.")
  494.         worksheet.write(3,1,napon[:-3])
  495.         worksheet.write(3,2,struja[:-4])
  496.         worksheet.write(3,3,snaga[:-2])
  497.    
  498.  
  499.  
  500.         rel.Ugasi()
  501.            
  502.         return render_template('results2.html', napon=napon, struja=struja, snaga=snaga)
  503.  
  504.     #-------------------------------------------------------------------------------------------
  505.  
  506.     @ad.route("/nazad")
  507.     def nazad():
  508.         print "rezultati\n"
  509.         rel.Ugasi()
  510.         fp=open("text.txt", 'r')
  511.         napon=fp.readline()
  512.         print ("napon="+napon)
  513.         struja=fp.readline()
  514.         snaga=fp.readline()
  515.         napon1=fp.readline()
  516.         struja1=fp.readline()
  517.         snaga1=fp.readline()
  518.         napon2=fp.readline()
  519.         struja2=fp.readline()
  520.         snaga2=fp.readline()
  521.         workbook.close()
  522.         fp.close()
  523.  
  524.         rel.Ugasi()
  525.    
  526.         return render_template('results3.html', napon=napon, struja=struja, snaga=snaga, napon1=napon1, struja1=struja1, snaga1=snaga1, napon2=napon2, struja2=struja2, snaga2=snaga2)
  527.  
  528.     #-----------------------------------------------------------------------------------------------
  529.     @ad.route("/sending")
  530.     def send():
  531.         global mejl
  532.         import smtplib
  533.         from email.mime.text import MIMEText
  534.         from email.mime.multipart import MIMEMultipart
  535.         from email.mime.base import MIMEBase
  536.         from email import encoders
  537.  
  538.         email_user = 'pilab.etspupin@gmail.com'
  539.         email_password = '0pi2lab1ets'
  540.         email_send = mejl
  541.  
  542.         subject = 'Rezultati'
  543.  
  544.         msg = MIMEMultipart()
  545.         msg['From'] = email_user
  546.         msg['To'] = email_send
  547.         msg['Subject'] = subject
  548.        
  549.         GPIO.output(25,1)
  550.         body = 'Rezultati merenja sa solarnim panelima'
  551.         msg.attach(MIMEText(body,'plain'))
  552.  
  553.         filename='/home/pi/Desktop/SolarniKofer/rezultati.xlsx'
  554.         attachment  = open(filename,'rb')
  555.  
  556.         part = MIMEBase('application','octet-stream')
  557.         part.set_payload((attachment).read())
  558.         encoders.encode_base64(part)
  559.         part.add_header('Content-Disposition',"attachment; filename= "+filename)
  560.  
  561.         msg.attach(part)
  562.         text = msg.as_string()
  563.         server = smtplib.SMTP('smtp.gmail.com',587)
  564.         server.starttls()
  565.         server.login(email_user,email_password)
  566.  
  567.  
  568.         server.sendmail(email_user,email_send,text)
  569.         attachment.close() 
  570.         server.quit()
  571.    
  572.         return render_template('login.html')
  573.    
  574.  
  575.     if __name__ == '__main__':
  576.         ad.run( host='0.0.0.0' , port=1000 , debug=True, threaded=True)
  577.  
  578.  
  579. except KeyboardInterrupt:
  580.     workbook.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement