> 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/mapa-de-distribuicao-de-pessoas.md).

# Mapa de Distribuição de Pessoas

Integração do mapa de distribuição de multidão via CGI: getCaps por canal, assinatura realtime (attach) em multipart streaming com heartbeat e consulta pontual do resumo atual (getSummary).

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

* Mantenha a conexão HTTP de assinatura **sempre ativa**, garantindo que o cliente esteja preparado para reconexão automática em caso de queda de rede.
* Utilize o campo **EventBaseInfo.Code** para identificar o tipo de evento e implementar tratamentos específicos para cada código no sistema assinante.
* Sempre valide o campo **EventBaseInfo.Action** (`Start`, `Stop` ou `Pulse`) antes de processar o evento, evitando interpretações incorretas do ciclo do evento.
* Ao lidar com múltiplos eventos simultâneos, utilize **GroupID**, **CountInGroup** e **IndexInGroup** para correlacionar corretamente eventos pertencentes ao mesmo grupo.

***

### Tabela de Parâmetros

<table><thead><tr><th>Name</th><th>Type</th><th width="84.2962646484375">R/O</th><th width="173.2962646484375">Description</th><th>Example</th></tr></thead><tbody><tr><td>CrowdStatData</td><td>object[]</td><td>R</td><td>Lista de áreas de detecção; cada área pode conter múltiplas regiões de contagem de pessoas</td><td>—</td></tr><tr><td>+Channel</td><td>uint</td><td>R</td><td>Canal de vídeo</td><td>1</td></tr><tr><td>+GloabalPeopleNum</td><td>uint</td><td>R</td><td>Número total de pessoas detectadas globalmente no canal</td><td>10</td></tr><tr><td>+RegionNum</td><td>uint</td><td>R</td><td>Quantidade de regiões configuradas</td><td>1</td></tr><tr><td>+RegionPeopleList</td><td>object[]</td><td>R</td><td>Lista de regiões de contagem de pessoas</td><td>—</td></tr><tr><td>++RegionID</td><td>uint</td><td>R</td><td>Identificador da região</td><td>0</td></tr><tr><td>++RegionName</td><td>char[128]</td><td>R</td><td>Nome da região</td><td>"xxx"</td></tr><tr><td>++Region</td><td>uint16[20][2]</td><td>R</td><td>Coordenadas da região</td><td>[10,10,0,100]</td></tr><tr><td>++RegionPeopleNum</td><td>uint</td><td>R</td><td>Número de pessoas detectadas na região</td><td>100</td></tr><tr><td>+CrowdEventNum</td><td>uint</td><td>O</td><td>Quantidade de eventos de multidão</td><td>2</td></tr><tr><td>+CrowdList</td><td>object[]</td><td>O</td><td>Lista de eventos de multidão</td><td>—</td></tr><tr><td>++Center</td><td>Point</td><td>R</td><td>Coordenada central do evento de multidão</td><td>[12,50]</td></tr><tr><td>++Radius</td><td>uint</td><td>R</td><td>Raio do evento de multidão</td><td>10</td></tr><tr><td>+RegionEventNum</td><td>uint</td><td>O</td><td>Quantidade de eventos de região</td><td>2</td></tr><tr><td>+RegionList</td><td>object[]</td><td>O</td><td>Lista de regiões que geraram alarme</td><td>—</td></tr><tr><td>++PeopleNum</td><td>uint</td><td>R</td><td>Estatística do número de pessoas na região</td><td>100</td></tr></tbody></table>

***

### Observações&#x20;

* Estatísticas dependem da iluminação e ângulo da câmera
* Grandes multidões podem reduzir precisão
* Uso contínuo pode impactar CPU do dispositivo
* Recomenda-se firmware atualizado

***

### Requisitos Técnicos

* Autenticação necessária (Basic ou Digest)
* Cliente deve suportar:
  * multipart/x-mixed-replace
  * conexão HTTP persistente
  * leitura contínua de stream
* Timeout recomendado: desabilitado ou alto
* Reconexão automática recomendada

***

### Obter Limites do Canal

**Tópicos:** Consulta as capacidades de cada canal em relação ao mapa de distribuição de multidão. O retorno informa quais canais suportam o recurso de estatística de público, permitindo que o sistema saiba onde a funcionalidade pode ser habilitada.

**Métodos: `GET`**` ``/cgi-bin/crowdDistriMap.cgi?action=getCaps`

Exemplo:

```http
http://<ip>/cgi-bin/crowdDistriMap.cgi?action=getCaps
```

**Resposta**:

```json
CrowdCapsList[0].channel=1 
CrowdCapsList[0].Support=true 
CrowdCapsList[1].channel=2 
CrowdCapsList[1].Support=false 
```

### Assinar Realtime Crowd Stat

