我的目标是从OpenCV(C++)将(x,y)坐标的JSON流发布到MQTT代理。我对从OpenCV传输JSON数据到MQTT的好方法感到困惑。

我目前有一个MQTT代理,它管理计算机1上的Python发布者脚本和计算机2上的Javascript客户端脚本之间的JSON消息队列。我有运行OpenCV的计算机3,需要发送许多(x,y)坐标的小JSON Blob。与MQTT经纪人几乎实时。

我最初考虑将坐标从OpenCV连续写入本地文本文件,然后由并行运行的Python MQTT发布者脚本连续读取。但是,围绕文件锁定存在一些问题,似乎不需要写入磁盘。

理想情况下,我希望坐标流保留在内存中,并经常(例如每10毫秒)发布到MQTT代理。我正在努力寻找一种使用stdin / stdout在OpenCV代码和Python发布者脚本之间工作的方法。

感谢您的指导。谢谢。

最佳答案

您提到了发布者的python脚本。

这是发布者:

#!/usr/bin/env python3

import paho.mqtt.client as mqtt

# This is the Publisher

client = mqtt.Client()
client.connect("localhost",1883,60)
client.publish("topic/test", "Hello world!", qos=0, retain=False)
client.disconnect()

这是一个订户:
#!/ usr / bin / env python3
将paho.mqtt.client导入为mqtt
# This is the Subscriber

def on_connect(client, userdata, flags, rc):
  print("Connected with result code "+str(rc))
  client.subscribe("topic/test")

def on_message(client, userdata, msg):
  if msg.payload.decode() == "Hello world!":
    print("Yes!")
   client.disconnect()

client = mqtt.Client()
client.connect("localhost",1883,60)

client.on_connect = on_connect
client.on_message = on_message

client.loop_forever()

10-07 19:34
查看更多