Automation — How-To Guides

Step-by-step instructions for connecting sensors and relays, building visual control panels, and creating automated rules. The Automation section has six tabs: Control Panel, Control Loops, Programs, Monitoring, Discovery, Configuration.

Table of Contents

  1. Discover and connect a WIO module
  2. Build a control panel with buttons and status indicators
  3. Create a control loop (if sensor X → then action Y)
  4. Set up Alert Manager channels (email, SMS, call, digital output)
  5. Act when a sensor crosses a threshold
  6. Fire a multi-action alarm from a digital input
  7. Activate a relay or device from a phone call
  8. Restrict an automation alarm to specific hours or days
  9. Upload and manage automation programs (LUA scripts)
  10. Monitor live sensor values and output states
  11. Track equipment run-time for scheduled maintenance

Discover and connect a WIO module

Goal: Connect a WIO (Wireless I/O) module to the Abilis so you can read its sensors (temperature, door contacts, motion) and control its outputs (relays, lights, locks) from the web interface.

WIO (Wireless I/O Module) — a hardware device with digital inputs (DI), digital outputs (DO), analog inputs (AI), and analog outputs (AO). DIs read switches/sensors, DOs control relays/lights, AIs read temperature/humidity, AOs set voltage levels.
Discovery page showing a free WIO module.
Discovery — a WIO module found on the network. Status: Free (not yet bound).
  1. Go to Automation > Discovery.
  2. The table shows all devices detected on the network: GwRes (gateway resource), MAC Address, IP Address, Resource, Description, and Status (Free = available, Bound = already connected).
  3. Click on a Free device to open its settings.
Device Settings — bind a WIO module.
Device Settings — assign an IP, description, and bind to a resource (Wio-1).
  1. In the Device Settings panel:
  2. Click Bind to connect the module to the Abilis.
  3. The module's status changes to "Bound" and its I/O channels become available in Control Panels, Control Loops, and Monitoring.

Build a control panel with buttons and status indicators

Goal: Build a visual dashboard where you can see sensor readings (temperature, humidity, door status) and click buttons to control outputs (lights, gates, heating) — all from your browser, without writing code.

Control Panel editor.
Control Panel in edit mode — Devices, Change Background, Save, Done buttons.
  1. Go to Automation > Control Panel.
  2. Click New to create a new panel (or open an existing one).
  3. You enter edit mode with a toolbar at the top:
  4. Click Devices to select which inputs and outputs to place on the panel.

The device selector shows all bound modules with their channels in four columns:

ColumnTypeWhat It Does
DIDigital InputReads on/off state (door sensor, button, motion detector)
DODigital OutputControls on/off (relay for gate, light, alarm)
AIAnalog InputReads a value (temperature, humidity, voltage)
AOAnalog OutputSets a value (dimmer level, valve position)
Maximum 9 items selected per panel. Do not mix analog and digital devices in the same panel.
  1. Tick the channels you want, click Save.
  2. Drag the elements on the panel to position them over your background image.
  3. Click Done to view the live panel. DI/AI values update in real time. Click a DO to toggle it (opens gate, turns on light, etc.).

Create a control loop (if sensor X → then action Y)

Goal: Create an automated rule: when a condition is met (e.g. temperature exceeds 30°C, a door opens after hours, motion is detected), the Abilis automatically performs an action (turns on a relay, sends an alert). No coding required — the Abilis generates the LUA script for you.

Control loop — a sensor reading triggers an automatic action when a condition is met.
Control loop — a sensor reading triggers an automatic action when a condition is met.

The Abilis describes this as: "Create automated control loops without coding. Configure sensors, conditions, and actions visually — similar to PLC programming. Your control loops are automatically converted to LUA scripts visible in the Programs tab."

Control Loops tab.
Control Loops — New and Import buttons. Existing loops listed here.
  1. Go to Automation > Control Loops.
  2. Click New.
  3. Enter a Name for the loop (e.g. "irrigazione" for an irrigation system). Click Save.
New loop — empty Input and Output devices.
New loop — Input Devices (sensors) and Output Devices (actions) with toolbar buttons.

The loop editor has a toolbar: Timing, Open Guide, Devices, Export, Delete, Save, Close.

Two sections below:

Adding devices to the loop

  1. Click Devices. The device selector opens.
Device selector with DI, DO, AI, AO columns.
Device selector — all channels from all bound modules. Max 9 items, no mixing analog+digital.
  1. Tick the channels you need as inputs and outputs. For example:
  2. Click Save.
Loop with devices assigned.
Loop with input (AI-1, X=1, value 0.00) and outputs (DO-3 to DO-6, Y=1 to Y=4, all false).

Setting the timing

  1. Click Timing.
Timing settings.
Timing — Time unit and Operational cycle (how often the loop runs).
  1. Set the Time unit and Operational cycle (e.g. 1 Second means the loop checks every second).
  2. Click Save.

