Skip to content

JSON 与 TCP 温控器接入 ​

本文依据已有操作手册整理为线上操作参考。原文标为预期或未执行的操作,仍须按实际环境验证。

上报温度、远程调温、核对历史与恢复,并保留数据供复验。

**开始前准备:**已登录平台,具备产品、设备、物模型、发布、控制与历史查询权限;本地应用、单节点FMQ与FMQX网页版可用,管理员已提供TCP入口

开始前先了解 ​

首次接入按配置章节操作;已有相同产品和设备时复用保留配置,从上报与收发验证开始。配置图与恢复示例保留原操作时点,当前复验另行核对。

本篇用一台温控终端,演示JSON格式经TCP接入:建产品、上报温度、接收调温、执行后回报、查看实时与历史,并验证断开后的恢复。适合能够主动连接TCP服务器、按约定发送JSON对象的设备。

平台负责产品、设备和历史展示;FMQ是设备接入服务;FMQX网页版是本篇设备调试工具。FMQX演示状态机会真实接收指令、改变内部设定并自动应答,实际属性回报由人工触发。本篇不代表某款实物温控器已经完成接入。

请先登录平台并取得产品、设备、物模型编辑、产品发布、设备控制和历史查询权限。平台与FMQX网页入口、设备可访问的TCP地址和端口由部署管理员提供。截图使用同机本地应用、单节点接入服务;RabbitMQ负责消息交接,历史使用已配置的数据存储。

首次按顺序创建。本次保留的产品号873、设备号1230、设备编号FastBee_TCP_Tutorial_01;再次验收直接使用已有资源。产品和设备都叫FastBee_温控终端,检索时优先使用设备编号,以免混入其他教程。

功能关系示意

箭头示意上报路径;下行先由平台交给FMQ,再沿设备原有TCP连接返回。此图解释职责,不作为页面截图。

复制模板前先替换这些参数 ​

本篇代码使用普通模板名;截图保留实际历史资源。请先完成以下核对,再保存为UTF-8文件或发送报文。

  • temperature、setpoint分别是温度与设定温度的模板属性标识;首次生成物模型可沿用,复用已有产品时须替换为该产品真实标识,并同步修改所有报文和initialState键。
  • demo-device是设备编号模板。将clientId中的设备编号、每个收发主题中的设备编号和TCP上报的clientId一起替换为平台该设备编号;MQTT身份中的产品号、租户号也须替换为当前设备连接参数。
  • 连接文件中的host、port及监听方向须改为当前环境实际地址;127.0.0.1表示运行FMQX的本机。涉及MQTT时同步核对产品号、用户名、订阅主题和responseRoute,密码仅在连接页面安全填写。
  • 分组、会话及订阅id是导入文件内部引用;如需改名,groupId必须与对应分组id一致。先核对再导入,不要在保留会话上重复创建同名连接。
  • 代码块是按既有无密码资产或原代码改写的客户模板,尚未证明本版模板已成功导入。历史截图、发送时间和业务通过范围仍以各步骤记录为准;不要将模板名当作旧证据中的实际资源名。

一、创建产品、设备和字段 ​

向导使用的业务JSON样例json

text
{

  "temperature": 20,

  "setpoint": 30

}

样例只生成两个业务字段。实际TCP首帧还需要clientId,见连接后的第一帧。 此处使用可替换的客户模板名;导入或发送前按本节替换清单核对。

1. 新建温控终端产品 ​

**操作位置:*物联网→*设备接入 操作步骤:选择 新建产品,填写产品名称 FastBee_温控终端。

新建温控终端产品

为本篇建立独立产品。下方旧的未完成接入记录不属于本篇,保持新建产品选中。

截图重点说明 ​

字段 / 控件说明
接入来源首次为新型号创建产品;已有产品用于增加同型号设备。
必填 · 填写:新建产品
产品名称同型号设备共用产品;本篇与其他教程分别建立。
必填 · 填写:FastBee_温控终端

2. 用上报样例生成字段 ​

**操作位置:*设备接入→*完善接入信息 **操作步骤:**在 从 JSON 样例生成字段 粘贴下方样例,点击 解析并预览。

用上报样例生成字段

此处只识别业务字段;设备身份clientId在实际TCP上报中再加入,不建成温度物模型。

截图重点说明 ​

字段 / 控件说明
JSON 样例与字段格式普通 JSON 对象;两个业务字段使用整数,不把数值写成字符串。
必填 · 填写:{"FastBee_temperature":20,"FastBee_setpoint":30}
解析并预览从业务 JSON 样例生成字段草稿,随后逐项核对。
必填 · 填写:解析并预览

3. 核对两项采集点 ​

**操作位置:*设备接入→*采集点表 **操作步骤:**把两项 数据类型 设为 整数,核对名称、单位和JSON路径。

核对两项采集点

温度路径为$.FastBee_temperature,设定温度路径为$.FastBee_setpoint;单位均为℃。

截图重点说明 ​

字段 / 控件说明
标识符 / 名称标识符与报文键一致,区分大小写;名称用于页面显示。
必填 · 填写:FastBee_temperature / FastBee_温度;FastBee_setpoint / FastBee_设定温度
地址 / JSON 路径$ 表示对象根节点,字段必须与实际键一致。
必填 · 填写:$.FastBee_temperature / $.FastBee_setpoint
数据类型 / 单位两字段均使用整数;单位为摄氏度。
必填 · 填写:整数 / ℃

4. 填写独立设备编号 ​

**操作位置:*设备接入→*设备信息 操作步骤:填写 设备标识 为 FastBee_TCP_Tutorial_01,设备名称为FastBee_温控终端。

