csv文件中的MQTT消息



我有一个csv文件,我需要将此文件作为MQTT消息发送,但我需要它只发送一行,间隔几秒,然后发送下一行,再间隔几秒。这有点像传感器模拟,但数据在csv文件中。我试过用几种不同的方法来解决这个问题,但都没有成功。我在用Python编程。谢谢你们的帮助。这里的代码是我最近的一次尝试,在运行MQTT_publish((函数后,我收到了中断5秒的消息,但每条消息都是整个文件,而不仅仅是一行。我真的不知道该怎么办。

def MQTT_publish(broker, file, topic):
client = mqtt.Client()
print("Connecting to broker", broker)
client.connect(broker)
client.loop_start()
print("Publishing...")
client.loop_start()
with open(file, 'r') as read_obj:
data = reader(read_obj)
for row in data:
client.publish(f"{topic}", str(row))
time.sleep(5)
client.loop_stop()
def on_message(client, userdata, message):
print(str(message.payload.decode("utf-8")))

def MQTT_subscribe(broker, topic):
client = mqtt.Client()
print("Connecting to broker", broker)
client.connect(broker)
print(f"Subscribing {topic}")
client.subscribe(f"{topic}")
client.on_message = on_message
client.loop_forever()
broker = "mqtt.eclipse.org"

你不应该使用readlines((吗??

myfile = open(file, 'r')
Lines = myfile.readline()
for line in Lines:
client.publish(f"{topic}", str(line.strip()))
time.sleep(5)

这是假设文件中的数据是带有换行符的ASCII。

最新更新