O Grafana já está na tela de muitas salas de engenharia. Ele plota CPU, memória, latência de requisições e profundidade de fila, e as equipes confiam nele. Então, quando os dados de sensores começam a aparecer, vindos de sondas de temperatura, hidrômetros ou medições de vibração de máquinas, o instinto natural é colocá-los no mesmo Grafana que todo mundo já acompanha. Só que o Grafana não coleta de um dispositivo, não armazena uma série temporal de leituras e não fala os protocolos que seu hardware usa. Ele desenha aquilo que uma fonte de dados entrega, e nada além disso. Por isso, a pergunta de verdade não é “o Grafana consegue plotar dados de IoT”, e sim “o que fica entre o dispositivo e o Grafana, fazendo a ingestão, o armazenamento e a API”. É exatamente nessa lacuna que a TagoIO se encaixa.
O que o Grafana realmente precisa de você
O Grafana lê. Ele se conecta a uma fonte de dados, executa uma query e renderiza painéis. Para infraestrutura, essa fonte de dados costuma ser o Prometheus ou um banco SQL que algo mais já está preenchendo. Para dados de IoT, você precisa oferecer a mesma coisa: um endpoint que o Grafana possa consultar e que retorne valores com timestamp.
O Grafana faz isso por meio de plugins de fonte de dados. O Infinity é a escolha comum para APIs REST arbitrárias. Ele consegue puxar JSON por HTTP, lidar com Bearer tokens e API keys, e converter uma resposta em linhas e séries temporais usando JQ ou UQL. Há também um plugin JSON API que faz um trabalho parecido. De um jeito ou de outro, o contrato é o mesmo: dê ao Grafana uma URL que retorne JSON, diga quais campos são o timestamp e o valor, e ele plota o resto.
O que nenhum desses plugins faz é conversar com seus sensores. Eles partem do princípio de que os dados já existem em algum lugar, com uma porta de entrada HTTP. Essa premissa é o trabalho inteiro, e é justamente a parte que o Grafana repassa para outro.
A parte antes do Grafana: ingestão e armazenamento
Um sensor em campo não emite JSON limpo sobre HTTPS por conta própria. Ele fala LoRaWAN por meio de um network server, ou NB-IoT, ou MQTT puro, ou então envia um payload específico do fabricante que precisa ser decodificado. Antes de qualquer coisa virar um gráfico, três coisas precisam acontecer:
- A leitura precisa ser recebida, o que significa lidar com o protocolo do dispositivo e com a rede pela qual ele trafega.
- O payload bruto precisa ser convertido em variáveis nomeadas, com unidades e timestamps.
- Os valores convertidos precisam ser armazenados como uma série temporal que você possa consultar depois, não apenas a última leitura.
Esse é o trabalho que a TagoIO faz. Os dispositivos se conectam por HTTP ou MQTT, com MQTT disponível na porta 1883 ou na 8883 sobre SSL. A TagoIO tem integrações para mais de 500 modelos e redes de dispositivos, então o tratamento do protocolo já está resolvido antes de você escrever qualquer linha. Um payload parser transforma os bytes brutos em variáveis como temperature ou fuel_level. Esses valores caem no armazenamento de série temporal, e cada registro carrega um time, um value, um nome de variable e, muitas vezes, uma unit. A configuração exata do connector e do parser está na docs.tago.io, e os passos variam conforme o dispositivo, então siga a documentação do seu hardware específico em vez de uma receita genérica.
A questão é que, quando o Grafana pede os dados, eles já existem, estão limpos e têm uma API na frente.
Expondo os dados da TagoIO para que o Grafana possa lê-los
A TagoIO tem uma API REST completa, e ler os dados de um dispositivo a partir dela é uma requisição GET. O endpoint é a URL regional de dados:
GET https://api.<region>.tago.io/data
A autenticação é um Device Token passado no header Authorization. Pela docs.tago.io, a requisição para puxar uma única variável fica assim:
https://api.<region>.tago.io/data?variable=temperature&qty=99
Você pode filtrar por janela de tempo com start_date e end_date, que aceitam strings ISO ou expressões relativas como 1 day. Você pode pedir apenas a última leitura com query=last_item. E pode solicitar várias variáveis de uma vez usando a sintaxe de array, variable[]=temperature&variable[]=pressure.
A resposta é um JSON com um array result, em que cada entrada carrega os campos que interessam ao Grafana:
{
"status": true,
"result": [
{
"id": "547e353d7dbf3af122c0257d",
"time": "2014-12-02T21:55:09.301Z",
"unit": "%",
"value": 32,
"variable": "fuel_level"
}
]
}
Esse formato se encaixa direto em uma query do Infinity ou do JSON API. A raiz é result, time é sua coluna de timestamp, value é a coluna numérica, e variable permite separar ou filtrar séries. Aponte a fonte de dados do Grafana para a URL de dados da TagoIO, configure o header Authorization com seu Device Token, defina a raiz como result e mapeie as colunas. A partir daí, é um painel normal do Grafana.
Vale checar alguns pontos honestos contra a documentação. A TagoIO aplica rate limits, então um dashboard que atualiza a cada poucos segundos em muitos painéis pode esbarrar neles. O qty padrão é pequeno, então defina-o explicitamente quando quiser um intervalo de tempo de verdade. E os tokens têm escopo, então pense em qual token uma instância compartilhada do Grafana deve guardar antes de colá-lo em uma fonte de dados.
Quando você não precisa do Grafana em cima da TagoIO
Esse caminho só vale a pena quando justifica a segunda ferramenta. A TagoIO tem seus próprios dashboards e widgets. Se a sua necessidade são gráficos de linha, medidores, mapas e tabelas sobre dados de dispositivos, os dashboards nativos já dão conta, e adicionar o Grafana significa rodar e manter outro sistema, gerenciar outro conjunto de credenciais e sincronizar duas definições do mesmo gráfico. São mais peças móveis para um resultado que você já tem.
O Grafana por cima faz sentido em casos específicos. Você está padronizando o Grafana entre as equipes e quer que os dados de IoT fiquem ao lado das métricas de infraestrutura, para que as pessoas olhem em um único lugar. Você precisa de um painel, regra de alerta ou plugin específico do Grafana que a TagoIO não oferece. Você está combinando leituras de IoT com fontes que não são de IoT em uma única visão do Grafana. Nesses casos, a ferramenta extra se paga. Se nenhum deles se aplica, fique na TagoIO e pule a integração.
Onde a TagoIO se encaixa
O Grafana é a camada de exibição, e ele é bom em ser a camada de exibição. O que ele não consegue fazer é tudo o que acontece antes de uma query retornar um JSON limpo: receber do dispositivo, decodificar o payload e manter uma série temporal consultável. A TagoIO faz esse trabalho e então expõe o resultado por uma API REST documentada, que é exatamente o tipo de fonte que os plugins do Grafana foram feitos para ler. Você mantém o Grafana como o vidro da frente e deixa a TagoIO ser a parte da stack que transforma hardware em dados.
Próximos passos
- Veja como puxar dados de dispositivo pela API: Obtendo dados na docs.tago.io
- Revise os tipos de token e seu escopo: Device Token na docs.tago.io
- Confira os detalhes de conexão MQTT se você prefere ingestão por streaming: Visão geral do MQTT na docs.tago.io
- Crie uma conta e conecte um dispositivo: tago.io


