Si desea utilizar BioStar 2 New Local API como una API RESTful para su propia personalización u otros fines, simplemente puede consultar este artículo. Este artículo le ayudará a crear puertas a su BioStar 2 mediante el uso de la nueva API local.

 

Este artículo incluye una parte 'Crear puerta' de una aplicación de ejemplo hecha para aquellos que podrían necesitar usar la nueva API local de BioStar 2. Es una aplicación de consola de Visual C#.

 

Asegúrese de echar un buen vistazo al código de ejemplo del programa de C# creado para llamadas a la API. Simplemente puede copiar y pegar el código fuente para usar la misma función en su propia integración.

 

También puede ver cómo llamar a las funciones de la API a través de Postman, que es un programa utilizado para las llamadas a la API RESTful.

 

Parte 1. Llamada a la API y parámetros

 

  1. Cómo crear puertas

 

Método

API

Qué hace

Parámetros

EXPONER

 

/api/puertas

Crea puertas en BioStar 2

*Consulta a continuación

 

 

[POST]: /api/puertas

[Parámetros]

Nombre

Tipo

*M/O

Explicación

Valor

Exit_button_input_id.device_id.id

Int

O

Salir del ID de dispositivo

 

Exit_button_input_id.device_id.name

Cuerda

O

Salir del nombre del dispositivo

Base64

Exit_button_input_id.input_index

Int

O

Índice de entrada de salida

 

Exit_button_input_id.type

Cuerda

O

Tipo de entrada de salida

 

Exit_button_input_id.supervisado

Cuerda

O

Salida supervisada

 

Sensor_input_id.device_id.id

Int

O

ID del dispositivo sensor

 

Sensor_input_id.device_id.name

Cuerda

O

Nombre del dispositivo del sensor

Base64

Sensor_input_id.. input_index

Int

O

Índice de entrada del sensor

 

Sensor_input_id.type

Cuerda

O

Tipo de entrada del sensor

 

Sensor_input_id.supervisado

Cuerda

O

Sensor supervisado

 

Antitailsensor_input_id.device_id

arreglo

O

ID del dispositivo de entrada del sensor anticolato

 

Antitailsensor_input_id.type

Cuerda

O

Tipo de entrada antitailsensor

 

Open_duration

Int

O

Duración abierta

 

Dual_authentication.device

Cuerda

O

Tipo de dispositivo

1- Dispositivo de entrada 2- Dispositivo de salida

tipo_Dual_authentication.approval

Cuerda

O

Orden de aprobación

1- Último

Dual_authentication.timeout

Int

O

Tiempo de espera

Ejemplo: 15

Dual_authentication.schedule_id.id

Cuerda

O

ID de programación

Ejemplo: 1

Dual_authentication.grupos_de_aprobación

Cuerda

O

Grupos de aprobación

 

Open_once

Booleano

O

Mira cuando la puerta está cerrada

Ejemplo: false

Unconditional_lock

Booleano

O

Usar puerta automática

Valor predeterminado: false

Door_group_id.id.id

Int

O

ID de grupo de puertas

Valor predeterminado: 0

Door_group_id.name

Cuerda

O

Nombre del grupo de puertas

Ejemplo: Todas las puertas

Entry_device_id.id.id

Int

M

ID de dispositivo de entrada

 

Entry_device_id.nombre

Cuerda

M

Nombre del dispositivo de entrada

Base64

Entry_device_id.device_type_id

Int

M

ID de tipo de dispositivo

BIOENTRY_PLUS : 1,

BIOENTRY_W : 2,

BIOLITE_NET : 3,

XPASS : 4,

XPASS_S2 : 5,

ENTRY_MAX : 5,

SECURE_IO_2 : 6,

DOOR_MODULE_20 : 7,

BIOSTATION_2 : 8,

BIOSTATION_A2 : 9,

FACESTATION_2 : 10,

IO_DEVICE : 11,

BIOSTATION_L2 : 12,

BIOENTRY_W2 : 13,

CORESTATION_40 : 14,

OUTPUT_MODULE : 15,

INPUT_MODULE : 16,

BIOENTRY_P2 : 17,

BIOLITE_N2 : 18,

