本文章来自程序汪背后的私活小团队,无人台球室的项目,希望把这些真实案例分享出来,大家能学到点东西,比如软件硬件怎么对接,商业项目具体怎么评估价格,无人台球室方案是什么样的等等。
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:…/CB
Qos:1
注:变化上报(含复归)、24小时定时固定上报、支持单项设置
帧格式:
MQTT包头 |
配置 |
下行JSON Payload字段:
功能 |
字段名 |
数据 |
备注 |
类型 |
字节数 |
包类型 |
packType |
"CBConfig" |
固定 |
String |
≤32 |
起始寄存器地址 |
regStart |
4000 |
Integer |
≤32 |
|
寄存器数量 |
regCount |
107 |
Integer |
≤32 |
|
设备地址 |
addr |
3 |
Integer |
≤4 |
|
配置数据组 |
regData |
见下分表 |
JSON数组 |
String |
≤4096 |
版本 |
ver |
"V1.0.5" |
固定 |
String |
≤16 |
配置数据组:
功能 |
字段名 |
数据 |
备注 |
类型 |
字节数 |
仅三相的断路器具备的字段,字段名:mp ,包含:A、B、C相:phaA、phaB、phaC |
|||||
过功率预警 |
ovLoadp |
0.01KW为单位 |
Integer |
≤32 |
|
过功率报警 |
ovLoad |
0.01KW为单位 |
Integer |
≤32 |
|
欠压预警 |
uvp |
0.01V为单位 |
Integer |
≤32 |
|
欠压报警 |
uv |
0.01V为单位 |
Integer |
≤32 |
|
过压预警 |
ovp |
0.01V为单位 |
Integer |
≤32 |
|
过压报警 |
ov |
0.01V为单位 |
Integer |
≤32 |
|
过流预警 |
ocp |
0.1A为单位 |
Integer |
≤32 |
|
过流报警 |
oc |
0.1A为单位 |
Integer |
≤32 |
|
温度预警 |
otp |
0.1摄氏度为单位 |
Integer |
≤32 |
|
温度报警 |
ot |
0.1摄氏度为单位 |
Integer |
≤32 |
|
通用及单相字段,如果断路器为三相则必传 |
|||||
剩余电流预警 |
lep |
1mA为单位 |
Integer |
≤32 |
|
剩余电流报警 |
le |
1mA为单位 |
Integer |
≤32 |
|
过功率预警 |
ovLoadp |
0.01KW为单位 |
Integer |
≤32 |
|
过功率报警 |
ovLoad |
0.01KW为单位 |
Integer |
≤32 |
|
欠压预警 |
uvp |
0.01V为单位 |
Integer |
≤32 |
|
欠压报警 |
uv |
0.01V为单位 |
Integer |
≤32 |
|
过压预警 |
ovp |
0.01V为单位 |
Integer |
≤32 |
|
过压报警 |
ov |
0.01V为单位 |
Integer |
≤32 |
|
过流预警 |
ocp |
0.1A为单位 |
Integer |
≤32 |
|
过流报警 |
oc |
0.1A为单位 |
Integer |
≤32 |
|
温度预警 |
otp |
0.1摄氏度为单位 |
Integer |
≤32 |
|
温度报警 |
ot |
0.1摄氏度为单位 |
Integer |
≤32 |
|
过功率预警 |
opp |
0.1KW为单位 |
Integer |
≤32 |
|
过功率报警 |
op |
0.1KW为单位 |
Integer |
≤32 |
上行数据(网关回应)
MQTT包头 |
命令回复 |
上行JSON Payload字段:
功能 |
字段名 |
数据 |
备注 |
类型 |
字节数 |
结果 |
res |
"OK"或者"fail" |
固定 |
String |
≤32 |
原因 |
reason |
"bad command " |
仅出错时有效 |
String |
≤32 |
指令类型 |
packType |
"CBConfig" |
String |
≤32 |
|
版本 |
id |
92930 |
Integer |
≤16 |
注:网关收到该指令并正确解析后会立即发布回应消息(仅反映网关正确收到消息,不保证执行结果正确)
预定球场预定台球等等各种需要场地的运动都可以用类似的系统改吧改吧,下面就是当时拿羽毛球篮球的预定系统稍微修改修改,核心功能都是定场管理 订单管理 其他权限 会员 优惠券都是电商系统通用功能
点击“阅读原文”,官网B站视频版本~