芯步的射频网关开放了HTTP/MQTT接口,核心思路是“监听→解析→转发”的事件驱动架构。以下方案展示如何通过30行Python代码实现315MHz/433MHz双频的收发闭环,让您能为任意老旧射频设备自定义联动规则。
1. 引言与背景
在物联网项目中,经常会遇到“设备孤岛”问题:大量的老旧315MHz/433MHz射频设备(如卷帘门、遥控插座、车库门、无线继电器)无法与现代IP网络设备联动。芯步智能射频网关支持315MHz接收和433MHz发射,结合其开放的HTTP/MQTT接口,可以作为打破孤岛的“通用翻译器”。
本方案的目标是指导开发者如何基于该网关进行二次开发,搭建一个事件驱动型的射频联动系统,实现“听见315MHz的信号,执行433MHz的动作”或反之,从而自定义任何射频场景逻辑。
2. 技术架构与核心原理
要实现“收发一体”与“自定义联动”,我们不能依赖芯步官方App的固化逻辑,而是需要搭建一个独立的业务后端作为大脑。
2.1 核心架构图(逻辑描述)
感知层:315MHz遥控器/传感器(发射信号)。
硬件层:芯步射频网关(接收信号,通过HTTP推送至服务器;接收服务器指令,发射433MHz信号)。
中枢层:您的私有服务器(运行Webhook接收端 + 业务逻辑引擎)。
执行层:433MHz继电器/插座/卷帘门电机。
2.2 工作流(以“按下A遥控器,打开B灯”为例)
Step 1:用户按下315MHz遥控器。
Step 2:网关收到315MHz信号,根据预设规则(在网关后台配置),将信号转换为HTTP请求,推送到您的服务器公网地址。
Step 3:您的服务器接收请求,解析出“设备ID”和“按键码”,通过逻辑判断(If Key=0x01 Then Action=Turn_On)。
Step 4:服务器调用芯步开放平台的HTTP接口,向网关下发433MHz发射指令。
Step 5:网关执行指令,发射433MHz射频信号,灯亮。
3. 环境准备与接口对接
我们需要利用两种接口模式:设备事件推送(接收数据)和设备控制接口(发送数据)。
3.1 接收数据:配置网关回调(Webhook)
为了让服务器知道射频信号被触发了,需要将网关的接收事件上报至您的后端。
设置路径:登录芯步控制台 -> 找到该网关设备 -> 配置“事件订阅/HTTP推送”。
推送地址
http://[您的服务器公网IP]:8080/api/rf/receive推送内容:当网关识别到特定315MHz编码时,会POST如下JSON(示例格式,依据官方文档):
3.2 发送数据:HTTP控制接口
当服务器逻辑决定执行动作时,调用此接口让网关发433MHz信号。
API地址
https://api.thingboot.com/{AppID}/device/control/请求方式:POST (JSON)
核心参数
gateway: 网关ID(指定由哪个网关发射)。device: 子设备ID(在控制台预先添加的虚拟子设备或射频插座)。order: 命令内容,如{"key":"on"}或直接发送原始射频码{"rf_data":"0xFF00FF"}。
4. 核心开发实战:自定义联动逻辑
这一部分是整个解决方案的“大脑”。这里提供一个基于 Python (Flask) 的后端核心代码示例,展示如何接收315MHz信号,解析后决定是否下发433MHz指令。
4.1 业务逻辑示例:场景联动解析器
假设场景:当315MHz遥控器的“CH1”键按下时,触发433MHz频段的电动窗帘电机(代码为 0x5501)打开。
4.2 高级控制:分组与广播
如果需要同时控制多个设备(例如离家模式关闭所有灯),可以利用芯步的分组控制接口。
场景:收到“离家”射频码信号。
接口
/group/control参数
{"group": 10086, "action": "close_all"}优势:一条API调用,网关发出一连串433MHz指令,延迟更低。
5. 自定义射频场景典型案例
以下是利用上述架构可以快速实现的典型自定义场景,展示了315MHz与433MHz之间的双向转换能力:
5.1 第一种场景:老旧门磁联动声光报警
设备:315MHz门磁传感器、433MHz声光报警器。
痛点:不同频段无法直连。
自定义逻辑
网关接收
315MHz门磁开启-> 服务器判断时间>22:00-> 下发433MHz报警鸣笛。价值:无需更换现有门磁,直接升级安防系统。
5.2 第二种场景:万能射频遥控器(学习与模拟)
设备:空调、电视(通常为红外/射频混合)。
实现逻辑
学习模式:App触发服务器进入“学习状态” -> 服务器指令网关准备接收 -> 用户按下原装遥控器 -> 网关截获码并存入数据库。
模拟模式:App点击按钮 -> 服务器提取数据库中的码 -> 通过HTTP接口指令网关发射。
接口关键点:使用
{"order":{"rf_raw":"CODE_VALUE"}}支持自定义原始码下发。
5.3 第三种场景:跨网关联动(大型场所)
需求:A区网关收到信号,B区网关执行动作。
实现:这是纯软件层面的逻辑。后端收到A网关的事件后,遍历数据库中的关联规则,分别调用B、C网关的控制接口即可,这也是云联动的典型应用。
6. 关键注意事项与优化
6.1 防抖与去重
射频信号容易被同频干扰或重复触发。在二次开发时,必须在服务器端实现防抖逻辑。
策略:在
rf_callback函数中,针对同一个rf_code,如果在500ms内收到两次,忽略第二次。避免门磁抖动导致报警器连响。
6.2 异步处理与消息队列
如果射频控制指令涉及复杂的第三方API调用(如同时发射433、发邮件、推App通知),引入消息队列(如Redis Stream 或 RabbitMQ)。
流程
网关推送->Flask接收->写入队列->Worker消费执行。好处:避免因执行时间长导致网关HTTP超时重试。
6.3 本地化部署(局域网方案)
如果对公网依赖有顾虑,或要求极低延迟。芯步通网版(UNI-WG-SP-LAN)支持私有化部署,服务器和网关处于同一局域网。
改动:将API请求地址从
api.thingboot.com改为网关的局域网IP。优势:断网环境下依然可以执行联动逻辑 。
6.4 射频码的解码与透传
由于不同厂家的编码协议(如PT2262, EV1527)格式不同,网关默认上报的可能是已解析的设备ID,也可能是原始波形。
:在二次开发调试时,先让网关工作在“透传模式”,观察原始数据特征,再编写解码插件,提高兼容性。
7. 总结
通过本文所述的二次开发方案,芯步射频网关不再是一个只能点对点控制的工具,而是一个可编程的射频中控大脑。开发者利用其标准的 HTTP/MQTT接口,仅需编写200行左右的代码即可以实现:
硬件解耦:315MHz与433MHz设备的无缝互操作。
场景自定义:随心所欲定义“如果...那么...”逻辑。
系统集成:轻松将现有射频设备接入苹果HomeKit、HomeAssistant或企业ERP系统。
这种方案充分利用了网关的收发一体特性,真正实现了射频场景的“软件定义联动”。