填写独立设备编号

实际首帧的clientId必须与此编号相同;不要使用其他教程的设备编号。

截图重点说明 ​

字段 / 控件说明
设备标识 / clientId每台设备独立编号;TCP 首个完整对象中的 clientId 使用同一编号。
必填 · 填写:FastBee_TCP_Tutorial_01
设备名称便于页面检索的业务名称,与设备唯一编号分开。
必填 · 填写:FastBee_温控终端

5. 完成向导创建 ​

**操作位置:*设备接入→*确认接入配置 **操作步骤:**核对产品、1台设备和2个字段,预检通过后点击 创建并接入。

完成向导创建

当前向导先显示JSON / MQTT。这是创建过程的初始状态,下一步撤回发布并改成TCP后才连接设备。

截图重点说明 ​

字段 / 控件说明
创建并接入预检通过后创建;当前向导先生成 JSON/MQTT 产品,下一步再切换 TCP。
必填 · 填写:预检通过后创建

二、改为TCP并发布 ​

向导当前先创建JSON / MQTT。创建完成后进入本篇产品详情,先撤回发布,再编辑为JSON / TCP,并设置两项物模型;最后重新发布。只在本篇新建产品上完成这次调整,复验保留设备无需重复撤回。

温度:整数、只读,范围-40~100℃、步长1,开启图表展示、实时监测和历史存储。设定温度:整数、可写,范围16~35℃、步长1,关闭图表展示和实时监测、保留历史存储。先设范围,再取消只读;两张截图分别说明这两个操作阶段。

6. 改为JSON和TCP接入 ​

**操作位置:*产品管理→FastBee_温控终端→*产品详情 **操作步骤:**先撤回发布再编辑,数据格式选 JSON、传输方式选 TCP,保存。

改为JSON和TCP接入

最终接入协议显示TCP。本篇使用含clientId的完整JSON识别身份,没有额外7E注册包。

截图重点说明 ​

字段 / 控件说明
接入协议 / 数据格式 / 传输方式最终配置使用 TCP 接入、JSON 数据格式和 TCP 传输。
必填 · 填写:TCP / JSON / TCP
设备身份定位与注册方式本篇在管理员指定的入口用首个含 clientId 的完整 JSON 定位设备,并处理该业务数据一次。
必填 · 填写:首帧 clientId=FastBee_TCP_Tutorial_01;无额外 7E 注册包

7. 设置调温范围和步长 ​

**操作位置:*产品详情→功能定义→*FastBee_设定温度 操作步骤:将 取值范围 设为 16~35,步长填1,保留历史存储并保存。

设置调温范围和步长

图中是设置范围阶段,只读仍勾选;下一步完成温度字段,再单独取消设定温度只读。

截图重点说明 ​

字段 / 控件说明
取值范围 / 步长限制控制值和调整幅度;整数步长为 1。
必填 · 填写:温度 -40~100℃;设定温度 16~35℃;步长均为1
历史存储开启后保存新上报的属性值,供历史查询。
必填 · 填写:两个字段均开启

8. 设置温度只读和历史 ​

**操作位置:*产品详情→功能定义→*FastBee_温度 **操作步骤:**保持 只读数据 与 历史存储 开启,整数范围为-40~100,步长1。

设置温度只读和历史

温度用于采集,图表展示与实时监测开启;单位为℃,模型翻译填写Temperature。

截图重点说明 ​

字段 / 控件说明
只读数据开启表示只接收上报;设定温度取消只读后才能下发调温。
必填 · 填写:温度开启;设定温度关闭
历史存储开启后保存新上报的属性值,供历史查询。
必填 · 填写:两个字段均开启
图表展示 / 实时监测本篇温度开启;设定温度关闭,保留可写控制卡。
必填 · 填写:温度开启;设定温度关闭
取值范围 / 步长限制控制值和调整幅度;整数步长为 1。
必填 · 填写:温度 -40~100℃;设定温度 16~35℃;步长均为1

9. 开放设定温度控制 ​

**操作位置:*产品详情→功能定义→*FastBee_设定温度 **操作步骤:**取消 只读数据、图表展示与实时监测,保留 历史存储,保存。

开放设定温度控制

最终设定温度可写,范围16~35℃、步长1,模型翻译为Setpoint;下发时不使用范围外的42。

截图重点说明 ​

字段 / 控件说明
只读数据开启表示只接收上报;设定温度取消只读后才能下发调温。
必填 · 填写:温度开启;设定温度关闭
历史存储开启后保存新上报的属性值,供历史查询。
必填 · 填写:两个字段均开启
图表展示 / 实时监测本篇温度开启;设定温度关闭,保留可写控制卡。
必填 · 填写:温度开启;设定温度关闭
模型翻译编辑字段时按页面要求填写英文名称。
必填 · 填写:Temperature / Setpoint

10. 发布并确认接入配置生效 ​

**操作位置:*产品详情→*发布与同步 **操作步骤:**重新发布产品,确认协议为TCP、接入配置显示 已生效。

发布并确认接入配置生效

保存和发布提示不能代替接入配置生效;本篇已取得单节点应用成功回执。

截图重点说明 ​

字段 / 控件说明
发布 / 已生效保存后重新发布,并确认接入配置已生效,不能只看保存成功。
必填 · 填写:已生效

三、连接FMQX网页版 ​

连接方向为FMQX主动连接FMQ的TCP监听入口。本篇两者同机,地址127.0.0.1、端口8888。若调试工具在另一台电脑,127.0.0.1指向那台电脑自身,必须改成部署管理员提供的可达地址;不要填写平台网页或MQTT端口。

