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

  1. Clique em Entrar no topo do site.
  2. Autentique-se ou crie uma conta (cadastro rápido com e-mail).
  3. Após o login, você será redirecionado para a página inicial.

Passo 2 — registrar um dispositivo

  1. Abra o menu Dispositivos.
  2. Clique em + Criar Dispositivo e informe Nome e, opcionalmente, Descrição.
  3. Salve. O dispositivo aparecerá na lista com um token exclusivo para envio de dados.
  4. 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

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.

Documentação | Open Sensor