【自用】无法通过ESP32创建HomeAssistant实体问题解决(MQTT对ESP32创建实体请求无应答)

2023-11-20

一、问题描述

1.使用 MQTTX 测试客户端能够创建实体

当通过 MQTTX 发送注册实体请求的时候,实体能够在 MQTT 服务器中注册成功。

在这里插入图片描述

2.使用 ESP32 无法创建实体

在ESP32中通过 publish() 函数发送注册请求的时候,并不会报任何错误,但 MQTT 服务器就是对此毫无反应。

在这里插入图片描述

二、问题原因

1.注册实体请求的 JSON 字符串过长,发送给 MQTT 服务器时被截断

该问题困扰了我两天的时间,百思不得其解,因为一点儿报错都没有。
最终打开了 MQTT 日志监测,并逐行查阅日志文件,发现日志中 MQTT 接收到的 JSON 格式请求被拦腰截断,变成了不完整的请求。
原因不明,因为 JSON 字符串的长度,在 MQTTX 客户端 和 ESP32 中是一样的。有可能是没有给线程上锁的原因,但此种可能性较小,因为当我只发送一次 publish() 请求时,该问题依然存在。

在这里插入图片描述

三、解决办法

1.减少 发送的注册实体请求 的 JSON 字符串的长度

我去掉了一些不必要的参数如“icon”,并且将制造商从中文字符改为了英文(中文转码后太长)
问题因此成功解决。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【自用】无法通过ESP32创建HomeAssistant实体问题解决(MQTT对ESP32创建实体请求无应答) 的相关文章

  • linux虚拟机可以ping通,但是无法socket连接

    场景 两台windows各开一台Linux虚拟机 通过路由器组网 分配桥接地址 出现电脑之间ping不通 socket不通怎么办 答案 1 关掉windows防火墙 任何阻止联网的行为统统取消 2 关掉linux防火墙 对 etc seli

