快递管理
BRT 面单 · 发货
待建面单 0
需人工处理 0
已建面单 0
已发货 0
延迟统计 📊
至
每页
订单管理
今日 —
同步中...
全部订单 0
普通订单 0
定制订单 0
备货区 0
打印车间 0
包装车间 0
已包装/已发货 0
已取消 0
至
每页
需要处理
所有订单
0
有问题
0
快速筛选
—
0
总计
0
已打印
0
已包装
0
已取消
所有批次
快速操作
⚠️
有渲染失败的订单
— QR下载和批次移动将跳过这些订单
已选 0 个
操作:
| 预览 | 打印文件 | 订单详情 | SKU | 销售渠道 | 件数 | 状态 | 批次日期 | 操作 | ||
|---|---|---|---|---|---|---|---|---|---|---|
⏳ 加载中... | ||||||||||
打印批次
每天 10:00 自动生成当日批次;可手动提前创建
所有批次
加载中...
批次详情
| SKU | 买家 | 状态 | 打印时间 | 装包时间 | 操作 |
|---|
产品配置
管理 ASIN → 渲染配置,新增产品时在这里设置
🖼 B类模板管理
加载中...
📦 供应商目录管理
产品渲染配置 0
| ASIN | SKU 前缀 | 款号 | 类型 | 画布 (inch) | 打印框 | B类模板 | 备注 | 操作 |
|---|---|---|---|---|---|---|---|---|
⏳ 加载中... | ||||||||
🔧 管理员
用户管理 · 权限设置 · 系统配置 · 审计日志
⚙️ 系统设置
时
分
👥 用户管理
加载中...
📋 操作审计日志
| 时间 | 用户 | 操作 | 目标 | IP |
|---|---|---|---|---|
| 加载中... | ||||
🛠 工程师后台
Amazon SP-API 合规 · PII 状态 · API 凭证
PII 数据保留
—
天前的订单仍含买家信息 (上限30天)
API 凭证
Amazon SP-API (EU)
Marketplace: Amazon.it
LAPHILO Studio
安全要求
✅ 密码 ≥8位 (要求12位)
✅ 角色权限分离
✅ 操作审计日志 (保留12个月)
✅ PII 自动删除 ≤30天
⚠️ Admin MFA (建议开启)
✅ Session 管理 (7天自动过期)
✅ 角色权限分离
✅ 操作审计日志 (保留12个月)
✅ PII 自动删除 ≤30天
⚠️ Admin MFA (建议开启)
✅ Session 管理 (7天自动过期)
API 权限范围
Orders API · Fulfillment
Inventory API · Buyer Communication
Direct-to-Consumer Shipping (PII)
BrandAnalytics · Product Listing
Inventory API · Buyer Communication
Direct-to-Consumer Shipping (PII)
BrandAnalytics · Product Listing
📜 Amazon SP-API 关键合规规定
✅ 数据保留
• PII 最多保留 30天
• 买家地址/姓名发货后自动删除
• AES-256 加密存储
• 买家地址/姓名发货后自动删除
• AES-256 加密存储
🚨 安全事件
• 发现漏洞 24小时内通知 Amazon
• security@amazon.com
• 联系人: Vivian · vyu.3eitaly@gmail.com
• security@amazon.com
• 联系人: Vivian · vyu.3eitaly@gmail.com
🔐 访问控制
• 最小权限原则
• 每用户唯一凭证
• 管理员强制 MFA
• 密码 12位+特殊字符
• 每用户唯一凭证
• 管理员强制 MFA
• 密码 12位+特殊字符
📊 合规扫描
• 每 30 天漏洞扫描
• 每年渗透测试
• 审计日志保留 12个月
• 每年渗透测试
• 审计日志保留 12个月
🖨️ 打印机 REST API 指南
Aeoon Technologies · devdoc.aeoon.com
💡
用一句话理解:打印机就像一个餐厅后厨
REST API 是你和后厨之间的对讲机。你用它告诉打印机「现在打印这件衣服」,打印机用 WebSocket 回复你「打好了」。
打印机默认只听
打印机默认只听
127.0.0.1:8080(本机),需要 SSH 通道才能从外部连接。
🔌 第一步:如何连接打印机
推荐方式 — SSH 隧道
在电脑终端输入这行命令:
类比:就像把打印机的端口「搬到」你的电脑上。
ssh -L 8080:127.0.0.1:8080 aeoon@打印机IP
然后就可以用 http://127.0.0.1:8080 访问打印机 API。类比:就像把打印机的端口「搬到」你的电脑上。
局域网直连方式
在打印机上创建配置文件:
⚠️ 只在可信内网使用,不要暴露到公网。
/home/aeoon/AeoonPrint/config/http.json
写入 "address": "0.0.0.0" 开放局域网访问。⚠️ 只在可信内网使用,不要暴露到公网。
🔑 第二步:身份认证
默认访客账号
不带任何 token 就是访客。
只能查看状态,不能发送打印任务。
只能查看状态,不能发送打印任务。
自定义 Token
生成 token:
配置文件:
存储的是 token 的 sha256 哈希值。
openssl rand -hex 32配置文件:
config/rest_users.json存储的是 token 的 sha256 哈希值。
发送方式
每次请求加上 header:
Authorization: Bearer <你的token>
⚙️ 核心功能一览
📊
查看打印机状态
Variables · GET 请求
问打印机基本信息:软件版本是多少、序列号是什么、运行的是哪个分支。
就像问「你现在运行的是哪个系统版本」。
就像问「你现在运行的是哪个系统版本」。
常用接口:
GET /api/v1/variables/softwareVersion → 软件版本
GET /api/v1/variables/serial → 打印机序列号
📋
查看打印队列
PrintQueue · GET 请求
查看打印机现在有哪些任务在排队,每个任务的图片名称、尺寸、颜色遍数等参数,还能拿到任务的预览图。
就像看餐厅后厨的「待制订单列表」。
就像看餐厅后厨的「待制订单列表」。
常用接口:
GET /api/v1/objects/main/printQueue → 主队列所有任务
GET /api/v1/objects/main/printQueue/{id}/preview → 预览图(PNG)
TableSlotLeft / Center / Right = 左/中/右工位
最核心功能
🚀
发送打印任务
POST /api/v1/functions/loadJobJson
把已 RIP 好的文件推送到打印机队列。这是「订单自动送进打印机」的核心步骤。
完整参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| JobFile | string ✱必填 | 文件名(相对于打印机的 order_jobs 文件夹)如 "out.prn" |
| Tag | string | 填订单号,方便识别哪个任务对应哪个订单 |
| ColorPasses | int | 颜色遍数,通常 2–4 遍。遍数越多颜色越饱和但速度越慢 |
| UnderbasePasses | int | 白墨打底遍数,深色/黑色衣服必须,白/浅色可为 0 |
| ColorAmount | float | 颜色墨量修正(1.0 = 100%,0.8 = 80%,1.2 = 120%) |
| UnderbaseAmount | float | 白墨墨量修正,同上。默认 1.0 |
| WaitAfterUnderbase | int (ms) | 白墨完成后等待时间(毫秒),让白墨干透再印颜色 |
| Worker | string | 指定工位:TableSlotLeft / TableSlotCenter / TableSlotRight |
| Position.X / Y | float (mm) | 图案中心偏移量(毫米),默认 0,0 |
| Position.Reference | string | 定位基准点,默认 "CenterCenter" |
| Bidirectional | bool | 双向打印(默认 true,速度快);false = 单向,精度更高 |
| Info | string | 显示在外接显示器上的备注信息 |
📡
实时监听打印事件
WebSocket · ws://打印机IP:8080/events
打印机打完一件衣服后,主动推送消息。不需要每几秒轮询,打完自动通知。
Python 接入代码(官方示例):
import websocket
def on_message(wsapp, message):
print(message) # {"Type":"...", "Data":{...}}
wsapp = websocket.WebSocketApp(
"ws://127.0.0.1:8080/events",
on_message=on_message
)
wsapp.run_forever()
🖼️ 打印文件如何送进打印机?
⚠️ 重要:REST API 不传文件本身,只传参数!
JobFile: "out.wrip" 只是一个文件名,打印机会在自己硬盘的 /home/aeoon/AeoonPrint/order_jobs/ 文件夹里找这个文件。所以你必须先把文件传到打印机,再调用 REST API 告诉它「去打这个文件」。
方法 A:SMB 网络共享 推荐
打印机开放一个 Windows 共享文件夹(Samba),你直接把文件复制进去,就像往 U 盘里拖文件一样。
类比:打印机的 order_jobs 文件夹挂载到你的电脑上
类比:打印机的 order_jobs 文件夹挂载到你的电脑上
方法 B:SCP / SFTP 传输
通过 SSH 把文件安全复制到打印机。需要打印机的 SSH 账号。
scp out.wrip aeoon@打印机IP:~/AeoonPrint/order_jobs/
方法 C:打印机本地存储
WhiteRIP 直接把文件输出到打印机的 order_jobs 文件夹(RIP 在打印机本机上运行时)。
这样就不用单独传文件了
这样就不用单独传文件了
完整流程(代码角度):
① 生成
PNG → WhiteRIP
→ out.wrip
→ out.wrip
→
② 传输文件
scp out.wrip
到 order_jobs/
到 order_jobs/
→
③ 调用 REST
POST loadJobJson
JobFile: "out.wrip"
JobFile: "out.wrip"
→
④ 打印机执行
读取文件
加入队列打印
加入队列打印
→
⑤ WebSocket
EventPrintFinished
自动更新订单
自动更新订单
⚖️ REST 与 OPC-UA 的区别
💡 关键结论:油墨参数两者完全通用
REST 文档只列了基础参数,但最后说「更多参数请看 OPC-UA 文档」。
实际上
实际上
loadJobJson 的 JSON 格式在两种接口里完全相同。ColorAmount、HeatPress、Spray 等所有参数 REST 都能用,只是文档没有逐一列出。
| 对比项目 | 🌐 REST(推荐) | 🔧 OPC-UA |
|---|---|---|
| 难度 | ✅ 简单,普通开发者都会用 | ❌ 复杂,工业协议,学习曲线陡 |
| 协议 | HTTP / WebSocket,任何语言都能用 | OPC TCP,需要专用库(asyncua 等) |
| 发送打印任务 | ✅ POST /api/v1/functions/loadJobJson | ✅ objects.call_method("loadJobJson") |
| JSON 参数格式 | ✅ 完全相同(含 ColorAmount、HeatPress 等) | ✅ 完全相同 |
| Worker 名称写法 | TableSlotLeft |
TableSlots.TableSlots.TableSlotLeft |
| 实时事件 | WebSocket(ws://IP:8080/events)推送 JSON | 原生事件订阅,内容相同 |
| 读取机器状态 | GET /components/{name} 查具体组件 | ✅ 更强:可订阅所有变量实时推送 |
| 认证 | Bearer Token(sha256 哈希) | 可选,文件配置(全有或全无) |
| HTTPS 支持 | ✅ 可配置证书开启 HTTPS | ✅ 可配置证书加密 |
| 官方推荐 | ✅ 新项目首选 | 适合工业集成场景 |
📨 WebSocket 事件类型完整说明
一次打印会依次触发多个事件。Tag 字段 = 你发送任务时填的订单号,是自动化的核心关联点。
① EventPrintStarted 开始打印
打印开始时触发一次。包含任务的完整配置信息。
{
"tag": "407-xxx", ← 你的订单号
"image": {
"name": "myjob.prn",
"size": {"width": 9449, "height": 7863}
},
"colors": {"passes": 2, "layers": 1},
"underbase": {"passes": 4, "layers": 1},
"bidirectional": true,
"tableslot": {
"pallet": "40x50",
"palletslot": "TableSlotLeft"
},
"printcount": 1,
"printed": 0
}
② EventPrintWorkerAction 打印进度
每一遍(pass)都会触发。4遍颜色 + 白墨 = 多条事件,可用于显示进度条。
{
"Action": "Printing pass 4 of 16",
"JobId": "0x55d9023601e0",
"JobTag": "407-xxx", ← 你的订单号
"Worker": "TableSlotLeft"
}
③ EventPrintFinished 打印完成 ⭐
最重要的事件。接到它 → 提取 tag(订单号)→ 自动把 vibe-print 订单状态改为「已打印」,无需人工扫码。
// 结构与 EventPrintStarted 相同
// 接到此事件后执行:
// PATCH /api/orders/{tag}/status → printed
④ EventCodeScanned 扫码枪事件
打印机内置扫码枪扫到条码时触发。Worker = 哪个工位扫的,Data = 扫到的内容。
{
"Worker": "TableSlotLeft",
"Data": "1556-88887468" ← 扫到的订单号/条码
}
⚠️ 注意:如果短时间内事件太多超过队列大小,服务器会先发一个 overflow 事件,然后把所有事件打包成一个数组发送。接入时需处理此情况(建议设置 queuesize=10 以上)。
📐 图案定位(Position)说明
⊞
CenterCenter
默认值。图案中心 = 托盘中心。(0,0) 就是正中间。
⬆
TopCenter
图案中心 = 托盘顶部居中(领口方向,靠近操作员那侧)。
↖
TopLeft
图案左上角 = 托盘左上角(领口左侧)。
↔↕
X / Y 偏移
X正 = 右移(操作员视角是左移)
Y正 = 下移(远离操作员)
Y正 = 下移(远离操作员)
🎨 墨量修正(ColorAmount / UnderbaseAmount)规则
核心规则:墨量修正与遍数(passes)是绑定的。1.0 = 「用 RIP 文件里设定的参数」。
• 如果 RIP 文件设定 2 遍,ColorAmount=1.0 = 100% 墨量用 2 遍
• 如果你把遍数减为 1 遍,最多只能达到 50% 墨量(modifier 最大 0.5)
• 如果你想 200% 墨量(modifier=2.0),必须把遍数从 2 设为 4
• 如果 RIP 文件设定 2 遍,ColorAmount=1.0 = 100% 墨量用 2 遍
• 如果你把遍数减为 1 遍,最多只能达到 50% 墨量(modifier 最大 0.5)
• 如果你想 200% 墨量(modifier=2.0),必须把遍数从 2 设为 4
ColorPasses=2, Amount=1.0
= 100% 墨量 × 2 遍
(标准配置)
(标准配置)
ColorPasses=1, Amount=0.5
= 50% 墨量 × 1 遍
(快速打印,颜色浅)
(快速打印,颜色浅)
ColorPasses=4, Amount=2.0
= 200% 墨量 × 4 遍
(超高饱和度)
(超高饱和度)
🔥 热压设置(HeatPress)
部分 Aeoon 机型内置热压单元,可在 loadJobJson 里配置三个阶段的热压动作:
HeatPressBeforePrint
打印开始前热压
(通常用于铺平衣物)
(通常用于铺平衣物)
HeatPressAfterUnderbase
白墨打完后热压
(让白墨快速固化)
(让白墨快速固化)
HeatPressAfterPrint
所有颜色印完后热压
(固化最终颜色)
(固化最终颜色)
每个阶段可配置的参数:
• Enabled:是否启用(默认 true,删除整个字段 = 不用)
• PreLift:预提升(默认 false)
• WaitTimeBeforePress:按压前等待(ms,悬停)
• PressTime:按压时间(ms)
• Pressure:按压压力(hPa)
• Cycles:循环次数(默认 1)
• CyclesWaitTime:循环间等待时间(ms)
🔍 实时查询打印机当前状态
查当前正在打印的任务
看某个工位上正在打印的是什么订单
GET /api/v1/objects/TableSlotLeft/Job
返回当前 job 的文件名、tag(订单号)、打印参数
查当前正在打印的预览图
直接在浏览器打开即可看到正在打印的图案
GET /api/v1/objects/TableSlotLeft/JobPreview
返回 PNG 图片,可直接在浏览器查看
查队列中某个任务的预览
用队列返回的 UUID 查对应的预览图
GET /api/v1/objects/printjobs/{id}/preview
无论在哪个队列都可以,id 从 printQueue 接口获取
查气压传感器等硬件状态
查看墨泵、气压、轴等底层硬件实时数据
GET /api/v1/components/AirPressureChannel0
返回 currentPressure / targetPressure / inktrapSensor 等
🗂️ 打印工位(TableSlot)说明
◀
TableSlotLeft
左工位
所有机型都有
所有机型都有
⬛
TableSlotCenter
中工位
仅 3 轴机型有
仅 3 轴机型有
▶
TableSlotRight
右工位
所有机型都有
所有机型都有
使用方式
• 不指定 Worker:任务进入 main 队列,打印机自动分配到有空的工位
• 指定 Worker:任务只发到该工位的队列
• 查询队列:
• 指定 Worker:任务只发到该工位的队列
• 查询队列:
GET /objects/main/printQueue 看总队列,或 GET /objects/TableSlotLeft/printQueue 看单个工位
🌐 查找打印机 IP 地址
在打印机上打开终端,执行以下命令查看局域网 IP:
$ ip addr show dev eth-company
6: eth-company: ...
inet 10.0.110.85/24 ...
← 这个就是打印机的 IP 地址
✅ 连接清单
☐ 联系 Aeoon 开 SSH 账号
☐ 确认打印机 IP(同一局域网)
☐ 测试 SSH tunnel 连通
☐ 生成 Token 写入 rest_users.json
☐ 确认 REST API 已开启(软件版本支持)
☐ 测试 GET /api/v1/variables/softwareVersion
☐ 测试 POST /api/v1/functions/loadJobJson
☐ 确认打印机 IP(同一局域网)
☐ 测试 SSH tunnel 连通
☐ 生成 Token 写入 rest_users.json
☐ 确认 REST API 已开启(软件版本支持)
☐ 测试 GET /api/v1/variables/softwareVersion
☐ 测试 POST /api/v1/functions/loadJobJson
🔄 vibe-print 与打印机的完整自动化流程
📦
Amazon
新订单
新订单
→
🎨
SVG 下载
渲染 PNG
渲染 PNG
→
⚙️
WhiteRIP
生成.wrip
生成.wrip
需确认是否支持自动化
→
🚀
REST API
推送到打印机
推送到打印机
loadJobJson
→
🖨️
打印机
自动打印
自动打印
→
📡
WebSocket
完成通知
完成通知
自动更新订单状态
⚠️ 当前缺少的环节: WhiteRIP 的自动化支持(PNG → .wrip 转换是否能通过命令行触发)需要向 Aeoon 技术支持确认。如果支持,整个流程可以做到完全无人干预。
📄 打印机支持的文件格式
.wrip 当前使用
WhiteRIP 输出格式。Aeoon 直接支持,无需额外配置。
.prn
通用 RIP 输出格式,Kothari Print Pro 等软件生成。
.mpng 测试用
MultiPNG 格式:每个颜色通道一张灰度 PNG,打包成 zip。
.tiff 测试用
600dpi,4bit/像素,支持 CMYK+白墨+底墨通道组合。
Hotfolder XML 旧方式
把 XML 文件丢进指定文件夹触发打印。已不推荐,REST 优先。
OPC-UA
工业协议,功能最全但最复杂。REST 是它的简化替代方案。
💰 财务库存
油墨成本 · 销售收入 · 质量统计 · 补货建议
⚙️ 参数设置
白墨价格(€/L,18L装)
彩墨价格(€/L)
包装费(€/单)
Amazon佣金(%)
当前白墨库存(L)
当前彩墨库存(L)
订货周期(工作日)
加载中...
📅 批次明细
| 日期 | 完成单数 | 总件数 | 白墨用量 | 彩墨用量 | 墨水成本 | 包装成本 | 销售收入 | 毛利润 |
|---|---|---|---|---|---|---|---|---|
| 加载中... | ||||||||
⚠️ 质量统计
加载中...
📦 补货建议
加载中...
📊 产能统计
加载中...
🖨️ DTG 定制订单
批量操作(已选 0 件):
🖋️ 本批次油墨用量:
—
加载中…