将下方配置复制到文本文件,另存为UTF-8的“FastBee_TCP连接配置.json”,从FMQX导入。配置使用分组保存,结束后保持会话在FastBee_TCP教程分组内。后续直接选择已保存会话,不重复导入同名会话。

初始状态是FMQX演示状态机内的温度29、设定30。首次手动发送的20/30是独立的业务报文,不会把状态机温度改成20;所以执行后读取的实际温度仍是29。更换自己的设备时,同步替换clientId及两个物模型键,并按实物实现执行与回报。

TCP设备演示连接配置json

text
{

  "schemaVersion": 3,

  "groups": [

    {

      "id": "tutorial_tcp_group",

      "name": "TCP教程",

      "sortOrder": 51,

      "isSystem": false

    }

  ],

  "sessions": [

    {

      "id": "tutorial_tcp_01",

      "groupId": "tutorial_tcp_group",

      "name": "温控终端",

      "protocol": "TCP",

      "transport": "TCP",

      "host": "127.0.0.1",

      "port": 8888,

      "clientId": "demo-device",

      "tcpLineMode": false,

      "autoReconnect": false,

      "jsonDevice": {

        "format": "JSON",

        "responseRoute": "",

        "initialState": {

          "temperature": 29,

          "setpoint": 30

        }

      }

    }

  ]

}

不含账号密码;使用前向部署管理员确认该TCP入口的身份定位与认证约定。 此处使用可替换的客户模板名;导入或发送前按本节替换清单核对。

11. 导入设备演示连接 ​

**操作位置:*FMQX 网页版→*更多操作 操作步骤:将本节完整连接JSON按替换清单核对后保存为UTF-8文件TCP连接配置.json,再选择 导入配置。

导入设备演示连接

导入配置包含真实演示状态机:初始温度29、设定30;首个业务上报仍人工发送20/30。配置不含凭据。

截图重点说明 ​

字段 / 控件说明
导入配置导入下方 UTF-8 JSON,建立分组内保存的 TCP 设备演示会话。
必填 · 填写:TCP连接配置.json
保留会话与停止发送结束时关闭发送或定时任务并断开;保留分组、产品、设备和历史。
必填 · 填写:FastBee_TCP教程 → FastBee_温控终端

12. 核对连接方向与地址 ​

**操作位置:*FMQX 网页版→FastBee_温控终端→*连接配置 **操作步骤:**核对 Host / IP 和 Port,保存配置后点击 连接,等待已连接。

核对连接方向与地址

FMQX是主动连接方,FMQ是监听方;本篇同机127.0.0.1:8888,按字节流,自动重连关闭。

截图重点说明 ​

字段 / 控件说明
Host / IPFMQX 主动连接 FMQ 接入服务的地址。
必填 · 填写:127.0.0.1(仅本篇同机演示)
Port接入服务的 TCP 监听端口,连接方向为 FMQX → FMQ。
必填 · 填写:8888(本篇部署)
接收模式本篇按字节流收发,不启用按行切帧。
必填 · 填写:tcpLineMode=false
Keep Alive使用系统默认 TCP 存活检查;不等于自动发送业务心跳或属性。
必填 · 填写:按系统默认
连接超时建立连接等待时间,单位毫秒。
必填 · 填写:5000毫秒
自动重连 / 重连间隔本篇关闭自动重连,便于观察断开和人工恢复;关闭时间隔不参与。
必填 · 填写:关闭;间隔显示3000毫秒
连接 / 断开开始或停止当前 TCP 连接,不删除产品和历史。
必填 · 填写:连接

四、身份定位与十条温度上报 ​

本篇入口使用首个含clientId的完整JSON对象定位设备;这一帧也作为普通业务数据处理一次。clientId必须等于平台设备编号。本篇没有独立注册包,不发送7E注册或心跳;7E另有补充教程。自己的设备若启用了独立TCP注册认证,需要按该产品的正式规则配置。

第一帧:设备身份加业务属性json

text
{

  "clientId": "demo-device",

  "temperature": 20,

  "setpoint": 30

}

clientId是设备编号,温度和设定温度是整数;JSON必须完整闭合。 此处使用可替换的客户模板名;导入或发送前按本节替换清单核对。

13. 发送含设备身份的第一帧 ​

**操作位置:*FMQX 网页版→通信→*发送数据 **操作步骤:**选 Text,填写第一帧完整JSON,点击 发送。

发送含设备身份的第一帧

2026-10-12 23:31:32上报温度20、设定30。第一帧同时定位设备和处理业务,每个字段只存一条。

截图重点说明 ​

字段 / 控件说明
发送数据选 Text,填入含设备编号的完整 JSON;数字不加引号。
必填 · 填写:{"clientId":"FastBee_TCP_Tutorial_01","FastBee_temperature":20,"FastBee_setpoint":30}
设备标识 / clientId每台设备独立编号;TCP 首个完整对象中的 clientId 使用同一编号。
必填 · 填写:FastBee_TCP_Tutorial_01
设备身份定位与注册方式本篇在管理员指定的入口用首个含 clientId 的完整 JSON 定位设备,并处理该业务数据一次。
必填 · 填写:首帧 clientId=FastBee_TCP_Tutorial_01;无额外 7E 注册包

14. 完成十个可区分温度样本 ​

**操作位置:*FMQX 网页版→通信→*发送 **操作步骤:**首条20已发送;随后每次只改温度,依次发送 21~29,设定温度保持30。

完成十个可区分温度样本

共10个基础样本,时间23:31:32~23:32:04。发送列表只代表已发出,随后还要核对平台和历史。

截图重点说明 ​

