需求:节目上传至MINIO后,使用mqtt进行上报

2023-05-16

需求:节目上传至MINIO后,使用mqtt进行上报

环境准备

  1. 文件管理平台:首先需要使用minio搭建属于自己的对象存储(此步骤跳过)

  2. 通信方式:MQTT方式,客户端测试工具:MQTTX(https://mqttx.app/)

  3. 在minio平台上创建桶
    在这里插入图片描述

  4. 为了连接桶,需要添加Access Keys,填写自己的Access Key 和 Secret Key
    在这里插入图片描述
    在这里插入图片描述

  5. 在minio平台上添加Events,然后让创建的桶订阅此话题,这个话题也是我们实现功能的关键步骤

    Events->点击Add Event Destination->选择MQTT->填写相应信息,
    在这里插入图片描述

    注意:写Broker时,协议写成tcp,http不ok,保存事件后提示重新登陆,使配置有效

  6. 找到东订阅刚刚的event,效果图如下。
    在这里插入图片描述
    到此处,minio中的配置已经完成,此时就可以用代码实现:当桶中的添加入新的文件时,可以使用mqtt通信将信息进行上报。(这里我应该只选择put的,因为只对添加文件进行监视)

  7. python实现文件上传minio

    from minio import Minio
    # 存储文件到桶对象中或者存储在桶下的某个文件夹下
    def save_file(bucket, file_name, file_local_path):
        minio_client = Minio(
            "{0}:{1}".format("10.199.130.173", "9000"),
            secure=False,  # 默认True[https]
            access_key="在minio中设置的access_key",
            secret_key="在minio中设置的secret_key",
        )
        minio_client.fput_object(bucket, file_name, file_local_path)
        print("上传成功!!!")
     
     
    if __name__ == "__main__":
        # 存储图片文件到桶的主目录下
        save_file("桶名", "目标文件:eg:/pre_no.png", "本地文件地址")
        # # 存储图片文件到桶下的某个文件夹下
        # save_file("lg2", "/jpeg/pre_no.png", "D:\\Postgraduate\\MqttProject\\no_label\\1.png")
    
    

    订阅minio创建的话题,当桶信息发生变化时,将结果发送给我们,可以根据收到的信息,判断,新节目上传到了桶上,我们这边发布话题,通知服务器端

    #!/usr/bin/env python
    # 实现文件上传成功后,通过订阅上传成功的话题,会返回信息,
    # 然后需要我向broker publish一个topic,告知新节目上传到minio了
    from __future__ import print_function
    import json
    import paho.mqtt.client as mqtt
    # The callback for when the client receives a CONNACK response from the server.
    def on_connect(client, userdata, flags, rc):
        print("Connected with result code", rc)
        client.subscribe("minio设置的话题")
    def on_message(client, userdata, msg):
        if msg.retain == 1:
            print("此消息是保留信息")
        else:
            message_json = json.dumps({
                'topic': msg.topic,
                'payload': msg.payload.decode(),
                'qos': msg.qos,
                'retain': msg.retain
            },sort_keys=True, indent=4, separators=(',', ': '))
            print(message_json)
    client = mqtt.Client()
    client.on_connect = on_connect
    client.on_message = on_message
    client.connect("broker.emqx.io", 1883)
    client.loop_forever()
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

需求:节目上传至MINIO后,使用mqtt进行上报 的相关文章

  • 1024有感

    2022 10 24 1024节日快乐 xff01 好好学习 xff0c 天天向上 x1f600

随机推荐

  • 互联网项目一般几轮测试

    第一轮测试 xff1a 要覆盖所有测试用例 所有功能都要跑一遍 第二轮测试 xff1a 重点功能的测试 还要把第一轮测试发现的问题 xff0c 根据开发修改完成的结果 xff0c 进行验证 最后一轮是回归测试 xff1a 验证所有bug是否
  • IDEA pom文件 ctrl alt l无法格式化

    File gt Manage IDE settings gt Restore Default settings 恢复IDEA默认设置后 xff0c 即可格式化pom文件
  • 科里奥利力简单清晰的推导

    看到一个比较好的科里奥利力推导方法 xff1a 如果你不太理解科里奥利力 xff0c 可以看一下我的这篇文章 xff1a 对科里奥利力的理解 本文参考 xff1a 1 黄永义 科里奥利力简单而清晰的导出 J 广西物理 2015 36 04
  • java实体类命名

    Entity xff1a 与数据库表结构一一对应 xff0c 通过Dao层向上传输数据源对象 Dto xff08 Data Transfer Object xff09 xff1a 数据传输对象 xff0c Service或Manager向外
  • 字节的高低位互换

    蝶式交换法 unsigned char Reverse byte unsigned char data data 61 data lt lt 4 data gt gt 4 data 61 data lt lt 2 amp 0xcc data
  • 没有Build文件夹的情况下(最新的vue-cli3没有)怎么关闭掉ESlink

    这里写目录标题 一般的注释掉Build中的方法最新的vue cli3没有build文件夹怎么办 一般的注释掉Build中的方法 在build文件夹 gt webpack base conf js中注释以下代码 和在IntelliJ IDEA
  • 使用zed摄像头跑ORB_SLAM2

    zed ros wrapper安装 首先对zed ros wrapper安装 xff1a 具体操作步骤及代码的参考链接 xff1a https github com stereolabs zed ros wrapper git mkdir
  • 【linux网络编程学习笔记】第二节:创建TCP通信(双向)(socket、bind、listen、accept、connect、recv、send、shutdown、server\client)

    Work won 39 t kill but worry will 劳动无害 xff0c 忧愁伤身 上一篇章中创建了TCP的客户端的服务器 xff0c 但是只能单向发送 xff0c 本章节主要讲解如何进行双向互发消息 xff0c 实现的过程
  • 航模电池及稳压降压模块—毕设简记

    航模电池及稳压降压模块简介 简述 准备给设计的控制系统选一块航模电池 xff0c 需要关注什么参数 xff1f 控制系统的传感器需要5V供电 直流减速电机需要12V供电 单片机需要7 12V供电 xff0c 这么多供电该怎么处理 xff1f
  • Laplance算子(二阶导数)

    理论 xff1a 在二阶导数的时候 xff0c 最大变化处的值为0 即边缘是零 xff0c 通过二阶导数计算 xff0c 依据此理论我们可以计算图像的二阶导数 xff0c 提取边缘 Laplance算子 二阶导数我不会 xff0c 别担心
  • yolo3_pytorch 训练voc数据集和训练自己的数据集并进行预测(github代码调试)

    训练voc数据集的步骤 xff1a xff1a 首先下载voc数据集 xff0c 将数据集放在从github中下载的项目中VOCdevkit目录中 xff08 直接将数据集拉入到项目中 xff0c 替代目标文件即可 xff09 源码下载 x
  • ros的通信机构

    ros的通信是在os层之上 xff0c 基于TCP IP协议实现 os层 xff08 操作系统层 xff09 对于开发者来讲 xff0c 是不需要关系的 中间层 xff1a TCPROS UDPROS 这是基于TCP IP协议进行重新封装的
  • 视频追踪(meanshift和camshift算法)

    import numpy as np import cv2 as cv opencv实现meanshift的api cv meanShift probImage window criteria 参数一 xff1a roi区域 xff0c 目
  • 国产的Arduino Mega 2560 R3改进版串口1丝印标注错误

    Mega 2560有四个串口 xff1a 分别是串口0 xff0c 串口1 xff0c 串口2 xff0c 串口3 而串口1的丝印标注反了 在板子中烧录如下代码 xff0c 则串口1的TX应该不断的有输出 xff0c RX没有 void s
  • Visual Studio实现光流法(opencv and Eigen)

    环境问题 xff1a 首先是在vs中安装opencv和eigen两个库 安装eigen库所推荐的链接 xff1a VS2019正确的安装Eigen库 xff0c 解决所有报错 xff08 全网最详细 xff01 xff01 xff09 Ma
  • Deformable DETR环境配置和应用

    准备工作 xff1a Deformable DETR代码路径如下 xff1a GitHub fundamentalvision Deformable DETR Deformable DETR Deformable Transformers
  • A review of visual SLAM methods for autonomous driving vehicles

    自主驾驶车辆的视觉SLAM方法回顾 原论文在文章末尾 摘要 xff1a 自主驾驶车辆在不同的驾驶环境中都需要精确的定位和测绘解决方案 在这种情况下 xff0c 同步定位和测绘 xff08 SLAM xff09 技术是一个很好的研究解决方案
  • slam原理介绍和经典算法

    1 传统slam局限性 slam算法假设的环境中的物体都是处于静态或者低运动状态的 xff0c 然而 xff0c 现实世界是复杂多变的 xff0c 因此这种假设对于应用 环境有着严格的限制 xff0c 同时影响视觉slam系统在实际场景中的
  • Git教程(李立超git和GitHub使用)

    Git教程 配置 配置name和email git config global user name 34 xxxx 34 git config global user email 34 xxx 64 xxx xxx 34 git statu
  • 需求:节目上传至MINIO后,使用mqtt进行上报

    需求 xff1a 节目上传至MINIO后 xff0c 使用mqtt进行上报 环境准备 文件管理平台 xff1a 首先需要使用minio搭建属于自己的对象存储 xff08 此步骤跳过 xff09 通信方式 xff1a MQTT方式 xff0c