XPASS2 : 19,

XPASS_S3 : 20,

BIOENTRY_R2 : 21,

XPASS_D2 : 22,

DOOR_MODULE_21 : 23,

XPASS_D2_KEYPAD : 24,

FACELITE : 25,

XPASS2_KEYPAD : 26,

MAX = BS2_DEVICE_TYPE_XPASS2_KEYPAD, : 26,

DESCONOCIDO : 255,

Trigger_actions.input_event_id

Cuerda

O

Código

Ejemplo: 22528

Trigger_actions.output_device_id.id.id

Int

O

ID de dispositivo

 

Trigger_actions.output_device_id.name

Cuerda

O

Nombre del dispositivo

Base64

Trigger_actions.output_device_id.device_type_id.id

Int

O

ID de tipo de dispositivo

BIOENTRY_PLUS : 1,

BIOENTRY_W : 2,

BIOLITE_NET : 3,

XPASS : 4,

XPASS_S2 : 5,

ENTRY_MAX : 5,

SECURE_IO_2 : 6,

DOOR_MODULE_20 : 7,

BIOSTATION_2 : 8,

BIOSTATION_A2 : 9,

FACESTATION_2 : 10,

IO_DEVICE : 11,

BIOSTATION_L2 : 12,

BIOENTRY_W2 : 13,

CORESTATION_40 : 14,

OUTPUT_MODULE : 15,

INPUT_MODULE : 16,

BIOENTRY_P2 : 17,

BIOLITE_N2 : 18,

XPASS2 : 19,

XPASS_S3 : 20,

BIOENTRY_R2 : 21,

XPASS_D2 : 22,

DOOR_MODULE_21 : 23,

XPASS_D2_KEYPAD : 24,

FACELITE : 25,

XPASS2_KEYPAD : 26,

MAX = BS2_DEVICE_TYPE_XPASS2_KEYPAD, : 26,

DESCONOCIDO : 255,

Trigger_actions.output_device_id.status

Cuerda

O

Estado

Ejemplo: 2

Trigger_actions.output_device_id.rs485.mode

Cuerda

O

Modo RS485

Ejemplo: 1

Trigger_actions.output_device_id.rs485.channels

arreglo

O

Canales

 

Trigger_actions.output_device_id.rs485.parent_rs485.info

Cuerda

O

Información para padres RS485

 

Trigger_actions.output_device_id.device_group_id.id

Int

O

ID de grupo de dispositivos

 

Trigger_actions.output_device_id.device_group_id.name

Cuerda

O

Nombre del grupo de dispositivos

 

Trigger_actions.output_device_id.version.firmware

Cuerda

O

Versión del firmware

Ejemplo: 1.1.0

Trigger_actions.output_device_id.version.product_name

Cuerda

O

Nombre del producto

Ejemplo: BLN2-OAB

Trigger_actions.output_device_id.lan.ip

Cuerda

O

IP

Ejemplo: 192.168.12.168

Trigger_actions.output_device_id.lan.connection_mode

Cuerda

O

Modo de conexión

Ejemplo: 0

Trigger_actions.output_device_id.tna.. modo

Cuerda

O

Modo TnA

Ejemplo: 3

Trigger_actions.output_device_id.tna.. Obligatorio

Booleano

O

TnA requerido

Ejemplo: false

Trigger_actions.output_device_id.tna.. fixed_code

Cuerda

O

Código fijo TnA

 

Trigger_actions.output_device_id.tna.. tna_keys.enabled

Booleano

O

Usar claves TnA

 

Trigger_actions.output_device_id.tna.. tna_keys.label

Cuerda

O

Etiqueta de claves TnA

 

Trigger_actions.output_device_id.tna.. tna_keys.icon

Cuerda

O

Icono de teclas TnA

 

Trigger_actions.output_device_id.slave_devices

Arreglo

O

Dispositivos esclavos

 

Trigger_actions.output_device_id.packet_version

Int

O

Versión del paquete

 

Trigger_actions.output_device_id.iconCls

Cuerda

O

Icon Class

Ejemplo: sync_error dvBioLiteN2

Trigger_actions.output_device_id.deviceData.id

