> 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/linha-de-faciais/configuracao-de-credencial-controle-remoto/cadastrar-controle-remoto.md).

# Cadastrar Controle Remoto

O comando abaixo permite atribuir um ou mais controles remotos a um usuário ou a mais usuários.  Para cada Controle Remoto, é necessário informar o ID do usuário e seu respectivo código. O comando retorna um texto com o status da operação.\
\
Assim como o cadastro de cartão, não é possível atribuir um número de Controle Remoto para mais de um usuário.&#x20;

{% hint style="warning" %}
\- Para realizar o vínculo da credencial com o usuário, é necessário que o mesmo esteja cadastrado previamente - Os dados do Controle Remoto devem ser cadastrados em maiúsculas e em hexadecimal no dispositivo, exemplo: 12EA3004&#x20;

Obs.: Não é possível realizar o Update/Atualização do número do controle remoto, sendo necessário realizar a sua remoção e, após, a adição do novo controle remoto ao usuário. (1º SET - Remover Cartões, 2º SET - Cadastrar Cartões). Cadastro máximo de 10 cartões por chamada.
{% endhint %}

#### Requisição - POST

`http://192.168.1.201/cgi-bin/AccessWirelessCard.cgi?action=insertMulti`

#### Body - *application/json*

```json
  {
    "CardList": [
        {
            "UserID": "1",
            "CardName": "Teste123",
            "CardNo": "AA11BB22", // Wireless Card Number
            "KeyNumber": 2, // Intelbras Wireless Card model and ports that will be enabled => 1= bt100 | 2=EP02 | 4=EP4 
            "CardType": 0, // 0: Ordinary remote control, 1: VIP remote control, 2: Guest remote control, 3: Patrol remote control, 4: Blocklist remote control, 5: Duress remote control
            "CardStatus": 0, // Wireless Card Status. The same of the Card Status value
            "DoorForces": [  // Duress option per button | 0 = disabled | 1 = enabled
                0, // Button 1
                0, // Button 2
                0, // Button 3
                0 // Button 4
            ],
            "DoorReaders": [ // Door position to enable and open. The device will consider 04 doors (left to right), but the maximum to SS is 2 doors
                "1;0;0;0", // Button 1 - "1;" door 1 = 0: door disabled | 1: door enabled. || ";0;": door 2
                "1;0;0;0", // Button 2
                "0;0;0;0", // Button 3
                "0;0;0;0"  // Button 4
            ],
            "Doors": [ // 0: disabled | 1: enabled. This the button position to allow to open the door or not. 
                1, // Button 1
                1, // Button 2
                0, // Button 3
                0 // Button 4
            ],
            "DoorsOrAlarm": [
                0, // Button 1 - set if the button position will open the door or enabled alarm output. 0: Door | 1: AlarmOutput
                1, // Button 2
                0, // Button 3
                0 // Button 4
            ],
            "AlarmOutChannels": [
                0, // Button 1: Alarm Output to active by Wireless Card | 0 = disabled | 1 = enabled
                1, // Button 2: Alarm Output to active by Wireless Card | 0 = disabled | 1 = enabled
                0, // Button 3: Alarm Output to active by Wireless Card | 0 = disabled | 1 = enabled
                0 // Button 4: Alarm Output to active by Wireless Card | 0 = disabled | 1 = enabled
            ],
            "AlarmOutTime":[
                500, // Button 1: Time that the alarm output will keep enabled. The value is in miliseconds. The range will be 0~300 seconds. For retention operation (keep the alarm output enabled), should be used the value "0". 
                6000, // Button 2
                500, // Button 3
                500  // Button 4
            ]
        },
        {
            "UserID": "2",
            "CardName": "ABC123",
            "CardNo": "99CC8812",
            "KeyNumber": 2, 
            "CardType": 0, 
            "CardStatus": 0,
            "DoorForces": [
                0,
                0,
                0,
                0
            ],
            "DoorReaders": [
                "1;0;0;0",
                "1;0;0;0",
                "0;0;0;0",
                "0;0;0;0"
            ],
            "Doors": [
                1,
                1,
                0,
                0
            ],
            "DoorsOrAlarm": [
                0,
                1,
                0,
                0
            ],
            "AlarmOutChannels": [
                0,
                1,
                0,
                0
            ],
            "AlarmOutTime":[
                500,
                6000,
                500,
                500
            ]
        },
        {
            "UserID": "3",
            "CardName": "DFG231",
            "CardNo": "708001",
            "KeyNumber": 2,
            "CardType": 0,
            "CardStatus": 0,
            "DoorForces": [
                0,
                0,
                0,
                0
            ],
            "DoorReaders": [
                "1;0;0;0",
                "1;0;0;0",
                "0;0;0;0",
                "0;0;0;0"
            ],
            "Doors": [ 
                1,
                1,
                0,
                0
            ],
            "DoorsOrAlarm": [
                0,
                1,
                0,
                0
            ],
            "AlarmOutChannels": [
                0,
                1,
                0,
                0
            ],
            "AlarmOutTime":[
                500,
                6000,
                500,
                500
            ]
        }
    ]
}
```

