一、连接

连接id 和用户名为设备imei号

二、主题订阅

设备订阅主题为 topic/vending/client/{imei} imei:设备号

  1. 订单下发

    1. 设备端需保存多个订单信息(待出货、未同步的订单信息。服务端可能会出现上一个或未执行完执行下个订单的情况),接受到订单信息判断是否已经保存, 未保存是新订单。设置订单的状态,新建->已回复-出货->出货结果同步->同步成功。下发出货结果同步后订单才算结束,进行下个订单

    消息主体:{ “action”: “vending.out.goods”,

“data”: {

“tradeNo”:”4200001216202108191214389609”,

“payTime”:”2021-08-19 09:43:58”,

“id”:”608698250414391831629337426006”,

“amount”:1,

“imei”:”869825041439183”,

“cellNo”:”1”,

“price”:1

}

}

action: 消息操作类型 vending.out.goods 执行出货

id: 订单号

payTime: 订单支付时间

amount: 订单金额 单位:分

cellNo: 货道号

  1. 订单回复

设备收到出货指令后,出货前立即(其他任务暂停)回复服务器,表示设备收到订单

消息主体:{

action: “vending.out.received“,

id: “订单id”

}

  1. 出货结果上报

消息主题:{

cellStatus: 0, // 货道状态 1:故障 0:正常

statusCode: ‘10000’, // 出货结果码

  1. id: '608698250414391831629337426006', // 订单号
  2. action: 'vending.out.result', // vending.out.result 订单结果通知
  3. outTimes: 2593, // 出货耗时 单位 ms
  4. outStatus: 1 // 出货结果 0:失败 1:成功

}

outStatus 出货结果不表示货道故障或正常,有光栅的可能出现货道正常出货失败、货道故障出货成功

outTimes 出货耗时需根据驱动板返回信息计算得出

statusCode 前三位表示电机状态:

100:电机出货正常 101:电机断线 102:电机过流 103:电机超时

后2位表示光栅状态:

00:无光栅正常

01:光栅检测到出货 02:光栅故障 03:光栅未检测到出货 04:升降机故障 05:防盗版故障 06:取货门关不上

其他状态码:

10500:驱动板通信故障 10501:驱动板通信故障,启动失败 10502:驱动板通信故障,查询结果超时
  1. 二、设备信息上报

    设备连接时、信息改变时上报(信号值改变、温度等)设备信息

消息主体:{

network: 1, // 网络类型 1:wifi 2:gprs 默认2

action: ‘vending.connect.info’, // vending.connect.info 设备信息上报

version: ‘1.0.0’, // 设备软件版本

  1. connect: 1, // 串口通信状态 0:未连接 1:正常
  2. signal: 30, // 设备信号值 0~32

cardNo: ‘’89860469101981164089”, // 流量卡号

temp: 0, // 设备温度 默认0

hardware: 1, // 设备平台信息 1:单片机 2:android

expand: 0, // 拓展板数量

pattern:0, // 光栅状态 0 未知 1:正常 2:故障

light:[ “00:00”, “00:00”], // 灯条开启、关闭时间 时:分 第一个开启时间 第二个关闭时间

  1. }

三、设备信息更新

设备连接、重新连接后通知服务器获取设备信息, 以及空闲时间定时拉取 每隔1小时拉取一次

设备信息主体:{

  1. action: 'vending.cell.pull', // vending.cell.pull 货道拉取

}

服务器返回:{

  1. action: 'vending.cell.update', // vending.cell.update 设备信息更新

time: “20210821121210”, // 系统当前时间 2021-08-21 12:12:10

light:[ “00:00”, “00:00”], // 灯条开启、关闭时间 时:分 第一个开启时间 第二个关闭时间

}

四、支付二维码获取

设备选择货道, 货道可购买时请求服务器获取支付二维码,二维码分为支付宝、微信。设备端生成二维码唯一标识,根据返回标识判断返回的二维码是否是当前请求的二维码,若不一致或未收到回复提示用户重新操作。二维码获取超时时间设为3s,3s后未收到回复设备才可进行操作。

设备信息主体:{

  1. action: 'vending.cell.sell', // vending.cell.sell 获取支付二维码

cellNo:1, // 货道号

payType: 1, // 支付方式 1:微信 2:支付宝

id: “”, // 二维码获取唯一标识

}

服务器返回:{

  1. action: 'vending.sell.qrcode', // vending.sell.qrcode

qrcode: “二维码地址”, // 支付二维码

id: “”, // 二维码唯一标识

time: “20210821121210”, // 系统当前时间 2021-08-21 12:12:10

}

五、出货测试

测试信息主体:{

  1. action: 'vending.setting.test', //vending.setting.test 出货测试

“data”:{

“imei”:”865242054073251”,

“value”:1,// 货道号 货道号为0 表示一键测试

“id”:1723713766394// 测试唯一标识

}

}

接受返回:{

  1. action: 'vending.setting.<font style="color:#6a8759;">received</font>', // vending.cell.test.<font style="color:#6a8759;">received </font>接受返回

id: 1607777777, // 测试唯一标识

}

// 暂不对接结果返回

结果返回:{

  1. action: 'vending.setting.test.result', // vending.cell.test.result 出货测试结果

id: 1607777777, // 测试唯一标识

outCode:10000, // 出货结果code 和订单状态码类似

outTime: 10000, // 出货耗时 ms

}

六、温度设置

信息主体:{

  1. action: 'vending.setting.temp', // vending.setting.temp 温度设置 vending.setting.back 进入后台设置

value:1, // 温度值

id: 1607777777777, // 唯一标识

}

结果返回:{

  1. action: 'vending.setting.<font style="color:#6a8759;">received</font>', // vending.setting.<font style="color:#6a8759;">received</font> 温度设置返回

id: 1607777777777, // 唯一标识

}