**Tópicos:** Cria uma assinatura persistente para receber estatísticas de multidão em tempo real. A conexão permanece aberta enviando atualizações contínuas e mensagens de heartbeat para manter o vínculo ativo.

**Métodos: `GET`**` ``/cgi-bin/crowdDistriMap.cgi?action=attach`

Exemplo:

<pre class="language-http"><code class="lang-http"><strong>http://&#x3C;ip>/cgi-bin/crowdDistriMap.cgi?action=attach&#x26;channel=1&#x26;heartbeat=5
</strong></code></pre>

**Resposta**:

```http
HTTP/1.1 200 OK 
Content-Type: multipart/x-mixed-replace; boundary=<boundary> 
Connection: close 
 --<boundary> 
Content-Type: text/plain 
Content-Length: <data length> 
 
CrowdStatData[0].Channel=1 
CrowdStatData[0].GloabalPeopleNum =10 
CrowdStatData[0].RegionNum =1 
CrowdStatData[0].RegionPeopleList[0].RegionID=0 
CrowdStatData[0].RegionPeopleList[0].Region[0][0]=10 
CrowdStatData[0].RegionPeopleList[0].Region[0][1]=10 
CrowdStatData[0].RegionPeopleList[0].Region[1][0]=10 
CrowdStatData[0].RegionPeopleList[0].Region[1][1]=100 
… 
CrowdStatData[0].RegionPeopleList[0].RegionPeopleNum=100 
CrowdStatData[0].CrowdEventNum =2 
CrowdStatData[0].CrowdList[0].Center=2 
CrowdStatData[0].CrowdList[0].Radius=2 
CrowdStatData[0].RegionEventNum =2 
CrowdStatData[0].RegionList[0].Region[0][0]=10 
CrowdStatData[0].RegionList[0].Region[0][1]=10 
CrowdStatData[0].RegionList[0].Region[1][0]=10 
CrowdStatData[0].RegionList[0].Region[1][0]=100 
… 
CrowdStatData[0].RegionList[0].RegionID=0 
CrowdStatData[0].RegionList[0].PeopleNum=100 --<boundary> 
Content-Type: text/plain 
Content-Length: 11 
 
Heartbeat 
-<boundary> 
Content-Type: text/plain 
Content-Length: <data length> 
 
CrowdStatData[0].Channel=1 
```

### Obter Estatística Atual de Multidão

**Tópicos:** Retorna um snapshot único das estatísticas atuais de multidão do canal selecionado. Diferente da assinatura em tempo real, essa chamada apenas consulta o estado atual.

**Métodos: `GET`**` ``/cgi-bin/crowdDistriMap.cgi?action=getSummary`

Exemplo:

```http
http://<ip>/cgi-bin/crowdDistriMap.cgi?action=getSummary&channel=1
```

**Resposta**:

```json
CrowdStatData[0].Channel=1 
CrowdStatData[0].GloabalPeopleNum =10 
CrowdStatData[0].RegionNum =1 
CrowdStatData[0].RegionPeopleList[0].RegionID=0 
CrowdStatData[0].RegionPeopleList[0].Region[0][0]=10 
CrowdStatData[0].RegionPeopleList[0].Region[0][1]=10 
CrowdStatData[0].RegionPeopleList[0].Region[1][0]=10 
CrowdStatData[0].RegionPeopleList[0].Region[1][1]=100 
… 
CrowdStatData[0].RegionPeopleList[0].RegionPeopleNum=100 
CrowdStatData[0].CrowdEventNum =2 
CrowdStatData[0].CrowdList[0].Center=2 
CrowdStatData[0].CrowdList[0].Radius=2 
CrowdStatData[0].RegionEventNum =2 
CrowdStatData[0].RegionList[0].Region[0][0]=10 
CrowdStatData[0].RegionList[0].Region[0][1]=10 
CrowdStatData[0].RegionList[0].Region[1][0]=10 
CrowdStatData[0].RegionList[0].Region[1][0]=100 
… 
CrowdStatData[0].RegionList[0].RegionID=0 
CrowdStatData[0].RegionList[0].PeopleNum=100
```

***

Notas finais:

* O endpoint **getCaps** deve ser consultado antes de qualquer operação para garantir que o canal suporta estatísticas de multidão.
* Métodos com **attach** mantêm conexão persistente via multipart streaming, o cliente precisa suportar leitura contínua de dados.
* O parâmetro **heartbeat** é essencial para evitar timeout da conexão.
* O endpoint **getSummary** é ideal para consultas pontuais sem necessidade de streaming.
* As respostas incluem estruturas hierárquicas com regiões, eventos e contagens, recomenda-se parser robusto no cliente.
* Ferramentas HTTP comuns podem não lidar bem com multipart streaming; prefira clientes com suporte a stream contínuo.

***


---

# 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/mapa-de-distribuicao-de-pessoas.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.
