> For the complete documentation index, see [llms.txt](https://portal-integracao.intelbras.com.br/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://portal-integracao.intelbras.com.br/cameras-and-gravadores/integracao-api-cftvip-e-mibo/cameras-e-gravadores/trafego-inteligente.md).

# Tráfego Inteligente

Integração de Tráfego Inteligente via Snap Subscription (HTTP multipart: key=value + JPEG) para receber eventos Traffic\* em tempo real.

## Dicas & Boas Práticas <a href="#dicas-and-boas-praticas" id="dicas-and-boas-praticas"></a>

* Utilize **apenas um tipo de fonte por tarefa** (LocalStream, RemoteStream, VideoFile ou PictureFile) para evitar conflitos de processamento.
* Endpoints com **streaming multipart** mantêm conexão persistente, o cliente deve suportar leitura contínua de dados.
* Sempre trate o **Heartbeat** para manter sessões vivas e evitar timeout.
* Teste regras, filtros e modelagens em **ambiente controlado** antes de produção.
* Libere recursos encerrando pesquisas com **stopFind** após uso do token.
* Operações assíncronas (multiAppend, reAbstract, groupReAbstract) devem ser acompanhadas por **status/token**.
* Verifique **capacidade de armazenamento** antes de importar grandes volumes de imagens.
* Padronize timestamps em **UTC** para evitar divergências de busca.
* Garanta qualidade/dimensões adequadas das imagens, modelagem falha é frequentemente causada por resolução inválida.

***

### Snap Subscription (Resumo)

Os eventos são recebidos através do mecanismo Snap Subscription.

* Protocolo: HTTP
* Formato de resposta: multipart
* Corpo textual: key=value
* Imagens: binário JPEG
* Conexão persistente

***

### Como Configurar na Câmera

1. Acessar interface Web do equipamento.
2. Ir ao menu de Análise de Tráfego.
3. Criar regra do tipo "Linha Virtual".
4. Definir:
   * Direção válida
   * Sensibilidade
   * Faixa monitorada
5. Salvar e habilitar a regra.

***

### Como Receber via API

1. Abrir assinatura de eventos (Snap Subscription).
2. Manter conexão HTTP ativa.
3. Processar resposta multipart.
4. Interpretar blocos textuais e imagens.

Formato da resposta: multipart.

***

### O que é o evento TrafficJunction?

É uma notificação automática enviada pela câmera quando um veículo passa por uma faixa monitorada.

Caso a câmera esteja instalada em um cruzamento.\
Sempre que um carro atravessa a faixa configurada, ela envia um evento contendo:

* Foto do veículo
* Foto da placa
* Número da placa
* Cor do veículo
* Velocidade
* Informações do condutor (se detectadas)

***

### O que vem dentro do evento?

#### 1. Dados do Veículo

| Informação | Exemplo |
| ---------- | ------- |
| Marca      | Audi    |
| Modelo     | A6      |
| Cor        | Azul    |
| Velocidade | 60 km/h |

#### 2. Dados da Placa

| Informação | Exemplo |
| ---------- | ------- |
| Número     | AC00003 |
| Cor        | Amarela |
| País       | Brasil  |

#### 3. Imagens

* Imagem da cena completa
* Imagem recortada da placa
* Imagem recortada do veículo

***

### Condição de Disparo

O evento é acionado quando:

* Um veículo atravessa a linha configurada
* A direção do movimento corresponde à regra definida
* A detecção atende aos critérios mínimos de confiança do sistema.

***

**Código do evento**

`TrafficJunction`

**Ação do evento**

`Start / Stop / Pulse`

**Index**

`0`

### Parâmetros do evento

<table><thead><tr><th>Name</th><th width="83.5555419921875">Type</th><th width="79.22216796875">R/O</th><th width="227.370361328125">Description</th><th>Example</th></tr></thead><tbody><tr><td>+GroupID</td><td>int</td><td>O</td><td>Identificador do grupo ao qual este evento pertence. Utilizado quando múltiplos eventos são gerados simultaneamente.</td><td>123</td></tr><tr><td>+CountInGroup</td><td>int</td><td>O</td><td>Quantidade total de eventos dentro do mesmo grupo.</td><td>3</td></tr><tr><td>+IndexInGroup</td><td>int</td><td>O</td><td>Posição deste evento dentro do grupo. A contagem inicia em 1.</td><td>1</td></tr><tr><td>+Lane</td><td>int</td><td>O</td><td>Número da faixa onde o veículo foi detectado. A numeração inicia em 0.</td><td>0</td></tr><tr><td>+TriggerType</td><td>int</td><td>O</td><td>Tipo de disparo do evento: 0–Laço indutivo (detector veicular), 1–Radar, 2–Análise de vídeo.</td><td>0</td></tr><tr><td>+Speed</td><td>int</td><td>O</td><td>Velocidade do veículo no momento da detecção, em km/h.</td><td>60</td></tr><tr><td>+Vehicle</td><td>object</td><td>O</td><td>Informações de identificação visual do veículo detectado.</td><td></td></tr><tr><td>++BoundingBox</td><td>int[4]</td><td>R</td><td>Área do veículo na imagem. Formato: [x1,y1,x2,y2], representando canto superior esquerdo e inferior direito. Coordenadas remapeadas na escala 0–8192.</td><td>[253,780,447,1000]</td></tr><tr><td>++Text</td><td>char[]</td><td>O</td><td>Marca identificada do veículo.</td><td>Audi</td></tr><tr><td>++SubText</td><td>char[]</td><td>O</td><td>Modelo identificado do veículo.</td><td>A6</td></tr><tr><td>++SubBrand</td><td>int</td><td>O</td><td>Índice interno correspondente à sub-marca/modelo.</td><td>5</td></tr><tr><td>++BrandYear</td><td>int</td><td>O</td><td>Índice interno referente ao ano ou geração do modelo.</td><td>2</td></tr><tr><td>+Object</td><td>object</td><td>R</td><td>Informações referentes à placa veicular detectada.</td><td></td></tr><tr><td>++Image</td><td>object</td><td>O</td><td>Metadados da imagem recortada da placa.</td><td></td></tr><tr><td>+++Offset</td><td>uint</td><td>O</td><td>Posição inicial da imagem dentro do bloco binário da resposta multipart.</td><td>125230</td></tr><tr><td>+++Length</td><td>uint</td><td>O</td><td>Tamanho da imagem em bytes.</td><td>10000</td></tr><tr><td>+++Width</td><td>uint</td><td>O</td><td>Largura da imagem da placa.</td><td>100</td></tr><tr><td>+++Height</td><td>uint</td><td>O</td><td>Altura da imagem da placa.</td><td>50</td></tr><tr><td>+TrafficCar</td><td>object</td><td>O</td><td>Informações consolidadas do reconhecimento do veículo e placa.</td><td></td></tr><tr><td>++PlateNumber</td><td>char[]</td><td>R</td><td>Número da placa reconhecida pelo sistema OCR.</td><td>AC00003</td></tr><tr><td>++PlateType</td><td>char[]</td><td>O</td><td>Tipo da placa identificada.</td><td>DoubleYellow</td></tr><tr><td>++PlateColor</td><td>char[]</td><td>O</td><td>Cor predominante da placa.</td><td>Yellow</td></tr><tr><td>++VehicleColor</td><td>char[]</td><td>O</td><td>Cor predominante do veículo.</td><td>Blue</td></tr><tr><td>++BoundingBox</td><td>int[4]</td><td>R</td><td>Área da placa dentro da imagem geral. Coordenadas remapeadas 0–8192.</td><td>[253,780,447,1000]</td></tr><tr><td>++Country</td><td>char[]</td><td>O</td><td>País de registro da placa. Tamanho máximo: 19 caracteres.</td><td>China</td></tr><tr><td>++Speed</td><td>int</td><td>O</td><td>Velocidade medida do veículo, em km/h.</td><td>60</td></tr><tr><td>++OriginalVehicle</td><td>object</td><td>O</td><td>Metadados da imagem recortada do corpo completo do veículo.</td><td></td></tr><tr><td>+++Offset</td><td>uint</td><td>R</td><td>Posição inicial no bloco binário da resposta.</td><td>1043085</td></tr><tr><td>+++Length</td><td>uint</td><td>R</td><td>Tamanho da imagem recortada em bytes.</td><td>218585</td></tr><tr><td>++Event</td><td>char[]</td><td>O</td><td>Nome do evento associado ao reconhecimento.</td><td>TrafficJunction</td></tr><tr><td>+CommInfo</td><td>object</td><td>O</td><td>Informações complementares relacionadas ao condutor e ocupantes dianteiros.</td><td></td></tr><tr><td>++Seat</td><td>object[]</td><td>O</td><td>Lista de informações dos assentos dianteiros.</td><td></td></tr><tr><td>+++Type</td><td>char[]</td><td>O</td><td>Tipo do assento: "Main" (motorista) ou "Slave" (passageiro dianteiro).</td><td>Main</td></tr><tr><td>+++Status</td><td>char[][]</td><td>O</td><td>Estados detectados do ocupante, como: "Smoking" (fumando) ou "Calling" (usando celular).</td><td>["Calling"]</td></tr><tr><td>+++SunShade</td><td>string</td><td>O</td><td>Status do para-sol: "Unknow", "WithSunShade", "WithoutSunShade".</td><td>WithSunShade</td></tr><tr><td>+++ShadePos</td><td>int[4]</td><td>O</td><td>Área do para-sol detectado na imagem, coordenadas remapeadas 0–8192.</td><td>[2021,3041,2151,3661]</td></tr><tr><td>+++SafeBelt</td><td>char[]</td><td>O</td><td>Status do cinto de segurança: "Unknow", "WithSafeBelt", "WithoutSafeBelt".</td><td>WithoutSafeBelt</td></tr><tr><td>+SceneImage</td><td>object</td><td>O</td><td>Informações da imagem geral da cena capturada.</td><td></td></tr><tr><td>++IndexInData</td><td>uint</td><td>O</td><td>Índice da imagem dentro do conjunto de imagens enviadas no multipart.</td><td>0</td></tr><tr><td>++Offset</td><td>uint</td><td>R</td><td>Posição inicial da imagem no bloco binário da resposta.</td><td>0</td></tr><tr><td>++Length</td><td>uint</td><td>R</td><td>Tamanho da imagem em bytes.</td><td>52000</td></tr><tr><td>++Width</td><td>uint</td><td>O</td><td>Largura da imagem da cena.</td><td>100</td></tr><tr><td>++Height</td><td>uint</td><td>O</td><td>Altura da imagem da cena.</td><td>50</td></tr></tbody></table>

**Exemplo Resposta (Sucesso):**\
Multipart, com dados textuais em `key=value` e imagens em binário.

```powershell
--<boundary>
Content-Type: text/plain
Content-Length: <length>

Events[0].EventBaseInfo.Code=TrafficJunction
Events[0].EventBaseInfo.Action=Pulse
Events[0].EventBaseInfo.Index=0
Events[0].GroupID=123
Events[0].CountInGroup=3
Events[0].IndexInGroup=1
Events[0].Lane=0
Events[0].Vehicle.BoundingBox[0]=1341
Events[0].Vehicle.BoundingBox[1]=2451
Events[0].Vehicle.BoundingBox[2]=4513
Events[0].Vehicle.BoundingBox[3]=4135
Events[0].Vehicle.Text=Audi
Events[0].Vehicle.SubText=A6L
Events[0].Vehicle.SubBrand=5
Events[0].Vehicle.BrandYear=2
Events[0].TrafficCar.PlateNumber=AC00003
Events[0].TrafficCar.PlateColor=Yellow
Events[0].TrafficCar.VehicleColor=Blue
Events[0].TrafficCar.Country=China
Events[0].CommInfo.Seat[0].Type=Main
Events[0].CommInfo.Seat[0].Status[0]=Smoking
Events[0].CommInfo.Seat[0].SunShade=WithSunShade
Events[0].CommInfo.Seat[0].SafeBelt=WithoutSafeBelt
--<boundary>
Content-Type: image/jpeg
Content-Length: <image size>

<JPEG binary data>
--<boundary>
```

### \[Evento] TrafficRetrograde

**Tópico**: Evento gerado quando um veículo trafega em sentido contrário ao fluxo configurado da via.

**Condição de Disparo**

* Veículo detectado cruzando linha virtual
* Direção oposta à configurada

**Código do evento**

`TrafficRetrograde`

**Ação do evento**

`Start / Stop / Pulse`

**Index**

`0`

### Parâmetros do evento

<table><thead><tr><th>Name</th><th width="83.5555419921875">Type</th><th width="79.22216796875">R/O</th><th width="227.370361328125">Description</th><th>Example</th></tr></thead><tbody><tr><td>+GroupID</td><td>int</td><td>O</td><td>Identificador do grupo ao qual este evento pertence. Utilizado quando múltiplos eventos são gerados simultaneamente.</td><td>123</td></tr><tr><td>+CountInGroup</td><td>int</td><td>O</td><td>Quantidade total de eventos dentro do mesmo grupo.</td><td>3</td></tr><tr><td>+IndexInGroup</td><td>int</td><td>O</td><td>Posição deste evento dentro do grupo. A contagem inicia em 1.</td><td>1</td></tr><tr><td>+Lane</td><td>int</td><td>O</td><td>Número da faixa onde o veículo foi detectado. A numeração inicia em 0.</td><td>0</td></tr><tr><td>+TriggerType</td><td>int</td><td>O</td><td>Tipo de disparo do evento: 0–Laço indutivo (detector veicular), 1–Radar, 2–Análise de vídeo.</td><td>0</td></tr><tr><td>+Speed</td><td>int</td><td>O</td><td>Velocidade do veículo no momento da detecção, em km/h.</td><td>60</td></tr><tr><td>+Vehicle</td><td>object</td><td>O</td><td>Informações de identificação visual do veículo detectado.</td><td></td></tr><tr><td>++BoundingBox</td><td>int[4]</td><td>R</td><td>Área do veículo na imagem. Formato: [x1,y1,x2,y2], representando canto superior esquerdo e inferior direito. Coordenadas remapeadas na escala 0–8192.</td><td>[253,780,447,1000]</td></tr><tr><td>++Text</td><td>char[]</td><td>O</td><td>Marca identificada do veículo.</td><td>Audi</td></tr><tr><td>++SubText</td><td>char[]</td><td>O</td><td>Modelo identificado do veículo.</td><td>A6</td></tr><tr><td>++SubBrand</td><td>int</td><td>O</td><td>Índice interno correspondente à sub-marca/modelo.</td><td>5</td></tr><tr><td>++BrandYear</td><td>int</td><td>O</td><td>Índice interno referente ao ano ou geração do modelo.</td><td>2</td></tr><tr><td>+Object</td><td>object</td><td>R</td><td>Informações referentes à placa veicular detectada.</td><td></td></tr><tr><td>++Image</td><td>object</td><td>O</td><td>Metadados da imagem recortada da placa.</td><td></td></tr><tr><td>+++Offset</td><td>uint</td><td>O</td><td>Posição inicial da imagem dentro do bloco binário da resposta multipart.</td><td>125230</td></tr><tr><td>+++Length</td><td>uint</td><td>O</td><td>Tamanho da imagem em bytes.</td><td>10000</td></tr><tr><td>+++Width</td><td>uint</td><td>O</td><td>Largura da imagem da placa.</td><td>100</td></tr><tr><td>+++Height</td><td>uint</td><td>O</td><td>Altura da imagem da placa.</td><td>50</td></tr><tr><td>+TrafficCar</td><td>object</td><td>O</td><td>Informações consolidadas do reconhecimento do veículo e placa.</td><td></td></tr><tr><td>++PlateNumber</td><td>char[]</td><td>R</td><td>Número da placa reconhecida pelo sistema OCR.</td><td>AC00003</td></tr><tr><td>++PlateType</td><td>char[]</td><td>O</td><td>Tipo da placa identificada.</td><td>DoubleYellow</td></tr><tr><td>++PlateColor</td><td>char[]</td><td>O</td><td>Cor predominante da placa.</td><td>Yellow</td></tr><tr><td>++VehicleColor</td><td>char[]</td><td>O</td><td>Cor predominante do veículo.</td><td>Blue</td></tr><tr><td>++BoundingBox</td><td>int[4]</td><td>R</td><td>Área da placa dentro da imagem geral. Coordenadas remapeadas 0–8192.</td><td>[253,780,447,1000]</td></tr><tr><td>++Country</td><td>char[]</td><td>O</td><td>País de registro da placa. Tamanho máximo: 19 caracteres.</td><td>China</td></tr><tr><td>++Speed</td><td>int</td><td>O</td><td>Velocidade medida do veículo, em km/h.</td><td>60</td></tr><tr><td>++OriginalVehicle</td><td>object</td><td>O</td><td>Metadados da imagem recortada do corpo completo do veículo.</td><td></td></tr><tr><td>+++Offset</td><td>uint</td><td>R</td><td>Posição inicial no bloco binário da resposta.</td><td>1043085</td></tr><tr><td>+++Length</td><td>uint</td><td>R</td><td>Tamanho da imagem recortada em bytes.</td><td>218585</td></tr><tr><td>++Event</td><td>char[]</td><td>O</td><td>Nome do evento associado ao reconhecimento.</td><td>TrafficJunction</td></tr><tr><td>+CommInfo</td><td>object</td><td>O</td><td>Informações complementares relacionadas ao condutor e ocupantes dianteiros.</td><td></td></tr><tr><td>++Seat</td><td>object[]</td><td>O</td><td>Lista de informações dos assentos dianteiros.</td><td></td></tr><tr><td>+++Type</td><td>char[]</td><td>O</td><td>Tipo do assento: "Main" (motorista) ou "Slave" (passageiro dianteiro).</td><td>Main</td></tr><tr><td>+++Status</td><td>char[][]</td><td>O</td><td>Estados detectados do ocupante, como: "Smoking" (fumando) ou "Calling" (usando celular).</td><td>["Calling"]</td></tr><tr><td>+++SunShade</td><td>string</td><td>O</td><td>Status do para-sol: "Unknow", "WithSunShade", "WithoutSunShade".</td><td>WithSunShade</td></tr><tr><td>+++ShadePos</td><td>int[4]</td><td>O</td><td>Área do para-sol detectado na imagem, coordenadas remapeadas 0–8192.</td><td>[2021,3041,2151,3661]</td></tr><tr><td>+++SafeBelt</td><td>char[]</td><td>O</td><td>Status do cinto de segurança: "Unknow", "WithSafeBelt", "WithoutSafeBelt".</td><td>WithoutSafeBelt</td></tr><tr><td>+SceneImage</td><td>object</td><td>O</td><td>Informações da imagem geral da cena capturada.</td><td></td></tr><tr><td>++IndexInData</td><td>uint</td><td>O</td><td>Índice da imagem dentro do conjunto de imagens enviadas no multipart.</td><td>0</td></tr><tr><td>++Offset</td><td>uint</td><td>R</td><td>Posição inicial da imagem no bloco binário da resposta.</td><td>0</td></tr><tr><td>++Length</td><td>uint</td><td>R</td><td>Tamanho da imagem em bytes.</td><td>52000</td></tr><tr><td>++Width</td><td>uint</td><td>O</td><td>Largura da imagem da cena.</td><td>100</td></tr><tr><td>++Height</td><td>uint</td><td>O</td><td>Altura da imagem da cena.</td><td>50</td></tr></tbody></table>

***

### \[Evento] TrafficJam

**Tópico**: Evento gerado quando é detectado congestionamento acima do limite configurado para a via monitorada.

**Condição de Disparo**

* Número de veículos acima do limite
* Velocidade média abaixo do limiar configurado

**Código do evento**

`TrafficJam`

**Ação do evento**

`Start / Stop`

**Index**

`0`

### Parâmetros do evento

<table><thead><tr><th>Name</th><th width="87.25927734375">Type</th><th width="76">R/O</th><th>Description</th><th>Example</th></tr></thead><tbody><tr><td>+StartJaming</td><td>int</td><td>O</td><td>Timestamp de início do congestionamento (UTC).</td><td>1680000000</td></tr><tr><td>+AlarmInterval</td><td>int</td><td>O</td><td>Intervalo de tempo entre alarmes consecutivos (segundos).</td><td>180</td></tr><tr><td>+JamLength</td><td>int</td><td>O</td><td>Percentual de ocupação da faixa (%).</td><td>70</td></tr><tr><td>+JamRealLength</td><td>int</td><td>O</td><td>Comprimento real estimado do congestionamento (metros).</td><td>120</td></tr></tbody></table>

Observações:

* Pode não conter informações de placa individual.
* Pode conter apenas SceneImage.

**Exemplo Resposta (Sucesso):**

```powershell
/--<boundary> 
Content-Type: text/plain 
Content-Length: <length> 
Events[0].EventBaseInfo.Code=TrafficJam 
Events[0].EventBaseInfo.Action=Pulse 
Events[0].EventBaseInfo.Index=0 
Events[0].GroupID=123 
Events[0].CountInGroup=3 
Events[0].IndexInGroup=1 
Events[0].Lane=0 
Events[0].StartJaming=123456789 
Events[0].AlarmInterval=180 
Events[0].JamLenght=70 
Events[0].JamRealLength=120 
… --<boundary> 
Content-Type: image/jpeg 
Content-Length: <image size> 
<Jpeg image data> --<boundary> 
```

***

### \[Evento] TrafficUnderSpeed

**Tópico**: Evento gerado quando um veículo trafega abaixo do limite mínimo de velocidade configurado.

**Condição de Disparo**

* Speed < limite mínimo

**Código do evento**

`TrafficUnderSpeed`

**Ação do evento**

`Start / Stop / Pulse`

**Index**

`0`

### Parâmetros do evento

<table><thead><tr><th width="208.88885498046875">Name</th><th width="85.77777099609375">Type</th><th width="66.62957763671875">R/O</th><th width="179.70361328125">Description</th><th>Example</th></tr></thead><tbody><tr><td>+SpeedLimit</td><td>int[2]</td><td>O</td><td>Limite configurado [mínimo, máximo].</td><td>[60,120]</td></tr><tr><td>+UnderSpeedingPercentage</td><td>int</td><td>O</td><td>Percentual abaixo do limite mínimo.</td><td>20</td></tr></tbody></table>

Demais campos seguem estrutura padrão do TrafficJunction.

**Exemplo Resposta (Sucesso):**

```powershell
--<boundary> 
Content-Type: text/plain 
Content-Length: <length> 
Events[0].EventBaseInfo.Code=TrafficUnderSpeed 
Events[0].EventBaseInfo.Action=Pulse 
Events[0].EventBaseInfo.Index=0 
Events[0].GroupID=123 
Events[0].CountInGroup=3 
Events[0].IndexInGroup=1 
Events[0].Lane=0 
Events[0].Vehicle.BoundingBox[0]=1341 
Events[0].Vehicle.BoundingBox[1]=2451 
Events[0].Vehicle.BoundingBox[2]=4513 
Events[0].Vehicle.BoundingBox[3]=4135 
Events[0].Vehicle.Text=Audi 
Events[0].Vehicle.SubText=A6L 
Events[0].Vehicle.SubBrand=5 
Events[0].Vehicle.BrandYear=2 
Events[0].TrafficCar.RecNo=123 
Events[0].SpeedLimit[0]=60 
Events[0].SpeedLimit[1]=120 
Events[0].UnderSpeedingPercentage=20 
… --<boundary> 
Content-Type: image/jpeg 
Content-Length: <image size> 
<Jpeg image data> --<boundary> 
```

***

### \[Evento] TrafficOverSpeed

**Tópico**: Evento gerado quando um veículo ultrapassa o limite máximo de velocidade configurado.

**Condição de disparo**

* Speed > limite máximo

**Código do evento**

`TrafficOverSpeed`

**Ação do evento**

`Start / Stop / Pulse`

`Index`

`0`

### Parâmetros do evento

<table><thead><tr><th width="211.7037353515625">Name</th><th>Type</th><th>R/O</th><th>Description</th><th>Example</th></tr></thead><tbody><tr><td>+SpeedLimit</td><td>int[2]</td><td>O</td><td>Limite configurado [mínimo, máximo].</td><td>[60,120]</td></tr><tr><td>+OverSpeedingPercentage</td><td>int</td><td>O</td><td>Percentual acima do limite máximo.</td><td>20</td></tr></tbody></table>

Demais campos seguem estrutura padrão do TrafficJunction.

**Exemplo Resposta (Sucesso):**

```powershell
--<boundary> 
Content-Type: text/plain 
Content-Length: <length> 
 
Events[0].EventBaseInfo.Code=TrafficOverSpeed 
Events[0].EventBaseInfo.Action=Pulse 
Events[0].EventBaseInfo.Index=0 
Events[0].GroupID=123 
Events[0].CountInGroup=3 
Events[0].IndexInGroup=1 
Events[0].Lane=0 
Events[0].Vehicle.BoundingBox[0]=1341 
Events[0].Vehicle.BoundingBox[1]=2451 
Events[0].Vehicle.BoundingBox[2]=4513 
Events[0].Vehicle.BoundingBox[3]=4135 
Events[0].Vehicle.Text=Audi 
Events[0].Vehicle.SubText=A6L 
Events[0].Vehicle.SubBrand=5 
Events[0].Vehicle.BrandYear=2 
Events[0].TrafficCar.RecNo=123 
Events[0].SpeedLimit[0]=60 
Events[0].SpeedLimit[1]=120 
Events[0].UnderSpeedingPercentage=20 
… --<boundary> 
Content-Type: image/jpeg 
Content-Length: <image size> 
<Jpeg image data> --<boundary> 
```

***

### \[Evento] TrafficPedestrain

**Tópico**: Evento gerado quando um pedestre é detectado em área monitorada.

**Condição de disparo**

* Objeto classificado como pessoa
* Dentro da área configurada

**Código do evento**

`TrafficPedestrain`

**Ação do evento**&#x20;

`Pulse`

**Index**

`0`

### Parâmetros do evento

<table><thead><tr><th>Name</th><th>Type</th><th width="67.25927734375">R/O</th><th width="210.629638671875">Description</th><th>Example</th></tr></thead><tbody><tr><td>+Vehicle</td><td>object</td><td>R</td><td>Informações do objeto detectado (pedestre).</td><td></td></tr><tr><td>++Category</td><td>char[]</td><td>R</td><td>Categoria fixa: "Passerby".</td><td>Passerby</td></tr><tr><td>++BoundingBox</td><td>int[4]</td><td>R</td><td>Área do pedestre na imagem (escala 0–8192).</td><td>[200,400,600,1200]</td></tr><tr><td>+SceneImage</td><td>object</td><td>O</td><td>Imagem geral da cena.</td><td></td></tr></tbody></table>

Observações:

{% hint style="info" %}
Formato:\
\[Left, Top, Right, Bottom]\
Baseado na resolução total da imagem.
{% endhint %}

* Não possui informações de placa.
* Não contém TrafficCar.
* Não contém dados de velocidade.

**Exemplo Resposta (Sucesso):**&#x20;

```powershell
--<boundary> 
Content-Type: text/plain 
Content-Length: <length> 
 
Events[0].EventBaseInfo.Code=TrafficPedestrain 
Events[0].EventBaseInfo.Action=Pulse 
Events[0].EventBaseInfo.Index=0 
Events[0].GroupID=123 
Events[0].CountInGroup=3 
Events[0].IndexInGroup=1 
Events[0].Lane=0 
Events[0].Vehicle.Category=Passerby 
Events[0].Vehicle.BoundingBox[0]=1341 
Events[0].Vehicle.BoundingBox[1]=2451 
Events[0].Vehicle.BoundingBox[2]=4513 
Events[0].Vehicle.BoundingBox[3]=4135 
…
-<boundary> 
Content-Type: image/jpeg 
Content-Length: <image size> 
 
<Jpeg image data> --<boundary> 
```

***

### \[Evento] TrafficParking

**Tópicos**: Evento gerado quando um veículo permanece estacionado além do tempo permitido na área monitorada.

**Condição de disparo**

* Tempo de permanência > limite configurado

**Código do evento**

`TrafficParking`

**Ação do evento**

`Start / Stop`

**Index**

`0`

### Parâmetros do evento

<table><thead><tr><th>Name</th><th width="94.66668701171875">Type</th><th width="88.3333740234375">R/O</th><th width="170.7408447265625">Description</th><th>Example</th></tr></thead><tbody><tr><td>+StartParking</td><td>int</td><td>O</td><td>Timestamp do início do estacionamento (UTC).</td><td>1680000000</td></tr><tr><td>+AlarmInterval</td><td>int</td><td>O</td><td>Intervalo entre notificações (segundos).</td><td>180</td></tr><tr><td>+ParkingAllowedTime</td><td>int</td><td>O</td><td>Tempo máximo permitido de permanência (segundos).</td><td>1600</td></tr></tbody></table>

Diferenças em relação ao TrafficJunction:

* Pode não conter Speed.
* Estrutura Vehicle / Object / TrafficCar permanece igual.

**Exemplo Resposta (Sucesso):**

```powershell
--<boundary> 
Content-Type: text/plain 
Content-Length: <length> 
 
Events[0].EventBaseInfo.Code=TrafficParking 
Events[0].EventBaseInfo.Action=Pulse 
Events[0].EventBaseInfo.Index=0 
Events[0].GroupID=123 
Events[0].CountInGroup=3 
Events[0].IndexInGroup=1 
Events[0].Lane=0 
Events[0].Vehicle.BoundingBox[0]=1341 
Events[0].Vehicle.BoundingBox[1]=2451 
Events[0].Vehicle.BoundingBox[2]=4513 
Events[0].Vehicle.BoundingBox[3]=4135 
Events[0].Vehicle.Text=Audi 
Events[0].Vehicle.SubText=A6L 
Events[0].Vehicle.SubBrand=5 
Events[0].Vehicle.BrandYear=2 
Events[0].TrafficCar.RecNo=123 
Events[0].StartParking=6538920 
Events[0].AlarmInterval=180 
Events[0].ParkingAllowedTime=1600 
… --<boundary> 
Content-Type: image/jpeg 
Content-Length: <image size> 
<Jpeg image data> --<boundary> 
```

***

### Fluxo Completo de Integração

1. Configurar regra na câmera
2. Habilitar evento
3. Abrir attach
4. Manter conexão viva
5. Processar multipart
6. Extrair texto
7. Salvar imagens
8. Encerrar conexão quando necessário

***

Notas Finais:&#x20;

1. **Mecanismo de Recebimento**\
   Todos os eventos `Traffic*` são enviados através do mecanismo **Snap Subscription**.
2. **Formato da Resposta**\
   As respostas são enviadas no formato `multipart`, contendo:
   * Parte textual em formato `key=value`
   * Parte binária com imagens JPEG\
     A aplicação cliente deve ser capaz de processar respostas multipart com conexão HTTP persistente.
3. **Estrutura Comum**\
   A maioria dos eventos compartilha a mesma estrutura base do `TrafficJunction`.\
   Eventos específicos apenas adicionam ou removem determinados parâmetros.
4. **Ações do Evento (Event Action)**
   * `Start` → Início de um evento contínuo
   * `Stop` → Fim de um evento contínuo
   * `Pulse` → Evento instantâneo
5. **Coordenadas BoundingBox**\
   O formato `BoundingBox[x]` segue a estrutura:\
   `[Left, Top, Right, Bottom]`\
   Baseado na resolução total da imagem capturada.
6. **Timestamps**\
   Campos como `StartParking` e `StartJaming` utilizam timestamp em **UTC (segundos)**.\
   Recomenda-se converter para o fuso horário local apenas na camada de apresentação.
7. **Campos Opcionais**\
   Alguns eventos podem não conter:
   * Informações de placa
   * Velocidade
   * Dados de TrafficCar\
     Dependendo do tipo de evento e da capacidade do equipamento.
8. **Boas Práticas de Integração**
   * Manter controle de reconexão automática da Snap Subscription.
   * Validar sempre `GroupID`, `CountInGroup` e `IndexInGroup`.
   * Tratar timeout de conexão.
   * Liberar recursos corretamente ao encerrar a assinatura.
   * Testar regras de detecção antes de uso em ambiente produtivo.

***


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://portal-integracao.intelbras.com.br/cameras-and-gravadores/integracao-api-cftvip-e-mibo/cameras-e-gravadores/trafego-inteligente.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