随机推荐

  • 狂飙!GPT-4最新20+个应用案例集锦,附视频

    编者按 自OpenAI于3月15日重磅推出GPT 4 一石激起千层浪 全球开发者 创业者们迅速尝试了各种形形色色的场景应用 来体验它的极限 游戏 编程 客户关系 营销 财务 家庭生活 饮食 文学艺术创作等等不一而足 笔者从中筛选了23款基于
  • HandlerAdapter

    HandleAdapter HandlerAdapter的功能实际就是执行我们的具体的Controller Servlet或者HttpRequestHandler中的方法 类结构如下 1 SimpleServletHandlerAdapte
  • 【实战】将多个不规则多级表头的工作表合并为一个规范的一维表数据结果表...

    最近在项目里 有个临时的小需求 需要将一些行列交叉结构的表格进行汇总合并 转换成规范的一维表数据结构进行后续的分析使用 从一开始想到的使用VBA拼接字符串方式 完成PowerQuery的M语言查询字符串 然后转换成使用插件方式来实现相同功能
  • Unity-AR 简介

    Unity AR 简介 现有Unity AR Sdk ARKit 苹果推出的AR开发平台 ARCore Google 推出的增强现实 SDK ARFoundation ARFoundation是ARKit XR插件和ARCore XR插件
  • Linux下getopt函数的使用

    getopt为解析命令行参数函数 它是Linux C库函数 使用此函数需要包含系统头文件unistd h getopt函数声明如下 int getopt int argc char const argv const char optstri
  • CocosCreator用git版本控制时meta文件的冲突解决方法

    我们在多人进行CocosCreator开发时 需要对CCC的meta文件进行提交 meta文件里有CCC编辑器唯一识别的uuid 这个uuid是CCC编辑器对文件识别的唯一标识 如果我们不提交 会造成各个程序员电脑之间的CCC自动生成的uu
  • Fortify代码扫描工具

    一 Fortify介绍 Fortify是一款强大的静态代码扫描分析工具 其发现代码漏洞缺陷的能力十分强悍 主要是将代码经过编译 依托于其强大的内置规则库来发现漏洞的 其次fortify SCA团队在开发此商业工具时 也提供了自定义规则的接口
  • Python中的traceback的基本用法(异常处理)

    文章目录 一 Traceback介绍 二 Traceback中常用函数 1 traceback print tb 2 traceback print exception 3 traceback print exc 4 traceback f
  • MATLAB之function函数

    在MATLAB中 function函数用于定义一个新函数 用于将一定的输入 也称为参数 和输出变量与函数相关联 讲人话就是把自变量 函数和函数表达式定义为一个 可调用的函数块 由以下几个部分组成 function 关键字 首先得告诉MATL
  • stm32f103c8t6驱动oled

    要驱动OLED显示屏 您可以使用STM32F103C8T6微控制器及其相关的GPIO引脚和SPI总线接口 以下是驱动OLED显示屏的一些基本步骤 配置STM32F103C8T6的SPI总线接口 通过SPI总线发送命令和数据给OLED显示屏
  • iOS 自定义弹出框

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 在iOS中 系统再带的弹出窗体不好扩展 开发时候不如自定义一个弹出窗体 附加上显示和消失的动画 弹出窗体父类如下 具体效果直接往上面添加控件就行 ViewControlle
  • Jsp基于Web的可维护的数据库浏览器(源代码+论文+答辩PPT)

    1绪论 1 1Web应用系统 近十年来 基于Internet的应用正以前所未有的高速度发展 其中一个重要的方向就是基于Web的应用系统的发展 在此期间 随着技术的不断更新和应用的不断深入 Web应用系统的发展也经历了几个阶段性的跨越 图1
  • 什么是html网址,html是什么

    html语言是网络上的通用语言 也是比较简单的语言 对于想要在前端行业发展的人来说 html是必须要学的语言 那么 今天我们要来讲一下html是什么语言 html什么意思 以及html语言特点 什么是html HTML的英文全称是Hyper
  • 【C++】读取txt文件并查询指定字段

    目录 一 函数功能说明 二 代码 方法1 使用 lt lt 运算符 方法2 使用string getline 如果这篇文章对你有所帮助 渴望获得你的一个点赞 一 函数功能说明 函数名 说明 1 CompareFileFileds 按字符读取
  • 提高测试覆盖率的四大步骤

    什么是测试覆盖率 测试覆盖率衡量您测试了多少应用程序 这不仅与您执行的测试数量有关 它还与您查看的真实设备 浏览器和操作系统版本有关 您测试的设备和操作系统组合越多 测试覆盖的代码越多 测试覆盖率就越高 请注意 实现 100 的测试覆盖率是
  • enum与typedef enum的用法

    前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住分享一下给大家 点击跳转到网站 https www captainai net db 一 两者的用法 枚举类型定义用关键字enum标识 形式为 enum 标识符 枚举数据表
  • Centos 7安装图形化系统

    Centos 7 图形化安装 点击创建新的虚拟机 进入虚拟机设置向导界面 自定义 高级 点击下一步 进入虚拟机硬件兼容性 默认下一步即可 点击下一步 进入安装客户端操作系统 选择稍后安装操作系统 点击下一步 进入选择客户机操作系统 选择Li
  • python3 内置方法 字符串转换为字典

    内置方法 eval 将字符串转换为字典代码 str backend www oldboy org record server 122 111 2 23 weight 20 maxconn 30 str to dict eval str pr
  • 【MongoDB for Java 1】

    获得数据库服务 Mongo m new Mongo localhost 27017 得到数据库mytest DB db m getDB dbtest 得到mytest数据库下所有表名 Set
  • 【自用】无法通过ESP32创建HomeAssistant实体问题解决(MQTT对ESP32创建实体请求无应答)

    一 问题描述 1 使用 MQTTX 测试客户端能够创建实体 当通过 MQTTX 发送注册实体请求的时候 实体能够在 MQTT 服务器中注册成功 2 使用 ESP32 无法创建实体 在ESP32中通过 publish 函数发送注册请求的时候