<table><thead><tr><th>param</th><th>type</th><th width="369">description</th></tr></thead><tbody><tr><td><code>UserID</code> *</td><td>Number</td><td>ID do Usuário</td></tr><tr><td><code>CardNo</code> *</td><td>String</td><td>Número do Controle Remoto</td></tr><tr><td><code>KeyNumber</code> *</td><td>Number</td><td>Tipo de Controle remoto que será utilizado, <code>1: BT100</code>; <code>2: EP02</code>; <code>4: EP04</code></td></tr><tr><td><code>CardType</code> *</td><td>Number</td><td>Tipo do Cartão <code>0: Ordinary card</code>, <code>1: VIP card</code>, <code>2: Guest card</code>, <code>3: Patrol card</code>, <code>4: Blocklist card</code>, <code>5: Duress card</code></td></tr><tr><td><code>CardStatus</code> *</td><td>Number</td><td>Status do Cartão <code>0: Normal</code>, <code>1: Cancelado</code>, <code>2: Congelado</code></td></tr><tr><td><code>DoorForces</code> *</td><td>Number</td><td>Habilita coação para o botão  do controle remoto <code>0: Desabilitado</code>, <code>1: Habilitado</code></td></tr><tr><td><code>DoorReaders</code> *</td><td>String</td><td><p>Habilita a posição do botão para abrir a porta. <br>Sua estrutura é formada para quatro portas para cada botão, separadas por ":" (dois pontos).<br><br>Porém, para os controladores de acesso facial (linha SSxx), suportará somente 2 portas. </p><p><br>Portanto, a representação por botão poderá ser no máximo "1:1:0:0", sendo  <code>0: Desabilitado</code>, <code>1: Habilitado</code></p><p><br>""1:1:0:0", sendo da esquerda para a direita "Porta1:Porta2:Porta3:Porta4"<br><br><img src="https://1174315854-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0fFSkomZ6y6jtuI5J4qq%2Fuploads%2FpH5W2a0wHbeo9fVDAXZU%2Fimage.png?alt=media&amp;token=d21a1621-e069-4d40-82fe-a202eecc9b0e" alt=""></p></td></tr><tr><td><code>Doors</code> *</td><td>Number</td><td><p>Habilita o botão para permitir acionar o relé de porta, por botão, sendo  <code>0: Desabilitado</code>, <code>1: Habilitado</code></p><p></p><p><img src="https://1174315854-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0fFSkomZ6y6jtuI5J4qq%2Fuploads%2FehSF33zSJUtsQ696Ubqo%2Fimage.png?alt=media&amp;token=3c99d18b-d29c-4981-aa76-5f6d3fc6be65" alt="" data-size="original"></p></td></tr><tr><td><code>DoorsOrAlarm</code> *</td><td>Number</td><td>Define se o botão será usado para acionar o relé de porta ou saída de alarme, sendo  <code>0: Porta(Door)</code>, <code>1: Saída de Alarme(AlarmOut)</code><br><br>Não é possível manter ambos ativos para o mesmo botão.</td></tr><tr><td><code>AlarmOutChannels</code> *</td><td>Number</td><td>Habilita o botão para uso da "Saída de Alarme", sendo  <code>0: Desabilitado</code>, <code>1: Habilitado</code></td></tr><tr><td><code>AlarmOutTime</code> *</td><td>Number</td><td>Tempo em milisegundos que a saída de alarme permanecerá ativada. A faixa é de 0 a 300000 milisegundos, sendo que o valor "0" manterá retido a saída de alarme até que o botão seja pressionado novamente.</td></tr></tbody></table>

Permitido no máximo 10 controles remotos por requisição.

