> 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/alarmes/1-descricao-isecnet-v1.md).

# 1 Descrição IsecNet V1

## Descrição do protocolo IsecNet V1

### Definições gerais

As centrais de alarme da Intelbras possuem conexão com a internet através de dois meios de comunicação:

1. Rede cabeada Ethernet/Wifi
2. Rede celular (GPRS, 3G, 4G)

Para os dois meios de comunicação, a conexão da central de alarme com o mundo exterior é feita através de um socket TCP/IP e a central pode se conectar com até dois softwares de monitoramento diferentes.

* O software de monitoramento irá atuar como servidor e deve disponibilizar uma porta para receber as conexões das centrais de alarme.
* Ao ser ligada, a central de alarme irá iniciar a conexão com o software de monitoramento conforme descrito na aba "2-Receber eventos" e irá manter essa conexão ativa indefinidamente. Para garantir que a conexão continua disponível, periodicamente será enviada uma mensagem de Heartbeat/KeepAlive/Teste de Link e, se não receber nenhuma resposta, será iniciada uma nova conexão com o software de monitoramento.

{% hint style="warning" %}
A comunicação entre central de alarmes e software é síncrona, isto é, para todo comando enviado deve haver uma resposta antes de enviar o próximo comando. É muito importante que essa regra seja respeitada a fim de não causar falhas devido ao não tratamento de pacotes concatenados. A central apenas trata 1 pacote por vez.
{% endhint %}

* Timeouts recomendados:
  * Rede cabeada Ethernet/WiFi: 15 segundos
  * Rede celular (GPRS, 3G, 4G): 45 segundos
* Os valores exibidos em todos os exemplos deste documento estão no formato hexadecimal. A notação `0x` é omitida para reduzir o tamanho do texto.

### Formato do protocolo

O protocolo IsecNet V1 foi desenvolvido pela Intelbras e os dados são enviados no formato binário/hexadecimal.

O frame padrão segue o formato abaixo:

| **Num Bytes** | **Comando** | **Dados**     | **ChkSum** |
| ------------- | ----------- | ------------- | ---------- |
| 1 byte        | 1 byte      | 0 a 200 bytes | 1 byte     |

**Num Bytes** — Número de bytes, representa a soma da quantidade de bytes dos campos Comando e Dados. Os campos ChkSum e Num Bytes não são incluídos na soma. Tamanho = 1 byte.

Exemplo 1: `(Num Bytes = 1 byte) + (Comando = 1 byte) + (Dados = 0 bytes) + (ChkSum = 1 byte)` — neste caso o frame é formado por 3 bytes, mas o número de bytes será enviado como `01`, pois representa a soma dos campos Comando + Dados: `1 byte + 0 byte = 01`.

Exemplo 2: `(Num Bytes = 1 byte) + (Comando = 1 byte) + (Dados = 20 bytes) + (ChkSum = 1 byte)` — neste caso o frame é formado por 23 bytes, mas o número de bytes será enviado como `15` (21 em hexadecimal), pois representa a soma dos campos Comando + Dados:

`1 byte + 20 bytes = 21 = 15`

**Comando** — Identifica a operação que será executada. Tamanho = 1 byte.

**Dados** — Dados necessários para a execução do Comando. O tamanho deste campo é variável de acordo com o Comando enviado. Tamanho: 0 a 200 bytes.

**ChkSum** — Ver descrição no item 1.3. Tamanho = 1 byte.

### Cálculo do Check Sum

O checksum do frame é calculado executando uma operação XOR entre todos os bytes do frame e um XOR com o valor `FF` ao final.

Este campo é utilizado para verificar a integridade dos dados enviados. Tamanho = 1 byte.

Exemplo: calcular o check sum do frame `02 D1 10`:

```
02 XOR D1 = D3

D3 XOR 10 = C3
```

Resultado XOR entre todos os bytes do frame.

Executar XOR com o valor `FF`:

```
C3 XOR FF = 3C
```

Frame final incluindo o checkSum:

```
02 D1 10 3C
```

Veja abaixo o exemplo de uma rotina de cálculo do checksum em linguagem C:

```c
uint8_t calculaCheckSum(uint8_t buffer[], uint8_t tamanho){

    uint8_t checkSum = 0;

    for(uint8_t contador = 0 ; contador < tamanho ; contador++){

        checkSum ^= buffer[contador];

    }

    checkSum ^= 0xFF;

    return checkSum;

}
```

Se tiver dúvidas, utilize a aba "A-Cálculo CheckSum" para verificar se o cheksum está sendo calculado corretamente. Basta preencher as células com o valor de cada byte enviado (em hexadecimal) e o checksum será cálculado automaticamente conforme exemplo existente.


---

# 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/alarmes/1-descricao-isecnet-v1.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.
