本文章来自程序汪背后的私活小团队,无人台球室的项目,希望把这些真实案例分享出来,大家能学到点东西,比如软件硬件怎么对接,商业项目具体怎么评估价格,无人台球室方案是什么样的等等。B站【我是程序汪】
开发人员前端 技术栈 vue 主要任务小程序及PC端页面后端 技术栈 springboot 硬件 共享柜TCP 、网关、断路器(控制关灯)通讯协议 MQTT、TCP开发周期37天 开发人数 2人
整体研发费用是7万 (6W软 1W硬)走的正规合同云服务器1台(后面根据情况增加)维护费 5000年后端技术选型核心框架:Spring Boot数据库连接池:Druid缓存:redis数据库:mysql
项目背景无人台球室,甲方本来自己就运营4家台球室,主要为了减少人力成本提高了工作效率,找我们开发了这套无人台球室项目,利用智能共享柜和智能关灯来无人管控台球室,这样老板也只有出现故障偶尔跑下现场核心流程。
程序汪还是画个简单的流程图吧,方便大家理解,真实代码逻辑还是复杂的,这里简化了
智能共享柜这里的智能共享柜是甲方直接找厂家购买的成品但需要我们跟他接口协议对接,核心就三个操作 扫码登陆、借 、还
这里有一个流程图跟我们台球室智能共享柜的流程非常接近,大家可以参考下
一 扫码登陆
二 借台球杆
三 还台球杆
小程序小程序端主要就是预定台球室场地,这里预定成功后端会马上生成订单,开始时间和结束时间,特别注意后端有定时任务会下发通知 智能断路器进行关灯
当然这里后端是通过网关来控制灯的,具体网关如下zigbee无线智能家居网关 家居环境智能控制 标准HA协议
网关协议说明:1、本协议采用的 TCP 传输,控制器作为客户端,软件平台作为服务端控制器主动发起连接,连接后双向通道打开,服务端和客户端都可以自由收发数据2、TCP 连接的地址和端口,需要在控制器网页进行设置。
3、通常的工作模式由软件平台端发起数据查询,控制器给予回应但是控制器端的数据变化,会主动发送更新的数据到软件平台端4、数据格式为标准 JSON 数据,JSON 数据之间以‘\0’或者 0 分割5、秘钥验证可以做,也可以不做,具体根据硬件配置。
当设置了秘钥时,就要进行秘钥验证,验证的思路是:请求验证方发送验证种子,对方返回加密算法计算返回加密的 md5 结果,请求方进行比对,匹配时验证成功5、通讯流程如下图4、获取所有设备信息获取指令格式:{"func":" GetAllDevData"}
返回指令格式:{"hack": "GetAllDevData","result": [{"address": "1","type": 10,"desc": “智慧物联网关 BEC1000”,“sn”:”000A000039B6”,
"link": 1},{"address": "5",第 5 页 共 22 页物联控制器与第三方软件平台对接规范"type": 1001,"desc": “三相电量变送器”,“sn”:”03E900005036”,
"link": 0}]}
•断路器配置接口(User Client->MQTT broker->IoTGateWay)Topic:…/CBQos:1注:变化上报(含复归)、24小时定时固定上报、支持单项设置帧格式:MQTT包头配置
下行JSON Payload字段:功能字段名数据备注类型字节数包类型packType"CBConfig"固定String≤32起始寄存器地址regStart4000Integer≤32寄存器数量regCount
107Integer≤32设备地址addr3Integer≤4配置数据组regData见下分表JSON数组String≤4096版本ver"V1.0.5"固定String≤16配置数据组:功能字段名数据
备注类型字节数仅三相的断路器具备的字段,字段名:mp ,包含:A、B、C相:phaA、phaB、phaC过功率预警ovLoadp0.01KW为单位Integer≤32过功率报警ovLoad0.01KW为单位
Integer≤32欠压预警uvp0.01V为单位Integer≤32欠压报警uv0.01V为单位Integer≤32过压预警ovp0.01V为单位Integer≤32过压报警ov0.01V为单位Int
eger≤32过流预警ocp0.1A为单位Integer≤32过流报警oc0.1A为单位Integer≤32温度预警otp0.1摄氏度为单位Integer≤32温度报警ot0.1摄氏度为单位Integer
≤32通用及单相字段,如果断路器为三相则必传剩余电流预警lep1mA为单位Integer≤32剩余电流报警le1mA为单位Integer≤32过功率预警ovLoadp0.01KW为单位Integer≤32
过功率报警ovLoad0.01KW为单位Integer≤32欠压预警uvp0.01V为单位Integer≤32欠压报警uv0.01V为单位Integer≤32过压预警ovp0.01V为单位Integer
≤32过压报警ov0.01V为单位Integer≤32过流预警ocp0.1A为单位Integer≤32过流报警oc0.1A为单位Integer≤32温度预警otp0.1摄氏度为单位Integer≤32温度报警
ot0.1摄氏度为单位Integer≤32过功率预警opp0.1KW为单位Integer≤32过功率报警op0.1KW为单位Integer≤32上行数据(网关回应)MQTT包头命令回复上行JSON Payload字段:
功能字段名数据备注类型字节数结果res"OK"或者"fail"固定String≤32原因reason"bad command "仅出错时有效String≤32指令类型packType"CBConfig"
String≤32版本id92930Integer≤16注:网关收到该指令并正确解析后会立即发布回应消息(仅反映网关正确收到消息,不保证执行结果正确)PC端预定球场预定台球等等各种需要场地的运动都可以用类似的系统改吧改吧,下面就是当时拿羽毛球篮球的预定系统稍微修改修改,核心功能都是定场管理 订单管理 其他权限 会员 优惠券都是电商系统通用功能
点击“阅读原文”,官网B站视频版本~
亲爱的读者们,感谢您花时间阅读本文。如果您对本文有任何疑问或建议,请随时联系我。我非常乐意与您交流。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。