Skip to main content

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 authV2 open API

The 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; pass legacy=True to 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

  1. Connect Type-C
  2. Bind device in Mobile App
  3. Select content to show
  4. (optional) Request API key in App (and get Device ID) -> use API
  5. (optional) Setup .env (follow .env.example)

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 404 on 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/ icon may also be a public http(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/taskAlias
    • en-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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

quote0-0.2.0.tar.gz (306.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

quote0-0.2.0-py3-none-any.whl (14.0 kB view details)

Uploaded Python 3

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

Hashes for quote0-0.2.0.tar.gz
Algorithm Hash digest
SHA256 673c6f693baba577263189eda9869a5e90d42cf94905a3e5a56dec7cdce228bf
MD5 6cac69474de465b05b8812cd841edbfe
BLAKE2b-256 5a05f5fda5b69e16aea7a4fda5ac9cdcebdf0487f26ac15d4bc2046e694b4bff

See more details on using hashes here.

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

Hashes for quote0-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3f437433526d9fa835bc76633afd7267bec68f8ec83b74b0ca7e7e1b868ca3f1
MD5 dfb72b04a4f1985112d7cbbeddc0d519
BLAKE2b-256 f57b276cf39317730e95ac4db22c186b109a84079858d3eb1d6c7e52e62918fc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page