Através da epmwebapi é possível acessar não apenas dados, mas também informações e diagnósticos sobre o sistema EPM, que fazem parte do Address Space do EPM, que é um servidor OPC UA.
import epmwebapi as epm
import numpy as np
import datetime
##Método para não expor usuário e senha do EPM no código fonte
import getpass
user = input('EPM user:')
password = getpass.getpass("EPM password:")
#crie o objeto de conexão informando os endereços do EPM Webserver(Authentication Port e WEB API Port), usuário e senha.
connection = epm.EpmConnection('http://dili:44333', 'http://dili:44332', user, password)
Path = '/1:ServerManagement'
obj = connection.getObjects(Path)[Path]
properties = obj.enumProperties()
version = properties['Version'].read()
print(version.value)
Path = '/1:ServerManagement/LicenseManager'
obj = connection.getObjects(Path)[Path]
properties = obj.enumProperties()
key = properties['LicenseIdentity'].read()
print(key.value)
Retornando o código de Status do Interface Server. Veja a descrição de cada código abaixo:
Unknown = 0
Uninitialized = 1
Initializing = 2
InitErrorRetrying = 3
Ok = 4
Restarting = 5
RestartErrorRetrying = 6
Faulted = 7
basePath = '/1:Interfaces'
obj = connection.getObjects(basePath)
item = list(obj.values())[0]
refs = connection._browse([item._itemPath], 'ns=0;i=35').references()
for ref in refs:
print('Número de interface: {}'.format(len(ref)))
for interfaceRef in ref:
path = basePath + '/1:' + interfaceRef._displayName
tmp = connection.getObjects(path)
item = list(tmp.values())[0]
props = item.enumProperties()
propValue = props['CollectorStatus'].read()
print('{} - {}'.format(interfaceRef._displayName, propValue.value))