Descripción de la integración de la API en la plataforma Amivisor

35
Artículos

Para el intercambio automático de datos con otros sistemas, la plataforma Amivisor ofrece la posibilidad de configurar la integración de la API (Interfaz de Programación de Aplicaciones).

La API utiliza el protocolo JSON para la interacción y garantiza una autorización segura.

Primero, analicemos por qué puede ser necesaria la integración de la API, utilizando algunos casos de éxito como ejemplos.

Caso en empresas energéticas: integración vía API con un sistema de facturación.

Las empresas energéticas tienen decenas o cientos de miles de dispositivos de medición, y muchas de ellas han confiado en la plataforma Amivisor para realizar la recolección automática de datos de los medidores inteligentes.

Las lecturas recopiladas deben ser transferidas al sistema de facturación para realizar todos los cálculos necesarios sobre el consumo. Amivisor proporciona esto ya sea mediante la importación/exportación a través de archivos xls o mediante la API. Este segundo método es más preferible, ya que no requiere manipulaciones manuales y funciona completamente en modo automático.

No obstante, no nos limitamos únicamente a la funcionalidad de intercambio de datos recopilados. Entendemos que el personal de las empresas energéticas enfrenta una carga considerable al mantener bases de datos en diferentes sistemas, lo que les hace perder mucho tiempo duplicando información. Por ejemplo, en caso de reemplazo de un medidor, la información debe ser ingresada tanto en el sistema de facturación como en el sistema AMI.

Decidimos eliminar el trabajo duplicado y proporcionamos una integración más estrecha entre Amivisor y sistemas de facturación (por ejemplo Elenet). Los especialistas de las empresas energéticas ingresan todos los datos en Elenet, y la base de datos se sincroniza a través de la API con Amivisor. Si se registran cambios en la base de datos principal, esos mismos cambios se realizan automáticamente en el sistema AMI.

Gracias a esta interacción, se ahorra tiempo al personal en la gestión de bases de datos en los sistemas de información.

Caso en plantas solares: integración de la API con un bot de Telegram.

En este caso, el cliente necesita recibir datos consolidados sobre el consumo y las condiciones meteorológicas. El cliente cuenta con numerosos empleados que requieren acceder a esta información, pero el administrador decidió no otorgar acceso a todos al sistema, sino crear un bot de Telegram que muestra la información necesaria.

El bot obtiene los datos del pronóstico del tiempo a través de un servicio meteorológico, mientras que del sistema Amivisor se extraen los datos de consumo, consumo horario y estado del módem.

La información en el bot se presenta de la siguiente manera:

Aquí también existe la posibilidad de acceder a información más detallada, presentada en las páginas web del cliente:

Gracias a la integración de Amivisor con el servicio meteorológico, los especialistas del cliente pueden no solo conocer la generación de energía eléctrica, sino también elaborar planes precisos de generación de energía para los próximos tres días.

Caso en estaciones de carga de vehículos: como obtener datos vía API

Normalmente, nuestros clientes configuran la integración de la API para enviar datos recopilados de los medidores a otros sistemas. Sin embargo, en algunos casos, ocurre lo contrario.

Un cliente que ofrece servicios de carga de vehículos eléctricos necesitaba un análisis tarifario para reducir los costos de compra de energía eléctrica. Las estaciones de carga instaladas llevan un registro del consumo de energía, pero la funcionalidad interna del software de las estaciones de carga no es suficiente para calcular el costo de compra de energía eléctrica de diferentes proveedores.

Este trabajo fue confiado a la plataforma Amivisor, que a través de la integración por API recibe datos horarios de consumo del sistema del cliente y luego realiza cálculos analíticos sobre las tarifas disponibles de energía eléctrica para seleccionar el esquema de cálculo más rentable.

Gracias al análisis tarifario, nuestro cliente pudo cambiar las tarifas de electricidad en varias estaciones y obtener un ahorro de hasta el 16 %.

Caso centro comercial: cálculos con arrendatarios

En los centros comerciales, los arrendadores emiten facturas a sus arrendatarios. Estas pueden ser facturas por el alquiler de los espacios ocupados y, adicionalmente, pueden emitirse facturas separadas para compensar el costo de la energía eléctrica y el agua.

Varios de nuestros clientes utilizan el sistema Amivisor, integrándolo con diferentes sistemas de facturación para emitir dichas facturas. Sin embargo, queremos destacar el caso de la empresa Gaviota Telecom, que gestiona el consumo de electricidad y agua de más de 1.000 medidores eléctricos e hidráulicos instalados en los locales de los arrendatarios. La cantidad de medidores sigue creciendo, ya que cada vez más arrendadores interesados en automatizar los cálculos con sus arrendatarios recurren a los servicios de nuestro cliente.

