果汁机文档

来自东骏科技波塞冬平台开发者文档
跳转至: 导航搜索

描述

规约

本文档所述的协议是用于东骏科技有限公司物联网服务平台和安卓型自动销售设备的数据交互。

客服(技术)联系方式

杭州东骏科技有限公司 电话:0571-87017551 手机:18657108036

兼容性

仅适用于授权设备。

缩略语

  • PDU(Protocol Data Unit) 协议数据单元
  • ADU(Application Data Unit) 应用数据单元
  • IOTCU(IOT Control Unit) 物联网控制单元
  • IOT(internet of things) 物联网
  • MB(Main Board) 本文特指售货机主板
  • IPC(Industrial Personal Computer) 本文特指安卓工控机
  • Server 本文特指东骏波塞冬物联网平台

通讯协议

 本章节内容定义通讯模块和服务器之间的通讯协议

通讯方式

  • 数据上报:String
  • 指令数据:定长报文
  • 通讯网络协议:TCP

协议框架

命令结构

   定义:服务器发送,通讯模块接收的数据报文。

①开始标识(1byte)“_”
②报文长度(3byte)(ASCII数字)
③命令(3byte)(英文大写,第一字节A未保留字段)
④会话ID(6byte)(第一字节0x00-0x3D之间数字+迁移量0x31)
⑤分隔符(1byte)“/”
⑥参数(如果没有则没有该部分)
⑦结束标识(2byte)(0x0D 0x0A)

响应结构

   定义:通讯模块发送,服务器接收的报文

①开始标识(1byte)“_”
②响应类型(2byte) PG-ping,DV-设备号(IMEI),ID-SIM卡ICCID号,CM-客户端命令,RP-数据上报,RS-命令响应, RJ-Json数据上报
③命令(3byte)(大写英文,回传服务器请求的命令,如果没有服务器请求则为AAA)
④会话ID(6byte)(无服务器会话ID则返回”000000”)
⑤内容长度(3byte)(ASCII数字)的长度
⑥内容(内容长度可以为空)
⑦结束标识(2byte)(0x0D 0x0A)

命令限制

  1. ADV(设备号IMEI号) AID(SIM卡ICCID号) AXT(心跳) AAA(空指令) 为系统内置命令不能用于其他接口
  2. 业务级别的接口命令不得用 A 开头

业务协议

设备启动指令

发送方 设备
说明 设备告知服务器已经启动,服务器收到该指令后,向设备发送补货二维码指令、商品信息指令、扫码支付二维码生成模板指令、售后电话指令。
开始标识(1byte) _
响应类型(2byte) RP
命令(3byte) UAJ
会话ID(6byte) A60100
内容长度(3byte) 不定长
内容(1byte) 1
结束标识(2byte) \r\n (0x0D 0x0A)

示例: _ RP BAJ A60100 001 1 \r\n

下发设备二维码

发送方 Server
说明 补货人员可通过扫描该链接生成的二维码进行补货。注意使用时不要直接放在设备上,只有补货人员才能唤醒使用
开始标识(1byte) _
报文长度(3byte) 不定长
命令(3byte) BAF
会话ID(6byte) 服务器生成
分隔符(1byte) /
参数 格式:

https://qa-mobile.supeeder.com/web-wechart/wechart/combo/choose?deviceNo=865501040780034

结束标识(2byte) \r\n (0x0D 0x0A)

示例: _105 BAF XAzu57 / https://qa-mobile.supeeder.com/web-wechart/wechart/combo/choose?deviceNo=865501040780034 \r\n


批量下发商品信息

发送方 服务器
说明 服务器将派样商品的条码下发给设备
开始标识 (1byte) _
报文长度 (3byte) 不定长
命令 (3byte) BAE
会话ID (6byte) 服务器生成
分隔符 (1byte) /
内容 JSON对象:

{"products":[{"ch":"货道号","bar":"商品条码","qty":库存数,"price":商品售价,"status":货道状态,"name":"商品名称","pic":"图片的路径","tmallProduct":"是否天猫派样商品","remark":"描述","adUrl":"线上商城二维码"}]}
说明:
货道号:字符串,货道的编号。
商品条码:字符串,设备中存储的商品条码。
库存数:整数,apk中当前的货道库存。
商品售价:整数,apk中存储的商品售价,以分为单位。
货道状态:整数枚举,0-正常,1-货空,2-未启用,3-不存在,4-故障。
商品名称: 字符串,商品的名称。
图片的路径:字符串,安卓工控主板用来向HTTP服务器索取图片的路径
是否天猫派样商品:字符串,Y-是天猫派样商品,N|无该属性-非天猫派样商品
线上商城二维码:图片路径

结束标识(2byte) \r \n (0x0D 0x0A)

批量下发商品应答

发送方 设备
说明 设备收到派样商品后响应结果
开始标识 (1byte) _
响应类型 (2byte) RS
命令 (3byte) BAE
会话ID (6byte) 服务器下发的会话id
内容长度 (3byte) 不定长
内容(30Byte) JSON对象:

{”result”:[{“ch”:”货道号”,“status”:更新成功与否,“reason”:错误原因}]}
说明:
货道号:字符串,货道的编号。
更新成功与否:枚举值,0-更新成功,1-更新失败。
错误原因:正数枚举,0-正常,1-库存不合规则,2-货道不存在,3-保存失败,4-图片无法取得

结束标识(2byte) \r \n (0x0D 0x0A)


服务端下发用于生成付款二维码的url模板

发送方 服务器
说明 服务端下发用于生成付款二维码的url模板。
开始标识(1byte) _
报文长度(3byte) 不定长
命令(3byte) SMT
会话ID(6byte) 服务器生成
分隔符(1byte) /
参数 格式:

URL模板 说明

结束标识(2byte) \r\n (0x0D 0x0A)

示例: _ 049 SMT WZa6HV / ${domain}/web-wechart/mobile/oa/ivem/pay/%s?path=PAY&source=SCAN&deviceNo=${DEVICENO}&productId=${PRODUCTID}&channel=${CHANNEL}&buyNum=${BUYNUM} \r\n

付款二维码的url模板接收响应

发送方 设备
说明 付款二维码的url模板立即同步返回响应
开始标识 (1byte) _
响应类型 (2byte) RS
命令 (3byte) SMT
会话ID (6byte) 服务器下发的会话id
内容长度 (3byte) 不定长
格式:

响应结果

说明:
结果: S-成功,F-失败

结束标识(2byte) \r \n (0x0D 0x0A)

示例: 接收成功 _ RS SMT 123456 001 S \r \n


服务端下发售后手机号

发送方 服务器
说明 服务端下发售后手机号。
开始标识(1byte) _
报文长度(3byte) 不定长
命令(3byte) SMP
会话ID(6byte) 服务器生成
分隔符(1byte) /
参数 格式:15311221122

说明

结束标识(2byte) \r\n (0x0D 0x0A)

示例: _ 027 SMT WZa6HV / 15311221122 \r\n

服务端下发售后手机号接收响应

发送方 设备
说明 服务端下发售后手机号立即同步返回响应
开始标识 (1byte) _
响应类型 (2byte) RS
命令 (3byte) SMT
会话ID (6byte) 服务器下发的会话id
内容长度 (3byte) 不定长
格式:

响应结果

说明:
结果: S-成功,F-失败

结束标识(2byte) \r \n (0x0D 0x0A)

示例: 接收成功 _ RS SMT 123456 001 S \r \n


服务端下发设备订单取消时长

发送方 服务器
说明 服务端下设备订单取消时长。
开始标识(1byte) _
报文长度(3byte) 不定长
命令(3byte) SMR
会话ID(6byte) 服务器生成
分隔符(1byte) /
参数 格式:时长

说明:
时长:正整数,订单若超过该值仍未处理,则进行取消订单操作,单位:分钟

结束标识(2byte) \r\n (0x0D 0x0A)

示例: _ 018 SMR WZa6HV / 10 \r\n

设备上报故障指令

发送方 设备
说明 设备上报故障指令。
开始标识(1byte) _
响应类型(2byte) RP
命令(3byte) UAJ
会话ID(6byte) A60101
内容长度(3byte) 不定长
内容(1byte)