Writing the formula

  1. Click Open Guide to see the formula editor. The formula uses X and Y variables you assigned to define the logic. For example:
  2. Click Save. The loop starts running automatically.
The loop is automatically converted to a LUA script and appears in the Programs tab. You can edit the LUA directly if you need more complex logic.

Set up Alert Manager channels (email, SMS, call, digital output)

Goal: Before any feature in the Abilis — IP Ban, Control Loops, ARP Alert, VPN monitor, an alarm — can notify you when something happens, you need an alert channel configured. A channel is a reusable recipe: "send an email to this address", "send an SMS to this number", "call this phone and play this message", "turn on this relay". Once defined, any feature can attach to it.

Alert Manager table with four channels: e-mail, SMS, call, and digital output.
Tools > Alert Manager. Each row is a channel. Green icons show which action types are enabled for that channel (e-mail, SMS, phone call, automation device).

Why channels exist separately: so you configure the recipient details once and point many features at the same channel. When the manager's mobile number changes, you edit one channel — not every alarm rule that referenced it.

  1. Go to Tools > Alert Manager.
  2. You see a list of existing channels (CH: 1, CH: 2, …). Click an existing channel to edit it, or New + to create one.
  3. For the channel, give it a clear Description — e.g. SMS to manager, Call security, Email IT team. You will see this name everywhere the channel is referenced.
  4. Tick the output methods this channel should use. You can tick more than one — a single event can simultaneously email IT and SMS the on-call engineer.
    MethodWhat it doesWhat to configure
    E-mail Sends an email to a configured address. Recipient email. SMTP settings must be configured system-wide.
    SMS Sends an SMS through the Abilis SIM modem. Recipient phone number. The SIM must be installed and registered.
    Telephone call The Abilis calls a number and plays a recorded message. Phone number, DISA service, and the audio message to play.
    Automation device Turns on a physical digital output — a siren, a warning lamp, a bell. Which DO channel to activate, and for how long.
  5. Click Save.
  6. Attach the channel to an event source. For example, at IP Ban settings the channel number is chosen from a dropdown; inside a sensor threshold rule the channel is referenced under Action. You can point the same channel at as many event sources as you like.
For email and SMS to actually deliver, the SMTP server (for email) and the SIM modem (for SMS) must be configured and working. The Alert Manager only decides when to send; the underlying transport has to be alive. You can test by attaching the channel to a harmless event and triggering it.
Keep a small set of channels with clear names rather than one big channel per recipient. A channel like Critical: call all managers (email + SMS + call) reused across all critical events is easier to manage than dozens of per-event channels.

Act when a sensor crosses a threshold (temperature, humidity, light…)

Goal: A real analog sensor is feeding the Abilis a number — a temperature probe, a humidity sensor, a soil moisture reading, an ambient light meter. You want something to happen when the number crosses a value: turn on a cooling fan when the server-room temperature exceeds 25°C, start irrigation when soil moisture drops below 30%, raise an alert when a freezer climbs above -16°C.

Control Loop editor — input sensor and output devices for an irrigation loop.
Automation > Control Loops > loop detail. Input Devices lists the sensor (here AI-1, a soil humidity probe). Output Devices lists the relays the loop controls. The condition logic is defined in the syntax editor.

This is exactly what Control Loops are for. This section walks through the most common pattern — a threshold trigger — with a concrete example.

Scenario: a cold-storage room has an analog temperature probe wired to a WIO module (channel AI-1). A cooling relay is on channel DO-1. When the temperature goes above −16°C the cooling must come on and an alert must be sent; when it drops back below −18°C the cooling switches off.

  1. Confirm the hardware is connected and visible. Go to Automation > Monitoring and check that the temperature sensor reports a sensible live value — see Discover and connect a WIO module if it isn't.
  2. Go to Automation > Control Loops and click New.
  3. Name the loop (e.g. cold_storage) and click Save.
  4. Click Devices and tick: Click Save.
  5. Click Timing and set the operational cycle — e.g. 10 Seconds means the loop re-evaluates every 10 s. Cold storage does not need per-second evaluation.
  6. Click Open Guide (the formula editor) and write the rule. A simple on/off threshold is a single line: For hysteresis (no rapid on/off flapping around the threshold), use the loop's previous-state variable — see the formula guide for the exact syntax on your firmware.
  7. Click Save. The loop starts running immediately — the cooling responds to the live temperature reading.
  8. Attach an alert. Open the same loop, find the Alert channel field (or create a linked alarm entry), and point it at one of the channels you created in Set up Alert Manager channels. Now when the loop triggers, you also get an SMS or email.
The same pattern works for many control-loop applications — just adjust the sensor, the threshold, and the output. Common uses: Control Loops converts the formula to a LUA script automatically, visible under Programs if you ever want to extend the logic.

