这是一篇关于如何二次开发芯步智能2路交流回路控制器,实现远程开关控制的解决方案。我尽量写得通俗一点,像朋友间的技术交流。
一、 咱们先聊聊这个“神器”
各位搞开发的朋友,或者喜欢折腾的创客们,大家好。
最近拿到了芯步的智能2路交流回路控制器,这东西说白了就是一个可以用网络控制的“智能空开”。你可以把它想象成一个安装在配电箱里的超级开关,能控制两路电器的通断(比如一路控制灯光,一路控制风扇)。
但官方自带的APP虽然能用,总觉得不够“极客”。我们的目标是:把它集成到我们自己的系统里,用我们自己的代码发指令去操控它。
别担心,这事儿没那么玄乎。芯步开放了HTTP接口,意味着只要你的设备能上网,任何支持HTTP请求的编程语言(Python、Java、PHP、Go,甚至你手机里的“Tasker”)都能轻松搞定它。
下面,我们就以“C语言”和“Java”为例,手把手教你如何把这个硬件变成你代码里的一个“小弟”。
二、 准备工作:得先拿到“钥匙”
在写代码之前,你得先去官网做点准备工作,拿到两样东西,就像你开车得先有钥匙一样:
注册账号并创建“工作台”:去芯步官网注册个账号,然后创建一个“工作台”(相当于你的项目空间)。
找到你的身份码
AppID:相当于你的“用户名”。
AppSecret:相当于你的“密码”,千万别泄露给别人。这两个东西在你工作台的“开发设置”里能看到。
拿到设备ID:把你买的那台控制器的ID记下来,通常贴在设备标签上,或者叫
device_id。
三、 核心原理:就这么简单粗暴
芯步的接口设计得非常简单,核心就是一个 HTTPS POST 请求。
请求地址(URL)是这个模版:https://api.thingboot.com/{你的AppID}/device/control/?sign={签名}&ts={时间戳}
请求体(Body)里只需要告诉平台两件事:
device:你要控制哪台设备?(填刚才记下的设备ID)order:你要下什么命令?(JSON格式)
重点来了,那个烦人的 sign(签名)怎么算?这是为了防止别人乱发指令的安全机制。算法是:md5( md5(AppSecret) + ts )。
ts:当前的时间戳(10位数字,秒为单位)。先把
AppSecret做一次MD5,得到32位小写字符串。再把上面得到的字符串后面拼上
ts,再整体做一次MD5。
看着头晕?别急,看代码就明白了。
四、 动手写代码(以C语言和Java为例)
你手头可能跑着各种系统,不管是什么,原理通了代码就好写了。
第一种场景:如果你在用C语言(比如嵌入式网关或Linux服务器)
很多工业场景的网关是用C写的,下面这段基于 libcurl 的代码片段就是为你准备的。
第二种场景:如果你在用Java(比如Web后端或安卓APP)
如果你是在做Web服务或者APP的后端,用Java写起来也很流畅。这里使用了 Unirest 库和 commons-codec 工具类,让代码更简洁。
五、 玩点高级的:不只是开关
掌握了上面的基础,你其实已经突破了硬件的限制。既然能用代码控制,你就可以实现很多“骚操作”:
一键执行与场景联动看见代码里的
order了吗?你不需要只发一条指令。你可以写个函数,依次发送{"power1":1}和{"power2":1},这就实现了一键开启“全屋模式”。如果你想更粗暴一点,控制器支持
batch命令,一条指令控制多路。比如在某些高级控制器里,你可以通过{"power1":1, "power2":0}直接指定状态。接入智能音箱(曲线救国)小爱同学或者天猫精灵可能没有直接接入这款设备。没关系,你可以自己在服务器上搭一个极简的Web服务,接收音箱的意图,然后在代码里转换成上面的HTTP指令发出去。
定时任务的升级版设备自带定时任务,但如果你想做更复杂的逻辑(比如:根据天气决定是否开启),就在你自己的服务器上写个Cron任务(Linux定时任务),到点自动执行上面的代码即可。
六、 避坑指南
签名算法:最容易出错的地方。注意一定是
md5(md5(secret) + ts),别把加的步骤搞反了,也别忘了加号是字符串拼接。时间戳同步:你的服务器时间要和标准时间误差不能太大,不然接口会报时间戳错误。
命令格式:虽然是“2路控制器”,但命令字段通常是
power1和power2,值一般是1(开)或0(关)。具体的参数名(比如到底是