Creación y uso de scripts Lua

Tema avanzado

Advertencia

  • Tenga cuidado y realice pruebas exhaustivas al utilizar scripts de Lua para el control automatizado de dispositivos remotos para evitar operaciones inesperadas o daños a los equipos conectados.

Introducción

Los medidores eGauge tienen un entorno de scripting Lua que permite la creación de registros de fórmulas avanzadas y funciones de alerta, así como el control automatizado de dispositivos compatibles, como el módulo de relé de potencia eGauge PRM3 .

Consulta el artículo Descripción general de scripts de Lua para obtener una introducción general a Lua y módulos adicionales proporcionados por el firmware eGauge.

Interfaz de scripting de Lua

La interfaz web de eGauge tiene un editor de scripts Lua incorporado con 3 paneles, como se muestra en la captura de pantalla anterior.

  • Editor ( arriba a la izquierda ). El editor de código Lua. Este panel cuenta con cuatro botones.
    • [1] Guardar: Esto guarda las funciones y las hace disponibles para que el medidor las use.
    • [2] Buscar: Esto permite buscar y reemplazar texto en el código.
    • [3] Cargar: Esto reemplaza el script actual en el medidor con un archivo cargado.
    • [4] Descargar: Esto descarga el script actual del medidor como un archivo.
  • Registro de salida ( abajo a la izquierda ). Debajo del editor, se muestra el registro de Lua. Este incluirá cualquier error de script o sentencia de impresión. Si no hay funciones de Lua personalizadas para el script cargado, podría aparecer un error como "Error de Lua: no se puede abrir xxx.lua: No existe el archivo o directorio", que puede ignorarse. Hay cuatro botones disponibles en este panel:
    • [5] Filtro: aplica un filtro para mostrar solo las líneas de registro que contienen cierto texto.
    • [6] Desplazamiento automático: alterna el desplazamiento automático a la salida de registro más reciente.
    • [7] Descargar: Descarga el archivo de registro.
    • [8] Maximizar ventana: maximiza la ventana de salida del registro.
  • Barra lateral ( derecha ). La barra lateral derecha ofrece un explorador de métodos para encontrar y describir todas las funciones y módulos disponibles de eGauge. Al hacer clic en la función o módulo, este se insertará automáticamente en el panel Editor de la izquierda. La barra lateral cuenta con una barra de búsqueda [9] para buscar fácilmente entre métodos, funciones y documentación.

Cuando se carga la interfaz se muestran varios atajos de teclado:

  • F1 : Abre el menú de atajos de teclado
  • F2 : alternar la barra lateral a la derecha
  • Ctrl-␣ : Activar o desactivar autocompletar
  • Ctrl-, : Abre el menú de configuración de la GUI

Acceso al entorno de scripting de Lua

Paso 1: Si utiliza la ' Interfaz clásica ', haga clic en Ver → Interfaz de usuario moderna

Si es necesario, acceda a la interfaz de usuario moderna desde la vista clásica como se muestra arriba

Paso 2: Vaya a Configuración → Lua y elija el tipo de script apropiado:

Tipos de scripts

Script de fórmulas

La creación de funciones Lua en el editor de scripts de Fórmulas permitirá que las funciones se utilicen en un registro de fórmulas.
Por ejemplo, aquí hay dos funciones creadas en el editor de scripts de Fórmulas Lua que devolverán el mínimo o máximo de dos números:

-- function returning the larger of two numbers
function lua_max(num1, num2)
 if (num1 > num2) then
    result = num1;
 else
    result = num2;
 end
 return result;
end

--function returning the lesser of two numbers
function lua_min(num1, num2)
 if (num1 < num2) then
    result = num1;
 else
    result = num2;
 end
 return result;
end

Luego pueden usarse en un registro de fórmulas:

Y podemos ver que los registros funcionan según lo definido por las funciones del script:

Guión de tarifa

En este script de Lua se puede realizar facturación avanzada por tiempo de uso y por niveles.

  • El soporte de eGauge no puede proporcionar scripts de tarifas para diferentes proveedores de servicios públicos.

