dot eprint Quote/0

v1.0.0

控制 Dot. 电子墨水屏设备——查询状态、推送文本/图像、管理内容

0· 84·0 current·0 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for johnqxu/dot-eprint-controller.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "dot eprint Quote/0" (johnqxu/dot-eprint-controller) from ClawHub.
Skill page: https://clawhub.ai/johnqxu/dot-eprint-controller
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Required env vars: DOT_API_KEY, DOT_DEVICE_ID
Required binaries: curl, convert
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install dot-eprint-controller

ClawHub CLI

Package manager switcher

npx clawhub@latest install dot-eprint-controller
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
技能名/描述是控制 Dot. 设备;它只要求 curl(API 调用)和 convert(ImageMagick,用于图像预处理),以及 DOT_API_KEY 和 DOT_DEVICE_ID,这些与描述直接相关且数量合理。
Instruction Scope
SKILL.md 明确列出要调用的 API、请求头和参数、如何处理图像以及错误处理;没有指示读取与任务无关的系统文件或环境变量,也没有将数据发往与 Dot. 无关的远端地址。唯一需要注意的是图像上传会读取用户提供的本地图片路径($INPUT_IMAGE),这属于预期行为。
Install Mechanism
这是一个纯说明性技能(无安装脚本、无下载),仅在文本中建议如何安装 ImageMagick(brew/apt),没有写入磁盘或执行远程下载的安装步骤。
Credentials
仅要求 DOT_API_KEY(主凭据)和 DOT_DEVICE_ID,两者都是执行设备控制所需且合理的。没有请求其他不相关或过多的凭据。
Persistence & Privilege
技能不是 always:true,不修改其他技能或系统配置,默认允许模型调用(平台默认行为),权限范围与描述相符。
Assessment
这个技能在设计上是自洽的:它需要 DOT_API_KEY 和 DOT_DEVICE_ID 来控制设备,用 curl 与 dot.mindreset.tech 的 API 通信,并用 ImageMagick 处理图像。安装风险低(无自动下载或脚本)。在安装前请注意: - 确认 dot.mindreset.tech 是您信任的官方/第三方服务端点(API 密钥会授予远程控制设备的权限)。 - 不要向此技能或平台泄露不必要的 API 密钥;只使用为该设备专门生成的密钥。 - 推送图片会读取您本地提供的图像路径并将其以 base64 形式上传,确保您不会意外上传敏感图片。 - 如果您对域名或服务提供者不熟悉,可先在浏览器/厂商渠道核实该 API 的真实性再使用。

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

Binscurl, convert
EnvDOT_API_KEY, DOT_DEVICE_ID
Primary envDOT_API_KEY
latestvk9761gw00c8h2hyprqbfy1jef584fjrd
84downloads
0stars
1versions
Updated 2w ago
v1.0.0
MIT-0

Dot. 电子墨水屏设备控制

你可以通过 Dot. API 控制用户的电子墨水屏设备,包括查询状态、推送文本和图像内容、管理播放列表。

前置检查

在执行任何操作之前,必须确认环境变量已配置:

  • DOT_API_KEY — API 密钥(在 Dot. App 中获取)
  • DOT_DEVICE_ID — 设备序列号(在 Dot. App 中获取)

如果缺少任一变量,停止操作并提示用户:

  • 缺少 DOT_API_KEY:"请先设置 DOT_API_KEY 环境变量,您可以在 Dot. App 中获取 API 密钥"
  • 缺少 DOT_DEVICE_ID:"请先设置 DOT_DEVICE_ID 环境变量,您可以在 Dot. App 中获取设备序列号"

通用配置

  • Base URL: https://dot.mindreset.tech
  • 认证: 所有请求必须在 Header 中携带 Authorization: Bearer $DOT_API_KEY
  • 限流: API 限制每秒 10 次请求,避免短时间内连续发送多个请求

错误处理

每次 API 调用后,检查 HTTP 状态码。如果响应码非 200,按以下映射向用户展示友好提示:

HTTP 状态码用户提示
400请求参数有误,请检查内容格式
403认证失败,请检查 API 密钥或设备归属
404设备未找到,或未配置对应的内容类型
429请求过于频繁,请稍后再试
500服务器暂时异常,请稍后重试

使用 curl 的 -w 参数捕获状态码:-w "\n%{http_code}",解析最后一行判断是否成功。

1. 查询设备状态

当用户询问设备电量、WiFi 信号、当前显示内容等状态信息时使用。

curl -s -w "\n%{http_code}" \
  "https://dot.mindreset.tech/api/authV2/open/device/$DOT_DEVICE_ID/status" \
  -H "Authorization: Bearer $DOT_API_KEY"

响应字段说明:

  • status.battery — 电池状态(如 "充电中"、"50%")
  • status.wifi — WiFi 信号强度(如 "-62 dBm")
  • status.current — 当前状态描述(如 "电源活跃中")
  • status.description — 状态详细说明
  • status.version — 设备固件版本
  • renderInfo.last — 上次渲染时间
  • renderInfo.current.image — 当前显示的图片 URL 数组
  • renderInfo.current.rotated — 是否旋转
  • renderInfo.current.border — 当前边框设置
  • renderInfo.next.battery — 下次电量刷新时间
  • renderInfo.next.power — 下次电源刷新时间
  • alias — 设备别名
  • deviceId — 设备序列号

根据用户的具体问题,提取对应字段并用中文回复。如果用户问"设备怎么样",则展示完整状态摘要。

2. 列出设备内容

当用户想查看墨水屏上的内容列表时使用。

