Boa tarde pessoal, tudo bem?
Estou com script em phyton e preciso colocar no Home Assistant. Este script faz uma leitura do tópico do mqtt e grava em um mysql externo.
Alguém pode me orientar onde coloco ele no HA e programá-lo para que execute por exemplo a cada gravação do tópico ou a cada 5 minutos por exemplo.
Segue abaixo o script:
xxxx
#!/usr/bin/python -u
import mysql.connector as monitorenergia
import paho.mqtt.client as mqtt
import ssl
monitorenergia_connection = monitorenergia.connect(host=‘localhost’, user=‘root’, password=’’, database=‘bd’)
cursor = monitorenergia_connection.cursor()
MQTT Settings
MQTT_Broker = “xxx”
MQTT_Port = 1883
Keep_Alive_Interval = 60
MQTT_Topic = “xxx”
Subscribe
def on_connect(client, userdata, flags, rc):
mqttc.subscribe(MQTT_Topic, 0)
def on_message(mosq, obj, msg):
Prepare Data, separate columns and values
msg_clear = msg.payload.translate(None, ‘{}""’).split(", “)
msg_dict = {}
for i in range(0, len(msg_clear)):
msg_dict[msg_clear[i].split(”: “)[0]] = msg_clear[i].split(”: ")[1]
Prepare dynamic sql-statement
placeholders = ‘, ‘.join([’%s’] * len(msg_dict))
columns = ', '.join(msg_dict.keys())
sql = “INSERT INTO pws ( %s ) VALUES ( %s )” % (columns, placeholders)
Save Data into DB Table
try:
cursor.execute(sql, msg_dict.values())
except monitorenergia.Error as error:
print(“Error: {}”.format(error))
monitorenergia_connection.commit()
def on_subscribe(mosq, obj, mid, granted_qos):
pass
mqttc = mqtt.Client()
Assign event callbacks
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
Connect
mqttc.tls_set(ca_certs=“ca.crt”, tls_version=ssl.PROTOCOL_TLSv1_2)
mqttc.connect(MQTT_Broker, int(MQTT_Port), int(Keep_Alive_Interval))
Continue the network loop & close db-connection
mqttc.loop_forever()
monitorenergia_connection.close()
xxxx
Se alguém puder me ajudar, agradeceria bastante.