Int

O

ID de dispositivo

Ejemplo: 635

Trigger_actions.output_device_id.deviceData.name

Cuerda

O

Nombre del dispositivo

Base64

Trigger_actions.output_device_id.deviceData.device_type_id.id

Int

O

ID de tipo de dispositivo

BIOENTRY_PLUS : 1,

BIOENTRY_W : 2,

BIOLITE_NET : 3,

XPASS : 4,

XPASS_S2 : 5,

ENTRY_MAX : 5,

SECURE_IO_2 : 6,

DOOR_MODULE_20 : 7,

BIOSTATION_2 : 8,

BIOSTATION_A2 : 9,

FACESTATION_2 : 10,

IO_DEVICE : 11,

BIOSTATION_L2 : 12,

BIOENTRY_W2 : 13,

CORESTATION_40 : 14,

OUTPUT_MODULE : 15,

INPUT_MODULE : 16,

BIOENTRY_P2 : 17,

BIOLITE_N2 : 18,

XPASS2 : 19,

XPASS_S3 : 20,

BIOENTRY_R2 : 21,

XPASS_D2 : 22,

DOOR_MODULE_21 : 23,

XPASS_D2_KEYPAD : 24,

FACELITE : 25,

XPASS2_KEYPAD : 26,

MAX = BS2_DEVICE_TYPE_XPASS2_KEYPAD, : 26,

DESCONOCIDO : 255,

Trigger_actions.output_device_id.deviceData.device_type_id.status

Int

O

Estado

 

Trigger_actions.output_device_id.deviceData.device_type_id.rs485.mode

Cuerda

O

Modo RS485

 

Trigger_actions.output_device_id.deviceData.device_type_id.rs485.channels

Arreglo

O

Canales

 

Trigger_actions.output_device_id.deviceData.device_type_id.rs485.parent_rs485_info

Cuerda

O

Información para padres Rs485

 

Trigger_actions.output_device_id.deviceData.device_type_id.device_group_id.id

Int

O

ID de grupo de dispositivos

 

Trigger_actions.output_device_id.deviceData.device_type_iddevie_group_id.name

Cuerda

O

Nombre del grupo de dispositivos

 

Trigger_actions.output_device_id.deviceData.device_type_id.version.firmware

Cuerda

O

Versión del firmware

Ejemplo: 1.1.0

Trigger_actions.output_device_id.deviceData.device_type_id.version.product_name

Cuerda

O

Nombre del producto

Ejemplo: BLN2-OAB

Trigger_actions.output_device_id.deviceData.device_type_id.lan.ip

Cuerda

O

IP

 

Trigger_actions.output_device_id.deviceData.device_type_idlan.connection_mode

Cuerda

O

Modo de conexión

 

Trigger_actions.output_device_id.deviceData.device_type_id.tna.mode

Cuerda

O

Modo TnA

 

Trigger_actions.output_device_id.deviceData.device_type_id.tna.required

Cuerda

O

TnA requerido

 

Trigger_actions.output_device_id.deviceData.device_type_id.tna.fixed_code

Cuerda

O

Código fijo TnA

 

Trigger_actions.output_device_id.deviceData.device_type_id.tna.tna_keys.enabled

Booleano

O

Usar claves TnA

 

Trigger_actions.output_device_id.deviceData.device_type_id.tna.tna_keys.label

Cuerda

O

Etiqueta TnA

 

Trigger_actions.output_device_id.deviceData.device_type_id.tna.tna_keys.icon

Cuerda

O

Icono de TnA

 

Trigger_actions.output_device_id.deviceData.device_type_id.slave_devices

Arreglo

O

Dispositivos esclavos

 

Trigger_actions.output_device_id.deviceData.device_type_id.packet_version

Int

O

Versión del paquete

 

Trigger_actions.output_device_id.deviceData.device_type_id.iconCls

Cuerda

O

Icon Class

 

Trigger_actions.output_device_id.sound

Booleano

O

Sonido

 

Trigger_actions.output_type

Int

O

Tipo de salida

 

Trigger_actions.sound_index

Int

O

Índice de sonido

 

Trigger_actions.stop_flag

Int

O

