コード例 #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)
コード例 #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)
コード例 #3
0
def comprobar_ecosystem():
    ecoluz = ParamikoComando()
    ecoluz.conectar()
    comando = 'ecosystem.py'
    if ecoluz.pid(comando) != []:
        session['ecosystem'] = 1
    else:
        session['ecosystem'] = 0
コード例 #4
0
def comprobar_camara():
    camara = ParamikoComando()
    camara.conectar()
    comando = 'camara.py'
    if camara.pid(comando) != []:
        session['camara'] = 1
    else:
        session['camara'] = 0
コード例 #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
コード例 #6
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']))
コード例 #7
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()
コード例 #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()
コード例 #9
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()
コード例 #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']))
コード例 #11
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')
コード例 #12
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')
コード例 #13
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')
コード例 #14
0
ファイル: views.py プロジェクト: apocalipsys/florabot
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'))
コード例 #15
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
コード例 #16
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)
コード例 #17
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)
コード例 #18
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)
コード例 #19
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
コード例 #20
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)
コード例 #21
0
def liberar_gpios():
    automatic = ParamikoComando()
    automatic.conectar()
    comando = 'liberar_gpios.py'
    stdin, stdout, stderr = automatic.ejecutarcomando(comando, False)  #
    automatic.client.close()