Gaviota Telecom se encarga de reemplazar todos los dispositivos de medición por inteligentes y configura la integración vía API con su sistema de facturación. Amivisor proporciona los datos de consumo mensual de cada medidor, lo que permite automatizar completamente el proceso de facturación y control de consumos1.

Caso producción: integración de API para el cálculo de los costes de producción

Un fabricante de productos de higiene personal necesitaba calcular el costo de producción de sus productos. Uno de los componentes más significativos de los costos es la energía eléctrica. En la planta, la producción se realiza por turnos, y para optimizar los gastos energéticos es fundamental visualizar el consumo en cada uno de los tres turnos.

El sistema Amivisor ofrece esta funcionalidad, permitiendo a los especialistas de la empresa comparar el consumo energético entre los diferentes turnos de producción, identificar mejores prácticas de consumo y evitar tiempos muertos o uso ineficiente de los equipos. Sin embargo, el departamento financiero trabaja en un sistema ERP para gestionar todos los recursos de la empresa. Por ello, se organizó una integración vía API con Amivisor, de modo que la información de consumo por turnos se transfiera automáticamente al sistema de gestión de productos, permitiendo calcular la proporción de consumo eléctrico en el costo de producción de cada unidad1.

Caso criptominería

La red de hoteles de minería alquila equipos para la extracción de criptomonedas a sus clientes. Para conocer el consumo, cada equipo está equipado con un medidor eléctrico. Las lecturas de todos los medidores se envían a la plataforma Amivisor. Sin embargo, para la facturación con sus clientes, el hotel de minería utiliza su propio sistema de facturación, al que la información de consumo llega automáticamente a través de una integración API

 

Ahora, pasemos a la funcionalidad de la API y, en primer lugar, cómo utilizarla:

Autenticación

Para comenzar a trabajar con la API, es necesario obtener acceso al servidor mediante una clave en la página de la aplicación https://app.amivisor.com/user/api.

Aquí también se pueden especificar las direcciones IPV4 desde las cuales se permite la conexión.

Datos para la emisión

La API de Amivisor proporciona la emisión automática de los destintos datos, que puede ser necesario en casos donde necesite recibir automáticamente datos ingresados en el sistema Amivisor, o datos recopilados por el sistema de los medidores:

Información general y listas.

Principalmente esto es necesario para la integración API con sistemas de facturación:

  • Lista de contrapartes: incluyendo nombre, números de registro y datos de dirección
  • Lista de contratos: incluyendo tipo de contrato (suministro de energía, compra/venta o transmisión de electricidad) y parámetros del contrato (lista de objetos y medidores relacionados con el contrato, potencias contratadas, parámetros tarifarios e información sobre pérdidas de cálculo, tanto fijas como variables)
  • Lista de puntos de medida: incluyendo nombre, datos de dirección, parámetros tarifarios, números de cuentas y códigos de intercambio
  • Lista de medidores: incluyendo marca y número de serie, ubicación, códigos de intercambio, coeficientes de cálculo, plazos de verificación, nombres de zonas tarifarias y configuraciones de comunicación.
  • Resultados del cálculo del costo de electricidad: incluyendo magnitudes físicas calculadas (volumen de consumo eléctrico por zonas tarifarias y potencias), tarifas aplicadas, costo total de electricidad (tanto de compra como de transmisión)
Datos obtenidos de los medidores:
  • Lecturas: en un momento específico o durante un período para uno o un grupo de medidores. Al emitir, se puede seleccionar el tipo de lectura (actual o archivada), zonas tarifarias (T1, T2, …, suma) y canal de medición (A+, A-, R+, R-)
  • Consumo de electricidad durante un período específico. El consumo puede mostrarse por separado para cada uno de los canales de medición, así como para las lecturas totales o desglosadas por zonas tarifarias del medidor. Al emitir datos sobre el consumo, se pueden transmitir las lecturas iniciales y finales, sobre las cuales se obtuvo dicho consumo.
  • Valores instantáneos, tanto totales como por cada fase: frecuencia en la red, voltajes, corrientes, potencias activas, reactivas y totales, y ángulos entre voltajes de fase
  • Perfiles de carga por diversos canales de medición (A+, A-, R+, R-). Al emitir datos, se puede especificar el período de integración API deseado, que puede diferir del período de integración programado en el medidor.
  • Datos de contabilidad intervalos. Estos datos, al igual que el perfil, pueden emitirse por diversos canales de medición y con la selección del período de integración API deseado. Pero a diferencia del perfil de potencia, pueden contener datos calculados, en caso de que al obtener el perfil de potencia se hayan perdido o sido incorrectos.

