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
- 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]