Справочник по сторонним интеграциям

Подключи своё приложение к аккаунту TigerSystem

Аккаунт TigerSystem связывает каждое приложение и каждое устройство. Твоё приложение, устройство или Home Assistant подключается к нему напрямую через Firebase: входит с собственными учётными данными пользователя, читает его катушки и стеллажи в Firestore и записывает вес обратно.

GitHub ↗

$ GET  https://tigertag-cdn.web.app/__/firebase/init.json

POST https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key={apiKey}
     { "email": "user@example.com", "password": "…", "returnSecureToken": true }
Срок действия idToken: обновляй его до истечения
1 чСрок действия idToken: обновляй его до истечения
Рекомендуемый минимальный интервал опроса
5 минРекомендуемый минимальный интервал опроса
Минимальный срок предупреждения перед переименованием или удалением поля
3 месяцаМинимальный срок предупреждения перед переименованием или удалением поля
Лицензия каждого фрагмента кода: вставляй его в свой проект без указания авторства
Apache-2.0Лицензия каждого фрагмента кода: вставляй его в свой проект без указания авторства

Как клиент подключается к TigerSystem

Каждый клиент выполняет одни и те же четыре шага: получает публичную конфигурацию Firebase, входит от имени пользователя, вызывает Firestore REST API с токеном пользователя и поддерживает этот токен актуальным.

Получите публичную конфигурацию

Один GET-запрос возвращает конфигурацию проекта Firebase. apiKey публичен по замыслу: он идентифицирует проект, а не вызывающую сторону. Кэшируй его; обновления раз в неделю достаточно.

Войдите от имени пользователя

Собственные адрес электронной почты и пароль пользователя возвращают UID, idToken на 1 час и refreshToken. Google Sign-In требует браузера, поэтому клиенты без интерфейса используют пароль.

Чтение и запись в Firestore

Передавай idToken как Bearer-токен. Катушки хранятся в users/{uid}/inventory, стеллажи — в users/{uid}/racks; вес указывается нетто в граммах, даты — в миллисекундах Unix.

Без сервисного аккаунта

Каждый клиент входит с собственными учётными данными конечного пользователя. Никогда не включай firebase-admin SDK или какой-либо административный ключ в сторонний клиент.

Решают Security Rules

Firestore Security Rules проверяют каждый запрос относительно вошедшего пользователя: владелец читает и пишет свои документы, друзья читают инвентарь и стеллажи, всё остальное запрещено.

Публичный контракт

Пути документов и имена полей остаются стабильными. Переименование или удаление поля объявляется в журнале изменений минимум за 3 месяца; новые поля только добавляются.

Home Assistant

Набросок пользовательского компонента, который создаёт по одному датчику на катушку, с оставшимся весом в граммах в качестве состояния. Руководство также охватывает инвентари друзей, пагинацию и хранение токенов.

The TigerSystem apps and devices around one account

Весы на ESP32 или NFC-устройство

Найти катушку по считанному RFID UID (сначала uid, затем twin_uid), вычислить вес нетто и записать weight_available и last_update с маской обновления. Руководство завершается полным скетчем для ESP32 (WiFi, ArduinoJson).

Tiger NFC Connect on a phone

Скрипт на Python

Минимальный клиент на Python на основе Pyrebase4: он входит в аккаунт, выводит список твоих катушек и показывает, сколько катушек у каждого друга. Руководство содержит весь скрипт и пример запуска.

Вопросы

Нужен ли мне сервисный аккаунт или административный ключ?

Нет. Каждый клиент входит с собственными адресом электронной почты и паролем TigerSystem конечного пользователя, а Firestore Security Rules решают, что этому пользователю разрешено читать или записывать. Общего административного ключа нет, и firebase-admin SDK никогда не должен использоваться в стороннем клиенте.

Почему apiKey Firebase публичен?

apiKey идентифицирует проект Firebase, а не вызывающую сторону. Без действительного idToken, полученного при входе от имени реального пользователя, он не даёт доступа ни к чему; контроль доступа обеспечивается аутентификацией и Security Rules.

Может ли Home Assistant или ESP32 входить через Google?

Не напрямую: Google Sign-In требует перенаправления в браузере. Пользователь, который всегда входил только через Google, сначала задаёт пароль для аккаунта TigerSystem через функцию восстановления пароля в Tiger Studio Manager 2 или Tiger NFC Connect, а затем входит по адресу электронной почты и паролю.

Как часто моя интеграция может выполнять опрос?

Не чаще чем раз в 5 минут для датчика, раз в 15 минут для обзора стеллажей и никогда не чаще чем раз в 30 секунд. Весы записывают данные только при изменении веса. При чтении списков следует передавать limit: 200 для инвентаря, 50 для стеллажей.

Может ли моя интеграция читать катушки друга?

Да, только для чтения. Когда два пользователя дружат, у каждого есть документ о другом в users/{uid}/friends, и правила позволяют другу читать инвентарь и стеллажи. Любой из пользователей может в любой момент прекратить дружбу, что немедленно прекращает доступ.

Начни свою интеграцию

Выбери руководство для своей платформы и пройди его от входа до первого чтения. Что описано, то и развёрнуто.

Начать интеграцию