Thursday, December 28, 2017

Brincando um pouco com PYTHON + MYSQL + ARDUINO


Banco recebendo valores do Arduíno via Python....A estampa de tempo é dada pelo Python :/

IDE utilizada...o nosso amigo PyCharm




Então pessoas, o código esta bem extenso,eu admito que poderia te-lo deixado menor, mais diante
de um problema de saúde ( e muito stress....)consegui fazer o que pretendia,uma interface de
comunicação entre um dispositivo do tipo serial(RS232.... bom, não interessa muito o meio físico),
se comunicando a um banco relacional que esta em uma rede de internet. Em breve postarei um versão melhor e atualizada do código...


import serial

import pymysql
from builtins import print
from datetime import datetime


# ---------------------------Variaveis Global----------------------------------------------------#
indice_1 = "temperatura"indice_2 = "nivel"indice_3 = "vazao"indice_4 = "pressao"rg = '0123456789'condicao = TrueIntervalo = 0.1Tempo_Anterior = 0





#Tenta comunicação  inicial com Arduinotry:
    ser = serial.Serial(port='COM3', baudrate=9600,timeout='1')
    flag = 1except:
    print("Não há comunicação serial, tente novamente")
    flag = 0    while(flag == 0):
        try:
            ser = serial.Serial(port='COM3', baudrate=9600)
            flag = 1        except:
            print("Reconnecte o dispositivo...")

#Tenta comunicação inicial com Servidortry:
    conn = pymysql.connect(host='localhost', user='root', password='', db='cadastro')
    sql1 = conn.cursor()  # Inserir o TimeStamp e demais variaveis    sql1_1 = conn.cursor()  # consulta tempo    sql2_2 = conn.cursor()  # consulta temperatura    sql3_3 = conn.cursor()  # consulta nivel    sql4_4 = conn.cursor()  # consutla vazao    sql5_5 = conn.cursor()  # consulta pressao    flag2 = 1except:
    flag2 = 0    print("Não foi possivel se conectar ao banco de dados, restart o servidor.")
    while (flag2 == 0):
        try:
            conn = pymysql.connect(host='localhost', user='root', password='', db='cadastro')
            sql1 = conn.cursor()  # Inserir o TimeStamp e demais variaveis            sql1_1 = conn.cursor()  # consulta tempo            sql2_2 = conn.cursor()  # consulta temperatura            sql3_3 = conn.cursor()  # consulta nivel            sql4_4 = conn.cursor()  # consutla vazao            sql5_5 = conn.cursor()  # consulta pressao            flag2 = 1        except:
            print("Não foi possivel se conectar ao banco de dados, restart o servidor.")


while (True):
    now = str(datetime.now())
    palavra = ser.readline(40)
    teste = str('\_r\_n').replace("_", "")
    teste_2 = ("_'_").replace('_', "")
    texto = str(palavra).replace(teste, " ").replace('b', "").replace(teste_2,'') # valor deixa de existir apos o print    texto_Apenas = str(palavra).replace(teste, " ").replace('b', "").replace(teste_2, '')
    if indice_1 in texto_Apenas:
        temp = texto_Apenas
        for i in range(len(temp)):
            if temp[i] not in rg:
                temp = temp.replace(temp[i], " ")
                valor_temperatura = (temp).replace(" ", "")
                temperatura = valor_temperatura
    if indice_2 in texto_Apenas:
        niv = texto_Apenas
        for i in range(len(niv)):
            if niv[i] not in rg:
                niv = niv.replace(niv[i], " ")
                valor_nivel = (niv).replace(" ", "")
                nivel = valor_nivel
    if indice_3 in texto_Apenas:
        vaz = texto_Apenas
        for i in range(len(vaz)):
            if vaz[i] not in rg:
                vaz = vaz.replace(vaz[i], " ")
                valor_vazao = (vaz).replace(" ", "")
                vazao = valor_vazao
    if indice_4 in texto_Apenas:
        pres = texto_Apenas
        for i in range(len(pres)):
            if pres[i] not in rg:
                pres = pres.replace(pres[i], " ")
                valor_pressao = (pres).replace(" ", "")
                pressao = valor_pressao
    #Controle de tempo    now = str(datetime.now())
    Tempo_Segundo = datetime.now()
    Tempo_Atual = Tempo_Segundo.second
    Controle_Tempo = (Tempo_Atual - Tempo_Anterior)
    if (Controle_Tempo < Intervalo):
        Tempo_Anterior = Tempo_Segundo.second
    if (Controle_Tempo > Intervalo):
        Tempo_Anterior = Tempo_Segundo.second
        TimeStamp = datetime.utcnow().strftime('%Y-%m-%d  %H:%M:%S')
        try:
            sql1.execute('INSERT INTO `arduino` (data,temperatura,nivel,vazao,pressao) values( "' + TimeStamp + '",'+valor_temperatura+','+valor_nivel+','+valor_vazao+','+valor_pressao+')')
            sql1_1.execute('SELECT `data`  FROM `arduino` Order by `data` DESC LIMIT 1')
            sql2_2.execute('SELECT `temperatura`  FROM `arduino` Order by `data` DESC LIMIT 1')
            sql3_3.execute('SELECT `nivel`  FROM `arduino` Order by `data` DESC LIMIT 1')
            sql4_4.execute('SELECT `vazao`  FROM `arduino` Order by `data` DESC LIMIT 1')
            sql5_5.execute('SELECT `pressao`  FROM `arduino` Order by `data` DESC LIMIT 1')
            Data = sql1_1.fetchall()
            Temperatura = sql2_2.fetchall()
            Nivel = sql3_3.fetchall()
            Vazao = sql4_4.fetchall()
            Pressao = sql5_5.fetchall()
            print(str(Data).replace(',)', "").replace("((", ""))
            print("Valor de Temperatura: " + str(Temperatura).replace(',)', "").replace("((", ""))
            print("Valor de Nivel: " + str(Nivel).replace(',)', "").replace("((", ""))
            print("Valor de Vazao: " + str(Vazao).replace(',)', "").replace("((", ""))
            print("Valor de Pressao: " + str(Pressao).replace(',)', "").replace("((", ""))
        except:
            try:
                conn = pymysql.connect(host='localhost', user='root', password='', db='cadastro')
                sql1 = conn.cursor()  # Inserir o TimeStamp e demais variaveis                sql1_1 = conn.cursor()  # consulta tempo                sql2_2 = conn.cursor()  # consulta temperatura                sql3_3 = conn.cursor()  # consulta nivel                sql4_4 = conn.cursor()  # consutla vazao                sql5_5 = conn.cursor()  # consulta pressao            except:
                print("Erro na consulta, tentando se reconectar o Servidor")
Share: