Este artigo se aplica aos usuários do TeamViewer IoT que monitoram suas redes OPC-UA IoT.
A solução apresentada neste artigo requer o TeamViewer IoT Agent v 1.1.102 (ou superior). Para identificar a versão do seu agente, execute: sudo teamviewer-iot-agent info (um erro ou nenhum resultado indica que uma versão mais antiga do agente está instalada).
Conforme descrito no artigo Conector de plug-in personalizado, é muito fácil monitorar sua rede de sensores com o TeamViewer IoT. Este artigo estende a abordagem de integração para monitorar os valores do nó do servidor OPC-UA. Para mais informações sobre o OPC-UA, consulte a OPC Foundation.
O conector requer o seguinte para ser instalado no dispositivo:
Para identificar a versão instalada, execute o seguinte comando: (um erro ou nenhum resultado indica que uma versão mais antiga do agente está instalada)sudo teamviewer-iot-agent info
python -m pip install --upgrade pip setuptools wheel
pip install freeopcua
wget https://download.teamviewer-iot.com/connectors/teamviewer-iot-opcua/1.0.0/teamviewer_iot_opcua-1.0.0.tar.gz
sudo mkdir -p /usr/local/teamviewer-iot-agent/monitoring/ tar -xzvf teamviewer_iot_opcua-1.0.0.tar.gz -C /usr/local/teamviewer-iot-agent/monitoring/opc-ua
O TeamViewer IoT Agent inclui seu próprio arquivo de configuração de monitoramento do sistema. Este arquivo de configuração será estendido para incluir o script de monitoramento opc-ua. Como você editará manualmente um arquivo de configuração do sistema, certifique-se de criar um backup do arquivo caso o arquivo seja corrompido por erro do usuário.
Use o seguinte modelo para adicionar seus nós de sensor OPC-UA ao arquivo de configuração de monitoramento. Certifique-se de substituir os seguintes espaços reservados pelas especificações de seu nó OPC-UA:
Mais detalhes sobre o esquema JSON podem ser encontrados no artigo Conector de plug-in personalizado.
{ "sensors": [ { "name": "opcua_node_aa", "monitoringService": "python /usr/local/teamviewer-iot-agent/monitoring/opc-ua/opc_ua_connect.py", "monitoringParams": "--url opc.tcp://myopcuahost:26543 --nodeId \"opcua_node_id\" --frequency 2", "metrics": [ { "name": "opcua_node_id", "key": "opcua_node_id", "valueType": "double", "valueAnnotation": "" } ] }, ... ] }
O campo monitoringParams contém argumentos adicionais exigidos pelo script. Aqui está a tabela de argumentos disponíveis.
Parâmetro
Tipo
Necessário
Descrição
url
String
True
URL do servidor OPC UA
nodeId
String
True
Id do nó especificado pelo servidor OPC UA fornecido.
frequência
Inteiro
False
A frequência (em segundos) para pesquisar novos valores de nó.
Se não for definido, a frequência é padronizada para execução única.
Conforme descrito na seção Frequência de monitoramento do artigo Conector de plug-in personalizado, a frequência de monitoramento pode ser gerenciada pelo agente, especificando-a como um parâmetro independente, ou gerenciada pelo próprio script de monitoramento opc-ua, passando o parâmetro diretamente para o script.
No modelo acima, a frequência é definida em monitoringParams como parte do parâmetro de script. Essa abordagem é recomendada para monitorar frequências menores que 1 minuto. O TeamViewer IoT Agent executará o script de monitoramento opc-ua uma vez - na inicialização, permitindo que o script seja executado indefinidamente - enquanto o próprio script será executado em um loop de pesquisa de novos dados a cada 2 segundos (conforme especificado pelo parâmetro de frequência).
Nos casos em que a frequência de monitoramento é mais lenta do que 1 por minuto, a frequência pode ser especificada como parte do modelo, o que resultará na execução do TeamViewer IoT Agent no script de referência na frequência especificada.
No exemplo abaixo, o parâmetro frequência é definido como120, que irá acionar o agente para executar o script referenciado por monitoringScript a cada 120 segundos.
{ "sensors": [ { "name": "opcua_node_aa", "monitoringScript": "python /usr/local/teamviewer-iot-agent/monitoring/opc-ua/opc_ua_connect.py", "monitoringParams": "--url opc.tcp://myopcuahost:26543 --nodeId \"opcua_node_id"", "frequency": 120, "metrics": [ { "name": "opcua_node_id", "key": "opcua_node_id", "valueType": "double", "valueAnnotation": "" } ] }, ... ] }