格式:索引号#/#故障码 说明
#/#为分隔符 索引号:一段时间内唯一,防止重复上传或上传未收到
故障码:apk与平台约定的故障码
01:落杯故障
02:未取杯
03:防夹手开关异常
04:电机故障
05:水位故障
06:计数错误
07:杯盖错误
08:货槽到长槽错误
09:长槽到短槽错误
10:转盘错误
11:产品不合格
21:安卓客户端未知错误
22:货道不存在
23:货道售罄
24:下位机无反应
25:设备处于非空闲状态
99:驱动板相关未知错误

结束标识(2byte) \r\n (0x0D 0x0A)

示例: _ RP UAJ A60101 001 1#/#01 \r\n

平台响应设备故障上报

发送方 服务器
说明 服务器接收到设备故障上报,反馈给设备已经收到数据。
开始标识(1byte) _
报文长度(3byte) 不定长
命令(3byte) SMF
会话ID(6byte) 服务器生成
分隔符(1byte) /
参数 格式:索引号

说明
索引号:一段时间内唯一,防止重复上传或上传未收到

结束标识(2byte) \r\n (0x0D 0x0A)

示例: _ 018 SMF WZa6HV / 1 \r\n






平台请求出货

发送方 服务器
说明 服务器接收到销售订单并且支付成功后向通讯模块下发出货命令,要求设备出货。
开始标识(1byte) _
报文长度(3byte) 不定长
命令(3byte) ICH
会话ID(6byte) 服务器生成
分隔符(1byte) /
参数 格式:

货道号 #/# 出货数量 #/# 订单号 说明
#/#为分隔符 货道号: 一定和同步下来的货道号一致
出货数量: 和订单中的下单数量一致, 大于0小于当前库存
订单号: 系统生成订单的唯一标识

结束标识(2byte) \r\n (0x0D 0x0A)

示例: 货道110, 出货1个, 订单号12345678901234567890123 _ 049 ICH WZa6HV / 110#/#1#/#12345678901234567890123 \r\n

出货接收响应

发送方 设备
说明 设备接收到服务器下发的出货指令并确定能够处理时立即返回响应
开始标识 (1byte) _
响应类型 (2byte) RS
命令 (3byte) DAD
会话ID (6byte) 服务器下发的会话id
内容长度 (3byte) 不定长
格式:

响应结果

说明:
结果: S-成功,F-失败

结束标识(2byte) \r \n (0x0D 0x0A)

示例: 接收成功 _ RS ICH 123456 001 S \r \n

出货结果上报

    服务器通知出货以后设备出货,完成后上报出货结果。
  • 协议定义:
发送方 MB
接收方 Server
说明 设备反馈出货结果
命令(3byte) DAD
会话ID(6byte) A60102
参数 JSON格式:{“bill”:订单号,“ch”:货道号,“qty”:成功出货的数量,“result”:出货结果}
参数说明 货道号:字符串,货道的编号。

订单号:出货所关联的货道。
成功出货的数量:整数,成功出货的商品数量。
出货结果:整数枚举,00-出货成功,01-落杯故障,02-未取杯,03-防夹手开关异常,04-电机故障,05-水位故障,06-计数错误,07-杯盖错误,08-货槽到长槽错误,09-长槽到短槽错误,10-转盘错误,11-产品不合格,12-安卓客户端未知错误,13-货道不存在,14-货道售罄,15-下位机无反应,16-设备处于非空闲状态,17-部分出货,18-驱动板相关未知错误

出货结果上报响应

发送方 服务器
说明 服务器收到出货结果上报后回应设备, 如果没收到回应设备需要重新尝试上报出货结果
开始标识(1byte) _
报文长度(3byte) 不定长
命令(3byte) ICX
会话ID(6byte) 服务器生成
分隔符(1byte) /
参数 格式:

订单号#/#反馈结果
说明
#/#为分隔符
订单号: 系统生成订单的唯一标识
反馈结果:S - 成功 或者 F - 失败

结束标识(2byte) \r\n (0x0D 0x0A)

示例
订单号: 12345678901234567890123
反馈结果: 成功
_ 043 ICX 123456 / 12345678901234567890123#/#S \r\n