Commit 1864f016 authored by Bruno Thomazi Zanette's avatar Bruno Thomazi Zanette 🎱
Browse files

adiciona try and except com manipulação da página html

parent 1eb7a5d4
#!/usr/bin/env python3
######
###### Programa que roda (python3 [nome]) até ser encerrado (ctrl+c) recebendo mensagens de um tópico por mqtt
###### e salva em uma date base. As mensagens de erro são mandadas para o tópico feedback no localhost
######
'''
Programa que roda até ser encerrado (ctrl+c) recebendo mensagens de um tópico por mqtt
e salva em uma date base. As mensagens de erro são mandadas para o tópico feedback no localhost
'''
import logging
import paho.mqtt.client as mqtt
import time
import hashlib
import mysql.connector
############ valores iniciais ############
global cur
broker_address="localhost"
topico= "cosmic"
user_db = '[usuario mysql]'
password_db = '[senha mysql]'
db_connection = mysql.connector.connect(host='localhost',user = user_db, passwd = password_db, auth_plugin='mysql_native_password')
cur = db_connection.cursor()
from datetime import datetime
############ funções ############
def check_usuario():
cur.execute("USE COSMICPAMPA;")
cur.execute('select user from usuarios;')
myresult = cur.fetchall()
return(myresult)
def insert_bd(colunas,valores):
cur.execute("USE [nome Banco de dados];")
cur.execute("USE COSMICPAMPA;")
cur.execute("INSERT INTO eventos ({}) VALUES({})".format(colunas,valores)) #Salva comando no cursor
def on_message(client, userdata, message): # Funcao que roda toda vez que se recebe uma mensagem
# mensagens no terminal (opcional)
print("message received " ,str(message.payload.decode("utf-8"))) #imprime msg no terminal
print("message topic=",message.topic) # imprime tópico
# print("message received " ,str(message.payload.decode("utf-8"))) #imprime msg no terminal
# print("message topic=",message.topic) # imprime tópico
#print("message qos=",message.qos)
#print("message retain flag=",message.retain)
......@@ -55,8 +48,8 @@ def on_message(client, userdata, message): # Funcao que roda toda vez que se rec
hash= "'{}'".format(dados[7])
# começo das strings colunas e valores, desta forma só se salva no bd o que está correto
colunas="hora,local,intensidade"
valores= str(hora)+","+str(loca)+","+str(inte)
colunas="hora,local"
valores= str(hora)+","+str(loca)
today = datetime.now()
hoje = " " + today.strftime("%Y|%m|%d %H:%M:%S")
......@@ -73,19 +66,19 @@ def on_message(client, userdata, message): # Funcao que roda toda vez que se rec
mensag = "usuario não cadastrado: "+usua
print( mensag+ str(hoje),file = open(output,'a'))
client.publish("feedback", mensag)
# Checa o Hash
string = str(hora)+str(loca)+str(inte)+str(temp)+str(umid)+str(pres)+usua
string = str(hora)+str(loca)[1:-1]+str(inte)+str(temp)+str(umid)+str(pres)+usua[1:-1]
result = hashlib.md5(string.encode())
hash2 = result.hexdigest()
hash1= "{}".format(dados[7]) # hash específico para comparação, sem ''
if (hash2==hash1): # só manda para o BD se o HASH for igual
if (hash2==hash1 and d==1): # só manda para o BD se o HASH for igual
client.publish("feedback","dadosHASH confere")
# intensidade > 0
# intensidade > 0
if (inte<0):
if (inte<0): #essa?
mensag = "intensidade menor que zero"
print( mensag+str(hoje),file = open(output,'a'))
client.publish("feedback",mensag)
......@@ -110,7 +103,7 @@ def on_message(client, userdata, message): # Funcao que roda toda vez que se rec
else:
colunas += ",umidade"
valores += "," + str(umid)
# Pressao > 0
if (pres<=0):
mensag = "pressao menor que zero"
......@@ -119,8 +112,8 @@ def on_message(client, userdata, message): # Funcao que roda toda vez que se rec
else:
colunas += ",pressao"
valores += "," + str(pres)
#valores que completam a string
# add valores faltam
colunas += ",usuario,HASH"
valores += ","+usua+","+hash
......@@ -135,20 +128,70 @@ def on_message(client, userdata, message): # Funcao que roda toda vez que se rec
print( mensag+str(hoje),file = open(output,'a'))
client.publish("feedback", mensag)
def trocatexto(nomefile,outword, inword):
'''
Programa que recebe um arquivo e substitui uma palavra por outra
e escreve novamente no arquivo
Args:
nomefile (str): nome do arquivo que será modificado
outword (str): palavra que será procurada no arquivo para ser substituida
inword (str): pela pela qual a outword será substituida
'''
with open(nomefile,"r") as arquivo: #abre sem apagar o arquivo
lido = arquivo.read() # lê o arquivo armazenado em nomefile
mudado = lido.replace(outword,inword) #troca a str em outword pelo str em inword
with open(nomefile,"w") as arqu: #apaga texto do arquivo
arqu.write(mudado) # escreve novo com as palavras trocadas
def erro(html): # func
with open(html,"r") as arquivo: #abre sem apagar o arquivo
lido = arquivo.read() # lê o arquivo armazenado em nomefile
string_erro = lido[10584:-25]
return(string_erro)
############ valores iniciais ############
endereco_html = "/var/www/html/testou.html"
trocatexto(endereco_html,"verme","verde")
trocatexto(endereco_html,erro(endereco_html),"ok")
global cur
broker_address="localhost"
topico= "cosmic"
user_db = 'user'
password_db = 'senha'
output= 'log_inicial.dat'
try:
db_connection = mysql.connector.connect(host='localhost',user = user_db, passwd = password_db, auth_plugin='mysql_native_password')
cur = db_connection.cursor()
############ Subscribe ao tópico ############
username_MQTT="[usuario MQTT]" #user para MQTT
password_MQTT="[senha MQTT]" #senha para MQTT
username_MQTT="cta" #user para MQTT
password_MQTT="cta" #senha para MQTT
client = mqtt.Client("P1") #create new instance
client = mqtt.Client("P1") #create new instance
client.on_message=on_message #attach function to callback
client.on_message = on_message #attach function to callback
client.username_pw_set(username_MQTT, password_MQTT) # passa o user e senha do mqtt
client.username_pw_set(username_MQTT, password_MQTT) # passa o user e senha do mqtt
client.connect(broker_address) #connect to broker
client.connect(broker_address) #connect to broker
client.subscribe(topico) # se inscreve no tópico (quando chega mensagem chama a função on_message)
client.subscribe(topico) # se inscreve no tópico (quando chega mensagem chama a função on_message)
client.loop_forever() # repete tudo relacionado ao mqtt
client.loop_forever() # repete tudo relacionado ao mqtt
\ No newline at end of file
except Exception as e:
trocatexto(endereco_html,"verde","verme")
trocatexto(endereco_html,"ok",f"O erro foi {e} no programa inicial.py")
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment