Para utilizar las 12 funciones de la API en Python, primero necesitarás instalar la biblioteca requests
. Si no la tienes, instálala usando pip:
pip install requests
A continuación, se presenta un ejemplo en Python que utiliza las 12 funciones de la API en un script paso a paso:
import requests
from requests.auth import HTTPDigestAuth
# Reemplaza con la dirección del host y la contraseña de tu sistema de alarma
host = "http://192.168.1.100"
contrasena = "tu_contraseña"
# Autenticación digest
auth = HTTPDigestAuth("admin", contrasena)
# Encabezados para solicitudes JSON
headers = {
"Content-Type": "application/json",
"Accept": "application/json"
}
# 1. Agregar dispositivo
url_agregar_dispositivo = f"{host}/ISAPI/ContentMgmt/DeviceMgmt/addDevice?format=json"
data_agregar_dispositivo = {
"DeviceInList": [
{
"Device": {
"protocolType": "ehomeV5",
"EhomeParams": {
"EhomeID": "A000001",
"EhomeKey": "12345abc"
},
"devName": "Panel Alarma 1",
"devType": "SecurityCP"
}
}
]
}
response = requests.post(url_agregar_dispositivo, json=data_agregar_dispositivo, auth=auth, headers=headers)
print("Agregar dispositivo:", response.json())
# 2. Lista de dispositivos
url_lista_dispositivos = f"{host}/ISAPI/ContentMgmt/DeviceMgmt/deviceList?format=json"
data_lista_dispositivos = {
"SearchDescription": {
"position": 0,
"maxResult": 100
}
}
response = requests.post(url_lista_dispositivos, json=data_lista_dispositivos, auth=auth, headers=headers)
print("Lista de dispositivos:", response.json())
# Asume que el primer dispositivo de la lista es el que queremos usar
dispositivo = response.json()["DeviceMgmt.DeviceList"][0]
devIndex = dispositivo["devIndex"]
# 3. Obtener capacidades
url_obtener_capacidades = f"{host}/ISAPI/SecurityCP/control/capabilities?format=json&devIndex={devIndex}"
response = requests.get(url_obtener_capacidades, auth=auth, headers=headers)
print("Obtener capacidades:", response.json())
# 4. Estatus de periféricos
url_estatus_perifericos = f"{host}/ISAPI/SecurityCP/status/exDevStatus?format=json&devIndex={devIndex}"
response = requests.get(url_estatus_perifericos, auth=auth, headers=headers)
print("Estatus de periféricos:", response.json())
# 5. Estatus de las zonas
url_estatus_zonas = f"{host}/ISAPI/SecurityCP/status/zones?format=json&devIndex={devIndex}"
response = requests.get(url_estatus_zonas, auth=auth, headers=headers)
print("Estatus de las zonas:", response.json())
# 6. Estatus de las particiones
url_estatus_particiones = f"{host}/ISAPI/SecurityCP/status/subSystems?format=json&devIndex={devIndex}"
response = requests.get(url_estatus_particiones, auth=auth, headers=headers)
print("Estatus de las particiones:", response.json())
# 7. Controlar relay
url_controlar_relay = f"{host
}/ISAPI/SecurityCP/control/exDevice?format=json&devIndex={devIndex}"
data_controlar_relay = {
"ExDevice": {
"channelID": 1,
"command": "open"
}
}
response = requests.put(url_controlar_relay, json=data_controlar_relay, auth=auth, headers=headers)
print("Controlar relay:", response.json())
8. Configurar zona
url_configurar_zona = f"{host}/ISAPI/SecurityCP/config/zones?format=json&devIndex={devIndex}"
data_configurar_zona = {
"Zones": {
"channelID": 1,
"zoneType": "Alarm",
"zoneName": "Zona 1",
"enabled": True
}
}
response = requests.put(url_configurar_zona, json=data_configurar_zona, auth=auth, headers=headers)
print("Configurar zona:", response.json())
9. Configurar partición
url_configurar_particion = f"{host}/ISAPI/SecurityCP/config/subSystems?format=json&devIndex={devIndex}"
data_configurar_particion = {
"SubSystems": {
"subSystemID": 1,
"subSystemName": "Partición 1",
"enabled": True
}
}
response = requests.put(url_configurar_particion, json=data_configurar_particion, auth=auth, headers=headers)
print("Configurar partición:", response.json())
10. Armado de partición
url_armado_particion = f"{host}/ISAPI/SecurityCP/control/subSystem?format=json&devIndex={devIndex}"
data_armado_particion = {
"SubSystem": {
"subSystemID": 1,
"command": "arm"
}
}
response = requests.put(url_armado_particion, json=data_armado_particion, auth=auth, headers=headers)
print("Armado de partición:", response.json())
11. Desarmado de partición
url_desarmado_particion = f"{host}/ISAPI/SecurityCP/control/subSystem?format=json&devIndex={devIndex}"
data_desarmado_particion = {
"SubSystem": {
"subSystemID": 1,
"command": "disarm"
}
}
response = requests.put(url_desarmado_particion, json=data_desarmado_particion, auth=auth, headers=headers)
print("Desarmado de particición:", response.json())
12. Eventos de alarma
url_eventos_alarma = f"{host}/ISAPI/Event/notification/alertStream?format=json"
data_eventos_alarma = {
"ChannelID": 1,
"reportType": "realTime",
"maxResults": 10
}
response = requests.post(url_eventos_alarma, json=data_eventos_alarma, auth=auth, headers=headers)
print("Eventos de alarma:", response.json())