Podporovaná zařízení: NETIO 4All, PowerPDU 4C, NETIO 4
Lua skript periodicky s nastavenou periodou kontroluje dostupnost nastavené IP adresy. Na zvolený výstup indikuje zapnutím stav “IP adresa OK” (nebo KO v závislosti na proměnné invertState).
Skript je možné spouštět jen v určitém časovém interval a v určité dny. Například pondělí až pátek 9:00 – 16:00.
V nedefinovaném stavu (těsně po startu zařízení) nebo mimo časový interval je výstup uveden do nastavitelného výchozího stavu (defaultState).
Aplikace AN24
- Při odpojení / výpadku serveru se zapne napájení pro záložní systém
- Když zapnete notebook, automaticky se rozsvítí světlo a zapne klimatizace
- Když dítě zapne notebook nebo tablet mimo určený vymezený čas, spustí se alarm (vypnete mu WiFi router).
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: Copy ping state (uživatelsky definovatelné)
- Description: IP Watchdog (uživatelsky definovatelné)
- Trigger: System started up
- Schedule: libovolný (v této konfiguraci nemá vliv na funkci)
3) Do pole pro skript v jazyce Lua zkopírujte následující kód:
------------NETIO AN24------------ ------------Section 1------------ local IP = "192.168.101.150" -- watched IP local output = 1 -- signalizing output (1 - 4) local invertState = 1 -- 0 = copy state, 1 = copy reversed state local period = 2 -- period between pings [s] local validPings = 3 -- number of pings for state change local startTime = "08:30:00" local endTime = "16:00:00" local days = "1100000" -- 0 - disabled, 1 - enabled local defaultState = 0 ---------End of Section 1--------- local results = {} for i=1,validPings do results[i] = 0 end local iterator = 1 local lastState = defaultState local setToDefaultState = 0 local startT = (3600*tonumber(startTime:sub(1,2)) + 60*tonumber(startTime:sub(4,5)) + tonumber(startTime:sub(7,8))) local endT = (3600*tonumber(endTime:sub(1,2)) + 60*tonumber(endTime:sub(4,5)) + tonumber(endTime:sub(7,8))) function pingDevice() local day = tonumber(os.date("%w")) -- os.date("%w") returns 0 for Sunday if day == 0 then day = 7 end --check day if days:sub(day,day) == "1" then local stringTime = os.date("%X") local time = (3600*tonumber(stringTime:sub(1,2)) + 60*tonumber(stringTime:sub(4,5)) + tonumber(stringTime:sub(7,8))) --check time if (endT>startT and time>startT and time<endt) and="" or="" time="">=startT)or(time<=endT))) then setToDefaultState=1 ping{address=IP, timeout=5, callback=checkResponse} else if toboolean(setToDefaultState) then setToDefaultState=0 delay(5,function() devices.system.SetOut{output=output,value=defaultState} for i=1,validPings do results[i] = 0 end end) end end end delay(period,function() pingDevice() end) end function checkResponse(o) if o.success then results[iterator] = 1 else results[iterator] = 0 end --check previous results local sum = 0 for i=1,validPings do sum = sum + results[i] end if sum == 0 then devices.system.SetOut{output=output,value=invertState} lastState = invertState elseif sum == validPings then devices.system.SetOut{output=output,value=1-invertState} lastState = 1-invertState else devices.system.SetOut{output=output,value=lastState} end iterator = iterator%validPings + 1 end logf("Watchdog on IP: %s started",IP) devices.system.SetOut{output=output,value=defaultState} pingDevice()
Princip
- Skript se spustí po spuštění zařízení NETIO 4x.
- Zvolený signalizační výstup (output) se nastaví do výchozího stavu (defaultState).
- Kontrola dostupnosti IP adresy (IP) probíhá pouze ve vybraných dnech (days) a v časovém intervalu nastaveném pomocí proměnných startTime a endTime.
- Kontrola dostupnosti IP adresy probíhá periodicky. Periodu kontrol je možné nastavit pomocí proměnné period [sekundy].
- Nastavení stavu výstupu je prováděno periodicky (dojde-li k přepnutí stavu výstupu například pomocí webového rozhraní, výstup se po určité době opět nastaví do stavu ve kterém by podle skriptu měl být).
- Aby došlo k přepnutí výstupu, musí nastavená IP adresa odpovědět/neodpovědět na tolik dotazů ping, kolik je hodnota proměnné validPings.
- Například, aby došlo k zapnutí výstupu, musí při hodnotě period = 5 a validPings=3 IP adresa pozitivně odpovědět 3x v řadě (během 15 sekund) na dotaz ping.
- Těsně po startu a mimo nastavený časový interval je výstup uveden do výchozího stavu (defaultState).
- Pomocí proměnné invertState je pak možné invertovat stav výstupu (zapnutý výstup při nedostupné IP adrese a naopak).
Nastavení proměnných
-
IP
- Nastavuje hlídanou IP adresu
- Jedná se o řetězec (string), musí se tedy vložit do uvozovek
- Příklad pro hlídání IP adresy 192.168.101.20: IP = "192.168.101.20"
-
output
- Nastavuje výstup, na který se bude promítat stav hlídané IP adresy
- Příklad pro výstup 2: output = 2
-
invertState
- Proměnná indikující otočení stavu výstupu.
- Jediné přípustné hodnoty jsou 0 a 1.
- Je-li hodnota 0 (invertState = 0), dostupnost IP adresy se přímo kopíruje na výstup (dostupná IP adresa - zapnutý výstup, nedostupná IP adresa - vypnutý výstup).
- Je-li hodnota 1 (invertState = 1), dostupnost IP adresy se kopíruje na výstup obráceně (dostupná IP adresa - vypnutý výstup, nedostupná IP adresa - zapnutý výstup).
-
period
- Proměnná nastavující periodu jednotlivých kontrol (v sekundách).
- Příklad pro kontrolu každých 60 sekund: period = 60
-
validPings
- V této proměnné je možné nastavit, kolik po sobě jdoucích odpovědí musí skript obdržet, aby došlo k přepnutí stavu výstupu (při krátkodobém výpadku nedojde k rychlému přepnutí stavu výstupu).
- Příklad pro 3 odpovědi v řadě: validPings=3 (pro zapnutí výstupu je potřeba obdržet 3 pozitivní odpovědi na ping za sebou, pro vypnutí výstupu je potřeba obdržet 3 negativní odpovědi na ping za sebou).
-
startTime
- Proměnná nastavující začátek časového intervalu pro který skript běží.
- Jedná se o řetězec (string), musí se tedy vložit do uvozovek.
- Formát proměnné je "hh:mm:ss”.
- Hodiny je nutné zadávat v rozmezí 0-24.
- Příklad pro začátek v 8:00 (8:00 a.m): startTime="08:00:00"
-
endTime
- Proměnná nastavující konec časového intervalu.
- Jedná se o řetězec (string), musí se tedy vložit do uvozovek.
- Formát proměnné je "hh:mm:ss”.
- Hodiny je nutné zadávat v rozmezí 0-24.
- Pro nonstop aktivaci skriptu stačí nastavit hodnotu endTime stejnou jako startTime (například startTime="00:00:00", endTime="00:00:00")
- Příklad pro konec v 18:00 (6:00 p.m): endTime="18:00:00"
-
days
- Proměnná nastavující ve které dny je skript aktivní.
- Jedná se o řetězec (string), musí se tedy vložit do uvozovek.
- Má-li skript v daný den běžet, je nutné na jeho místo dát 1, má-li být vypnutý, pro vypnutí v daný den, na jeho místě bude 0.
- Formát proměnné je "mtwtfss”.
- Příklad pro zapnutí skriptu po celý týden kromě neděle: days="1111110"
-
defaultState
- Proměnná nastavující stav, do kterého bude výstup uveden po zapnutí zařízení a poté, co skončí interval, ve kterém je skript aktivní.
- Jediné přípustné hodnoty jsou 0 (vypnout) a 1 (zapnout).
- Příklad pro nastavení výchozího stavu na 1: defaultState=1
Poznámka k nastavení časového intervalu:
- Pokud časový interval překračuje půlnoc, má větší prioritu konkrétní den. Například, má-li skript běžet od 18:00 (startTime="18:00:00") do 5:00 (endTime="05:00:00") a pouze ve všední dny (days="1111100"), tak v pátek bude skript aktivován v 18:00 a deaktivován v sobotu v 0:00. Skript se znovu spustí v pondělí v 0:00.
Spuštění skriptu
Po nastavení všech parametrů a uložení skriptu je potřeba restartovat chytré zásuvky NETIO. Po opětovném naběhnutí systému se skript spustí a kontrolní výstup se začne nastavovat podle hlídané IP adresy. Pokud se skript nespustí zkontrolujte nastavení.
FAQ:
1) Jak nastavit aby skript fungoval 24 hodin, 7 dní v týdnu?
Stačí nastavit proměnné startTime a endTime tak, aby se jejich hodnoty rovnaly (např. startTime="00:00:00", endTime="00:00:00") a proměnnou days: days="1111111".
2) Je možné takto kontrolovat více IP adres?
Ano, stačí vytvořit další skript a nastavit příslušné proměnné (je nutné změnit i výstup, který bude indikovat dostupnost IP adresy).
NETIO podporuje různé formáty PING Watchdogu:
- AN25 Detekce výpadku zařízení - 1 z 10 IP adres neodpovídá na PING (Lua skript)
- AN09 IP Watchdog 1 ze 2 - detekce dostupnosti zařízení na LAN pomocí pingu (Lua skript)
- Funkce WatchDog
Podporované verze FW:
3.0.0 a vyšší (Archiv firmware)
Více o Lua:
https://wiki.netio-products.com
Tato Aplikační poznámka může být použita v:
|
NETIO 4NETIO 4 je PDU modul čtyř zásuvek 230V/8A s připojením do počítačové sítě pomocí LAN a WiFi. Každou ze zásuvek lze individuláně vypnout/zapnout pomocí různých M2M API protokolů. NETIO 4 je unikátní produkt, který najde uplatnění v IT, průmyslu, chytrých domech, multimediálních instalacích atd. Všude, kde potřebujete zásuvky na 230V ovládané z mobilní aplikace, z nějakého programu (M2M API), z uživatelského skriptu (Lua), z funkcí časovač (Scheduler) a automatický restartér (IP WatchDog).
|
|
NETIO 4AllNETIO 4All je PDU modul čtyř elektrických zásuvek 230V/8A s měřením spotřeby na každé zásuvce, který lze připojit do počítačové sítě pomocí LAN a WiFi. Každou ze čtyř zásuvek lze individuálně vypnout/zapnout přes web nebo pomocí různých M2M API protokolů. Na každé zásuvce lze měřit její spotřebu elektřiny (A, W, kWh). Chytré zásuvky NETIO 4All jsou určeny pro aplikace vzdáleného měření a ovládání elektrických zásuvek. |
|
NETIO PowerPDU 4CNETIO PowerPDU 4C je malé PDU (Power Distribution Unit) na 110/230V. Každý ze čtyř výstupů IEC-320 C13 lze ovládat samostatně (On / Off / Reset / přepni). Na každém výstupu jsou měřeny elektrické veličiny (A, W, kWh, TPF, V, Hz) s vysokou přesností. Zařízení obsahuje dva LAN porty pro připojení do sítě (vestavěný Ethernet switch). Každý výstup napájení podporuje ZCS (Zero Current Switching), to znamená šetrné ovládání připojených zařízení. |