{% hint style="info" %}
Deve atentar-se aos campos *Doors, DoorsOrAlarm* e *AlarmOutChannels* para que seja feita a correta configuração, ou seja, observar a posição do botão e habilitação correta para o uso da saída correspondente (porta ou saída de alarme).
{% endhint %}

#### Exemplo de Retorno - *text/plain*

```sh
OK
```

#### Exemplos

{% tabs %}
{% tab title="Python" %}

```python
import requests

device_ip = '10.1.35.144'
username = 'admin'
password = 'admin4321'
 
CardList = (
 
       {
    "CardList": [
        {
            "UserID": "1",
            "CardName": "Teste123",
            "CardNo": "AA11BB22",
            "KeyNumber": 2,
            "CardType": 0,
            "CardStatus": 0,
            "DoorForces": [
                0,
                0,
                0,
                0
            ],
            "DoorReaders": [
                "1;0;0;0",
                "1;0;0;0",
                "0;0;0;0",
                "0;0;0;0"
            ],
            "Doors": [
                1,
                1,
                0,
                0
            ],
            "DoorsOrAlarm": [
                0,
                1,
                0,
                0
            ],
            "AlarmOutChannels": [
                0,
                1,
                0,
                0
            ],
            "AlarmOutTime":[
                500,
                6000,
                500,
                500
            ]
        },
        {
            "UserID": "2",
            "CardName": "ABC123",
            "CardNo": "99CC8812",
            "KeyNumber": 2, 
            "CardType": 0, 
            "CardStatus": 0,
            "DoorForces": [
                0,
                0,
                0,
                0
            ],
            "DoorReaders": [
                "1;0;0;0",
                "1;0;0;0",
                "0;0;0;0",
                "0;0;0;0"
            ],
            "Doors": [
                1,
                1,
                0,
                0
            ],
            "DoorsOrAlarm": [
                0,
                1,
                0,
                0
            ],
            "AlarmOutChannels": [
                0,
                1,
                0,
                0
            ],
            "AlarmOutTime":[
                500,
                6000,
                500,
                500
            ]
        }
    ]
} )
 
url = "http://{}/cgi-bin/AccessWirelessCard.cgi?action=insertMulti".format(
                        str(device_ip),
                    )
 
digest_auth = requests.auth.HTTPDigestAuth(username, password)
rval = requests.get(url, data=CardList, auth=digest_auth, stream=True, timeout=20, verify=False)
 
print(rval.text)
```

{% endtab %}
{% endtabs %}

### Acionamento Saída de Alarme

Para o correto acionamento e funcionamento do uso da saída de alarme pelo controle remoto é necessário ativar a seguinte configuração no produto:

#### Requisição - POST

`http://192.168.1.201/cgi-bin/configManager.cgi?action=setConfig&_Alarm433Cfg_.Enable=true`

| param                     | type    | description                         |
| ------------------------- | ------- | ----------------------------------- |
| `setConfig` \*            | String  | Comando para Configuração           |
| `_Alarm433Cfg_.Enable` \* | Boolean | Ativa ou Desativa o Sensor de Porta |

#### Exemplo de Retorno - *text/plain*

```sh
OK
```

#### Exemplos

{% tabs %}
{% tab title="Python" %}

```python
import requests
 
device_ip = '192.168.3.87'
username = 'admin'
password = 'admin4321'
 
enable_sensor = False
 
url = "http://{}/cgi-bin/configManager.cgi?action=setConfig&_Alarm433Cfg_.Enable={}".format(
                            str(device_ip),
                            str(enable_sensor).lower(), 
                        )
 
digest_auth = requests.auth.HTTPDigestAuth(username, password)
rval = requests.get(url, auth=digest_auth, stream=True, timeout=20, verify=False)
 
print(rval.text)
```

{% endtab %}
{% endtabs %}

#### Exemplo de Retorno - *text/plain*

```sh
OK
```

### Atualização das informações

Conforme dito no ínicio da documentação, não é possível atualizar o número cadastrado do controle remoto e sim, somente as informações pertinentes a ele.\
\
Para isso, pode ser utilizado o comando "*updateMulti"* com o mesmo corpo (*body)* do comando "*insertMulti"*. <br>

#### Requisição - POST

`http://192.168.1.201/cgi-bin/AccessWirelessCard.cgi?action=updateMulti`

#### Exemplo de Retorno - *text/plain*

```sh
OK
```


---

# 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/linha-de-faciais/configuracao-de-credencial-controle-remoto/cadastrar-controle-remoto.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.
