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šší