CATALOG

一、背景与需求分析

在出租屋场景中,照明控制是智能改造中最基础也最实用的切入点。传统的机械墙壁开关存在几个痛点:租客忘关灯造成电费浪费、房东无法远程确认用电状态、夜间归家摸黑找开关不便。通过将芯步的1路智能墙壁开关对接到软件项目中,可以解决这些问题,实现远程控制、定时任务、状态同步等智能化管理。

芯步智能墙壁开关的核心优势在于:采用标准86型底盒,可直接替换原有开关,无需重新布线;支持WiFi 2.4G直连,无需额外网关;开放完整的HTTP API接口,支持签名认证和设备控制命令。这意味着开发者可以用任何支持HTTP请求的编程语言(Java、Python、JavaScript、PHP等)将其集成到现有软件系统中。

二、整体设计

┌─────────────────┐      ┌─────────────────┐      ┌─────────────────┐
│   软件项目       │      │  芯步云平台  │      │  智能墙壁开关    │
│  (Web/APP/小程序)│─────▶│   API网关       │─────▶│  (WiFi设备)     │
│                 │      │  api.thingboot.com │      │  1路照明控制    │
└─────────────────┘      └─────────────────┘      └─────────────────┘
         │                        │                         │
         │                        │                         │
         ▼                        ▼                         ▼
   用户操作界面              签名认证/路由              继电器通断
   定时策略管理              消息推送服务               状态实时反馈

通信流程说明:

  1. 用户在软件端点击开关按钮

  2. 软件项目计算签名,向芯步API发起HTTPS请求

  3. 平台验证签名后,将命令下发给目标设备

  4. 设备执行命令并返回结果,平台异步推送状态消息

三、准备工作:获取凭证与设备ID

3.1 注册账号并创建工作台

访问芯步官网()完成注册,登录后进入工作台,创建新的物联网项目空间

3.2 获取AppID和AppSecret

进入物联网控制台的“开发设置”模块,获取两个关键凭证:

  • AppID:应用唯一标识,接口URL中的路径参数

  • AppSecret:开发者密钥,用于生成签名,请勿暴露在前端代码中

3.3 获取设备ID

智能墙壁开关配网成功后,在控制台的设备列表中查看设备唯一ID(device字段),这是一个数字类型的标识符,后续所有控制命令都需要指定此ID

配网要点:开关只支持2.4G WiFi,配网时确保手机和设备在同一WiFi下,按照说明书操作触摸按键进入配网模式。

四、核心技术:签名生成与接口调用

4.1 签名算法(核心安全机制)

芯步的API采用双层MD5签名机制,防止请求被伪造或重放攻击。签名生成步骤

第1步:md5_secret = MD5(AppSecret)
第2步:sign_str = md5_secret + ts(ts为Unix时间戳,单位秒)
第3步:sign = MD5(sign_str)

JavaScript示例(Node.js后端)

Python示例

4.2 控制命令格式

1路开关的核心命令

命令类型order参数说明
开启第1路{"power1":1}继电器吸合,灯亮
关闭第1路{"power1":0}继电器断开,灯灭
先通后断(点动){"point1":"2000"}先开启,2秒后自动关闭
先断后通(复位){"reset1":"2000"}先关闭,2秒后自动开启
状态保持(锁定开){"power1":{"keep":1,"revert":3}}保持开启,用户关闭3秒后自动恢复
状态保持(锁定关){"power1":{"keep":0,"revert":3}}保持关闭,用户开启3秒后自动恢复

点动模式应用场景:楼道照明(感应开灯后自动关)、排风扇(定时关闭)。状态保持模式应用场景:公共区域常亮但允许临时关闭、设备维护时锁定关闭状态。

4.3 完整的API调用示例

请求地址POST https://api.thingboot.com/{AppID}/device/control/?sign={sign}&ts={ts}

请求头Content-Type: application/json

请求体(JSON格式):

cURL完整示例

响应示例

注意:code为200仅表示平台已接收并下发命令,不代表设备实际执行成功。若设备离线,命令将缓存在云端,设备上线后补发

五、软件项目集成方案

5.1 后端服务封装(Java Spring Boot示例)

在软件项目中封装一个统一的设备控制服务,避免签名逻辑散落在各处。

5.2 定时任务场景(智能省电)

出租屋常见需求:深夜时段自动关闭公共区域照明,防止租客忘关灯。可使用Spring Scheduler实现:

5.3 小程序/APP前端调用

前端不应直接调用芯步API(避免暴露AppSecret),应通过自有后端代理。微信小程序示例

六、高级功能与扩展

6.1 状态同步(消息推送机制)

HTTP接口返回200仅表示命令下发成功,如需确认设备实际状态,需配置消息推送。芯步支持将设备状态变化异步推送到开发者指定的服务器

配置步骤:

  1. 在控制台设置消息接收URL(如 https://your-server.com/api/yoyo/callback

  2. 设备状态变化时(手动触摸开关或远程控制),平台会POST JSON数据到该URL

  3. 软件项目接收后更新本地数据库中的设备状态

6.2 批量控制多台设备

芯步API支持一次请求控制多台设备(device参数用逗号分隔,最多100台),适合整层出租屋统一关灯

6.3 传感器联动(进阶方案)

结合芯步的人体存在传感器,可实现人来灯亮、人走灯灭的自动化。流程如下:

  • 传感器探测到有人 → 上报状态到平台 → 平台推送给软件项目 → 软件项目调用开关接口开灯

6.4 私有化部署(高安全场景)

对于对数据安全要求较高的项目(如长租公寓品牌方),芯步支持私有化部署,可在局域网内完成设备控制和状态同步,无需经过公网

七、常见问题和需要注意的点

7.1 签名验证失败(code 501/502)

  • 检查时间戳ts是否为Unix秒级(不要用毫秒)

  • 确认AppSecret未经任何编码转换,直接作为字符串处理

  • 检查MD5结果是否为32位小写十六进制

7.2 命令下发成功但设备无反应

  • 确认设备WiFi在线(可观察指示灯状态)

  • 检查order参数格式,1路设备用power1而非power

  • 确认设备ID正确且属于当前AppID

7.3 网络稳定性

  • 出租屋WiFi环境复杂,为每个开关预留多组WiFi配置(设备支持5组)

  • 可考虑使用Mesh网络覆盖信号盲区

八、方案总结

通过芯步1路智能墙壁开关的开放HTTP API,开发者可以在3步内完成软件项目的集成:

  1. 准备凭证:注册账号,获取AppID/Secret和设备ID

  2. 实现签名:按双层MD5规则生成请求签名

  3. 调用接口:使用{"power1":1/0}命令控制照明

该方案已成功应用于共享自习室、长租公寓、宿舍管理等场景,具有低成本(无需网关)高兼容性(任何语言/平台)可扩展(支持私有化部署)的特点。开发者可根据实际需求,在此基础上构建定时策略、传感器联动、能耗统计等更复杂的智能照明管理系统。