curl -s -w "\n%{http_code}" \
  "https://dot.mindreset.tech/api/authV2/open/device/$DOT_DEVICE_ID/loop/list" \
  -H "Authorization: Bearer $DOT_API_KEY"

将路径中的 loop 替换为 fixed 可查看固定内容。

响应为数组,每个元素包含:

  • type — 内容类型(TEXT_APIIMAGE_API
  • key — 任务唯一标识(用于更新指定内容时传递 taskKey)
  • refreshNow — 是否立刻显示
  • title / message — 文本内容的标题和正文(仅 TEXT_API 类型)
  • border / ditherType / ditherKernel — 图像内容参数(仅 IMAGE_API 类型)

将列表格式化为用户可读的格式展示,例如:

循环内容列表:
1. [文本] Hello - World (key: text_task_1)
2. [图像] (key: image_task_1, 抖动: DIFFUSION/FLOYD_STEINBERG)

3. 推送文本内容

当用户想在墨水屏上显示文字时使用。

curl -s -w "\n%{http_code}" \
  -X POST \
  "https://dot.mindreset.tech/api/authV2/open/device/$DOT_DEVICE_ID/text" \
  -H "Authorization: Bearer $DOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "refreshNow": true,
    "title": "标题",
    "message": "正文内容",
    "signature": "签名",
    "icon": "base64编码的PNG图标",
    "link": "https://example.com",
    "taskKey": "text_task_1"
  }'

参数说明:

  • refreshNow (bool, 默认 true) — 是否立刻刷新屏幕显示
  • title (string, 可选) — 文本标题
  • message (string, 可选) — 文本正文
  • signature (string, 可选) — 签名
  • icon (string, 可选) — base64 编码的 PNG 图标数据
  • link (string, 可选) — 碰一碰跳转链接
  • taskKey (string, 可选) — 指定要更新的内容槽位。不传则默认更新第一个文本内容

根据用户的意图选择参数:

  • 用户只提供一段文字 → 仅设 messagerefreshNow: true
  • 用户提供标题和内容 → 设 titlemessage
  • 用户要求签名 → 额外设 signature
  • 用户提到链接 → 额外设 link
  • 用户要更新特定内容 → 先调用列出内容 API 获取 taskKey,再设置 taskKey

成功时向用户确认:"文本已推送到墨水屏设备"。

4. 推送图像内容

当用户想在墨水屏上显示图片时使用。

4.1 图像预处理

推送图像前,必须先将图片处理为 296×152 像素的 PNG 格式并进行 base64 编码。

检查 ImageMagick 是否可用:

which convert 2>/dev/null

如果 convert 不存在,停止并向用户提示: "推送图片需要 ImageMagick,请先安装:brew install imagemagick(macOS)或 apt install imagemagick(Linux)"

图像处理命令:

TMPFILE=$(mktemp /tmp/dot-eprint-XXXXXX.png)
convert "$INPUT_IMAGE" -resize 296x152 -gravity center -background white -extent 296x152 PNG:"$TMPFILE"
BASE64_DATA=$(base64 -w 0 "$TMPFILE")
rm -f "$TMPFILE"

注意:

  • -resize 296x152 保持宽高比缩放
  • -gravity center -background white -extent 296x152 居中放置,空白区域填充白色
  • base64 -w 0 确保输出不换行(单行字符串)
  • 在 macOS 上使用 base64 -i 代替 base64 -w 0

4.2 推送图像

curl -s -w "\n%{http_code}" \
  -X POST \
  "https://dot.mindreset.tech/api/authV2/open/device/$DOT_DEVICE_ID/image" \
  -H "Authorization: Bearer $DOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "refreshNow": true,
    "image": "'"$BASE64_DATA"'",
    "link": "https://example.com",
    "border": 0,
    "ditherType": "DIFFUSION",
    "ditherKernel": "FLOYD_STEINBERG",
    "taskKey": "image_task_1"
  }'

参数说明:

  • refreshNow (bool, 默认 true) — 是否立刻刷新屏幕显示
  • image (string, 必填) — base64 编码的 PNG 图像数据(296×152)
  • link (string, 可选) — 碰一碰跳转链接
  • border (number, 默认 0) — 屏幕边框颜色,0=白色,1=黑色
  • ditherType (string, 默认 "DIFFUSION") — 抖动类型,可选值:
    • DIFFUSION — 误差扩散(默认,适合照片)
    • ORDERED — 有序抖动(规则网格感)
    • NONE — 关闭抖动(适合文字图像,文字更锐利)
  • ditherKernel (string, 默认 "FLOYD_STEINBERG") — 误差扩散算法,仅在 ditherType 为 DIFFUSION 时有效,可选值:
    • THRESHOLD, ATKINSON, BURKES, FLOYD_STEINBERG, SIERRA2, STUCKI, JARVIS_JUDICE_NINKE, DIFFUSION_ROW, DIFFUSION_COLUMN, DIFFUSION_2D
  • taskKey (string, 可选) — 指定要更新的内容槽位

推荐策略:

  • 照片/复杂图像 → ditherType: "DIFFUSION", ditherKernel: "FLOYD_STEINBERG"
  • 文字图像 → ditherType: "NONE"
  • 用户未指定 → 使用默认值即可

成功时向用户确认:"图像已推送到墨水屏设备"。

5. 切换到下一个内容

当用户想手动切换墨水屏显示到下一个内容时使用。

curl -s -w "\n%{http_code}" \
  -X POST \
  "https://dot.mindreset.tech/api/authV2/open/device/$DOT_DEVICE_ID/next" \
  -H "Authorization: Bearer $DOT_API_KEY"

此接口不需要请求体。成功时向用户确认:"已切换到下一个内容"。

Comments

Loading comments...