全部案例

装在集装箱里、用手机打开的淋浴间

建在集装箱里的无人值守付费淋浴房:微信扫码识别用户,打开门锁与水阀,计时并在结束后结算——每扇门的物理状态都要与服务器记录的状态相互核对。

淋浴单元剖视渲染图:集装箱内的四个淋浴间,以及带品牌标识的入口模块。
客户
国内一家领先的热水器制造商
行业
智能硬件与公共设施
地点
中国
服务
企业软件 · Web 开发 · 中国平台 · 智能硬件

背景

我们在其中的角色

这是一个软硬件结合的产品,由多家合作方组成的团队作为一个整体系统交付给客户:供电、4G 通信、主控板、防水箱体和舱内显示屏,以及服务器、微信客户端和管理后台。imady 的负责人是该团队的一员,负责开发侧的项目协调,并开发前端静态内容。以下描述的是整个团队的工作,并如实说明这一点。

方案

我们建了什么,为什么是这个形态

无人值守设备的难点不在收钱,而在于没人看着的时候,仍然知道每扇门实际处于什么状态。因此系统围绕每个淋浴间的显式状态机来设计:门锁和电磁水阀永远不会同时打开;只有门磁传感器确认门已在离开的用户身后关好,淋浴间才会回到“空闲”状态。

  • 微信公众号就是全部的用户界面:扫描淋浴间上的二维码,通过微信授权识别身份,门锁和水阀随即打开。不需要装 App,也不需要在我们这里注册账号——这正适合只使用一次设施的过路人。
  • 四个状态,而不是两个:空闲、开门、使用中、离开中。半关闭的“离开中”状态之所以存在,是因为水阀关闭后用户仍要能出来,而在确认门已关好之前,淋浴间不能分配给下一个人。
  • 计费在使用后结算,而不是预付:按时计费(第一分钟免费),离开时生成付款记录,未付款的记录会阻止该用户下一次扫码,直到结清为止——这也是为什么黑名单和欠费查询放在进入流程里,而不是管理后台里事后才想起来的功能。
  • 硬件 API 把业务逻辑和物理层分开:服务器只考虑淋浴间和使用会话,设备只处理门锁、阀门、灯和计时器。
  • 管理后台覆盖运营人员凌晨两点真正需要的东西:淋浴间状态与远程开关、用户与黑名单管理、欠费,以及完整的使用记录。
  • 故障问题在开发前就逐条写下来——没有手机信号怎么办、门打不开怎么办、支付失败怎么办、进出状态不一致怎么办——因为对无人值守硬件来说,这些是常态,而不是边缘情况。
  • 现成的产品都不适合一个潮湿、无人看管、放在户外的箱子,所以硬件是为这件事专门设计的:供电、主控板、防水和舱内显示全部定制,控制逻辑服从于服务器所依据的同一个状态机。
  • 通信用的是中国电信普通的 4G LTE——当时已是成熟且覆盖良好的网络。真正值得思考的从来不是无线电本身,而是信号中断时淋浴间应该怎么做,这也是为什么由本地主控板保存门的状态,而不是交给服务器决定。

技术栈

微信公众号微信授权与支付C#HTML5JavaScript硬件控制 APIOLTP 关系型数据库定制主控板嵌入式控制固件供电系统设计4G LTE 通信(中国电信)机电控制——门锁与电磁阀门磁检测与状态指示灯硬件舱内用户显示单元防水与箱体设计