一、先说说这个场景
共享充电站这个场景其实挺有意思的。你想想,一个充电站往往有几十甚至上百个车位,到了晚上,整个场地黑灯瞎火的,用户开车进来找充电桩,体验肯定不好。但如果所有照明灯彻夜长亮,电费又是一笔不小的开支。
所以“照明管理”就成了一个刚需——既要照亮该照的地方,又得省电。而墙壁智能开关在这里扮演的角色就是:控制一路或多路照明回路,实现远程开关、定时关灯、人走灯灭之类的功能。
芯步的1路智能触摸墙壁开关,正好可以解决这个问题。它支持HTTP接口控制,直接并联替换原有的86型墙壁开关就行,不需要重新布线,这对于老旧停车场改造特别友好。
下面我就一步步说说,怎么把这个硬件对接到你的软件项目里。
二、准备工作:你需要拿到什么
在开始写代码之前,有三样东西是必须要有的:
1. 硬件本身
买一个芯步的“智能触摸墙壁开关1路”。这东西安装很简单,如果你是做软件开发的,把接线工作交给电工就行。你只需要知道:这个开关接在哪个回路上,控制的是哪几盏灯。
2. 注册芯步平台
去芯步开放平台注册一个账号。这部分是完全免费的,不管你是个人开发者还是企业,接口调用都不收费。
注册完成之后,进入控制台,你会看到两个关键信息:
AppID:你的应用ID,接口调用时需要带上
AppSecret:开发者密码,用来计算签名的,千万别泄露
3. 设备的ID
把智能开关通电、配网之后,在控制台的设备列表里就能看到它,记下这个device(设备ID)。一般是像“820720”这样的一串数字。
这三样东西到手,对接就可以开始了。
三、核心:怎么用HTTP接口控制开关
芯步的接口设计得挺简单的,就是一个标准的HTTP POST请求。不需要什么复杂的SDK,你用什么语言开发——Java、Python、Go、PHP,甚至前端JavaScript——都能直接调。
接口地址
POST http://api.thingboot.com/{你的AppID}/device/control/?sign={签名}&ts={时间戳}请求体(JSON格式)
这里power1就是第一路开关的命令:1表示打开,0表示关闭。
签名怎么算
这可能是唯一稍微有点绕的地方。签名规则是这样的
sign = md5( md5(AppSecret) + ts )
其中ts是当前时间的Unix时间戳(秒,10位数字)。
举个例子:
假设你的AppSecret是
abc123当前时间戳是
1700000000先把AppSecret做一次MD5:
md5("abc123")=xxxxx然后把这个结果拼接上时间戳:
xxxxx1700000000再对这个拼接后的字符串做一次MD5,就是最终的sign
这个机制主要是为了防止接口被恶意调用,你封装成一个函数就行,不用每次手动算。
四、实战:写几行代码试试
下面我用两种常用语言各写一个简单的示例。
Python 示例
命令行用curl测试
如果你想先快速验证一下,直接用curl命令也行:
命令发出去之后,大概80到120毫秒开关就会动作,响应速度还是很快的。
五、进阶玩法:不只是开和关
如果只是远程开关灯,那也太简单了。芯步的智能开关还支持几个更实用的功能。
1. 定时关灯(先通后断)
比如用户扫码支付了1小时的充电费,你需要灯光跟着充电时间走——灯先打开,1小时后自动关闭。这时候可以用point1命令:
单位是毫秒,3600000毫秒就是1小时。
这个功能的好处是:关灯的动作由开关自己执行,不需要你的服务器一直跑定时任务。就算你的软件服务挂了,到时间灯照样会关,非常稳。
2. 状态保持(防误操作)
有些场景下,你希望用户按了开关也没用——比如共享充电站的运营时段结束后,你希望灯一直关着,用户手贱按开关也打不开。这时候可以用“状态保持”功能:
这条命令的意思是:强制关灯,并且保持关的状态。即使用户手动按了开关试图开灯,3秒后开关会自动恢复关的状态。
反过来,如果你想让灯强制保持打开(比如晚上需要一直亮着),把keep改成1就行。
3. 延时开灯(先断后通)
跟上面相反,如果你想让灯先关一会儿再自动打开,比如用来实现“人走灯灭但留几秒缓冲”,用reset1
关灯,5秒后自动再开。
六、充电站场景的典型业务流程
结合以上功能,一个充电站的照明管理大致可以这么设计:
用户扫码启动充电 → 你的后端收到充电开始事件 → 调用接口打开对应车位的照明灯(
{"power1":1})充电过程中 → 你可以在软件里做个手动关灯按钮,让用户自己控制(比如白天不需要灯,用户想省电自己关)
充电结束 → 理论上应该关灯,但考虑到用户可能还在现场操作,延迟5分钟再关
深夜时段(如23:00-06:00) → 这个时段场地没人,可以强制关灯省电。如果有红外或雷达感应的人体传感器,可以联动实现人来灯亮、人走灯灭——不过这是另一个设备的事了
紧急情况 → 在你的管理后台做个“全开照明”按钮,一键点亮全场,方便巡逻或应急处理
整个流程里,你的软件只需要在恰当的时机向芯步平台发送一条HTTP请求就行,剩下的硬件会自动执行。
七、常见坑点和小提示
1. 时间戳问题
接口要求ts是秒级时间戳(10位数字),不是毫秒级的。很多新手容易在这里翻车,拿到毫秒戳(13位)直接传进去,会报错5005 bad ts。
2. IP白名单
如果你的接口总是返回5008 ip not in white list,说明你在控制台开启了IP检查。解决办法有两个:要么把你的服务器公网IP加到白名单里,要么直接关掉这个检查。
3. 请求频率限制
芯步限制单个设备的访问频率是1次/秒。对于照明控制来说完全够用,但如果你有批量操作的需求(比如一键控制100个设备),最好错开发送,或者用异步任务队列处理。
4. 可以走局域网
如果你不想走公网,可以把设备配置成局域网模式,直接请求局域网IP地址。这对于内网应用或者对安全性要求高的场景很友好。
八、总结
说白了,把芯步的1路智能开关对接到你的软件项目里,核心就是发HTTP请求。你只需要搞定:
准备:AppID、AppSecret、设备ID
签名:md5(md5(密钥) + 时间戳)
命令:
{"power1":1}开,{"power1":0}关进阶:
point1定时关,reset1延时开,keep状态保持
剩下的就是把这些HTTP调用嵌入到你现有的业务逻辑里:用户充电时开灯,充电结束时关灯,半夜自动强制关灯……按需组合就行。
照明管理这件事,技术上没什么难度,但做好了确实能提升用户体验,还能实实在在省电费。有什么具体问题,欢迎随时交流!