Criando uma medida
Este guia mostra, em português claro, como sair do zero e registrar uma nova medição na Open Sensor usando a API HTTP e um exemplo em Python.
Passo 1 — criar conta e entrar
- Clique em Entrar no topo do site.
- Autentique-se ou crie uma conta (cadastro rápido com e-mail).
- Após o login, você será redirecionado para a página inicial.
Passo 2 — registrar um dispositivo
- Abra o menu Dispositivos.
- Clique em + Criar Dispositivo e informe Nome e, opcionalmente, Descrição.
- Salve. O dispositivo aparecerá na lista com um token exclusivo para envio de dados.
- Use o botão Copiar token (no cartão ou na página de detalhes do dispositivo) para guardar o valor com segurança.
Cada dispositivo tem seu próprio token. Use o token correspondente ao sensor que está enviando a leitura.
Passo 3 — preparar a chamada HTTP
- Endpoint:
POST /v1/secure/measures - Autenticação: header
Authorization: Bearer <TOKEN_DO_DISPOSITIVO> - Conteúdo:
Content-Type: application/json - Localização: a plataforma espera longitude e latitude nesse formato
[lon, lat]. - Você pode enviar mais de uma medida no mesmo payload, incluindo múltiplos tipos na mesma requisição (ex.:
temperature+humidity). - Tipos e faixas aceitas:
- Temperatura:
type: "degC"— valores de -100.0 a 100.0 (veja guia de temperatura) - Umidade:
type: "%"— valores de 0.0 a 99.9 (veja guia de umidade) - Pressão:
type: "hPa"— valores de 800.0 a 1100.0 - Precipitação:
type: "mm"— valores de 0.0 a 100.0 - Velocidade do vento:
type: "m/s"— valores de 0.0 a 50.0
- Temperatura:
Exemplo em Python (requests)
import os
import requests
from datetime import datetime, timezone
API_BASE = os.environ["NEXT_PUBLIC_API_BASE_URL"]
TOKEN = "SEU_TOKEN_DO_DISPOSITIVO"
payload = {
"temperature": {
"value": 22.7,
"type": "degC",
"description": "Coleta automática",
"location": {
"type": "point",
"value": [-46.7218, -23.5607], # [longitude, latitude]
},
"timestamp": datetime.now(timezone.utc).isoformat(),
},
"humidity": {
"value": 54.2,
"type": "%",
"description": "Umidade do mesmo ponto",
"location": {
"type": "point",
"value": [-46.7218, -23.5607],
},
"timestamp": datetime.now(timezone.utc).isoformat(),
},
"wind": {
"value": 5.6,
"type": "m/s",
"description": "Rajada média 1min",
"location": {
"type": "point",
"value": [-46.7218, -23.5607],
},
"timestamp": datetime.now(timezone.utc).isoformat(),
},
}
response = requests.post(
f"{API_BASE}/v1/secure/measures",
headers={
"Authorization": f"Bearer {TOKEN}",
"Content-Type": "application/json",
},
json=payload,
timeout=10,
)
print(response.status_code, response.json())
Payload exemplo (temperatura)
{
"temperature": {
"value": 23.4,
"type": "degC",
"description": "Leitura a cada 5 minutos",
"location": {
"type": "point",
"value": [-46.7218, -23.5607]
},
"timestamp": "2025-12-18T14:30:00Z"
}
}
Com o token correto e o payload no formato acima, a API retornará 201 em caso de sucesso. Você pode incluir outros tipos de medida no mesmo corpo (como humidity no exemplo) e visualizar os dados na área de dispositivos ou nos gráficos do painel inicial.