Wi-Fi FFC 遥控器

更新时间:2023-12-19 08:47:29下载pdf

Tuya Wi-Fi Flexible Fast Control(FFC) 是一种 Wi-Fi 类设备无需接入路由器,就可以实现设备间通信的涂鸦自研技术,非常适用于遥控器类产品与被控设备之间的通讯。本文主要描述 TuyaOS 开发框架提供的、作为 被控设备 支持的功能。

遥控器分为 本地在线 两类。

  • 本地:无需配网激活,按键所对应的功能是固定的。
  • 在线:通过被控设备在云端激活,用户可通过 App 灵活配置按键所对应的功能。

功能描述

  • 支持与遥控器绑定,最多可以绑定 5 个遥控器。

  • 支持接收遥控器的控制指令。

  • 支持与云端同步绑定的遥控器信息。

  • 支持通过 App 解绑在线遥控器。

工作原理

配对流程

遥控器被控设备云端进入配对状态确定通信信道发送进入绑定流程的消息监听被控设备的绑定请求收到指令后,进入绑定流程发送绑定请求返回绑定请求 ACK协商新的密钥上报遥控器的激活请求将遥控器信息作为配件信息进行上报alt[在线遥控器][本地遥控器]控制将控制指令进行加密处理发送加密后的控制指令将指令进行解密处理返回 ACK遥控器被控设备云端

控制流程

遥控器被控设备发送控制指令返回 ACK随机延时一段时间后转发控制指令监测通信信道再次发送控制包opt[遥控器在超时时间内没有收到控制包的 ACK]遥控器被控设备

解绑流程

目前的解绑方案都是单向解绑,遥控器和被控设备之间没有同步步骤。

遥控器云端被控设备仅限本地遥控器,在线遥控器无法本地解绑清除存储的绑定信息与所有被控设备解绑opt[本地解绑]解绑指定遥控器的信息清空该遥控器的存储信息opt[App 解绑]遥控器云端被控设备

开发指导

运行环境

由于每个模组上的资源不一样,并不会打开所有功能,您需要检查 tuya_iot_config.h,确认如下宏定义是否已经定义:

#define ENABLE_WIFI_FFC       1

#define TUYA_WIFI_FFC_SLAVER  1   /*作为被控设备*/

关联头文件

  • ffc_app.h

使用方法

  • 初始化 FFC 功能,注册指令数据接收回调等参数。
  • 如果需要绑定遥控器,调用绑定接口。
  • 如果框架接收到正确指令数据,会通过回调函数通知应用处理。

API 说明

FFC 初始化

typedef enum {
    FFC_INIT_STATE = 0,
    FFC_CONTROL_STATE,
    FFC_BINDING_BEGIN_STATE,
    FFC_BINDING_SUCCESS_STATE,
    FFC_BINDING_FINSH_STATE,
} ffc_cb_state_t;

typedef int (*ffc_status_cb)(ffc_cb_state_t state);
typedef int (*ffc_recv_cb)(uint8_t *data_cmd, uint16_t data_len);

/**
 * @brief ffc init function,must called first
 *
 * @param[in] role:      遥控器或者被控设备
 * @param[in] status_cb: user status callback
 * @param[in] recv_cb:   user received callback
 *
 * @return OPRT_OK on success. Others error, please refer to tuya_error_code.h
 *
 */
int tuya_iot_wifi_ffc_init(uint8_t role, ffc_status_cb *status_cb, ffc_recv_cb *recv_cb);

配对绑定

绑定配对有窗口期,您可通过接口参数传入设置窗口期时长。在窗口期以外,设备不会发送任何和配对绑定相关的指令和应答。

/**
 * @brief ffc bind function
 *
 * @param[in] timeout_s time out
 *
 * @return OPRT_OK on success. Others error, please refer to tuya_error_code.h
 *
 */
int tuya_iot_wifi_ffc_bind(uint16_t timeout_s);

参考示例

关于示例代码,参考框架内自带的 TuyaOS 示例集合 中的 service_ffc_slaver

常见问题

该功能对设置了低功耗模式的被控设备来说,功耗方面有何影响?

  • 功能初始化后,有配对的遥控器,则会关闭低功耗。
  • 进入配对绑定流程后,也会关闭低功耗。
  • 配对超时后,当前如果没有成功绑定的遥控器,则会使能低功耗。
  • 解绑后,如果当前没有任何配对的遥控器,则会使能低功耗。

当被控设备绑定 5 个以上遥控器时会如何处理?

当被控设备绑定 5 个以上遥控器时,遵守以下覆盖逻辑:

  • 当绑定的 5 个遥控器都是在线遥控器,遵守不覆盖的原则。即绑定第 6 个遥控器时会失败。

  • 当绑定的 5 个遥控器都是本地遥控器,遵守循环覆盖的原则。即绑定第 6 个遥控器时会覆盖第 1 个遥控器,绑定第 7 个时,会覆盖第 2 个,以此类推。

    如果第 2 个遥控器被解绑了,此时绑定第 6 个遥控器时会覆盖第 1 个遥控器,而不是覆盖被解绑的第 2 个遥控器。

  • 当绑定的 5 个遥控器是在线和本地混合的,遵守循环覆盖本地遥控器的原则。即绑定第 6 个遥控器时,会覆盖顺序最靠前的本地遥控器。