python Paho客户端MQTT:写入多个文件

巴哈特

初始化一个 MQTT 客户端,连接到特定主题上的 MQTT 代理,对于在该主题上收到的每条消息执行函数调用以检查消息中的属性长度是否大于 200,如果是,则查找 Gyro 仪表读数: GyroX 并保存到文件,确保文件大小小于 400MB,否则打开一个新文件并开始写入。

参考帖子:https : //stackoverflow.com/a/54306598/12097046

我想写入多个文件,即根据大小将传入的 json 消息发布到不同的文件,而不仅仅是一个文件。怎么做 ?任何帮助表示赞赏

file_name='/tmp/gyro_256'+"_"+timestr+".csv"
def on_message(client, userdata, message):
  y = json.loads(message.payload)
  v = (len(y['sec_data']))
  p = int(v)
  if p >= 200:
          d = (y["sec_data"][10]["GyroX"])
           with open(file_name,'a+') as f:
                    f.write(d + "\n")
client = mqttClient.Client("123")               #create new instance
client.username_pw_set(user, password=password)    #set username and 
client.on_connect= on_connect                      #attach function to 
  
client.on_message= on_message                      #attach function to 
   
client.connect(broker_address,port,100) #connect
client.subscribe("tes1") #subscribe
client.loop_start() #then keep listening forever
if int(os.path.getsize(file_name)) > 47216840 :
     client.loop_stop()
     timestr = time.strftime("%Y%m%d%H%M%S")
     file_name = '/vol/vol_HDB/data/gyro_256'+"_"+timestr+".csv"
client.loop_start()
硬盘

client.loop_start()一次调用之后的代码将永远不会运行,因为该调用将永远阻塞。

如果要更改文件名,则必须在on_message回调中进行文件大小测试

def on_message(client, userdata, message):
  global filename
  y = json.loads(message.payload)
  v = (len(y['sec_data']))
  p = int(v)

  if int(os.path.getsize(file_name)) > 47216840 :
     timestr = time.strftime("%Y%m%d%H%M%S")
     file_name = '/vol/vol_HDB/data/gyro_256'+"_"+timestr+".csv"

  if p >= 200:
    d = (y["sec_data"][10]["GyroX"])
    with open(file_name,'a+') as f:
      f.write(d + "\n")

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Paho Python MQTT客户端成功连接,但未调用on_connect回调

Python telnet客户端

如何在Django中使用Paho mqtt客户端?

PAHO MQTT Python客户端-缺少确认,保证为订户传递

Paho MQTT Python客户端:没有引发异常,只是停止

Paho MQTT客户端无法正常工作

Android上的Eclipse Paho MQTT客户端,性能较差

当paho python mqtt客户端从订阅的主题获取消息时,它将始终在接收到的消息中添加“ b”

MongoDB Python和C ++客户端-多个实例出错

在python 3.7中使用paho mqtt客户端时出现问题

kubernetes Python API客户端:执行完整的Yaml文件

Paho python客户端为什么发布短消息而不发布长消息

测试docker容器中的Python mqtt客户端连接到mqtt代理docker容器

聊天框与运行python的多个客户端锁定

python多个客户端聊天不起作用

Python Socket多个客户端-聊天应用

paho-mqtt客户端可以同时连接到多个代理吗?

使用TCP客户端以Python发送多个消息

Eclipse Paho Python客户端未连接

如何开始使用MQTT Paho JavaScript客户端?

如何在必须在多个活动中访问的Android中实现Paho MQTT客户端

Paho(MQTT)客户端无法连接

Python paho mqtt 客户端不会同时发布和订阅

使用 pika(python 客户端)通过 RabbitMQ 发布/订阅 MQTT 消息

Paho MQTT JS 客户端已连接错误?

在python类中创建pybullet客户端的多个实例

使用 python websocket 和 nginx 处理多个客户端

Eclipse Paho MQTT 客户端在 Java 中使用 TLS

用 Python 客户端写入 Java 服务器