Bandera de parada

 

Trigger_actions.$$hashKey

Cuerda

O

No se requiere

Ejemplo: objeto:3207

Relay_output_id.device_id

Int

M

ID de dispositivo

 

Relay_output_id.relay_index

Int

M

Índice de relés

 

Open_timeout

Int

 

Tiempo de espera abierto

 

Nombre

Cuerda

M

Nombre

 

Door_anti_passback

Arreglo

O

Puerta Anti Passback

 

* M – Obligatorio, O – Opcional

 

Parte 2. Cuerpo de solicitud y modelo de respuesta


 

[Ejemplo de modelo de valor/parámetros]

{

"Puerta": {

"exit_button_input_id": {

"device_id": {

"id": 635,

"nombre": "Base64: RDQQFJYAVUYvFXsEIzIQC1QYbodkHe..."

},

"input_index": 0,

"tipo": "0",

"supervisado": ""

},

"sensor_input_id": {

"device_id": {

"id": 635,

"nombre": "Base64: RDQQFJYAVUYvFXsEIzIQC1QYbodkHe..."

},

"input_index": 0,

"tipo": "0",

"supervisado": ""

},

"antitailsensor_input_id": {

"device_id": {},

"tipo": "0"

},

"open_duration": 3,

"dual_authentication": {

"dispositivo": "1",

"approval_type": "1",

"tiempo de espera": 15,

"schedule_id": {

"id": "1"

},

"approval_groups": [

nulo

]

},

"open_once": "falso",

"unconditional_lock": "verdadero",

"door_group_id": {

"id": 1,

"nombre": "Todas las puertas"

},

"entry_device_id": {

"id": 635,

"nombre": "Base64: RDQQFJYAVUYvFXsEIzIQC1QYbodkHe...",

"device_type_id": {

"id": 18

}

},

"trigger_actions": [

{

"input_event_id": {

"código": "22528"

},

"output_device_id": {

"id": 635,

"nombre": "Base64: RDQQFJYAVUYvFXsEIzIQC1QYbodkHe...",

"device_type_id": {

"id": 18

},

"estado": "2",

"rs485": {

"modo": "1",

"canales": [

nulo

],

"parent_rs485_info": ""

},

"device_group_id": {

"id": 1,

"nombre": "Todos los dispositivos"

},

"versión": {

"firmware": "1.1.0",

"product_name": "BLN2-OAB"

},

"lan": {

"ip": "192.168.12.165",

"connection_mode": "0"

},

"tna": {

"modo": "3",

"requerido": "falso",

"fixed_code": "1",

"tna_keys": [

{

"habilitado": "falso",

"etiqueta": "",

"icono": "0"

}

]

},

"slave_devices": [

nulo

],

"packet_version": 2,

"iconCls": "dvBioLiteN2 sync_error",

"deviceData": {

"id": 635,

"nombre": "Base64: RDQQFJYAVUYvFXsEIzIQC1QYbodkHe...",

"device_type_id": {

"id": 18

},

"estado": 2,

"rs485": {

"modo": "1",

"canales": [

nulo

],

"parent_rs485_info": ""

},

"device_group_id": {

"id": 1,

"nombre": "Todos los dispositivos"

},

"versión": {

"firmware": "1.1.0",

"product_name": "BLN2-OAB"

},

"lan": {

"ip": "192.168.12.165",

"connection_mode": "0"

},

"tna": {

"modo": "3",

"requerido": "falso",

"fixed_code": "1",

"tna_keys": [

{

"habilitado": "falso",

"etiqueta": "",

"icono": "0"

}

]

},

"slave_devices": [

nulo

],

"packet_version": 2,

"iconCls": "sync_error dvBioLiteN2"

},

"sonido": verdadero

},

"output_type": 2,

"sound_index": 4,

"stop_flag": 1,

"$$hashKey": "objeto:3207"

}

],

"relay_output_id": {

"device_id": {

"id": 635

},

"relay_index": 0

},

"open_timeout": 3,

"nombre": "d22",

"door_anti_passback": {}

}

}

 

[Modelo de respuesta]

