· 7 years ago · Sep 19, 2018, 07:02 PM
1from flask import Flask,render_template,redirect,url_for,request,abort
2ad = Flask(__name__)
3import RPi.GPIO as GPIO
4GPIO.setmode(GPIO.BCM)
5GPIO.setwarnings(False)
6import time as t
7import xlsxwriter
8import brojac as b
9import serial
10i=5
11P12=14
12P21=15
13P22=18
14P11=17
15P13=24
16Ref=25
17GPIO.setup( P12, GPIO.OUT)
18GPIO.setup( P11, GPIO.OUT)
19GPIO.setup( P13, GPIO.OUT)
20GPIO.setup( P21, GPIO.OUT)
21GPIO.setup( P22, GPIO.OUT)
22GPIO.setup( Ref, GPIO.OUT)
23workbook = xlsxwriter.Workbook('rezultati.xlsx')
24worksheet=workbook.add_worksheet()
25mejl = ""
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
41def 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
136try:
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
579except KeyboardInterrupt:
580 workbook.close()