一、背景与需求分析
在智能家居和楼宇自动化场景中,用户往往需要同时满足两种控制需求:一是通过手机App随时随地远程控制照明和门禁,二是保留物理按键的本地操作习惯——在门口顺手按下开关,或为访客开门时无需掏出手机。
芯步的智能墙壁复合开关系列产品(1路/2路/3路版本)提供了完整的Wi-Fi接入能力和开放的HTTP API接口,支持开发者进行二次开发,将传统墙壁开关升级为“手机遥控+物理按键”双模控制的智能终端。本方案将详细阐述如何基于芯步开放接口,实现这一目标。
核心目标:在不替换原有墙壁开关物理按键的前提下,通过二次开发使开关同时响应本地按键操作和手机远程指令,实现对照明回路和门禁电磁锁的控制。
二、系统设计
2.1 整体架构图(文字描述)
整个系统由以下几个层次构成:
设备层:芯步智能墙壁复合开关(根据控制路数选择1/2/3路版本),直接替换原有86型墙壁开关,接入照明回路或门禁电磁锁。
网络层:开关通过2.4GHz Wi-Fi连接家庭/办公网络,与芯步云端保持长连接。
平台层:芯步开放平台,提供设备注册、状态管理、指令转发等功能,开放HTTP API供第三方服务调用。
应用层:二次开发的服务端程序(可部署在云服务器或本地网关),负责接收手机App/小程序的指令,调用芯步API下发控制命令;同时监听设备状态变化,实现状态同步。
用户层:手机端H5/小程序/App,提供远程控制界面;同时保留开关本身的物理按键作为本地控制入口。
2.2 核心工作流程
本地控制流程:用户按压开关物理按键 → 开关内部MCU检测到动作 → 直接控制对应继电器通断 → 同时将状态变化上报云端 → 云端推送状态变更给所有已连接的客户端。
远程控制流程:用户在手机端点击按钮 → 手机端调用开发者服务端接口 → 服务端调用芯步API(携带签名、设备ID、指令)→ 云端将指令下发至目标开关 → 开关执行继电器动作 → 返回执行结果至云端 → 云端推送结果至服务端和手机端。
三、硬件选型与准备
3.1 推荐硬件型号
根据实际控制需求选择对应的芯步智能墙壁开关:
| 需求场景 | 推荐型号 | 控制路数 | 说明 |
|---|---|---|---|
| 单路照明/门禁 | 智能墙壁开关1路 或 智能触摸墙壁开关1路 | 1路 | 适用于控制单一照明回路或门禁电磁锁 |
| 照明+门禁组合 | 智能墙壁开关2路 或 智能触摸墙壁开关2路 | 2路 | 可独立控制2路设备,例如一路照明、一路门禁 |
| 多路照明场景 | 智能墙壁开关3路 | 3路 | 适用于多路照明分区控制 |
关键参数
工作电压:100-240V AC(市电直接供电,无需额外电源适配器)
无线连接:Wi-Fi IEEE 802.11 b/g/n 2.4GHz
额定电流:10A/路,可满足绝大多数照明和门禁负载需求
安装方式:标准86型底盒,可直接平行替换原有墙壁开关
3.2 门禁控制特殊说明
控制门禁(如电磁锁、电插锁)时需注意:
门禁锁通常需要12V DC供电,而智能墙壁开关输出的是220V AC。因此不可直接将门禁锁接入开关输出端。
正确做法:将智能墙壁开关的一路输出用于控制一个220V转12V的继电器模块,再由该继电器控制门禁锁的12V供电通断。开关输出“开”时继电器吸合,门禁锁通电开锁;开关输出“关”时继电器断开,门禁锁断电闭锁。
若门禁系统支持“点动模式”(即通电开门、断电自动关门),可利用开关的“先通后断”命令模式实现类似门禁按钮的短暂触发效果。
四、API接口详解与二次开发核心
4.1 开放接口概述
芯步开放平台提供两种与设备通信的方式:
HTTP API:请求-响应模式,适用于服务端调用,向设备下发一次性指令。
MQTT:发布-订阅模式,适用于需要实时监听设备状态变化的场景。
本方案主要使用HTTP API进行控制指令下发,同时可配合MQTT实现状态同步。
4.2 核心接口:向设备下发指令
接口地址(需替换实际参数):
请求方式:POST(参数较长时推荐)
核心参数说明
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| device | string | 是 | 设备ID,可在芯步控制台查看,或通过设备列表接口获取 |
| order | string/object | 是 | 控制命令,可传JSON字符串。根据开关路数不同,命令内容不同 |
| gateway | string | 否 | 如果设备需要网关转发时填写,一般Wi-Fi设备无需此参数 |
命令(order)格式详解
单路开关命令
两路开关命令
门禁场景专用——点动模式(先通后断)
场景锁定模式(状态保持)
4.3 接口调用示例
以下提供三种主流语言的调用示例,开发者可根据自身技术栈选择。
Python示例
Node.js示例
Shell脚本示例(curl)
4.4 注意事项
异步执行机制:接口返回200仅代表平台已接收指令并成功下发给设备,不代表设备已实际执行。设备可能处于离线状态或命令参数错误。对于必须确认执行结果的场景,需通过芯步平台的异步消息推送功能获取设备回执。
签名机制:调用接口时必须携带正确的签名(sign)和时间戳(ts),具体算法请参考芯步官方文档。
批量控制:一次请求可控制多台设备,device参数用英文逗号或竖线分隔,最多100台。
五、服务端二次开发实现
5.1 服务端程序架构
采用以下两种部署方案之一:
方案A:云服务器部署
在阿里云/腾讯云等云服务器上部署Node.js/Python/Java服务
提供RESTful API供前端调用
优点:公网可达,手机随时随地可控制
缺点:依赖公网,网络延迟略高
方案B:本地网关部署
在家庭/办公室的树莓派、NAS或闲置电脑上部署服务
通过内网穿透(如frp、Ngrok)或直接暴露端口供外网访问
优点:局域网内控制延迟低,不依赖外网
缺点:需要维护本地服务器稳定性
5.2 服务端核心功能模块
1. 设备管理模块
2. 指令转发模块
3. Webhook/回调接收模块(用于接收设备状态变更推送)
5.3 状态同步方案
由于HTTP接口是单向指令下发,若需实时获取设备状态(如物理按键被按下后更新手机端显示),需要:
启用芯步平台的异步消息推送:配置回调URL,平台会在设备状态变化时主动推送JSON数据到你的服务器。
使用MQTT订阅:芯步平台支持MQTT协议,可订阅
api/{AppID}/device/status主题,实时接收设备状态消息。轮询方案(不推荐):定期调用设备状态查询接口,存在延迟且消耗API配额。
六、手机端交互界面设计
6.1 功能需求
手机端(H5/小程序/App)需提供以下界面:
设备列表页:展示所有已注册的智能开关,显示在线/离线状态、当前各路开关状态。
设备控制面板
照明控制:大按钮开关,点击即时切换,带状态反馈动画。
门禁控制:采用“长按开门”或“点击后弹窗确认”的设计,防止误触。同时提供“点动开门”按钮(按下后开启2秒自动关闭)。
场景联动(可选):
离家模式:一键关闭所有照明。
回家模式:开启指定照明 + 门禁点动。
6.2 前端调用示例(微信小程序)
七、物理按键与远程控制的协同机制
7.1 核心设计原则
芯步智能墙壁开关的物理按键和远程控制是天然协同的:
物理按键直接控制继电器的硬件电路,响应迅速(毫秒级),不依赖网络。
按键操作后,开关会自动将新的状态上报云端,云端再推送给所有已连接的客户端。这意味着:用户按下物理按键关灯,手机端也会立即显示灯已关闭。
二次开发无需额外处理物理按键的逻辑——开关的固件已完整实现这一机制。开发者的工作重心在于:
通过API实现远程控制
处理云端推送的状态同步
设计手机端交互界面
7.2 高级场景:状态锁定模式
芯步开关支持“状态保持/锁定”模式,适用于需要强制维持某个状态的场景
此功能可通过API远程开启/关闭,非常适合无人值守场景(如机房、设备间)。
八、安全与权限控制
8.1 API调用安全
签名机制:每次调用芯步API都需携带动态签名,防止请求被伪造和重放攻击。
服务端鉴权:开发者的服务端应实现用户认证(JWT/Session),确保只有授权用户才能调用控制接口。
8.2 门禁控制增强安全
门禁涉及安全性,在手机端和门禁控制逻辑中加入额外保护:
操作密码/生物识别:远程开门前要求输入密码或验证指纹/面容。
操作日志:记录每次开门操作的账号、时间、IP地址。
限流机制:同一用户短时间内多次开门请求自动限流。
白名单时段:可设置允许远程开门的时间段(如仅9:00-21:00)。
九、部署与测试要点
9.1 部署步骤
在芯步开放平台注册账号,创建应用,获取AppID和AppSecret。
将智能墙壁开关通过“芯步”App配网,获取设备ID。
根据本方案的服务端代码框架,开发并部署你的服务端程序。
配置芯步平台的异步消息推送地址(如需状态同步)。
开发手机端H5/小程序/App,连接到你的服务端。
整体联调测试。
9.2 测试清单
| 测试项 | 预期结果 |
|---|---|
| 手机远程开灯 | 开关对应路继电器吸合,照明点亮,手机端显示状态变更 |
| 手机远程关灯 | 开关对应路继电器断开,照明熄灭 |
| 本地物理按键开/关灯 | 继电器动作正常,手机端状态自动同步更新 |
| 门禁点动控制 | 继电器通电指定时间(如2秒)后自动断开 |
| 网络断开时本地按键 | 本地按键应正常工作,网络恢复后自动上报状态 |
| 多设备同时控制 | API可同时向多台设备下发指令 |
| 离线设备控制 | API返回成功但设备不执行,网络恢复后需重新控制 |
十、常见问题与解决方案
Q1:控制指令下发成功但设备无反应?
检查设备是否在线(可通过芯步控制台查看设备状态)
确认命令参数格式正确,如两路开关是否正确使用了power1/power2
检查设备ID是否正确
Q2:物理按键操作后手机端状态不更新?
确认是否配置了异步消息推送或MQTT订阅
检查回调服务是否正常运行
验证网络连通性
Q3:门禁控制时继电器吸合但门锁不动作?
确认门禁锁的供电电压和电流是否满足要求
检查中间继电器模块的接线是否正确
测试直接给门禁锁供电能否正常开锁
Q4:如何实现多用户共享控制?
在开发者服务端实现设备与用户的绑定关系
支持设备分享功能:设备所有者可生成分享码,其他用户扫码后获得控制权限
十一、方案总结
本方案基于芯步智能墙壁开关的开放接口,完整阐述了如何二次开发实现“手机远程+物理按键”双控照明与门禁系统。核心要点如下:
硬件选型:根据控制路数选择芯步1/2/3路智能墙壁开关,门禁控制需配合中间继电器使用。
API调用:使用
/device/control/接口下发JSON格式命令,支持独立控路、点动模式、状态锁定等丰富功能。服务端开发:构建指令转发服务,配合芯步异步推送实现状态同步。
本地与远程协同:开关固件原生支持物理按键操作后的状态上报,开发者无需额外处理按键逻辑。
安全增强:门禁控制需叠加操作认证、日志记录、限流等安全措施。
通过以上方案,开发者可在较短时间内完成一套稳定、易用的双控智能开关系统,适用于家庭、办公室、酒店、公寓等多种场景。