Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
def comprobar_ecosystem():
    ecoluz = ParamikoComando()
    ecoluz.conectar()
    comando = 'ecosystem.py'
    if ecoluz.pid(comando) != []:
        session['ecosystem'] = 1
    else:
        session['ecosystem'] = 0
Ejemplo n.º 4
0
def comprobar_camara():
    camara = ParamikoComando()
    camara.conectar()
    comando = 'camara.py'
    if camara.pid(comando) != []:
        session['camara'] = 1
    else:
        session['camara'] = 0
Ejemplo n.º 5
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
Ejemplo n.º 6
0
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')
Ejemplo n.º 7
0
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']))
Ejemplo n.º 8
0
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()
Ejemplo n.º 9
0
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()
Ejemplo n.º 10
0
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']))
Ejemplo n.º 11
0
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()
Ejemplo n.º 12
0
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')
Ejemplo n.º 13
0
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')
Ejemplo n.º 14
0
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')
Ejemplo n.º 15
0
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'))
Ejemplo n.º 16
0
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
Ejemplo n.º 17
0
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)
Ejemplo n.º 18
0
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)
Ejemplo n.º 19
0
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)
Ejemplo n.º 20
0
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
Ejemplo n.º 21
0
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
Ejemplo n.º 22
0
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)
Ejemplo n.º 23
0
def liberar_gpios():
    automatic = ParamikoComando()
    automatic.conectar()
    comando = 'liberar_gpios.py'
    stdin, stdout, stderr = automatic.ejecutarcomando(comando, False)  #
    automatic.client.close()
Ejemplo n.º 24
0
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()