def timelaps(): form = TimeLapsForm() # (sale opcion de ponerle nombre y guardarlo) form2 = TimeLapsForm2() # sale opcion de encender comprobar_timelaps() if comprobar_timelaps(): if form.validate_on_submit(): matar_timelaps() compositor = ParamikoComando() compositor.conectar() comando = 'timelaps.py ' + form.nombre_time_laps.data stdin, stdout, stderr = compositor.ejecutarcomando(comando, False) exit_status = stdout.channel.recv_exit_status() if exit_status == 0: print( f'Timelaps Guardado con el nombre de: {form.nombre_time_laps.data}.mp4' ) session['timelaps'] = 0 compositor.client.close() archivo = str(form.nombre_time_laps.data) link = 'static/' + archivo + '.zip' return render_template('descarga.html', link=link) return render_template('timelaps.html', form=form, form2=form2) else: if form2.validate_on_submit(): flash( 'Este proceso puede tardar algunos minutos, pronto saldra la opcion de descarga', 'info') fotos = ParamikoComando() fotos.conectar() comando = 'fotos.py' session['timelaps'] = 1 fotos.ejecutarcomando(comando, False) print('Timelaps encendido') return render_template('timelaps.html', form=form, form2=form2)
def luna(): proceso = ParamikoComando() proceso.conectar() comando = 'luna.py' stdin, stdout, stderr = proceso.ejecutarcomando(comando, False) print('comando ' + comando + ' ejecutado') #aca va un sleep porque el tiempo de la consulta es mas corto que la ejecuciond el script luna.py y sale error porque no encuentra nada la primera vez luna_hoy = Luna.query.filter_by(id=1).first() luna_fases = Luna.query.all() dia = str(datetime.today().day) mes = str(datetime.today().month) anio = str(datetime.today().year) print(dia + '/' + mes + '/' + anio) img_nueva = Luna.query.filter(Luna.fase == 'Luna Nueva').first() img_llena = Luna.query.filter(Luna.fase == 'Luna Llena').first() img_creciente = Luna.query.filter(Luna.fase == 'Cuarto Creciente').first() img_menguante = Luna.query.filter(Luna.fase == 'Cuarto Menguante').first() nueva = base64.b64encode(img_nueva.image).decode('ascii') llena = base64.b64encode(img_llena.image).decode('ascii') creciente = base64.b64encode(img_creciente.image).decode('ascii') menguante = base64.b64encode(img_menguante.image).decode('ascii') return render_template('luna.html', luna_hoy=luna_hoy, luna_fases=luna_fases, dia=dia, mes=mes, anio=anio, creciente=creciente, llena=llena, menguante=menguante, nueva=nueva)
def comprobar_ecosystem(): ecoluz = ParamikoComando() ecoluz.conectar() comando = 'ecosystem.py' if ecoluz.pid(comando) != []: session['ecosystem'] = 1 else: session['ecosystem'] = 0
def comprobar_camara(): camara = ParamikoComando() camara.conectar() comando = 'camara.py' if camara.pid(comando) != []: session['camara'] = 1 else: session['camara'] = 0
def comprobar_timelaps(): timelaps = ParamikoComando() timelaps.conectar() comando = 'fotos.py' if timelaps.pid(comando) != []: session['timelaps'] = 1 return True else: session['timelaps'] = 0 return False
def parar(): #print(comando +'este es el comando pasado') #proceso = ParamikoComando() #proceso.conectar() #li = " | sudo -S ps aux|grep" + comando + "|grep -v grep |awk '{print $2}'" #stdin, stdout, stderr = ParamikoComando.client.exec_command('echo ' + ParamikoComando.PASSWORD + li) #print(comando) ParamikoComando().client.close() return render_template('home.html')
def ecosystem(eco): ecoluz = ParamikoComando() ecoluz.conectar() comando = 'ecosystem.py' session['ecosystem'] = eco if session['ecosystem'] == 0: matar_ecosystem() else: ecoluz.ejecutarcomando(comando, False) print('Ecosystem encendido') return redirect(url_for('.home', user=session['username']))
def matar_datosdh22(): automatic = ParamikoComando() automatic.conectar() try: ####MATANDO SENSOR########## print('matando datosdh22.py') comando = 'datosdh22.py' for pid in automatic.pid(comando): pid_a_matar = pid.strip('\n') automatic.matar(pid_a_matar) except: pass automatic.client.close()
def ejecutar_automatic(nombre_conf): global TRABAJANDO automatic = ParamikoComando() automatic.conectar() comando = 'automatic.py ' + nombre_conf guardar_en_historial(session['username'], nombre_conf) stdin, stdout, stderr = automatic.ejecutarcomando(comando, False) TRABAJANDO = True session['nombre_conf'] = nombre_conf session['inicio'] = datetime.now() Configuracion.query.filter_by(nombre_conf=nombre_conf).update( {Configuracion.inicio: session['inicio']}, synchronize_session=False) db.session.commit()
def camara(cam): camara = ParamikoComando() camara.conectar() opcion = 'on' if cam == 1 else 'off' comando = 'camara.py ' + opcion camara.ejecutarcomando(comando, False) session['camara'] = cam if session['camara'] == 0: camara.client.close() print('camara apagada') else: print('camara encendida') return redirect(url_for('.home', user=session['username']))
def matar_automatic(): automatic = ParamikoComando() automatic.conectar() try: ####MATANDO AUTIMATIC.PY################## print('matando automatic.py') comando = 'automatic.py' for pid in automatic.pid(comando): pid_a_matar = pid.strip('\n') automatic.matar(pid_a_matar) except: pass automatic.client.close()
def matar_timelaps(): timelaps = ParamikoComando() timelaps.conectar() comando = 'fotos.py' try: ####MATANDO FOTOS.PY################## print('matando fotos.py') for pid in timelaps.pid(comando): pid_a_matar = pid.strip('\n') timelaps.matarsig(pid_a_matar) session['timelaps'] = 0 except: pass timelaps.client.close() print('Timelaps apagado')
def matar_camara(): camara = ParamikoComando() camara.conectar() comando = 'camara.py' try: ####MATANDO CAMARA.PY################## print('matando camara.py') for pid in camara.pid(comando): pid_a_matar = pid.strip('\n') camara.matarsig(pid_a_matar) session['camara'] = 0 except: pass camara.client.close() print('Camara apagada')
def matar_ecosystem(): ecoluz = ParamikoComando() ecoluz.conectar() comando = 'ecosystem.py' try: ####MATANDO ECOSYSTEM.PY################## print('matando ecosystem.py') for pid in ecoluz.pid(comando): pid_a_matar = pid.strip('\n') ecoluz.matarsig(pid_a_matar) session['ecosystem'] = 0 except: pass ecoluz.client.close() print('Ecosystem apagado')
def logout(): camara = ParamikoComando() camara.conectar() comando = 'camara.py off' camara.ejecutarcomando(comando, False) camara.client.close() logout_user() flash(f'Chau {session["username"]}', 'primary') for i in session: print(i) session[i] = '' return redirect(url_for('.login'))
def encender_sensorDHT22(): sensor = ParamikoComando() sensor.conectar() try: comando = 'pigpiod_py.py' sensor.ejecutarcomando(comando, False) except: pass comando = 'datosdh22.py' if sensor.pid(comando) != []: print('El sensor DHT22 ya esta encendido') else: sensor.ejecutarcomando(comando, False) print('Sensor DHT22 encendido') #sensor.client.close() return True
def comando(): form = Ejecutar() if form.validate_on_submit(): comando = form.comando.data proceso = ParamikoComando() proceso.conectar() stdin, stdout, stderr = proceso.ejecutarcomando(comando, True) proceso.client.close() return render_template('stdout.html', form=form, stdin=stdin, stdout=stdout, stderr=stderr, comando=comando) return render_template('comando.html', form=form)
def upload(): form = Seleccionar() if form.validate_on_submit(): print('copiando') basedir = os.path.abspath(os.path.dirname(__file__)) file = form.upload_file.data filename = secure_filename(file.filename) file.save(basedir + '/uploads/' + filename) #client.connect(HOST, username=USERNAME, password=PASSWORD) proceso = ParamikoComando() proceso.conectar() ftp_client = proceso.client.open_sftp() #ftp_client.put(basedir+'/uploads/'+filename, '/home/mrthc/paramiko/'+filename) ftp_client.put(basedir + '/uploads/' + filename, '/home/pi/indoor/' + filename) ftp_client.close() proceso.client.close() return render_template('subir_archivo.html', form=form)
def luna(): proceso = ParamikoComando() proceso.conectar() comando = 'luna2.py' stdin, stdout, stderr = proceso.ejecutarcomando(comando, False) print('comando ' + comando + ' ejecutado') luna_hoy = Luna.query.filter_by(id=1).first() luna_fases = Luna.query.order_by(Luna.id.asc()).all() dia = str(datetime.today().day) mes = str(datetime.today().month) anio = str(datetime.today().year) print(dia + '/' + mes + '/' + anio) img_dia1 = Luna.query.filter_by(id=1).first() img_dia2 = Luna.query.filter_by(id=2).first() img_dia3 = Luna.query.filter_by(id=3).first() img_dia4 = Luna.query.filter_by(id=4).first() img_dia5 = Luna.query.filter_by(id=5).first() img_dia6 = Luna.query.filter_by(id=6).first() img_dia7 = Luna.query.filter_by(id=7).first() dia1 = base64.b64encode(img_dia1.image).decode('ascii') dia2 = base64.b64encode(img_dia2.image).decode('ascii') dia3 = base64.b64encode(img_dia3.image).decode('ascii') dia4 = base64.b64encode(img_dia4.image).decode('ascii') dia5 = base64.b64encode(img_dia5.image).decode('ascii') dia6 = base64.b64encode(img_dia6.image).decode('ascii') dia7 = base64.b64encode(img_dia7.image).decode('ascii') return render_template('luna.html', luna_hoy=luna_hoy, luna_fases=luna_fases, dia=dia, mes=mes, anio=anio, dia1=dia1, dia2=dia2, dia3=dia3, dia4=dia4, dia5=dia5, dia6=dia6, dia7=dia7)
def comprobar_automatic(): global TRABAJANDO try: automatic = ParamikoComando() automatic.conectar() comando = 'automatic.py' if automatic.pid(comando) != []: TRABAJANDO = True encender_sensorDHT22() ultima_conf = Historial.query.order_by(Historial.id.desc()).first() session['nombre_conf'] = ultima_conf.nombre_conf confi = Configuracion.query.filter_by( nombre_conf=session['nombre_conf']).first() session['tipo_cultivo'] = confi.tipo_cultivo session['luz'] = confi.luz session['humedad_suelo'] = confi.humedad_suelo session['riego'] = confi.riego session['cantidad_riego'] = confi.cantidad_riego session['humedad_min'] = confi.humedad_min session['humedad_max'] = confi.humedad_max session['temperatura_min'] = confi.temperatura_min session['temperatura_max'] = confi.temperatura_max session['ventilador'] = confi.ventilador session['cantidad_ventilador'] = confi.cantidad_ventilador session['ph_min'] = confi.ph_min session['ph_max'] = confi.ph_max session['ec_min'] = confi.ec_min session['ec_max'] = confi.ec_max session['trabajando'] = True session['inicio'] = confi.inicio return True else: TRABAJANDO = False session['trabajando'] = False automatic.client.close() except: pass
from src import app, db from src.core.forms import Ejecutar, Seleccionar, Parar, IndoorForm, AutomaticForm, TrabajandoForm, MensajeAdminForm, TimeLapsForm, TimeLapsForm2 import paramiko import time from time import sleep from datetime import datetime import os from src.comando import ParamikoComando from src.models import Configuracion, Historial, Luna, Sensordht22, SensorStream, MensajesAdm, SensorPhStream, SensorHumSueloStream, SensorEcStream import base64 from src.core.conexion import Conexion2 ################################## ############INSTANCIAS############ ################################## luz = ParamikoComando() #luz.conectar() humedad = ParamikoComando() #humedad.conectar() riego = ParamikoComando() #riego.conectar() #intractor = ParamikoComando()#modificar ec_down = ParamikoComando() #extractor = ParamikoComando()#modificar ec_up = ParamikoComando() #ventilador = ParamikoComando()#modificar
def mensajeadm(): lista_msg = [] listado = MensajesAdm.query.filter_by( usuario=session['username']).order_by(MensajesAdm.id.asc()).all() con = Conexion2() try: for i in listado: print(i.id_mensaje) consulta = """SELECT respuesta FROM mensajesadmserver WHERE id_mensaje = '%s'""" % i.id_mensaje con.CUR.execute(consulta) i.respuesta = con.CUR.fetchone() print(i.respuesta) MensajesAdm.query.filter_by(id_mensaje=i.id_mensaje).update( {MensajesAdm.respuesta: i.respuesta}, synchronize_session=False) db.session.commit() data = {i.id_mensaje: i.respuesta} lista_msg.append(data) except: pass #con.CUR.close() print(lista_msg) msg = ParamikoComando() msg.conectar() comando = 'raspip.py' stdin, stdout, stderr = msg.ejecutarcomando(comando, True) ip = str(stdout.readlines()[0]) print(ip) comando = 'nserie.py' stdin, stdout, stderr = msg.ejecutarcomando(comando, False) numero_serie_rpi = str(stdout.readlines()[0]) print(numero_serie_rpi) fecha = datetime.now().date() hora = datetime.now().time() form = MensajeAdminForm() if form.validate_on_submit(): mensaje = form.mensaje.data asunto = form.asunto.data mensaje_a_base = MensajesAdm(fecha, hora, asunto, mensaje, numero_serie_rpi, ip, session['username']) #con = Conexion2() id_mensaje = mensaje_a_base.id_mensaje datos = (fecha, hora, asunto, mensaje, numero_serie_rpi, ip, session['username'], id_mensaje) consulta = """INSERT INTO mensajesadmserver (fecha, hora, asunto, mensaje, numero_serie_rpi, ip_rpi, usuario, id_mensaje) VALUES (%s,%s,%s,%s,%s,%s,%s,%s)""" try: con.CUR.execute(consulta, datos) con.CONEXION.commit() db.session.add(mensaje_a_base) db.session.commit() # con.CUR.close() flash('Mensaje enviado al administrador, en breve sera respondido', 'info') except: # con.CUR.close() flash('Mensaje no enviado, intente mas tarde', 'warning') return redirect(url_for('.home', user=session['username'])) return render_template('mensajes.html', form=form, ip=ip, numero_serie_rpi=numero_serie_rpi, fecha=fecha, hora=hora, listado=listado)
def liberar_gpios(): automatic = ParamikoComando() automatic.conectar() comando = 'liberar_gpios.py' stdin, stdout, stderr = automatic.ejecutarcomando(comando, False) # automatic.client.close()
from werkzeug.utils import secure_filename from src import app, db from src.core.forms import Ejecutar, Seleccionar, Parar, IndoorForm, AutomaticForm, TrabajandoForm, MensajeAdminForm import paramiko import time from time import sleep from datetime import datetime import os from src.comando import ParamikoComando from src.models import Configuracion, Historial, Luna, Sensordht22, SensorStream, MensajesAdm, SensorPhStream, SensorHumSueloStream import base64 from src.core.conexion import Conexion2 ################################## ############INSTANCIAS############ ################################## luz = ParamikoComando() #luz.conectar() humedad = ParamikoComando() #humedad.conectar() riego = ParamikoComando() #riego.conectar() intractor = ParamikoComando() #modificar #intractor_extractor = ParamikoComando() #ventilacion.conectar() extractor = ParamikoComando() #modificar #ec_up = ParamikoComando() #extractor.conectar()