Un script de tarifa debe proporcionar (al menos) una función de cost( register, negate, schedule ) que calcule el costo incremental según el consumo de energía registrado por el registro. La negación puede establecerse como verdadera si el valor del registro muestra el consumo de energía. La programación es opcional y puede configurarse con el nombre (no predeterminado) de la programación que se usará para calcular el costo.

Se utilizaría un registro de fórmula de tipo "monetario" con la función cost() .

Para ver un ejemplo de script de facturación, desde la interfaz clásica:

  1. Vaya a Configuración → Facturación .
  2. Elija Xcel Colorado como proveedor de tarifas.
  3. Haga clic en "Aceptar" para guardar y volver a la página de configuración principal.
  4. Regrese a Configuración → Facturación .
  5. Cambiar el proveedor de tarifas a “personalizado”
  6. Haga clic en el botón " Personalizar script de tarifa ", que abrirá una copia de la tarifa de facturación de Xcel Colorado en el editor de scripts de Lua.

Script de alerta

Los scripts de alertas funcionan de la misma manera que los scripts de fórmula, pero se utilizan en las alertas del medidor eGauge y se configuran en Configuración → Otras configuraciones y luego Alertas a la izquierda.

Scripts de control

Advertencia

  • Existe el riesgo de dañar equipos externos al usar scripts de control. Solo desarrolladores de Lua expertos y familiarizados con el medidor eGauge y su software deben intentar usar scripts de control de Lua.

Información

Consulte la sección principal Descripción general de scripts de control de scripts de Lua para obtener información adicional sobre el entorno de control de Lua.

Los scripts de control se pueden utilizar para controlar equipos compatibles, como el módulo de relé de potencia eGauge (PRM3).

Por ejemplo, el siguiente script lee el valor instantáneo de un registro llamado "Temperatura" y controla un contacto de relé PRM3. Si la temperatura es inferior a 21 °C, el relé 0 del PRM3 se cierra (activa); de lo contrario, se abre (desactiva) el relé 0. Luego, permanece en reposo durante 15 minutos antes de volver a comprobar.

En el mundo real, el script de control debería ser más avanzado.

dev = ctrl:dev({interface='relay'})
  relay = dev:interface('relay')

  while true do
    print("Temperature is currently: " .. __r("Temperature"))
    if __r("Temperature") < 21 then
        relay:close(0)
    else
        relay:open(0)
    end
    sleep(60*15)
  end

Variables persistentes

Consulte la sección principal Descripción general de scripts de Lua sobre variables persistentes.

Las variables persistentes son variables que se conservan entre reinicios o ciclos de encendido.

El siguiente script de fórmula crea y actualiza una variable persistente con un nombre y número determinados que se le pasan en un registro de fórmula e imprime la depuración en el registro de salida:

function persistent_variable_example(name, number)
  
     obj = persistent:new(name, number, "Variable stored by formula function persistent_variable_example")
  
     current_value = obj:get()
     print(name .. " currently has value " .. current_value)
  
     print("updating " .. name .. "to new value " .. number)
  
     obj:set(number)
  end

Se configura un registro para ejecutar el script de fórmula:

Esto crea o actualiza una variable persistente llamada variable test 1 con la hora actual.

El editor de scripts de fórmulas muestra la depuración de impresión a medida que la variable se actualiza una vez por segundo mientras se ejecuta el registro de fórmulas:

15:26:28.168 variable test 1 currently has value 22.043333333333
15:26:28.168 updating variable test 1 to new value 22.043611111111
15:26:29.171 variable test 1 currently has value 22.043611111111
15:26:29.172 updating variable test 1 to new value 22.043888888889
15:26:30.168 variable test 1 currently has value 22.043888888889
15:26:30.168 updating variable test 1 to new value 22.044166666667
15:26:31.168 variable test 1 currently has value 22.044166666667
15:26:31.168 updating variable test 1 to new value 22.044444444444

Aunque este ejemplo específico pueda parecer trivial, las variables persistentes se pueden utilizar en cualquier script de Lua. Los scripts de control se ejecutan continuamente, por lo que no es necesario crear un registro de fórmula para ejecutarlos.