Fire a multi-action alarm from a digital input (panic button, smoke, leak)

Goal: A physical contact closes — a panic button is pressed, a smoke sensor triggers, a water leak detector activates, a door opens after hours. You want multiple things to happen at once: all the cameras start recording, a call goes to security, an SMS goes to the manager, a warning lamp comes on. Not a gradual reaction like a thermostat — a hard trip.

Multi-action alarm — one digital input triggers cameras, SMS, phone call, relay, and email.
One trigger fans out to every configured action. Each channel (email, SMS, call, relay, program) fires independently.
Alert Manager channel triggered by a digital input — runs a program and chains to SMS.
Alert Manager channel detail for a DI alarm. Program is ticked (runs a script named "DI"), and Call another alert chains to channel 2 (Sends SMS) so the admin is also notified by text.

This is different from a sensor threshold rule. Thresholds run continuously and track a varying analog value. An alarm is a one-shot event: the input changed, now do these specific actions.

Scenario: a panic button is wired to DI-2 on a RIO module. When it is pressed, the Abilis must simultaneously (1) call the security company and play a recorded announcement, (2) SMS the office manager, and (3) turn on a red warning lamp on DO-1.

  1. Prepare the recorded announcement. See Record a new audio message or Create an audio message using Text-to-Speech.
  2. Create an Alert Manager channel that covers all three reactions at once. Follow Set up Alert Manager channels and tick Telephone call, SMS, and Automation device on the same channel. Configure each with its recipient / output.
  3. Go to Tools > Alert Manager (Alarm table) — or the dedicated Alarm page if your firmware exposes one — and click Add alarm.
  4. Configure the alarm rule:
  5. Click Save.
  6. Test — press the button. Within a second or two, the lamp should light, the manager should receive the SMS, and the security company's phone should ring with the recorded announcement.
