Um script no Protolinker é um pequeno trecho de lógica personalizada que permite processar ou transformar dados antes que sejam transmitidos.
Enquanto as tags armazenam os valores brutos e os links os movem entre os protocolos, os scripts oferecem a flexibilidade de adaptar esses valores às suas necessidades específicas.
Em resumo, os scripts permitem adicionar inteligência ao tratamento dos dados dentro do Protolinker.
Porque Scripts são uteis #
Nem todos os dispositivos e sistemas utilizam os dados da mesma forma. Às vezes, é necessário:
- Converter unidades (ex: Celsius → Fahrenheit).
- Escalonar valores (ex: sensor bruto 253 → 25,3 °C).
- Aplicar limites ou faixas (ex: limitar um valor a 100).
- Filtrar ou limpar dados com ruído.
- Implementar lógica simples (ex: converter uma entrada 0/1 em “OFF/ON”).
Os scripts oferecem a flexibilidade para realizar tudo isso sem precisar modificar os dispositivos ou os próprios protocolos.
Como os Scripts funcionam no Protolinker #
Atualmente, é possível usar qualquer linguagem de script ou binário como script, desde que seja compatível com o sistema operacional host e todas as dependências estejam instaladas. Basta selecionar o arquivo do script (pode ser Python, Bash, JavaScript ou até mesmo um binário), e especificar o comando que o sistema precisa para executá-lo, por exemplo, python para arquivos Python ou sh para scripts Bash, entre outros.
Scripts para Tags #
Um script pode ser associado a uma tag para que:
- Quando a tag receber um valor do seu protocolo, o script transforme esse valor antes de armazená-lo ou aplicá-lo.
- Quando a tag enviar dados, o script ajuste o valor antes do envio, garantindo que todos os links recebam o novo valor processado.
Exemplo:
Registrador Modbus bruto 40001 = 253 → Script divide por 10 → Valor da tag = 25,3 °C.
Scripts para Links #
Um script também pode ser aplicado a um link para que:
- O valor da tag de origem seja modificado durante a transmissão para a tag de destino.
- Isso é útil quando você deseja que a tag permaneça com o valor bruto, mas ainda assim adapte os dados antes que cheguem a outro protocolo. Dessa forma, os outros links dessa tag continuarão recebendo o dado original, e apenas o link especificado terá o valor adaptado.
Exemplo:
Tag de origem temperature = 25,3 °C → Script do link converte para Fahrenheit → Tag de destino sensor/temperature_f = 77,5 °F.
Cenário de exemplo #
- Conversão de unidade: pressure_kpa (do sensor) → script converte para pressure_psi.
- Mapeamento de status: valor da Tag 0 → script retorna “STOP”; valor 1 → “RUN”.
- Filtragem de dados: script suaviza flutuações rápidas antes de enviar para o MQTT.
