IoTsys
Menu

Documentacao

ESP32-CAM

Conecte uma camera ESP32-CAM ao IoTsys usando WebSocket autenticado, frames JPEG binarios e viewer protegido no navegador.

Fluxo de streaming

1. Camera

Crie um dispositivo do tipo Camera no painel para gerar usuario e senha do publisher.

2. Socket

O ESP abre wss://api.iotsys.com.br/camera_socket e autentica com JSON.

3. Frames

Apos receber ready, envia cada JPEG como mensagem WebSocket binaria.

4. Viewer

O navegador autentica com token temporario e recebe os mesmos frames em tempo real.

Endpoint e autenticacao

A primeira mensagem do ESP deve ser texto JSON. Credenciais nunca devem ir na URL.

wss://api.iotsys.com.br/camera_socket
{
  "role": "publisher",
  "device_id": {device_id},
  "username": "USUARIO_DO_DISPOSITIVO",
  "password": "SENHA_DO_DISPOSITIVO"
}

Resposta esperada:

{"type":"ready","role":"publisher"}

Firmware base

O repositorio inclui um firmware pronto em firmware/esp32-cam. Configure o arquivo iotsys_camera_config.h a partir do exemplo e grave com Arduino CLI.

cp firmware/esp32-cam/src/iotsys_camera_config.example.h \\
  firmware/esp32-cam/src/iotsys_camera_config.h

arduino-cli compile --fqbn esp32:esp32:esp32cam firmware/esp32-cam/src
arduino-cli upload -p /dev/cu.usbserial-XXXX --fqbn esp32:esp32:esp32cam firmware/esp32-cam/src
%>

Config recomendada

Comece com QVGA e 5 fps. Suba para VGA somente se a rede e a fonte de energia estiverem estaveis.

#define IOTSYS_WS_HOST "api.iotsys.com.br"
#define IOTSYS_WS_PORT 443
#define IOTSYS_DEVICE_ID {device_id}
#define IOTSYS_DEVICE_USERNAME "USUARIO_DO_DISPOSITIVO"
#define IOTSYS_DEVICE_PASSWORD "SENHA_DO_DISPOSITIVO"

#define IOTSYS_CAMERA_FRAME_SIZE FRAMESIZE_QVGA
#define IOTSYS_CAMERA_JPEG_QUALITY 12
#define IOTSYS_FRAME_INTERVAL_MS 200
%>

Trecho principal de envio

void sendFrame() {
  if (!authenticated || WiFi.status() != WL_CONNECTED) return;
  if (millis() - lastFrameAt < IOTSYS_FRAME_INTERVAL_MS) return;

  camera_fb_t *frame = esp_camera_fb_get();
  if (!frame) return;

  bool sent = webSocket.sendBIN(frame->buf, frame->len);
  esp_camera_fb_return(frame);
  lastFrameAt = millis();

  if (!sent) Serial.println("Falha ao enviar frame");
}
%>

Viewer autenticado

No painel do dispositivo Camera, clique em Abrir streaming. O IoTsys gera um token assinado temporario e o navegador se conecta ao mesmo /camera_socket como viewer. URLs de frame e MJPEG continuam disponiveis como fallback autenticado.

Ajustes de qualidade

Cenario Frame size JPEG Intervalo
Rede instavelFRAMESIZE_QQVGA16-20500-1000ms
Uso padraoFRAMESIZE_QVGA10-14200-300ms
Maior nitidezFRAMESIZE_VGA10-12400-800ms