Datos para la importación:

En caso de que ya tenga datos en algún sistema, se puede asegurar una rápida implementación del sistema Amivisor, importando los siguientes datos:

  • Contrapartes, incluyendo información de registro y otros datos
  • Puntos de medida, incluyendo parámetros técnicos y contractuales
  • Medidores, incluyendo información técnica y metrológica, así como parámetros de comunicación remota

También puede importar al sistema datos medidos por los medidores. Esto puede ser necesario si los datos de algunos medidores son recopilados por otro sistema (por ejemplo, un programa de fábrica) y se acumulan en el sistema Amivisor para realizar diversos cálculos y generar informes consolidados:

  • Lecturas: por zonas tarifarias y canales de medición
  • Perfiles de potencia: por canales de medición

En casos donde ya tenga un sistema AMR o AMI implementado, pero desee migrar al sistema Amivisor, puede transferir los parámetros de comunicación remota con los medidores mediante la API, a saber:

  • Obtener la lista de tipos de dispositivos de medición disponibles
  • Obtener la lista de tipos de conexiones disponibles
  • Obtener la lista de tipos de concentradores disponibles
  • Obtener la lista de puertos para uso compartido
  • Obtener la lista de concentradores
  • Obtener la lista de parámetros de comunicación remota
  • Configurar la comunicación remota con los medidores

Limitaciones de la integración por API:

  • No se admiten parámetros posicionales by-position. Los parámetros deben ser nombrados by-name, es decir, params debe ser un objeto json.
  • En llamadas múltiples batch hay un límite de 100 llamadas en una sola solicitud.
  • Los métodos de autenticación auth.* no admiten llamadas múltiples.
  • No se pueden obtener simultáneamente conjuntos de datos de más de 1000 medidores.

***

Para más información detallada y ejemplos de uso, puede solicitar la documentación.

A continuación se enumeran los conjuntos de datos cuyo intercambio admite la API

Sección Datos Parámetro Valor
Tarea: integración API de directorios
Entrega de datos
Contraparte Contraparte ID id int
Nombre completo fullName string
Nombre corto name string
Apellido lastName null|string
Nombre firstName null|string
Segundo nombre middleName null|string
Tipo de contraparte contractorTypeId int
Número de registro ogrn null|string
Fecha de registro ogrnDate null|string
Identificación fiscal 1 Inn null|date
Identificación fiscal 2 kpp null|string
Dirección de registro registeredAddress null|date
Dirección postal postAddress null|string
Correo electrónico email null|date
Número de teléfono phone null|string
Contrato Contrato ID id int
Contrato está activado o no active boolean
Número del contrato num string|null
ID de tipo del contrato type Int
Nombre del proveedor powerCompany object
Nombre del consumidor company object
Punto de medida (PdM) Punto de medida ID id null|int
Nombre name string
Número de cuenta personal account int
Contraparte contractor null|int
Dirección completo addressSiteValue null|string
Ciudad city null|string
Calle street null|string
Número de casa house null|string
Edificio building null|string
Apartamento flat null|string
Oficina office null|string
Información adicional additionAddr null|string
Tipo del PdM en el esquema objectType null|string
Identificador del PdM uniqueDeliveryPointIdentifier null|string
Tensión de calculo voltageLevel null|string
Carga de calculo powerLevel null|string
Número de tarifa priceCategory null|string
Parámetros contractados > parameters

 

object|null
> Contrato del suministro primaryContract int|null
> Contrato de transmisión secondaryContract int|null
> ID de tarifa de suministro priceCategory int|null
> ID de tarifa de transmisión secondaryPriceCategory

 

int|null
> ID de nível de tensión voltageLevel int|null
> ID de carga de calculo powerLevel int|null
> Nombre de tarifa base basePowerCompany object|null
> ID de tarifa base basePriceCategory int|null
> ID de nível de tensión base baseVoltageLevel int|null
> ID de carga de calculo base basePowerLevel int|null
Descripción de medidores conectados al PdM > meters object[]|null
> Medidor ID id int
> Número de serie num string
> Marca del medidor mark string|null
> Medidor está transito o no transit boolean
Medidor Medidor ID id int
Número de serie num string
Marca del medidor mark string
Nota remark string
Punto de medida object string
Dirección del PdM address string
Ubicación del medidor location null|string
Tipo del medidor type string
Unidad de medida unit null|string
Coeficiente por corriente ktt string
Coeficiente por tensión ktn string
Identificador del medidor uniqueIdentifierOfInstallationLocation string
Canales de medida activados measures string[]
Zonas tarifarias > zones object[]|null
> Zona ID id int
> Nombre de la zona name string
Estado de AMR > ascueState object|null
> AMR configurado y activado enabled boolean
> Tipo de conexión connectionType string
> Tipo de conexión ID connectionTypeId int
> Módem ID modemId int
> Información sobre encuestas >> requests object
>> Lectura >>> readings object
>>> Estado de horario de lecturas scheduled boolean
>>> Última lectura lastSuccess date and time
>> Perfil de carga >>> powerProfile object
>>> Estado de horario de perfil scheduled boolean
>>> Último corte del perfil lastSuccess date and time
Capacidad del medidor digit string
Precisión del medidor decimal string
Fecha de la instalación dateSetup null|date
Fecha de deinstalación dateSetdown null|date
Fecha de verificación dateCheck null|date
Fecha de fin de la verificación dateCheckNext null|date
Parámetros de calculo > parameters object|null
> Pérdidas variables lossShortCircuit float|null
> Pérdidas constantes lossIdle float|null
> Pérdidas variables de base baseLossShortCircuit float|null
> Pérdidas constantes de base baseLossIdle float|null
Obtención de datos
Puntos de medida Punto de medida ID id null|int
Nombre name string
Número de cuenta personal account int
Contraparte contractor null|int
Dirección completo addressSiteValue null|string
Ciudad city null|string
Calle street null|string
Número de casa house null|string
Edificio building null|string
Apartamento flat null|string
Oficina office null|string
Información adicional additionAddr null|string
Potencia conractada maxPowerValue null|float
Identificador de departamento regionId null|int
Categoría del PdM objectCategory null|string
Barrio addressSite null|string
Tipo del PdM en el esquema objectType null|string
Identificador del PdM uniqueDeliveryPointIdentifier null|string
Tensión de calculo voltageLevel null|string
Carga de calculo powerLevel null|string
Número de tarifa priceCategory null|string
Factor de potencia máximo (Q/P) maxReactiveToActivePower null|float
Latitud lat null|float
Longitud lon null|float
Medidores Medidor ID id null|int
Punto de medida ID object int
Número de serie num string
Marca del medidor mark string
Nota remark string
Canales de medida activados measures int[]
Nombres de las zonas tarifarias zones string[]
Capacidad del medidor digit null|int
Precisión del medidor decimal null|int
Ubicación del medidor location null|string
Coeficiente por corriente ktt int
Coeficiente por tensión ktn int
Pérdidas variables lossShortCircuit null|float
Pérdidas constantes lossIdle null|float
Características para el cálculo de pérdidas lossCharacteristics null|string
Fecha de la instalación dateSetup null|date
Fecha de verificación dateCheck null|date
Fecha de fin de la verificación dateCheckNext null|date
Fecha de la deinstalación dateSetdown null|date
Nivel de tensión voltageClass null|string
Nombre de subestación (SE) substation null|string
Nombre de la conexión SE substationConnection null|string
Nombre de punto de transformación (PT) transformerSubstation null|string
Nombre de la conexión PT transformerSubstationConnection null|string
Número de serie del módem modemSerialNumber null|string
Número de serie de la pantalla separada del medidor (split) serialNumberOfDisplayUnit null|string
Contraseña de la acceso por radio radioInterfacePassword null|string null|string
Núnero SIM1 phoneNumberSim1 null|string
Número SIM2 phoneNumberSim2 null|string
Identificador del medidor uniqueIdentifierOfInstallationLocation string
Notas para empleados adminRemark null|string
Número del movil de especialista AMR adminPhone null|string
Contrapartes Contraparte ID id null|int
Nombre completo name string
Nombre corto fullName string
Tipo de contraparte contractorTypeId int
Número de registro ogrn null|string
Fecha de registro ogrnDate null|date
Identificación fiscal 1 inn null|string
Identificación fiscal 2 kpp null|string
Dirección de registro registeredAddress null|string
Dirección postal postAddress null|string
Correo electrónico email null|string
Número de teléfono phone null|string
Puntos de medida objects null|int[]
Transformadores de medida Medidor ID counterId int
Fases (1, 2, o 3) phase int
Corriente y tensión (‘current’, ‘voltage’) type string
Marca brand null|string
Clase de precisión accuracyClass null|string
Pertenencia balanceOwnership null|string
Número de registro registrationNumber null|string
Número de precinto sealNumber null|string
Fecha de verificación dateOfStateInspection null|date
Fecha de fin de la verificación dateOfNextStateInspection null|date
Tarea: intercambio de datos recibidos de los medidores
Entrega de datos
Lecturas Medidor ID meter int
Lectura encontrada reading object|null
Fecha y tiempo de la lectura date string
Coeficiente por corriente ktt string
Coeficiente por tensión ktn string
Lectura A+ value float
Lectura A- reverseValue float
Lectura R+ reactiveValue float
Lectura R- reactiveReverseValue float
Lecturas por zonas zones object[]|null
Comsumo 1, calculado por lecturas Medidor ID meter int
Consumo, kWh consumption float|null
Consumo por zonas tarifarias, kWh zones float[]|null
Lecturas iniciales y finales > readings object|null
> Luctura inicial >> first object|null
>> Fecha y tiempo de la lectura date string
>> Coeficiente por corriente ktt string
>> Coeficiente por tensión ktn string
>> Lectura A+ value float
>> Lectura A- reverseValue float
>> Lectura R+ reactiveValue float
>> Lectura R- reactiveReverseValue float
>> Lecturas por zonas zones object[]|null
> Luctura final >> last object|null
>> …iguales parametros…
Valor instantáneos Medidor ID meter int
Parámeter solicitado > name string
> Tensión de fase voltage string
> Corriente current string
> Potencia activa activePower string
> Potencia reactiva reactivePower string
> Factor de potencia powerFactor string
> Ángulo entre tensiones de fase angle string
> Frequencia frequency string
Símbolo del parámetro symbol string
Nombre del parámetro description string
Unidad de medida unit string|null
Perfil de carga Medidor ID meter int
Periodo period object
Intervalo de promediado group int
Parámetros de Perfil de carga > powerProfile.data object
> Podencia activa directa A+ activePower string
> Podencia activa indirecta A- reactivePower string
> Podencia reactiva directa R+ activeReversePower string
> Podencia reactiva indirecta R- reactiveReversePower string
Consumo por intervalos El més calculado month string
Punto de medida > object object
> Punto de medida ID id int
> Nombre del PdM name string
> Dirección del PdM address string
Datos por intervalos de consumo values object
Medidor > meter object[]|null
> Medidor ID id int
> Número de serie num string
> Marca del medidor mark string|null
Datos por intervalos de consumo values object
Obtención de datos
Lecturas Medidor ID counterId int
Fecha y tiempo de la lectura date date
Lectura A+ suma por zonas sum float
Lectura A- suma por zonas reverseSum null|float
Lectura R+ suma por zonas reactiveSum null|float
Lectura R- suma por zonas reactiveReverseSum null|float
Zonas del medidor zones object[]
Perfil de carga Medidor ID counterId int
Periodo date date
Intervalo de promediado period int
Podencia activa directa A+ activePower float
Podencia activa indirecta A- activeReversePower null|float
Podencia reactiva directa R+ reactivePower null|float
Podencia reactiva indirecta R- reactiveReversePower null|float
Ajustes de AMR Una lista de medidores ascue.availableDevices object[]
Una lista de conexiones disponibles ascue.availableConnections object[]
Una lista de concentradores 1 disponibles ascue.availableConcentrators object[]
Una lista de puertos disponibles ascue.availablePorts object[]
Una lista de concentradores 2 disponibles ascue.availableUspds object[]
Una lista de parametros ascue.availableParams object[]
Ajuste del medidor ascue.setup string
Ajustes del medidor Medidor ID meterId int
Identificador de la puerta portId int
Identificador del concentrador uspdId int
Parámetros de despositivo device object
Parámetros de conexión connection object
Parámetros de concentrador сoncentrator object
Tarea: intercambio de los resultados de calculos
Entrega de datos
Resultados de calculos El més calculado month string
Punto de medida calculado object object
Medidor connectado al PdM > meters

 

object[]|null
> Pérdidas variables lossShortCircuit float|null
> Pérdidas constantes lossIdle float|null
> Lecturas del medidor readings object
> Parámetros natural del medidor values object
Parámetros natural del PdM values object
Valores de suministro primaryContract object
Valores de transmisión secondaryContract object|null

🤞¡Manténgase al día con las actualizaciones!

¡No hacemos spam! Lea nuestra política de privacidad para obtener más información.