Мини‑API для управления устройством Blink(1) через blink1-tool с токен‑авторизацией.
BLINK_API_TOKEN(обязательно) — токен для запросовBLINK_ENABLE_DOCS—1чтобы включить/docsBLINK1_TOOL_PATH— путь к бинарюblink1-tool(по умолчаниюblink1-tool)BLINK_COMMAND_TIMEOUT_S— таймаут вызоваblink1-tool(секунды)BLINK_DRY_RUN—1чтобы не трогать железо (для разработки)BLINK_EVENTS_MAXLEN— сколько последних событий хранить в памяти
Авторизация: Authorization: Bearer <token> или X-API-Token: <token>.
GET /healthz— без авторизацииPOST /v1/color— установить цвет (colorилиrgb, опциональноfade_ms)POST /v1/off— выключитьPOST /v1/pattern/pulse— пульсация (rgb,on_ms,off_ms,count)GET /v1/devices— сырой выводblink1-tool --listGET /v1/state— последняя команда/цветGET /v1/events— последние события (кольцевой буфер)
export TOKEN="..."
curl -X POST "http://127.0.0.1:8000/v1/color" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"color":"red","fade_ms":150}'
curl -X POST "http://127.0.0.1:8000/v1/pattern/pulse" \
-H "X-API-Token: $TOKEN" \
-H "Content-Type: application/json" \
-d '{"rgb":{"r":0,"g":255,"b":0},"count":5,"on_ms":120,"off_ms":120}'- Скопируй
.env.example→.envи заполниBLINK_API_TOKEN(иCLOUDFLARED_TOKEN, если используешь туннель). - Подключи Blink(1) по USB к хосту.
- Запусти из корня репозитория (где лежит
docker-compose.yml):
docker compose up -d --buildAPI будет доступен локально на http://127.0.0.1:8000 (и через Cloudflare Tunnel, если настроен).
Если порт занят — поменяй BLINK_API_PORT в .env (например на 8001).
Если ты находишься в другой папке (например, cd blink_api), запускай так:
docker compose --project-directory .. --env-file ../.env up -d --buildblink1-toolсобирается в Docker из исходников (в Ubuntu 24.04 нет пакетаblink1-toolвapt)- зависимости Python ставятся через
uv(uv sync --frozen --no-dev)
В docker-compose.yml включён privileged: true и проброшен /dev/bus/usb.
Если хочешь ужесточить — можно заменить на точечный devices: для /dev/hidrawX (зависит от системы/порта).
В docker-compose.yml cloudflared включается профилем tunnel:
docker compose --profile tunnel up -d --buildВ Cloudflare Zero Trust используй “token mode”:
- Создай туннель в Cloudflare Zero Trust и привяжи hostname к сервису
http://api:8000 - Вставь токен в
.envкакCLOUDFLARED_TOKEN
Альтернатива — конфиг‑файл: см. cloudflared/config.yml.example.
События для отслеживания
- CI/CD: build started/succeeded/failed, deploy started/succeeded/rolled back
- Мониторинг: host down/up, high CPU/RAM/disk, errors rate, latency SLO
- Бизнес: “новый заказ”, “платёж не прошёл”, “очередь растёт”, “нет консьюмера”
- Безопасность: много 401/403, подозрительные IP, смена токена, перезапуск контейнера
Схемы подсветки
green— всё ок / сервис healthyyellow— деградация / предупреждение (SLO на грани)red— инцидент / алертblue— деплой в процессеpurple— ручной режим / maintenance- Пульсация (pulse) — “идёт процесс”, короткие вспышки — “событие произошло”