{

"DoorCollection": {

"total": "1",

"filas": [

{

"id": "3",

"nombre": "d22"

}

]

},

"DeviceResponse": {

"filas": [

{

"id": "541530960",

"seq": "37",

"comando": "0x500(BS2_CMD_SET_DOOR)",

"código": "64230"

}

],

"resultado": "falso"

},

"Respuesta": {

"código": "0",

"link": "https://support.supremainc.com/en/support/home",

"message": "Éxito"

},

"httpResponseStatus": 200

}

 

[Respuesta: Fallo]

{

"Respuesta": {

"código": "10",

"link": "https://support.supremainc.com/en/support/home",

"message": "Se requiere inicio de sesión".

}

}

 

[Respuesta: Exitosa]

{

"DoorCollection": {

"total": "1",

"filas": [

{

"id": "34",

"nombre": "Door3223"

}

]

},

"Respuesta": {

"código": "0",

"link": "https://support.supremainc.com/en/support/home",

"message": "Éxito"

}

}

 

Parte 3. Ejemplo de puerta de creación de consola

 

[Crear código fuente del método Door]

static async void CreateDoor()

{

Console.WriteLine("*****CreateDoor Task Started******");

if (sessionID == null)

{

Console.WriteLine("¡Debe iniciar sesión primero!");

retorno;

}

CookieContainer cookieContainer = nuevo CookieContainer();

 

Controlador HttpClientHandler = nuevo HttpClientHandler();

Controlador. CookieContainer = cookieContainer;

 

HttpClient httpClient = nuevo HttpClient(controlador);

 

Cliente HttpClient = nuevo HttpClient(controlador);

httpClient.DefaultRequestHeaders.Add("bs-session-id", sessionID);

cookieContainer.Add(nuevo URI(BioStarIP), nuevo Cookie("bs-session-id", sessionID));

string resourceAddress = BioStarIP + "/api/doors";

 

JavaScriptSerializer serializer = nuevo JavaScriptSerializer();

Console.WriteLine("Introduzca el nombre de la puerta: ");

nombre de cadena = Console.ReadLine();

ListDevices();

Console.WriteLine("Introduzca el ID del dispositivo de retransmisión: ");

string RelayDeviceID = Console.ReadLine();

string payload = "{{\"Door\":{\"door_group_id\":{\"id\":1,\"name\":\"AllDoors\"},\"entry_device_id\":{},\"relay_output_id\":{\"device_id\":{\"id\":" + RelayDeviceID + "},\"relay_index\":1},\"open_timeout\":3,\"name\":\"" + name + "\",\"door_anti_passback\":{}}}}";

Console.WriteLine(carga útil);

StringContent sc = new StringContent(payload, Encoding.UTF8, "application/json");

HttpResponseMessage httpResponse = httpClient.PostAsync(resourceAddress, sc). Resultado;

 

if (httpResponse.IsSuccessStatusCode == true)

{

Console.WriteLine("Crear puerta correctamente.");

string httpResponseBody = await httpResponse.Content.ReadAsStringAsync();

Console.WriteLine(httpResponseBody);

}

más

{

Console.WriteLine("Error al crear puerta.");

Console.WriteLine(httpResponse.ToString());

}

}

 

[Después de crear la puerta con éxito]

 텍스트이(가) 표시된 사진

자동 생성된 설명

 

*Nombre de la puerta de entrada

*Mostrar lista de dispositivos

* Seleccione el dispositivo por device_id para agregar a la puerta como su dispositivo de relé

 

Parte 4. Crear puerta a través de Postman

 

[Ejemplo de solicitud: Encabezados]

*Debe usar el valor 'be-session-id' del encabezado de respuesta de la llamada a la API de inicio de sesión para autenticar el uso de la API para otras llamadas a la API.

텍스트, 모니터, 스크린샷, 화면이(가) 표시된 사진

자동 생성된 설명

[Ejemplo de solicitud]

텍스트, 스크린샷, 모니터, 화면이(가) 표시된 사진

자동 생성된 설명

*Solo los parámetros necesarios se escriben en el cuerpo de la solicitud

 

[Ejemplo de respuesta: cuerpo]

텍스트이(가) 표시된 사진

자동 생성된 설명