CATALOG

芯步的射频网关开放了标准的HTTP接口,这意味着你可以用自己的服务器或云端程序,通过简单的API调用就能远程控制那些原本只能用315/433MHz遥控器操作的设备。下面是一套比较完整的二次开发方案。

一、 搞清楚“老设备”和“新大脑”的关系

首先得明白我们手头有什么,以及要干什么。

硬件主角:芯步智能射频网关这个网关就像是一个“翻译官”兼“快递员”。它一边能通过 433MHz/315MHz 的射频信号跟你家那些老式的卷帘门、车库门、插座对话(发射信号),另一边又能连着WiFi,听懂互联网上的指令

  • 核心参数:支持 433MHz 发射和 315MHz 接收,WiFi 2.4G 联网。

  • 开放能力:官方已经封装好了 HTTP 接口,我们不需要关心它内部怎么处理射频协议的,只需要给它的云端发一条 HTTP 请求,它就会把信号发出去

最终目标:摆脱原厂那几十米距离限制的遥控器,在你家服务器、公网云主机甚至家里的树莓派上,写几行代码,实现“全世界任何有网的地方点一下鼠标,车库门就打开”。

二、 准备工作:把家伙什连上网

在写代码之前,得先把网关配置好,让它连上你家的 WiFi 或者插上网线,并且在芯步的云端“注册”上。

  1. 注册与登录:去芯步官网注册一个开发者账号,进入“物联网控制台”

  2. 添加设备:按照说明书给网关通电。在控制台里找到“网络配置”,输入你家的 WiFi 密码(注意只能连 2.4G 频段,不能是 5G)。等待网关指示灯停止闪烁变成常亮,就说明连上网了

  3. 获取关键凭证(非常重要)

    • 进入控制台的 “开发设置”

    • 找到 AppID(相当于你的用户名)和 AppSecret(相当于你的密码,不要泄露给别人)。

    • 记下网关的 设备ID(在设备列表里能看到,通常是一串数字)

小技巧:刚开始开发怕搞错,可以在开发设置里打开“调试模式”。在这个模式下,系统暂时不检查签名计算对不对,方便你先把命令调通,最后再关掉这个模式上线

三、 核心逻辑:破解签名机制

这是二次开发里最绕不开的一步。为了安全,芯步的接口不是裸奔的,它要求你在请求的时候带一个 签名 (sign)这个签名算法是这样的,我看官网文档给的例子是 Shell 脚本,我用人话给你拆解一下:

  1. 把你刚才拿到的 AppSecret 做一次 MD5 加密。

  2. 把加密后的结果,拼接上当前的 时间戳 (ts)

  3. 把拼好的这个字符串,再做一次 MD5 加密,这就是最后的 sign

为什么要这么麻烦?是为了防止有人在网络上抓包,伪造请求控制你的设备。因为时间戳一直在变,而且只有你和服务器知道 AppSecret,所以别人伪造不了。

实战:不管你用什么语言,逻辑如下(以 Python 为例):

四、 开始发送指令:远程按一下“按钮”

现在我们要发 POST 请求了。假设你想用这个网关去控制一个 433MHz 的卷帘门电机(或者一个通断器)。

根据文档,请求的 Body 必须是 JSON 格式,包含两个字段:deviceorder

  • device:就是刚才记下的网关 ID。

  • order:这是关键。你要告诉网关,通过它的射频口,发射什么编码出去。

不过,网关本身并不知道你要控制的具体设备(比如卷帘门)的“按键编码”。通常有两种做法:

  1. 如果你控制的是芯步自家的射频设备(如通断器):直接查产品手册,命令通常是 {“power”:1} 这种标准格式

  2. 如果你控制的是第三方老设备(需要学习):这时候网关通常有一个“学习模式”。你需要先调一个接口让网关进入“学习状态”,然后用你原来的遥控器对着网关按一下,网关把遥控器的编码“录”下来。之后你发命令的时候,带上录好的那个“码”的名字。

假设你已经通过App配网并做好了“对码”,现在要“打开”设备:

我们可以用 Python 的 requests 库来模拟:

五、 进阶场景:局域网直连(私有化部署)

如果你的需求是在家里的局域网内控制,不想经过芯步的云服务器(为了速度快、断网也能用),芯步的网关也支持软网关模式

在这种模式下,你的网关就不去连芯步的云了,而是直接连接你局域网里的一台电脑或服务器(装一个芯步的软网关软件)这时候,接口地址就不再是 api.thingboot.com 了,而是变成了:http://[你网关的局域网IP]:端口/control这种模式对写代码来说更简单,不需要算 sign(因为局域网相对安全),直接发 JSON 控制就行,适合集成到 Home Assistant 这类开源智能家居平台里

六、 把功能整合到你的系统里

一旦你搞定了上面的 HTTP 请求,二次开发就完成了 90%。

  • 如果你写安卓/苹果APP:把上面的 Python 代码逻辑,用 Java/Kotlin/Swift 重写一遍,点击按钮就触发 http.post

  • 如果你搭网页管理后台:用 JavaScript 的 fetch 或者 axios 去调用你的后端接口(注意:不在前端直接调用,因为会暴露 AppSecret,最好先让请求发到你的后端,后端算好签名再去请求芯步)。

  • 如果你用 Node-RED 或类似低代码平台:直接拖一个 HTTP Request 节点,填入刚才构造的 URL 和 Body 就行。

总结一下技术要点

  1. 核心难点签名的双重MD5运算。只要时间戳(ts)保持一致,签名算对了,接口通了,事情就成了大半。

  2. 设备ID:发命令时,device 参数填的是网关本身在平台的ID,而不是被控制电器的ID。

  3. 扩展性:这个方案的好处是,你只要会发 POST 请求,不管是 Python、Java、Go 还是 PHP,甚至是用 Excel 的 VBA,都能控制这个网关,进而控制你家所有 433 射频设备。

你可以先按照官方文档里那个 Shell 脚本(就是带 curl 的那个例子),在本机的命令行里复制粘贴试一下,如果能成功控制,就把这段逻辑搬到你的代码里就行