The same rule pattern works for the common real-world inputs: water leak detector on DI, smoke sensor on DI, door contact on DI, UPS power-fail signal on DI, gate position switch on DI. Swap the source channel and the action channel — the logic is the same.
To call a list of numbers rather than one (for example, a fire evacuation announcement to every employee's mobile), see Make a phone call when a sensor triggers — that section covers the DISA-callback broadcast pattern, deployed in production to ring 60+ phones simultaneously.

Activate a relay or device from a phone call (gate, bell, door)

Goal: You want a phone call to act as a switch on something physical. The classic case: a caller dials the Abilis number, the Abilis recognises the caller's number against an allow-list, activates a relay for a few seconds, and the gate opens — no apps, no internet, no keyfob, no cloud. Other uses of the same pattern: ring an external bell when an extension is called, unlock a door by caller-ID, turn on a siren by dialling a special internal code.

How it works: two Abilis features combine. A CTI routing rule recognises the incoming call; its output is not another phone but an automation action — a digital output pulse.

  1. Wire the relay (gate opener, bell, door strike, lamp) to a digital output on a WIO, RIO, or RVS module. Confirm the output works manually from Automation > Control Panel or Monitoring — you should be able to toggle it and see the device react.
  2. If you want to restrict who can trigger this — the usual case for a gate — create a list of allowed caller numbers:
  3. Go to Phone > CTI Routings and click New +.
  4. Configure the rule:
  5. Click Save.
  6. Test — from an allowed phone, call the number. The relay should pulse, the gate (or bell, or door) should respond. Calls from numbers not on the list should be ignored by this rule and fall through to whatever other routing applies.
Caller-ID is spoofable on some networks. For anything where unauthorised access has real consequences (front door, safe room, server cage), combine caller-ID matching with a secondary factor — a short PIN entered after the call connects, a time-window restriction, or a second physical sensor. Do not rely on caller-ID alone as a security measure.
This pattern is already deployed in production for short-let rentals: the renter's mobile number is added to the list for the booking window; the gate opens when they arrive; the number is removed at checkout. No physical key ever changes hands.

Restrict an automation alarm to specific hours or days

Goal: You have an alarm rule that works exactly as intended — a motion sensor at the perimeter fires an alert and starts cameras recording — but you only want it active outside business hours. During the day the same motion is ordinary staff activity and shouldn't trigger anything; at night it matters. One rule with a time window, not two different alarm systems.

This is the automation-side equivalent of Night mode for phone calls. Same idea — a schedule condition on the rule — but applied to alarms from digital inputs and sensor thresholds rather than CTI routings.

  1. Start from an alarm rule that already works. See Multi-action alarm from a digital input or Act when a sensor crosses a threshold. Confirm the rule triggers correctly before restricting when it runs — otherwise a schedule problem and a trigger problem look the same.
  2. Open the rule in Tools > Alert Manager (or the ALARM table — location depends on firmware).
  3. Find the Schedule or Active hours field on the rule. Typical options:
  4. Save. The rule now evaluates both the trigger condition and the current time. Outside the active window the rule is inert — the sensor can fire without any action happening. Inside the window it behaves normally.
  5. Test at both times. Trigger the source inside the active window and confirm the alarm fires. Trigger it again outside the window and confirm nothing happens.
For installations with multiple alarm rules that share a schedule — e.g. a complete "night mode" with six different sensors all active 22:00–06:00 — configure the schedule once as a named time window in the Abilis's scheduling system, then reference that window from each rule. Changing the curfew hours later is a one-place edit.
Schedule conditions apply to the triggering of the rule, not to already-running reactions. If a rule triggers at 05:59 and starts a camera recording configured to run for 10 minutes, the recording completes normally even though the window closes during it. The schedule gates the trigger, not the response.

Upload and manage automation programs (LUA scripts)

Goal: Upload and manage the LUA scripts that power your automation. Control Loops generate these scripts automatically, but you can also write custom scripts for advanced logic.

Programs tab.
Programs — start, stop, edit LUA scripts, and view execution logs. New and Import buttons.
  1. Go to Automation > Programs.
  2. Existing programs are listed with their status (running/stopped).
  3. New — create a new LUA script from scratch.
  4. Import — upload a LUA script file.
  5. Click on a program to: start/stop it, edit the code, or view the execution log.
The description says: "These programs are LUA scripts, that can be either written by the user, or generated by editing the program's control loops." If you used Control Loops, the generated LUA appears here and can be further customised.

Monitor live sensor values and output states

Goal: Watch live sensor readings in real time — temperature graphs, humidity levels, door open/close events — and set up monitoring presets to quickly check the sensors you care about most.

Monitoring tab with a list of saved presets.
Monitoring — saved presets appear as named rows (e.g. temper, umid_prato, rvs-1, solar_power). Click a name to open its graph; click New + to create a new one.
  1. Go to Automation > Monitoring.
  2. Click New + to create a new monitoring preset.
Monitoring preset with two device channels being graphed; detail tooltip showing up-state percentages.
A preset graphing two channels (Rvs-1,DI-1 and Night: Rvs-1,DI-2). The tooltip on hover shows the exact up-state percentage and transition count for each channel at that moment. Edit reopens the device picker; Export to CSV saves the data.
  1. The panel shows: "Select a device to start."
  2. Click Edit to choose which devices and channels to graph.
  3. The graph displays live data. Use Export to CSV to download the data for analysis.
  4. Click Save to keep the preset for future access — it appears in the Presets list.

Track equipment run-time for scheduled maintenance

Goal: A piece of equipment — a motor, a compressor, a pump, a generator, a boiler — needs servicing every N hours of operation, not every N days. You want the Abilis to track how many hours the machine has actually run (not just been switched on) and alert maintenance when the interval is approaching, so nobody forgets and no machine runs past its service window.

Run-time tracking — counting the time a machine is actively running, by monitoring a digital signal (a relay output from the machine, or a contact that closes when the motor is on) and accumulating the seconds it has been active. Different from "power is connected" — many machines idle between cycles.
  1. Wire the machine's run signal to a digital input on a WIO or RIO module. The signal source depends on the machine — a motor controller usually has a clean RUN output relay; an older compressor might need a current-sensing transformer on the power cable, which produces a contact closure when current is flowing. Either way, the Abilis sees a simple digital on/off on an input.
  2. Discover the input — see Discover and connect a WIO module. Note the channel name (e.g. DI-3) and verify it toggles correctly in Automation > Monitoring when the machine runs.
  3. Create a control loop for counting. Go to Automation > Control Loops and click New. Name it after the machine (e.g. pump_runtime).
  4. Open Devices and add:
  5. In Timing, set the cycle to 1 Second. Each second the loop runs, it adds 1 to the accumulator if and only if X1 is active.
  6. In the formula (Open Guide), the logic is: Add a threshold condition that triggers an alert when M1 reaches the service interval in seconds — e.g. 500 hours × 3600 = 1,800,000 seconds for a 500-hour service.
  7. Attach an alert channel — see Set up Alert Manager channels. The alert fires once when the threshold is crossed; maintenance gets an email or SMS.
  8. After servicing, reset the accumulator. Open the Control Loop, clear M1 to 0, save. The counter starts from zero again.
For a fleet of similar machines (e.g. 10 pumps), duplicate the control loop and change only the input channel and the machine name. All use the same formula; each tracks its own run-time independently. The maintenance dashboard in Monitoring can show all counters at once.
Run-time counts continue across Abilis reboots because the accumulator variable is stored in the unit's persistent configuration. If the Abilis hardware is replaced, restore from a configuration backup to preserve the counters — otherwise they reset to zero and the next service interval drifts.
Anteklab Technical Support Email: tem@antek.it
Tel: +39 0376 16262,27