Scripting for Helm Web Panels

Native (PC-based) panels use the ‘classic’ Helm script language, or Lua. When building web panels, you can also use Javascript. Be aware that because Web Panel scripts run in the users browser, they do not have direct access to user files and most network protocols.

Classic

Helm’s’ original scripting language is a simple sequencing language. Commands were executed sequentially, with no expression evaluation or conditional control flow capabilities. Helm’s script editor has intelligence about the allowed commands, and the interface allows commands to be constructed interactively as well as typed. Classic scripts look like this:

ELEMENTAL:PauseOutput("42")
StatusLabel:Set("Text", _ELEMENTAL:Status)

In the first line, Elemental is the name of the device we’re controlling, PauseOutput is the action we’re performing, and "42" is a parameter. The second line sets a Label’s Text to the current Status of the Elemental device.

Lua

The introduction of Lua for Helm Scripting brings the power of a conventional programming language to Helm. Integration with third part libraries, control flow and expression evaluation. The first versions supported a fairly simple interface with the Helm system, so the above script would have been written like this.

helm.exec("ELEMENTAL","PauseOutput",42)
helm.set("StatusLabel","Text", helm.get("ELEMENTAL","Status"))

More recent Helm releases allow this to be written more concisely, where every Helm component is directly available from a global object named H

H.ELEMENTAL.PauseOutput(42)
H.StatusLabel.Text = H.ELEMENTAL.Status

Javascript

Javascript follows the new Lua convention very closely, and the previous example can be used unchanged.

H.ELEMENTAL.PauseOutput(42)
H.StatusLabel.Text = H.ELEMENTAL.Status

While simple function calls and assignment statements very similar to Lua, there are plenty of significant differerences. Because Javascript is so widely used there are plenty of books and online resources available to help you learn it. We suggest the MDN Javascript Guide as a good place to start, but there are many more tutorials and guides available.

Specifying Script types

In Helm’s Script Editor, you can specify the script type by clicking the appropriate button. The Helper panel below which allows you to choose devices, functions and parameters is only available for Classic scripts,