#!/usr/bin/python
# -*- coding: utf-8 -*-

def n568xug(L):
	import serial
	
	if 'sensor' in locals():
		sensor.close()
	if 'sensor' in globals():
		sensor.close()
	sensor = serial.Serial('/dev/ttyACM0', timeout = 10) # esperará 10 segundos para realizar la lectura
	sensor.flushInput()
	sensor.write("\x16T\r") # enviamos una señal al sensor diciendole que le vamos a pedir una lectura
	# a = sensor.read(N)
	# Si el codigo es mas largo, inWaiting() se carga de información y se envia, por eso hay
	# que borrar la última lectura.
	# En cambio si el código es más corto, el sensor envía lo que tenga pero el operario no ve
	# la lectura como finalizada. Se envía lo que haya leído.
	# enespera = sensor.inWaiting()
	lectura = sensor.read(L) # pedimos la lectura de una longitud dada
	enespera = sensor.inWaiting()
	if(len(lectura) < L and lectura != ""):
		print("INCIDENCIA-01")
		sensor.close()
		return "INCIDENCIA-01"
	if(enespera != 0):
		print("INCIDENCIA-02")
		sensor.close()
		return "INCIDENCIA-02"
	sensor.close()
	return lectura


def pasar_a_excel(direccion_trabajo, direccion_excel):
	import io, openpyxl
	## Creamos una lista con la informacion de archivo_trabajo
	archivo_trabajo = open(direccion_trabajo, "r") # el archivo tiene que existir
	items = archivo_trabajo.readlines() # lista creada, que tendremos que procesar
	archivo_trabajo.close()
	## Ahora procesaremos la información de items en una lista con listas
	items_procesado = list([])
	for lectura in items:
		aux_lista = lectura.split("|")
		aux_lectura = list([aux_lista[0], aux_lista[1], aux_lista[2]]) # columna, altura, lectura
		items_procesado.append(aux_lectura)
	## Tenemos que crear en memoria el contenido de nuestro archivo excel. Funciona distinto a *.txt
	wb = openpyxl.workbook.Workbook()
	ws = openpyxl.workbook.Workbook.create_sheet("Lecturas pasillo")
	ws.cell(row=0, column=0, value="Columna")
	ws.cell(row=0, column=1, value="Altura")
	ws.cell(row=0, column=1, value="Contenido")
	r = 1
	for dato in items_procesado:
		ws.cell(row=r, column=0, value=dato[0]) #columna
		ws.cell(row=r, column=1, value=dato[1]) #altura
		ws.cell(row=r, column=2, value=dato[2]) #lectura
		r = r + 1
	wb.save(direccion_excel)


def envio_trabajo(direccion_trabajo, direccion_excel, email, empresa, pasillo):
	import smtplib, socket, commands, os
	#from email.mime.text import MIMEText
	from email.mime.multipart import MIMEMultipart
	from email.mime.image import MIMEImage
	direccion_trabajo = direccion_trabajo
	direccion_excel = direccion_excel
	## Lo primero que vamos hacer es transformar el contenido del archivo que hay en dirección a EXCEL
	pasar_a_excel(direccion_trabajo, direccion_excel)
	## Ahora procederiamos al envío por email del trabajo, a la dirección indicada
    ## Creamos el email
	mensaje = MIMEMultipart(" Trabajo realizado por Airvant. Volamos rápido para mejorar su calidad.")
	## \t
	 # Número de items contabilizados: {0}
	 # Número de incidencias {1}
	 # Tiempo dedicado a pasillo {2}""" .format(num_item, num_incidencias, tiempo_trabajo))
	## 
	mensaje['From'] = "operativa.airvant@gmail.com"
    mensaje['To'] = email
    mensaje['Subject'] = "Airvant | Empresa: {0} Pasillo: {1}" .format(empresa, pasillo)

	file = open(direccion_excel, "rb")
	attach_excel = MIMEImage(file.read())
	nombre_archivo = empresa + pasillo + ".xlsx"
	attach_excel.add_header('Content-Disposition', 'attachment; filename = {0}'.format(nombre_archivo))
	mensaje.attach(attach_excel)

	## Script para el envío del correo electrónico a la dirección indicada
    mailServer = smtplib.SMTP('smtp.gmail.com', 587)
    mailServer.ehlo()
    mailServer.starttls()
    mailServer.ehlo()
    mailServer.login("operativa.airvant@gmail.com", "#airvant.onw")
    mailServer.sendmail("operativa.airvant@gmail.com", email, mensaje.as_string())
    ## def sendmail(from_addr, to_addrs, msg, mail_options=[], rcpt_options=[])
    mailServer.quit()

	"""	
		#import ftplib
		#import os
		
		# Datos FTP
		ftp_servidor = 'home662228864.1and1-data.host' #'home672471072.1and1-data.host'
		ftp_usuario  = 'u87707226' #'u88544423'
		ftp_clave    = 'airvant.1' #'juan2442'
		ftp_raiz     = '/inventarios/lecturas' #'/airvant2/lecturas' # Carpeta del servidor donde queremos subir el fichero
		
		# Datos del fichero a subir
		archivo_enviar = direccion # Ruta al fichero que vamos a subir
		fichero_destino = str(empresa)+str(pasillo)+'.txt' # Nombre que tendra el fichero en el servidor
		
		# Conectamos con el servidor
		try:
			s = ftplib.FTP(ftp_servidor, ftp_usuario, ftp_clave)
			try:
				f = open(fichero_origen, 'rb')
				s.cwd(ftp_raiz)
				s.storbinary('STOR ' + fichero_destino, f)
				f.close()
				s.quit()
				print ("Enviado correctamente")
			except:
				print("No se ha podido encontrar el fichero " + fichero_origen)
		except:
			print("No se ha podido conectar al servidor " + ftp_servidor)
	"""