字段 / 控件说明
发送数据选 Text,填入含设备编号的完整 JSON;数字不加引号。
必填 · 填写:{"clientId":"FastBee_TCP_Tutorial_01","FastBee_temperature":20,"FastBee_setpoint":30}

本次十个基础样本为温度20、21、22、23、24、25、26、27、28、29,设定均为30,时间为2026-10-12 23:31:32~23:32:04(北京时间)。再次复验也要逐条改成可区分值,并记录新的起止时间;不能把发送列表计数当作平台已入库数量。

五、验证分片、粘包和一次处理 ​

TCP传输的是连续字节,不保证一次发送对应一个完整接收报文:一个对象可能分成两次到达,两个对象也可能连续到达。本篇按完整JSON对象边界识别,不要求每个对象用换行结尾;演示分片和粘包时把行结束符设为None。

先发送第一段,再核对平台不提前产生温度30;补齐第二段后应只有一条30。接着一次发送连续的31、32两个对象,各产生一条。不要通过反复点击发送来“补成功”,否则难以判断遗漏与重复。

分片第一段:只发送到字段名中间text

text
{"clientId":"demo-device","temper

行结束符选None;此段不是完整JSON,不单独当成设备属性。 此处使用可替换的客户模板名;导入或发送前按本节替换清单核对。

15. 只发送半个JSON对象 ​

**操作位置:*FMQX 网页版→通信→*发送数据 操作步骤:****行结束符选 None,只发送下方第一段,先不要补尾部。

只发送半个JSON对象

第一段停在FastBee_temper,JSON尚未闭合;此时不应生成温度30的完整业务记录。

截图重点说明 ​

字段 / 控件说明
报文边界与分片粘包TCP 不保证一次发送对应一次接收;本篇用完整 JSON 对象边界拆分,半对象等待补齐。
必填 · 填写:分片30;连续两个对象31与32
行结束符决定每次手动发送时是否附加换行。
必填 · 填写:分片与粘包选None

分片第二段:接在第一段之后text

text
ature":30,"setpoint":30}

保持同一连接、行结束符None;前后拼起来得到温度30、设定30。 此处使用可替换的客户模板名;导入或发送前按本节替换清单核对。

16. 补齐分片并确认只处理一次 ​

**操作位置:*FMQX 网页版→通信→*发送数据 **操作步骤:**保持 None,发送第二段,让前后两段拼成一个完整对象。

补齐分片并确认只处理一次

第二段为ature开头;补齐后温度30只处理一次。不要重发第一段,否则会改变本次边界验证。

截图重点说明 ​

字段 / 控件说明
报文边界与分片粘包TCP 不保证一次发送对应一次接收;本篇用完整 JSON 对象边界拆分,半对象等待补齐。
必填 · 填写:分片30;连续两个对象31与32
行结束符决定每次手动发送时是否附加换行。
必填 · 填写:分片与粘包选None

粘包:一次发送两个相邻JSON对象text

text
{"clientId":"demo-device","temperature":31,"setpoint":30}{"clientId":"demo-device","temperature":32,"setpoint":30}

两对象之间不加逗号、不包数组、不加换行;各自携带同一设备clientId。 此处使用可替换的客户模板名;导入或发送前按本节替换清单核对。

17. 一次发送连续两个对象 ​

**操作位置:*FMQX 网页版→通信→*发送数据 **操作步骤:**保持 None,把下方两个JSON对象紧接在一起,点击 发送。

一次发送连续两个对象

一次发送温度31和32两个对象,接入服务分别识别,每个值仅存一条;完整内容见相邻可复制报文。

截图重点说明 ​

字段 / 控件说明
报文边界与分片粘包TCP 不保证一次发送对应一次接收;本篇用完整 JSON 对象边界拆分,半对象等待补齐。
必填 · 填写:分片30;连续两个对象31与32
行结束符决定每次手动发送时是否附加换行。
必填 · 填写:分片与粘包选None

本次23:35:00分片30、粘包31和32分别被处理一次,首帧20也只处理一次。23:36:27另发了一条温度33用于接续验证,设定仍为30。历史页面按秒展示时可能把同秒数据合并为一行,不能仅凭页面行数推断丢包或重复。

下发32℃并确认实际状态 ​

按待发值、实际接收、设备执行、独立状态回报和平台当前值逐项确认。本段示例为本轮新指令;计数为保留会话的累计值。FMQX状态机演示不代替实物设备执行。

18. 将待下发设定调到32℃ ​

操作位置:设备管理→FastBee_温控终端→运行状态 操作步骤:在设定温度滑块选择32,核对提示值后点击指令发送。

将待下发设定调到32℃

将待下发设定调到32℃

截图重点说明 ​

字段 / 控件说明
待下发设定温度滑块提示是准备发送的值,旁边当前值来自设备上报。
必填 · 填写:32

19. 确认设备收到32℃指令 ​

操作位置:FMQX 网页版→通信→接收 操作步骤:展开本设备最新接收消息,核对设定温度为32。

确认设备收到32℃指令

确认设备收到32℃指令

截图重点说明 ​

字段 / 控件说明
接收 / 发送日志同编号指令与应答一起核对;System和DeviceFrame是两种展示记录。
必填 · 填写:按指令id核对,不把接收列表行数当执行次数
设备执行与实际状态回报状态机收到指令后执行并自动应答;实际属性由本篇人工触发回报。
必填 · 填写:本次32℃,累计执行次数5;对应同一指令编号

20. 核对同编号执行应答 ​

操作位置:FMQX 网页版→通信→发送 操作步骤:读取与接收请求同编号的执行应答,确认成功且设定温度为32。

核对同编号执行应答

核对同编号执行应答

截图重点说明 ​

字段 / 控件说明
设备执行与实际状态回报状态机收到指令后执行并自动应答;实际属性由本篇人工触发回报。
必填 · 填写:本次32℃,累计执行次数5;对应同一指令编号
接收 / 发送日志同编号指令与应答一起核对;System和DeviceFrame是两种展示记录。
必填 · 填写:按指令id核对,不把接收列表行数当执行次数

21. 独立上报执行后的实际状态 ​

操作位置:FMQX 网页版→FastBee_温控终端→通信 操作步骤:在本设备上报入口发送实际温度29、设定温度32的JSON。

独立上报执行后的实际状态

独立上报执行后的实际状态

截图重点说明 ​

字段 / 控件说明
发送数据选 Text,填入含设备编号的完整 JSON;数字不加引号。
必填 · 填写:按实施方案填写 · 示例:{"clientId":"FastBee_TCP_Tutorial_01","FastBee_temperature":20,"FastBee_setpoint":30}
实际属性JSONTCP需同时携带设备编号clientId;MQTT WebSocket使用当前设备上报主题。
必填 · 填写:{"FastBee_temperature":29,"FastBee_setpoint":32}

22. 查看独立上报后的当前32℃ ​

操作位置:设备管理→FastBee_温控终端→运行状态 操作步骤:回到运行状态,核对当前值显示32。

查看独立上报后的当前32℃

查看独立上报后的当前32℃

截图重点说明 ​

字段 / 控件说明
当前值 / 更新时间查看设备独立上报后的实际当前值。
必填 · 填写:本次温度29℃、设定32℃

23. 打开统计查看历史曲线 ​

**操作位置:*设备管理→当前设备→*设备统计 操作步骤:进入设备统计,等待曲线首次加载后核对温度。

打开统计查看历史曲线

打开统计查看历史曲线

24. 选择本次32℃回报的时间窗 ​

操作位置:数据中心→历史数据 操作步骤:选择本设备的设定温度,填写2026-10-15 20:57:00 ~ 2026-10-15 20:58:00,点击查询。

查询本次设定32的时间范围

查询本次设定32的时间范围

25. 刷新本次设定温度历史 ​

**操作位置:*数据中心→*历史数据 操作步骤:确认设备和字段无误,点击刷新结果。

刷新本设备设定温度历史

刷新本设备设定温度历史

26. 核对刷新后仍存在的32℃记录 ​

操作位置:数据中心→历史数据 操作步骤:核对设定温度为32及对应上报时间;此前的31属于不同消息。

刷新后核对独立状态上报的32

刷新后核对独立状态上报的32

需要时恢复连接(原操作示例) ​

以下为原批次恢复连接的独立操作示例,保留原时间和34或35的取值。需要恢复时再执行;它与上文32℃的新指令是两次独立验证。

本次连接空闲约90秒后观察到断开。若复验中连接已断开,先点击连接,再用含clientId的完整对象恢复设备身份;部署的空闲策略可能不同,不能假定连接永久保持。状态机的设定32在本次重连后保留。

第一条恢复后的属性在23:44:32人工发送,温度29、设定32。随后下发新目标34,核对新指令、实际执行应答,再于23:45:27人工上报温度29、设定34。这里没有自动周期上报。

恢复后人工回报的实际32℃状态json

text
{

  "clientId": "demo-device",

  "temperature": 29,

  "setpoint": 32

}

先核对状态机真实当前值,再人工点击发送。 此处使用可替换的客户模板名;导入或发送前按本节替换清单核对。

27. 恢复后再下发34℃目标 ​

**操作位置:*设备管理→FastBee_温控终端→*运行状态 **操作步骤:**确认当前值32,再把目标调到 34,点击 指令发送。

恢复后再下发34℃目标

23:45:08发送新的指令,目标34;此时图中当前值仍是之前实际上报的32。

截图重点说明 ​

字段 / 控件说明
FastBee_设定温度 / 指令发送滑块为准备下发目标;点击发送后仍要核对设备执行和真实回报。
必填 · 填写:原10月12日恢复示例:34℃

28. 确认恢复后接收新指令 ​

**操作位置:*FMQX 网页版→通信→*接收 **操作步骤:**查看新收到的消息,核对新的id和 FastBee_setpoint 为 34。

确认恢复后接收新指令

新的id为e9e3963ffbeb45edbf90978e0752de1a,与之前32℃指令不同。

截图重点说明 ​

字段 / 控件说明
接收 / 发送日志同编号指令与应答一起核对;System和DeviceFrame是两种展示记录。
必填 · 填写:按指令id核对,不把接收列表行数当执行次数
设备执行与实际状态回报状态机收到指令后执行并自动应答;实际属性由本篇人工触发回报。
必填 · 填写:32℃应答计数2;34℃应答计数3;分别人工回报实际值

29. 核对34℃执行应答 ​

**操作位置:*FMQX 网页版→通信→*发送 **操作步骤:**核对同编号应答的 code 为 200、data为34,执行计数增至3。

核对34℃执行应答

23:45:08.224真实自动应答,状态机设定由32变34;三次执行为预备30、正式32、恢复后34。

截图重点说明 ​

字段 / 控件说明
设备执行与实际状态回报状态机收到指令后执行并自动应答;实际属性由本篇人工触发回报。
必填 · 填写:32℃应答计数2;34℃应答计数3;分别人工回报实际值
接收 / 发送日志同编号指令与应答一起核对;System和DeviceFrame是两种展示记录。
必填 · 填写:按指令id核对,不把接收列表行数当执行次数

第二次执行后的人工实际状态回报json

text
{

  "clientId": "demo-device",

  "temperature": 29,

  "setpoint": 34

}

硬件设备需执行并读回后生成该报文;不要用准备下发的目标值代替真实状态。 此处使用可替换的客户模板名;导入或发送前按本节替换清单核对。

30. 人工回报执行后的实际34℃状态 ​

**操作位置:*FMQX 网页版→通信→*发送数据 **操作步骤:**按真实状态填写温度29、设定34,保持完整JSON并点击 发送。

人工回报执行后的实际34℃状态

23:45:27人工触发属性回报。硬件设备需先执行并读回,再上报实际值,不能始终固定回复成功。

截图重点说明 ​

字段 / 控件说明
发送数据选 Text,填入含设备编号的完整 JSON;数字不加引号。
必填 · 填写:{"clientId":"FastBee_TCP_Tutorial_01","FastBee_temperature":29,"FastBee_setpoint":34}
设备执行与实际状态回报状态机收到指令后执行并自动应答;实际属性由本篇人工触发回报。
必填 · 填写:32℃应答计数2;34℃应答计数3;分别人工回报实际值

31. 核对平台实际当前值 ​

**操作位置:*设备管理→FastBee_温控终端→*运行状态 **操作步骤:**刷新设备详情,核对 FastBee_设定温度 当前值为 34,并检查温度及更新时间。

核对平台实际当前值

最新实际温度29、设定34,更新时间23:45:27。图中灰色滑块是连接已停止后的状态,当前值仍保留。

截图重点说明 ​

字段 / 控件说明
当前值 / 更新时间核对最新实际属性值与更新时间,不能用滑块目标替代执行结果。
必填 · 填写:温度29℃、设定34℃;2026-10-12 23:45:27

原样本与恢复示例的历史(独立旧时间窗) ​

本章继续展示首次十样本与原恢复操作的历史记录,保留原日期及取值;上文新增32℃指令的历史另有独立时间窗。再次复验使用本次实际时间,不照抄旧日期。

32. 选择设备字段和历史时段 ​

**操作位置:*数据中心→*历史数据 **操作步骤:**选择本篇设备及 FastBee_设定温度,把时间范围覆盖2026-10-12 23:30~23:46,再查询。

选择设备字段和历史时段

截图查询窗口覆盖实际发送时间。之后查看温度时切换FastBee_温度;旧记录需要手动选择2026-10-12。

截图重点说明 ​

字段 / 控件说明
设备 / 属性在历史页选择本篇设备及要查看的温度属性。
必填 · 填写:FastBee_温控终端 / FastBee_设定温度
时间范围 / 查询 / 翻页查询包含发送时刻的窗口;本篇截图后续页可见32和34。
必填 · 填写:2026-10-12 23:30~23:46(北京时间)

33. 核对执行回报的历史值 ​

**操作位置:*数据中心→历史数据→*后续页 **操作步骤:**翻到后续页,找到23:44:32的 32 和23:45:27的 34。

核对执行回报的历史值

这两个值来自人工属性回报,不是指令目标或成功应答自动写入。页面按秒展示,同秒多条可能合并显示。

截图重点说明 ​

字段 / 控件说明
时间范围 / 查询 / 翻页查询包含发送时刻的窗口;本篇截图后续页可见32和34。
必填 · 填写:2026-10-12 23:30~23:46(北京时间)

34. 刷新后再次查询历史 ​

**操作位置:*数据中心→*历史数据 **操作步骤:**刷新页面,重新选择设备、字段和相同时间窗口,再次 查询。

刷新后再次查询历史

刷新后仍可查到32和34。本篇实际每字段16条;页面呈14个时间行,23:35:00三条消息同秒显示。

截图重点说明 ​

字段 / 控件说明
刷新历史刷新页面后重新选择设备、字段和时间窗口,确认记录仍可查。
必填 · 填写:23:44:32为32;23:45:27为34

本篇最终每字段16条属性历史:10条基础样本、分片30、粘包31与32、补帧33、实际32回报、实际34回报,共32条属性值。23:35:00三条消息发生在同一秒,页面按时间呈14行;技术核对使用各消息的独立相关号逐条比对,已经确认没有重复入库。

先查询设定温度,再切换温度,核对对应时刻的实际值;最新实际温度29和设定34必须对上。刷新后重新选择相同设备、字段和时间范围,记录仍应存在。只看到当前值或一条成功应答,不能代替历史查询。

九、停止、保留与再次验收 ​

35. 停止业务发送并保留数据 ​

**操作位置:*FMQX 网页版→*FastBee_温控终端 **操作步骤:**完成最后属性回报后点击 断开,保留当前会话和设备。

停止业务发送并保留数据

23:45:27最后一条属性已存储,随后连接已断开;本篇没有开启定时发送或轮询。

截图重点说明 ​

字段 / 控件说明
连接 / 断开开始或停止当前 TCP 连接,不删除产品和历史。
必填 · 填写:连接
保留会话与停止发送结束时关闭发送或定时任务并断开;保留分组、产品、设备和历史。
必填 · 填写:FastBee_TCP教程 → FastBee_温控终端

36. 复看保存会话能够再次连接 ​

**操作位置:*FMQX 网页版→FastBee_TCP教程→*FastBee_温控终端 **操作步骤:**使用保留会话点击 连接,确认 已连接。

复看保存会话能够再次连接

此图为完成业务验证后再次连接的状态复看;23:44那次恢复收发已在前文独立验证,不混作同一次取证。

截图重点说明 ​

字段 / 控件说明
连接 / 断开开始或停止当前 TCP 连接,不删除产品和历史。
必填 · 填写:连接
保留会话与停止发送结束时关闭发送或定时任务并断开;保留分组、产品、设备和历史。
必填 · 填写:FastBee_TCP教程 → FastBee_温控终端

37. 结束收发并保留会话 ​

操作位置:FMQX 网页版→FastBee_温控终端 操作步骤:停止发送并点击断开,确认已断开。

结束收发并保留会话

结束收发并保留会话

截图重点说明 ​

字段 / 控件说明
连接 / 断开开始或停止当前 TCP 连接,不删除产品和历史。
必填 · 填写:连接
保留会话与停止发送结束时关闭发送或定时任务并断开;保留分组、产品、设备和历史。
必填 · 填写:本次:FastBee_常用复验 → FastBee_终端复验;原教程分组继续保留

已保留产品873、设备1230、两个物模型与全部历史。FMQX选择FastBee_TCP教程分组下的FastBee_温控终端,设备编号必须是FastBee_TCP_Tutorial_01。结束只停止发送、关闭连接,不删除业务资源。

查旧数据时选择2026-10-12 23:30~23:46。再次验收先记录新的开始时间:连接,发送至少10个可区分样本,按None重做分片和粘包,下发16~35℃范围内的新目标,核对新id的执行应答,再人工回报实际状态;检查当前值、历史、刷新后记录和恢复收发。

复验会继续增加历史,新的数量与本篇32条属性基线分开核对。每个JSON对象各字段只应存一次;若发现重复,先停止发送,保留指令id、报文、页面和时间,不删除已有记录。最后关闭发送、轮询和连接,继续保留分组与历史。

字段与参数参考 ​

设备接入向导 ​

字段 / 控件填写说明
接入来源首次为新型号创建产品;已有产品用于增加同型号设备。
必填 · 填写:新建产品已有产品:复用已存在产品的协议和物模型;复用已存在产品的协议和物模型。新建产品:为新型号建立独立配置;为新型号建立独立配置。复制产品:基于已有产品复制后调整;基于已有产品复制后调整。使用模板:从预置型号或能力开始;从预置型号或能力开始。
产品名称同型号设备共用产品;本篇与其他教程分别建立。
必填 · 填写:FastBee_温控终端
JSON 样例与字段格式普通 JSON 对象;两个业务字段使用整数,不把数值写成字符串。
必填 · 填写:{"FastBee_temperature":20,"FastBee_setpoint":30}
解析并预览从业务 JSON 样例生成字段草稿,随后逐项核对。
标识符 / 名称标识符与报文键一致,区分大小写;名称用于页面显示。
必填 · 填写:FastBee_temperature / FastBee_温度;FastBee_setpoint / FastBee_设定温度
地址 / JSON 路径$ 表示对象根节点,字段必须与实际键一致。
必填 · 填写:$.FastBee_temperature / $.FastBee_setpoint
数据类型 / 单位两字段均使用整数;单位为摄氏度。
必填 · 填写:整数 / ℃
设备标识 / clientId每台设备独立编号;TCP 首个完整对象中的 clientId 使用同一编号。
必填 · 填写:FastBee_TCP_Tutorial_01
设备名称便于页面检索的业务名称,与设备唯一编号分开。
必填 · 填写:FastBee_温控终端
创建并接入预检通过后创建;当前向导先生成 JSON/MQTT 产品,下一步再切换 TCP。

产品协议设置 ​

字段 / 控件填写说明
接入协议 / 数据格式 / 传输方式最终配置使用 TCP 接入、JSON 数据格式和 TCP 传输。
必填 · 填写:TCP / JSON / TCP
修改后须发布。
设备身份定位与注册方式本篇在管理员指定的入口用首个含 clientId 的完整 JSON 定位设备,并处理该业务数据一次。
必填 · 填写:首帧 clientId=FastBee_TCP_Tutorial_01;无额外 7E 注册包
修改后须发布。

产品功能定义 ​

字段 / 控件填写说明
只读数据开启表示只接收上报;设定温度取消只读后才能下发调温。
必填 · 填写:温度开启;设定温度关闭
修改后须发布。
历史存储开启后保存新上报的属性值,供历史查询。
必填 · 填写:两个字段均开启
修改后须发布。
图表展示 / 实时监测本篇温度开启;设定温度关闭,保留可写控制卡。
必填 · 填写:温度开启;设定温度关闭
修改后须发布。
取值范围 / 步长限制控制值和调整幅度;整数步长为 1。
必填 · 填写:温度 -40~100℃;设定温度 16~35℃;步长均为1
修改后须发布。
模型翻译编辑字段时按页面要求填写英文名称。
必填 · 填写:Temperature / Setpoint
修改后须发布。

发布与生效 ​

字段 / 控件填写说明
发布 / 已生效保存后重新发布,并确认接入配置已生效,不能只看保存成功。

FMQX 连接配置 ​

字段 / 控件填写说明
导入配置导入下方 UTF-8 JSON,建立分组内保存的 TCP 设备演示会话。
修改后须重连。
Host / IPFMQX 主动连接 FMQ 接入服务的地址。
必填 · 填写:127.0.0.1(仅本篇同机演示)
修改后须重连。
Port接入服务的 TCP 监听端口,连接方向为 FMQX → FMQ。
必填 · 填写:8888(本篇部署)
修改后须重连。
接收模式本篇按字节流收发,不启用按行切帧。
必填 · 填写:tcpLineMode=false
修改后须重连。按字节流:保留 TCP 流,完整 JSON 边界由接入服务识别;本篇使用;保留 TCP 流,完整 JSON 边界由接入服务识别;本篇使用。按行:只有设备与接入协议约定行结束符时才使用;本篇不启用;只有设备与接入协议约定行结束符时才使用;本篇不启用。
Keep Alive使用系统默认 TCP 存活检查;不等于自动发送业务心跳或属性。
必填 · 填写:按系统默认
修改后须重连。
连接超时建立连接等待时间,单位毫秒。
必填 · 填写:5000毫秒
修改后须重连。
自动重连 / 重连间隔本篇关闭自动重连,便于观察断开和人工恢复;关闭时间隔不参与。
必填 · 填写:关闭;间隔显示3000毫秒
修改后须重连。
连接 / 断开开始或停止当前 TCP 连接,不删除产品和历史。
修改后须重连。

FMQX 通信 ​

字段 / 控件填写说明
发送数据选 Text,填入含设备编号的完整 JSON;数字不加引号。
必填 · 填写:{"clientId":"FastBee_TCP_Tutorial_01","FastBee_temperature":20,"FastBee_setpoint":30}
报文边界与分片粘包TCP 不保证一次发送对应一次接收;本篇用完整 JSON 对象边界拆分,半对象等待补齐。
必填 · 填写:分片30;连续两个对象31与32
行结束符决定每次手动发送时是否附加换行。
必填 · 填写:分片与粘包选NoneNone:不附加字符;本篇分片与粘包必须选择;不附加字符;本篇分片与粘包必须选择。CRLF:附加回车换行两个字符,只有设备约定时使用;附加回车换行两个字符,只有设备约定时使用。LF:附加换行一个字符,按设备约定使用;附加换行一个字符,按设备约定使用。CR:附加回车一个字符,按设备约定使用;附加回车一个字符,按设备约定使用。
设备执行与实际状态回报状态机收到指令后执行并自动应答;实际属性由本篇人工触发回报。
接收 / 发送日志同编号指令与应答一起核对;System和DeviceFrame是两种展示记录。

平台运行状态 ​

字段 / 控件填写说明
FastBee_设定温度 / 指令发送滑块为准备下发目标;点击发送后仍要核对设备执行和真实回报。
当前值 / 更新时间核对最新实际属性值与更新时间,不能用滑块目标替代执行结果。

平台历史数据 ​

字段 / 控件填写说明
设备 / 属性在历史页选择本篇设备及要查看的温度属性。
必填 · 填写:FastBee_温控终端 / FastBee_设定温度
时间范围 / 查询 / 翻页查询包含发送时刻的窗口;本篇截图后续页可见32和34。
必填 · 填写:2026-10-12 23:30~23:46(北京时间)
刷新历史刷新页面后重新选择设备、字段和时间窗口,确认记录仍可查。

停止与恢复 ​

字段 / 控件填写说明
保留会话与停止发送结束时关闭发送或定时任务并断开;保留分组、产品、设备和历史。
设备统计与历史曲线首次进入后等待历史曲线加载,按字段和时间核对数据。
本次历史记录核对独立状态上报的时间与值;相同值的不同消息不自动视为重复。
本次查询时间使用完整日期和起止时间;截图输入框可能缩略显示。

遇到问题时先查哪里 ​

看到什么现象可能原因先检查哪里如何恢复
连接不上,或连上后不能识别设备地址端口、连接方向或设备编号不符。FMQX主动连接管理员提供的TCP入口;其他电脑不要填127.0.0.1;首帧必须完整且含正确clientId。修正并保存,重新连接后只发送一个完整样本。
图中向导还是MQTT,不知道该连哪个入口本篇当前向导先创建MQTT产品,后续才改TCP。确认已撤回发布、改为JSON / TCP、重新发布,产品头部显示TCP且接入配置已生效。按第二节完成设置,使用TCP入口8888或本环境管理员给出的端口。
发送正常,平台温度不更新字段路径、clientId、产品生效状态或JSON格式不一致。键名与物模型标识符相同,数值是整数;确认JSON闭合、产品已生效。先单条发送第一帧样例,核对设备更新时间后再继续。
半帧提前处理,或粘包只出现一条发送附加了行结束符、连接中断或入口报文边界配置不符。同一TCP连接中使用None,核对第一段与第二段拼接,粘包为两个相邻完整对象。停止重复发送,记录实际原文和时段,修正后用新可区分值再次测试。
没有调温入口,或设置值超出可选范围设定温度仍只读、展示方式不符或配置未重新发布。设定字段取消只读、图表和实时监测;范围16~35、步长1,产品已生效。保存并重新发布后刷新设备详情,再下发范围内的新目标。
收到两条相同id,以为执行两次同一消息在System与DeviceFrame中分别展示。核对相同id、executionCount是否只增加一次,以及执行前后实际状态。保留日志核对;不要为消除疑问连续重发同一调温。
收到成功应答,但当前值仍旧只回了执行应答,还没有上报实际属性。先核对同id、code=200与执行后的值,再查看实际属性是否人工发送或由硬件读回上报。按真实当前状态发送属性报文,刷新当前值和历史。
历史只有14行,担心16条样本丢失页面按秒展示,分片和粘包三条发生在23:35:00同一秒。核对样本值、时间窗口、翻页及消息相关号;不要用页面行数替代逐消息检查。保留原始发送记录并核查实际历史;本篇已逐字段唯一匹配32条属性。
实时有值但历史查不到,或刷新后消失历史未开启、查询时间或字段不对。检查历史存储开关、设备编号、2026-10-12日期和后续页。开启历史并发布后发新样本;开启前的上报不会自动补录。
一段时间不操作后掉线入口空闲策略或网络导致TCP连接结束。看FMQX已连接状态;Keep Alive不等于自动发送业务心跳。重新连接并发送含clientId完整对象,再做上报和新指令验证。

蜂信物联 | fastbee.cn