news 2026/9/3 2:48:00

python mqgg 发送 json 文件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python mqgg 发送 json 文件
pip install paho-mqtt

发送json,含有音频文件;

import json, base64 import paho.mqtt.client as mqtt import time def on_connect(client, userdata, flags, rc): if rc == 0: print("[A] Connected to broker") client.subscribe(TOPIC_SUB) print(f"[A] Subscribed to {TOPIC_SUB}") else: print(f"[A] Connection failed: {rc}") def on_message(client, userdata, msg): print(f"[A] Received message on '{msg.topic}': {msg.payload.decode()}") if __name__ == '__main__': #install "pip install paho-mqtt" BROKER = "192.168.8.127" BROKER = "localhost" PORT = 1883 TOPIC_SUB = "ue/state" # 订阅状态 TOPIC_PUB = "ue/command" # 发布命令 client = mqtt.Client(client_id="ClientA") client.on_connect = on_connect client.on_message = on_message client.connect(BROKER, PORT, keepalive=30) # non-blocking loop client.loop_start() wav_path = r"D:\data\audios\post_2.wav" # 发送一些命令 for i in range(5000): msg = f"command {i}" with open(wav_path, "rb") as f: audio_bytes = f.read() audio_b64 = base64.b64encode(audio_bytes).decode("utf-8") msg_audio = json.dumps({ "type": "audio", "data": audio_b64, }) client.publish("ue/messages", msg_audio) # ===== 发送命令 ===== msg_cmd = json.dumps({ "type": "command", "data": "pause", }) # client.publish("ue/messages", msg_cmd) print(f"[A] Sent: {msg}") time.sleep(3) client.loop_stop() client.disconnect()

接收json,含有音频文件

import json import base64 import paho.mqtt.client as mqtt import os # ====== 配置 ====== BROKER = "localhost" # MQTT Broker PORT = 1883 TOPIC_SUB = "ue/messages" # 订阅 Topic SAVE_DIR = r"D:\data\audios_received" os.makedirs(SAVE_DIR, exist_ok=True) file_index = 0 # ====== MQTT 回调 ====== def on_connect(client, userdata, flags, rc): if rc == 0: print("[B] Connected to broker") client.subscribe(TOPIC_SUB) print(f"[B] Subscribed to {TOPIC_SUB}") else: print(f"[B] Connection failed: {rc}") def on_message(client, userdata, msg): global file_index try: payload_str = msg.payload.decode('utf-8') data = json.loads(payload_str) if data.get("type") == "audio": audio_b64 = data.get("data", "") if not audio_b64: return audio_bytes = base64.b64decode(audio_b64) file_path = os.path.join(SAVE_DIR, f"received_{file_index}.wav") file_index += 1 # 自动判断是否是完整 WAV if is_wav_file(audio_bytes): # 已经是完整 WAV,直接写入文件 with open(file_path, 'wb') as f: f.write(audio_bytes) print(f"[B] Saved complete WAV to {file_path}") else: # 裸 PCM,需要自己加 WAV 头 # 默认假设 16-bit PCM,单声道,采样率 44100 save_pcm_as_wav(file_path, audio_bytes, sample_rate=44100, num_channels=1) print(f"[B] Saved PCM as WAV to {file_path}") elif data.get("type") == "command": cmd = data.get("data") print(f"[B] Received command: {cmd}") except Exception as e: print(f"[B] Error processing message: {e}") # ====== 判断是否完整 WAV 文件 ====== def is_wav_file(data_bytes): # WAV 文件头前4字节是 "RIFF" return data_bytes[:4] == b'RIFF' # ====== 将 PCM 数据写入 WAV 文件 ====== def save_pcm_as_wav(file_path, audio_bytes, sample_rate=44100, num_channels=1): import wave with wave.open(file_path, 'wb') as wf: wf.setnchannels(num_channels) wf.setsampwidth(2) # 16-bit wf.setframerate(sample_rate) wf.writeframes(audio_bytes) # ====== 主程序 ====== if __name__ == "__main__": client = mqtt.Client(client_id="ClientB") client.on_connect = on_connect client.on_message = on_message client.connect(BROKER, PORT, keepalive=30) client.loop_forever()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 0:53:21

springboot_ssm819房屋出租系统预约看房--论文

目录具体实现截图摘要系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 摘要 随着互联网技术的快速发展,传统的房屋租赁管理模式已无法满足现代社会的需求。基于SpringBoot和SSM&#…

作者头像 李华
网站建设 2026/9/2 22:40:24

神经网络的时序建模分支发展脉络(1960s-至今)

从带延迟的感知机到Transformer,神经网络在时序数据建模领域的发展,是一部“解决痛点、持续优化”的技术演进史。本文将沿着你给出的时间轴,详细拆解每个阶段模型的核心创新、解决的问题、技术原理及历史意义,完整呈现这条从“静态…

作者头像 李华
网站建设 2026/9/2 22:21:01

传统前馈神经网络(FNN)的前身与发展脉络

传统前馈神经网络(Feedforward Neural Network, FNN)是深度学习的基石架构,其核心特征是信息单向流动——数据从输入层进入,经过隐藏层的逐层变换,最终从输出层输出,层与层之间无反馈连接。 FNN的发展并非一…

作者头像 李华
网站建设 2026/9/2 23:54:46

IPO投资策略:如何评估新上市公司

IPO投资策略:如何评估新上市公司 关键词:IPO投资策略、新上市公司评估、财务分析、行业前景、管理团队 摘要:本文聚焦于IPO投资策略,旨在深入探讨如何全面、科学地评估新上市公司。通过对背景知识的介绍,阐述核心概念及联系,剖析核心算法原理与操作步骤,运用数学模型和公…

作者头像 李华
网站建设 2026/9/2 23:56:17

AI大模型学习全攻略:零基础入门、35岁转行可行性与就业前景

文章探讨35岁转行学习AI大模型的可行性、零基础入门可能性和行业前景。指出35岁转行完全可行,零基础学习者可通过丰富资源掌握技能。AI大模型行业前景广阔,需求增长。文章提供了系统学习路线,包括基础理解、API应用开发、应用架构实践和私有化…

作者头像 李华