Podporovaná zařízení: NETIO PowerPDU 4C
Pomocí Lua skriptu AN45 je možné nastavit časovou sekvenci pro jednotlivé výstupy (proměnné output1 - output4), která bude přepínat výstupy do nastavených stavů.
Skript se spouští ihned po zapnutí napájení zařízení (po cca minutě na nabootování systému).
Doporučujeme všem výstupům nastavit hodnotu PowerUpState = Off.
- Výhodou Lua scriptu oproti jedné předvolené hodnotě PowerUp sequence je možnost složitějších kombinací sekvencí
- Nevýhodou je čekání cca 60 sekund po startu napájení pro NETIO zařízení
Jak funguje AN45
- NETIO potřebuje určitý čas (cca 1 minuta) pro nabootování systému. V tuto dobu jsou výstupy vypnuty (pokud platí, že PowerUpState = Off).
- Pro každý výstup lze nastavit zapínací sekvenci s přesným časováním.
- Časy jsou relativní, každá sekvence trvá nějaký čas a ten se píše na první místo do závorky.
-
Output 1:
- V čase 2 (po 2 sekundách) se zapne.
- Po dalších 2 sekundách se vypne (v čase 4).
- Po dalších 3 sekundách se na 1 sekundu zapne, poté již zůstane vypnutý.
-
Output 2:
- V čase 0 se zapne.
- Po dalších 7 sekundách čekání se vypne
-
Output 3:
- Pro tento výstup není nastavena žádná sekvence
-
Output 4:
-
6 sekund po nabootování systému se výstup zapne
-
6 sekund po nabootování systému se výstup zapne
PowerUp State - nastavení výchozího stavu
Jako první je potřeba nastavit, aby výstupy po startu zařízení byly vypnuté.
- Ve webové aplikaci v sekci Outputs je možné po kliknutí na příslušný výstup nastavit proměnnou Output PowerUp state. Tuto proměnnou je potřeba nastavit na OFF.
- Tato proměnná musí být nastavena na OFF pro každý jeden výstup..
Vytvoření pravidla (rule)
Pro vytvoření a spuštění Lua skriptu je nutné následující:
1) Ve webové administraci NETIO 4 v sekci Actions, přidejte pravidlo pomocí tlačítka Create Rule
2) Vyplňte následující parametry:
- Enabled: zaškrtnuto
- Name: PowerUp sequence (uživatelsky definovatelné)
- Description: Set PowerUp sequence (uživatelsky definovatelné)
- Trigger: System started up
- Schedule: Always
3) Do pole pro skript v jazyce Lua zkopírujte následující kód:
------------NETIO AN45------------
-- Output PowerUp state must be set to OFF
------------Section 1------------
-- format: {time [sec], value [0=Off, 1=On]}
local output1 = {{0,1},{60,0}}
local output2 = {{60,1},{10,0},{10,1},{10,0},{10,1}}
local output3 = {}
local output4 = {{1,1},{1,0},{1,1},{1,0},{1,1},{1,0},{1,1},{1,0},{1,1},{1,0}}
---------End of Section 1---------
function setTimer(sequence,output)
local time = 0
for k, v in pairs(sequence) do
time = time + v[1]
local action = v[2]
if time == 0 then
devices.system.SetOut{output=output,value=action}
else
delay(time,function() devices.system.SetOut{output=output,value=action} end)
end
end
end
function checkFormat(sequence)
for k, v in pairs(sequence) do
local time = tonumber(v[1])
local action = tonumber(v[2])
if time == nil then
log("Time must be a number!")
return false
end
if time < 0 then
log("Time must be higher then 0!")
return false
end
if action ~= 0 and action ~= 1 then
log(tostring(action))
log("Action can be only 0 or 1!")
return false
end
end
return true
end
local format1 = checkFormat(output1)
local format2 = checkFormat(output2)
local format3 = checkFormat(output3)
local format4 = checkFormat(output4)
local format = (format1 and format2) and (format3 and format4)
log(tostring(format))
if format then
setTimer(output1,1)
setTimer(output2,2)
setTimer(output3,3)
setTimer(output4,4)
end
Princip
- Skript se spustí po spuštění zařízení NETIO 4x.
- Nejprve se provede kontrola formátu proměnných output1, output2, output3, output4. Pokud je formát v pořádku, skript začne nastavovat výstupy do příslušných stavů.
Nastavení proměnných
-
output1
- Tato proměnná obsahuje informace o přepínací sekvenci pro výstup 1.
- Sekvence má následující formát: local output1 = {{čas, akce}, {čas, akce}, {čas, akce}, ...}
- Čas určuje dobu v sekundách za kterou bude vykonána akce od minulého přepnutí.
- Časové hodnoty se nastavují v sekundách. První hodnotu je možné nastavit na 0, v tom případě dojde k provedení akce ihned po spuštění skriptu. Ostatní hodnoty musí být větší než 0.
- Akce je hodnota 0 (vypnout) nebo 1 (zapnout).
- Pokud se s výstupem nemá dít nic, je nutné nechat proměnnou prázdnou (local output1 = {})
- Příklad pro zapnutí výstupu ihned po spuštění skriptu a vypnutí po 10 sekundách: local output1 = {{0,1},{10,0}}.
-
output2, output3, output4
- Tyto proměnné slouží k nastavení sekvence pro výstupy 2, 3 a 4. Nastavují se stejně jako output1.
-
Příklad:
- Výstup 1: Po spuštění ihned zapnout a po 60 sekundách vypnout.
- Výstup 2: Po 60 sekundách od spuštění zapnout a následně 2x vypnout a zapnout vždy po 10 sekundách.
- Výstup 3: Nedělat nic
- Výstup 4: Po zapnutí 5x zapnout a vypnout vždy po 1 sekundě.
------------Section 1------------
local output1 = {{0,1},{60,0}}
local output2 = {{60,1},{10,0},{10,1},{10,0},{10,1}}
local output3 = {}
local output4 = {{1,1},{1,0},{1,1},{1,0},{1,1},{1,0},{1,1},{1,0},{1,1},{1,0}}
---------End of Section 1---------
Spuštění skriptu
Skript se spustí vždy po zapnutí zařízení NETIO. Pokud k tomu nedojde, zkontrolujte nastavení, popřípadě formát jednotlivých sekvencí.
FAQ
1) Je možné nastavit čas menší než 1 sekunda?
Ne, 1 sekunda je nejnižší možná hodnota.
2) Vstupy se nepřepínají ihned po startu zařízení, ale až po určité době, co je špatně?
Špatně není nic, jedná se o prodlevu mezi zapnutím zařízení a spuštěním Lua skriptu. Tato prodleva trvá zhruba jednu minutu.
3) Lze nastavit spínání přesně v nějaký čas?
Ano, podrobný postup včetně skriptu je možné najít v AN17.
4) Lze kombinovat tyto startovní sekvence s ovládáním přes web nebo tlačítky?
Ano, pokud během trvání časové sekvence jiný zdroj výstup přepne, AN45 jej již na předchozí hodnotu neopraví a zareaguje zase až v dalším čase.
5) Je možné nastavit PowerUp sekvenci i pro zařízení bez Lua?
V zařízeních bez Lua je pouze možné nastavit časy pro zapnutí jednotlivých výstupů (https://www.netio-products.com/en/glossary/powerup-sequence).
Podporované verze FW:
3.3.1 a vyšší
