Referência de integração para terceiros

Conecte seu app a uma conta TigerSystem

A conta TigerSystem liga cada app e cada dispositivo. Seu app, seu dispositivo ou o Home Assistant se conecta a ela nativamente pelo Firebase: faz login com as credenciais do próprio usuário, lê os carretéis e os racks dele no Firestore e grava os pesos de volta.

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 }
Validade de um idToken: renove-o antes que expire
1 hValidade de um idToken: renove-o antes que expire
Intervalo mínimo de consulta recomendado
5 minIntervalo mínimo de consulta recomendado
Aviso mínimo de descontinuação antes de um campo ser renomeado ou removido
3 mesesAviso mínimo de descontinuação antes de um campo ser renomeado ou removido
Licença de cada trecho de código: cole no seu projeto, sem atribuição
Apache-2.0Licença de cada trecho de código: cole no seu projeto, sem atribuição

Como um cliente se conecta ao TigerSystem

Todo cliente segue os mesmos quatro passos: buscar a configuração pública do Firebase, fazer login como o usuário, chamar a API REST do Firestore com o token do usuário e manter esse token válido.

Buscar a configuração pública

Um único GET retorna a configuração do projeto Firebase. O apiKey é público por design: identifica o projeto, não quem chama. Guarde-o em cache; basta atualizar toda semana.

Fazer login como o usuário

O e-mail e a senha do usuário retornam um UID, um idToken de 1 hora e um refreshToken. O Google Sign-In exige navegador, então clientes sem interface usam senha.

Ler e gravar no Firestore

Envie o idToken como token Bearer. Os carretéis ficam em users/{uid}/inventory e os racks em users/{uid}/racks; os pesos são gramas líquidos, e as datas, milissegundos Unix.

Nenhuma conta de serviço

Todo cliente faz login com as credenciais do próprio usuário final. Nunca distribua o SDK firebase-admin nem qualquer chave de administrador em um cliente de terceiros.

As Security Rules decidem

As Firestore Security Rules verificam cada requisição pelo usuário conectado: o dono lê e grava os próprios documentos, amigos leem inventário e racks, e o resto é negado.

Um contrato público

Os caminhos dos documentos e os nomes dos campos permanecem estáveis. Renomear ou remover um campo exige pelo menos 3 meses de aviso no changelog; campos novos são sempre aditivos.

Home Assistant

Um esboço de componente personalizado que expõe um sensor por carretel, com o peso restante em gramas como estado. O guia também cobre os inventários de amigos, a paginação e o armazenamento de tokens.

The TigerSystem apps and devices around one account

Uma balança ESP32 ou um dispositivo NFC

Localize um carretel pelo UID RFID lido (uid, depois twin_uid), calcule o peso líquido e grave weight_available e last_update com uma update mask. O guia termina com um sketch ESP32 completo (WiFi, ArduinoJson).

Tiger NFC Connect on a phone

Um script Python

Um cliente Python mínimo baseado no Pyrebase4: ele faz login, lista seus carretéis e mostra quantos carretéis cada amigo tem. O guia traz o script inteiro e um exemplo de execução.

Perguntas

Preciso de uma conta de serviço ou de uma chave de administrador?

Não. Todo cliente faz login com o e-mail e a senha TigerSystem do próprio usuário final, e as Firestore Security Rules decidem o que esse usuário pode ler ou gravar. Não existe chave de administrador compartilhada, e o SDK firebase-admin nunca deve ser usado em um cliente de terceiros.

Por que o apiKey do Firebase é público?

O apiKey identifica o projeto Firebase, não quem faz a chamada. Sem um idToken válido, obtido ao fazer login como um usuário real, ele não dá acesso a nada; o controle de acesso é feito pela autenticação e pelas Security Rules.

O Home Assistant ou um ESP32 podem fazer login com o Google?

Não diretamente: o Google Sign-In exige um redirecionamento no navegador. Um usuário que sempre usou apenas o Google primeiro define uma senha na conta TigerSystem, pelo fluxo de senha esquecida do Tiger Studio Manager 2 ou do Tiger NFC Connect, e depois faz login com e-mail e senha.

Com que frequência minha integração pode fazer consultas?

No máximo a cada 5 minutos para um sensor, a cada 15 minutos para uma visão geral dos racks, e nunca em menos de 30 segundos. Uma balança grava apenas quando um peso muda. As leituras de listas devem passar um limite: 200 para o inventário, 50 para os racks.

Minha integração pode ler os carretéis de um amigo?

Sim, somente leitura. Quando dois usuários são amigos, cada um tem um documento referente ao outro em users/{uid}/friends, e as regras permitem que um amigo leia o inventário e os racks. Qualquer um dos dois pode desfazer a amizade a qualquer momento, o que corta o acesso imediatamente.

Comece sua integração

Escolha o guia da sua plataforma e siga-o do login até a primeira leitura. O que está documentado é o que está em produção.

Começar uma integração