import time
client = mqtt.Client()
client.connect("test.mosquitto.org", 1883)
def on_connect(client, userdata, flags, rc):
print("Conectando al Servidor - " + str(rc))
client.subscribe("Valve_OC")
client.subscribe("Medir")
def on_message(client, userdata, message): # The callback for when a PUBLISH message is received from the server.
global message_received
time.sleep(1)
message_received=str(message.payload.decode("utf-8"))
print("received message =", message_received)
valor_mensaje= int(float(message_received))
#el potenciometro va de 0 a 1023, simulamos que es el sensor de temperatura
if (valor_mensaje<=300): #apertura 100%
print("abrir completamente la valvula")
client.publish("Valve_OC", "Abrir,100")
print("valor publicado en topic Valve_OC")
time.sleep(3)
client.disconnect()
elif (valor_mensaje>300 and valor_mensaje<=600): #apertura 60%
print("abrir valvula al 60")
client.publish("Valve_OC", "Abrir,60")
print("valor publicado en topic Valve_OC")
time.sleep(3)
client.disconnect()
elif (valor_mensaje>600 and valor_mensaje<800): #apertura 30%
print("abrir al 30")
client.publish("Valve_OC", "Abrir,30")
print("valor publicado en topic Valve_OC")
time.sleep(3)
client.disconnect()
elif (valor_mensaje>=800) : #cerrar
print("cerrar valvula")
client.publish("Valve_OC", "Cerrar")
print("valor publicado en topic Valve_OC")
time.sleep(3)
client.disconnect()
def on_publish(client, obj, mid):
print("Mensaje: " + str(mid))
def on_subscribe(client, obj, mid, granted_qos):
print("Subscribed: " + str(mid) + " " + str(granted_qos))
def on_log(client, obj, level, string):
print(f"Log: {string}")
client = mqtt.Client()
client.on_connect = on_connect
client.on_publish = on_publish
client.on_message = on_message
client.on_subscribe = on_subscribe
client.on_log = on_log
client.connect("test.mosquitto.org", 1883)
client.loop_forever()
Hey, I'm trying to receive messages from the topic "medir" and put some conditions to send other messages to the topic "Valve_OC". the thing is that I want to receive all messages from the topic like in loop, but after receiving the first message the client disconnect. I have put the line client.disconnect() in each "if" because if I don't put it the client send me messages from the topic "valve_OC" I don't know why. any help?
source https://stackoverflow.com/questions/72060822/client-disconnect-after-one-message-in-mqtt
Comments
Post a Comment