病房照明管理看起来是小事,其实挺让人头疼的:护士晚上查房要摸黑找开关,患者想关灯够不着,走廊灯还经常彻夜长明。
芯步这款3路智能墙壁开关,带开放HTTP接口,可以让你用代码控制每一路灯。下面说说怎么把它集成到你的软件项目里。
一、到底是什么东西?
开门见山,我们要集成的对象是芯步的“智能触摸墙壁开关3路” 。
你可以把它理解成一个装在墙上、但能联网的86型开关。它和普通开关最大的区别是:除了能用手按,还能通过网络用代码控制。因为它的接口是通用的,不管你的后端是Java、Python还是Go,只要它能发HTTP请求,就能指挥它干活儿 。
二、集成到软件里的关键点
我们要做的,就是让你们的软件能直接指挥电灯。这里的关键就是调用它的 HTTP API。
1. 基本流程
每一次控制,本质上就是向芯步的云端发送一个特定的HTTP请求。流程一般是这样的:软件系统 -> 芯步云平台 -> 病房里的开关 -> 灯亮/灭。
2. 鉴权
你要控制设备,总得证明“这东西是我的”或者“我有权限”。芯步的鉴权方式挺简单,主要是Sign签名。
一般来说,你需要准备:
AppID:相当于你的账号ID。
AppSecret:相当于你的密码,这个要保密。
Timestamp (ts):当前的时间戳。
核心步骤(以常见的MD5加密为例):你需要按照官方规定的算法生成一个签名(Sign)。大概逻辑就是把你自己的密码(AppSecret)进行一次MD5加密,然后拼接上当前的时间戳,再把整个字符串做一次MD5 。实际发请求的时候,把AppID、Sign和ts拼接在URL里。
(这里放一张生成的API请求示例图,展示关键参数,方便研发同事照着写代码)
3. 核心命令
这是重头戏。这款“3路”开关,顾名思义,可以控制三路不同的灯(比如病房顶灯、床头灯、卫生间灯)。通过API控制,主要是在请求的Body里传JSON数据,格式如下
解释一下
device:你要控制哪一台设备。order:你要下什么命令。“power1”: 1:代表第一路开关打开。“power2”: 0:代表第二路开关关闭。“power3”: 1:代表第三路开关打开。
除了基本的“开/关”(power),还支持一些高级玩法,比如“点动”(先通后断,常用于门铃或冲洗阀)或“状态保持” 。但在病房照明里,用 power 基本就够了。
4. 别忘了“局域网控制”
作为研发人员,你肯定会想:“如果医院断网了怎么办?”
芯步的设备是支持局域网控制的 。只要你的服务器和这些开关在同一个局域网(Wi-Fi)下,你可以直接通过开关的内网IP地址发送命令,完全不走外网。
局域网控制的请求方式和云控类似,直接把命令POST到设备的IP地址即可 。在软件设计上,做一个“网络检测”机制:-> 优先尝试局域网控制(速度快、稳定)。-> 局域网失败了,再自动切换到云端控制(防止网络拓扑变动导致离线)。
三、在病房场景的具体集成方案
1. 数据建模:如何管理病房
你要在软件里把“物理世界”映射成“代码世界”。
在数据库里建立这几张表:
建筑物:XX医院。
楼层:住院部12楼。
病房:1208房。
床位/设备:关联具体的设备ID (device_id)。
通道映射:比如1208房的设备ID是
123456,我们要定义它的power1是“床头顶灯”,power2是“走廊夜灯”,power3是“卫生间灯”。
2. 功能设计与代码逻辑
接下来,就是写代码把上面的API串起来。
场景A:一键全关 / 夜间模式
需求:晚上10点,护士在护士站点一下按钮,所有病房的顶灯熄灭,只留卫生间灯或床头夜灯。实现:后端写一个定时任务,或者接收前端的一键请求。循环遍历所有病房的设备ID,发送 {“power1”: 0, “power3”: 1} 这样的指令。
场景B:患者APP控制
需求:住院患者腿脚不便,不想下床关灯,想在手机APP上关灯。实现:这也是最简单的集成。患者APP点“关灯” -> 请求发送到你的后端 -> 后端校验权限(确认这个患者确实住这个床) -> 后端调用芯步API -> 命令下发。
伪代码示意(非常口语化):