Referência de integração para terceiros

Liga a tua app a uma conta TigerSystem

A conta TigerSystem liga cada app e cada dispositivo. A tua app, o teu dispositivo ou o Home Assistant liga-se a ela nativamente através do Firebase: inicia sessão com as credenciais do próprio utilizador, lê as bobinas e as prateleiras dele no Firestore e volta a escrever os pesos.

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 }
Duração de um idToken: renova-o antes de expirar
1 hDuração de um idToken: renova-o antes de expirar
Intervalo mínimo de consulta recomendado
5 minIntervalo mínimo de consulta recomendado
Pré-aviso mínimo de descontinuação antes de um campo ser renomeado ou removido
3 mesesPré-aviso mínimo de descontinuação antes de um campo ser renomeado ou removido
Licença de cada excerto de código: cola-o no teu projeto, sem atribuição
Apache-2.0Licença de cada excerto de código: cola-o no teu projeto, sem atribuição

Como um cliente se liga ao TigerSystem

Todos os clientes seguem os mesmos quatro passos: obter a configuração pública do Firebase, iniciar sessão como o utilizador, chamar a API REST do Firestore com o token do utilizador e manter esse token atualizado.

Obter a configuração pública

Um único GET devolve a configuração do projeto Firebase. A apiKey é pública por conceção: identifica o projeto, não quem faz o pedido. Guarda-a em cache; basta atualizá-la semanalmente.

Iniciar sessão como o utilizador

O e-mail e a palavra-passe do utilizador devolvem um UID, um idToken de 1 hora e um refreshToken. O Google Sign-In requer navegador, por isso sem interface usa-se palavra-passe.

Ler e escrever no Firestore

Envia o idToken como token Bearer. As bobinas encontram-se em users/{uid}/inventory e as prateleiras em users/{uid}/racks; os pesos são gramas líquidas e as datas milissegundos Unix.

Sem conta de serviço

Todos os clientes iniciam sessão com as credenciais do próprio utilizador final. Nunca incluas o SDK firebase-admin nem qualquer chave de administrador num cliente de terceiros.

As Security Rules decidem

As Firestore Security Rules verificam cada pedido face ao utilizador autenticado: o dono lê e escreve os seus documentos, os amigos leem inventário e prateleiras, e o resto é recusado.

Um contrato público

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

Home Assistant

Um esboço de componente personalizado que expõe um sensor por bobina, com o peso restante em gramas como estado. O guia cobre também 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

Procura uma bobina pelo UID RFID lido (uid e, a seguir, twin_uid), calcula o peso líquido e escreve 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 assente no Pyrebase4: inicia sessão, lista as tuas bobinas e indica quantas bobinas tem cada amigo. O guia contém o script completo e um exemplo de execução.

Perguntas

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

Não. Todos os clientes iniciam sessão com o e-mail e a palavra-passe TigerSystem do próprio utilizador final, e as Firestore Security Rules determinam o que esse utilizador pode ler ou escrever. Não existe nenhuma chave de administrador partilhada, e o SDK firebase-admin nunca deve ser utilizado num cliente de terceiros.

Porque é que a apiKey do Firebase é pública?

A apiKey identifica o projeto Firebase, não quem faz o pedido. Sem um idToken válido, obtido ao iniciar sessão como um utilizador real, não dá acesso a nada; o controlo de acesso é assegurado pela autenticação e pelas Security Rules.

O Home Assistant ou um ESP32 podem iniciar sessão com o Google?

Não diretamente: o Google Sign-In requer um redirecionamento no navegador. Um utilizador que sempre usou apenas o Google define primeiro uma palavra-passe na conta TigerSystem, através da opção de palavra-passe esquecida do Tiger Studio Manager 2 ou do Tiger NFC Connect, e depois inicia sessão com e-mail e palavra-passe.

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

No máximo a cada 5 minutos para um sensor, a cada 15 minutos para uma vista geral das prateleiras, e nunca abaixo de 30 segundos. Uma balança só escreve quando um peso muda. As leituras de listas devem indicar um limite: 200 para o inventário, 50 para as prateleiras.

A minha integração pode ler as bobinas de um amigo?

Sim, apenas em leitura. Quando dois utilizadores são amigos, cada um tem um documento relativo ao outro em users/{uid}/friends, e as regras permitem que um amigo leia o inventário e as prateleiras. Qualquer um dos dois pode pôr fim à amizade a qualquer momento, o que corta o acesso de imediato.

Começa a tua integração

Escolhe o guia da tua plataforma e segue-o desde o início de sessão até à primeira leitura. O que está documentado é o que está implementado.

Iniciar uma integração