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 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 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 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 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 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_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
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()