Python API client for Quote/0 display device
Project description
Quote/0
A Quote/0 Client + Streamlit App and Notes about SSPAI's Quote/0
Firmware 1.6.x · client v0.2.0 targets the current
authV2open APIThe device had a major firmware update. The open API moved to
https://dot.mindreset.tech/api/authV2/open/device/{deviceId}/{image|text}(device id now in the URL path). The legacy/api/open/{image|text}endpoints are deprecated but still forward to the new API (no removal date announced).Quote0(...)defaults to authV2; passlegacy=Trueto use the old endpoints. Official docs source: https://github.com/MindReset/dot_web_docs (en-US/service/open/image_api.mdx,text_api.mdx).
Getting Started
- Connect Type-C
- Bind device in Mobile App
- Select content to show
- (optional) Request API key in App (and get Device ID) -> use API
- (optional) Setup
.env(follow.env.example)
- Update Software
- update firmware
- reset network
- reset device
NOTE: to test if the display is normal you can use the script checkerboard_gray.sh
CLI
# Install this package (core client is lightweight: requests + pydantic + pillow + tyro)
$ uv tool install quote0
# Optional extras:
# quote0[ui] Streamlit web app (streamlit, watchdog)
# quote0[examples] chart-rendering example scripts (matplotlib, numpy)
# Image API
# NOTE: the CHECKERBOARD_GRAY pattern is good to test if your monitor is defect
$ quote0 image --preset CHECKERBOARD_GRAY --api-key dot_app_.... --device-id ABCD1234ABCD
🖼️ Using preset image: checkerboard_gray
📤 Sending image to Quote/0 device... (border: WHITE)
✅ Image sent successfully!
# Text API with Environment Variable
export DOT_API_KEY=dot_app_....
export DOT_DEVICE_ID=ABCD1234ABCD
$ quote0 text --title Hello --message World
📤 Sending text to Quote/0 device...
✅ Text sent successfully!
Python
from quote0 import Quote0
client = Quote0(api_key="dot_app_...", device_id="ABCD1234ABCD") # authV2 by default
client.send_text(title="总市值 12.34M", message="持仓盈亏 +98,765", signature="14:31")
client.send_image(image_base64=b64, dither_type="DIFFUSION")
# new authV2 fields:
# send_text(..., styles={"fontSize": 18}, task_key=..., task_alias=...)
# send_image(..., task_key=..., task_alias=...)
# legacy endpoints (device id in body):
# Quote0(api_key, device_id, legacy=True)
Streamlit UI
uv sync --extra ui # or: pip install "quote0[ui]"
uv run streamlit run Streamlit_Playground.py
Todo
- Determine whether same API Key can control multiple Device ID
Notes / gotchas:
- authV2
404on push / screen doesn't change: the device needs an Open API content slot in its loop task, otherwise pushed content has nowhere to show. Add an Open API card to the device in the Dot App. - Rate limit is 10 requests/second; image payload max 3MB (base64) and
image/iconmay also be a publichttp(s)URL. - Somehow Image API's "link" didn't work => NFC is not working
Resources
API
- Docs site: 了解 API
- Docs source (Markdown, authoritative for endpoints/fields):
MindReset/dot_web_docs
en-US/service/open/image_api.mdx— authV2 image endpoint, dithering,taskKey/taskAliasen-US/service/open/text_api.mdx— authV2 text endpoint,styles, fonts,\n/\t
authV2 quick reference
| authV2 (default) | legacy (legacy=True, deprecated) |
|
|---|---|---|
| Image | POST /api/authV2/open/device/{deviceId}/image |
POST /api/open/image |
| Text | POST /api/authV2/open/device/{deviceId}/text |
POST /api/open/text |
| device id | URL path | request body (deviceId) |
| auth | Authorization: Bearer <DOT_API_KEY> |
same |
| rate limit | 10 req/s | 10 req/s |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file quote0-0.2.0.tar.gz.
File metadata
- Download URL: quote0-0.2.0.tar.gz
- Upload date:
- Size: 306.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
673c6f693baba577263189eda9869a5e90d42cf94905a3e5a56dec7cdce228bf
|
|
| MD5 |
6cac69474de465b05b8812cd841edbfe
|
|
| BLAKE2b-256 |
5a05f5fda5b69e16aea7a4fda5ac9cdcebdf0487f26ac15d4bc2046e694b4bff
|
File details
Details for the file quote0-0.2.0-py3-none-any.whl.
File metadata
- Download URL: quote0-0.2.0-py3-none-any.whl
- Upload date:
- Size: 14.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f437433526d9fa835bc76633afd7267bec68f8ec83b74b0ca7e7e1b868ca3f1
|
|
| MD5 |
dfb72b04a4f1985112d7cbbeddc0d519
|
|
| BLAKE2b-256 |
f57b276cf39317730e95ac4db22c186b109a84079858d3eb1d6c7e52e62918fc
|