Podporovaná zařízení: PowerPDU 4C
Jak to funguje
AN15 detekuje přepnutí přepínače, který je připojen na sériovou linku jako „Loopback“ (mezi Rx a Tx). Při změně stavu
Celý příklad AN15 je rozdělen do 3 skriptů. První skript (Send message over serial port) periodicky odesílá zprávu po sériové lince. Druhý skript (Receive message and save timestamp) ukládá čas, ve kterém byla naposledy přijata zpráva po sériovém portu (detekce, zda je centrální vypínač sepnutý). Třetí skript (Send URL commands) běží periodicky a každých 5 sekund na zadané IP adresy URL posílá příkaz, který nastaví výstupy do požadovaných stavů. Zda to bude stav ON nebo OFF podle stavu centrálního vypínače vybírá třetí skript (Send URL commands) a následně vyšle příslušné URL příkazy.
Nastavení sériové linky na PowerPDU 4C
Ve webové aplikaci v sekci M2M API Protocols - Serial Port vyberte možnost Use in Actions (Lua scripts) a Block delimeter vyberte CR+LF (pravé okénko by se mělo automaticky vyplnit na 0xd,0xa). Nastavení uložte kliknutím na Save Changes.
Po úspěšném zapnutí se Status změní na Connected a vedle záložky Serial Console se objeví zelená tečka.
Nastavení URL API na ovládaných NETIO zařízeních
Skript (Send URL commands) odesílá pravidelně příkaz pro nastavení jednotlivých výstupů pomocí URL API protokolu. Cílová zařízení musí mít povolený protokol URL API pro příjem příkazů na ovládání výstupů.
V každém NETIO, které bude ovládané tlačítkem, je nutné povolit URL API. Ve webové aplikaci v sekci M2M API Protocols - URL API zaškrtněte Enable URL API a nastavte Passphrase (tato Passphrase bude využita v ovládacím skriptu). Změny uložte tlačítkem Save Changes.
Po uložení změn dojde k restartování zařízení. Po restartu by se měla vedle záložky URL API objevit zelená tečka signalizující zapnutí.
Vytvoření pravidla (rule)
Pro vytvoření a spuštění Lua skriptů vždy ve webové administraci NETIO 4 v sekci Actions, přidejte pravidlo pomocí tlačítka Create Rule. Poté nastavte parametry a vložte příslušný skript (viz níže).
Skript 1 - Send message over serial port
Skript běží stále a vysílá data do sériového portu. To je vše.
1) Vyplňte následující parametry:
- Enabled: zaškrtnuto
- Name: Send message (Tx) (uživatelsky definovatelné)
- Description: Send message over Serial Port (uživatelsky definovatelné)
- Trigger: System started up
- Schedule: Always
2) Do pole pro skript v jazyce Lua zkopírujte následující kód:
local period = 500 local function sendUart() devices.system.SerialWrite{id="uart",message="\r\n"} milliDelay(period,function() sendUart() end) end sendUart()
Skript 2 - Receive message and save timestamp
Běží stále a vyhodnocuje data přijatá po sériovém portu (detekuje stav vypnuto / zapnuto centrálního tlačítka).
1) Vyplňte následující parametry:
- Enabled: zaškrtnuto
- Name: Receive message (Rx) (uživatelsky definovatelné)
- Description: Receive message over Serial Port (uživatelsky definovatelné)
- Trigger: Serial packet received
- Schedule: Always
2) Do pole pro skript v jazyce Lua zkopírujte následující kód:
local stringTime = os.date("%X") _G.timeStamp = (3600*tonumber(stringTime:sub(1,2)) + 60*tonumber(stringTime:sub(4,5)) + tonumber(stringTime:sub(7,8)))
Skript 3 - Send URL commands
1) Vyplňte následující parametry:
- Enabled: zaškrtnuto
- Name: Send command (uživatelsky definovatelné)
- Description: Send command to all NETIOs devices (uživatelsky definovatelné)
- Trigger: System started up
- Schedule: Always
2) Do pole pro skript v jazyce Lua zkopírujte následující kód:
------------AN15 Script 3 - Send URL commands / Section 1------------ -- IP, passphrase, ActionON, ActionOFF local IPs = { "192.168.101.172", "netio-psw", "1511", "0500", "192.168.101.155", "netio12345", "1151", "0050", "192.168.101.131", "24A42C390D7C", "1115", "0005", "192.168.101.28", "helloWorld123", "0011", "1100", "192.168.101.220", "noIdea42", "1111", "0000" } ---------End of Section 1--------- _G.timeStamp = 0 local stringTime = os.date("%X") local currentTime = (3600*tonumber(stringTime:sub(1,2)) + 60*tonumber(stringTime:sub(4,5)) + tonumber(stringTime:sub(7,8))) function checkRespond() stringTime = os.date("%X") currentTime = (3600*tonumber(stringTime:sub(1,2)) + 60*tonumber(stringTime:sub(4,5)) + tonumber(stringTime:sub(7,8))) if (currentTime - _G.timeStamp) <= 1 then for i=1,#IPs,4 do local actionON = IPs[i+2] local urlCommandON = "http://".. IPs[i] .."/netio.cgi?pass=" .. IPs[i+1] .. "&output1=" .. actionON:sub(1,1) .. "&output2=" .. actionON:sub(2,2) .. "&output3=" .. actionON:sub(3,3) .. "&output4=" .. actionON:sub(4,4) devices.system.CustomCGI{url=urlCommandON} end else for i=1,#IPs,4 do local actionOFF = IPs[i+3] local urlCommandOFF = "http://".. IPs[i] .."/netio.cgi?pass=" .. IPs[i+1] .. "&output1=" .. actionOFF:sub(1,1) .. "&output2=" .. actionOFF:sub(2,2) .. "&output3=" .. actionOFF:sub(3,3) .. "&output4=" .. actionOFF:sub(4,4) devices.system.CustomCGI{url=urlCommandOFF} end end delay(1,function() checkRespond() end) end checkRespond()
Nastavení proměnných
- Ve třetím skriptu (Send command) je v Section 1 proměnná IPs. V této proměnné je možné nastavit IP adresy zařízení NETIO, které budou ovládány pomocí tlačítka, včetně stavů, do kterých se výstupy nastaví.
-
IPs
- Proměnná je tabulka řetězců, jednotlivé části tedy musí být v uvozovkách a vzájemně odděleny čárkou (za posledním řetězcem čárka není).
- Pro každou IP adresu je nutné nastavit 4 parametry: IP adresu, heslo pro URL API, stav pro sepnuté tlačítko (ActionON), stav pro rozepnuté tlačítko (ActionOFF).
- Všechny tyto parametry jsou v uvozovkách a odděleny čárkou.
-
IP adresa
- IP adresa NETIO zařízení, které má být ovládáno
-
Heslo
- Heslo pro URL API příslušného zařízení (viz Nastavení URL API na ovládaném NETIO)
-
ActionON
- Stav, do kterého budou uvedeny výstupy příslušného NETIO, pokud je tlačítko sepnuté.
- Řetězec tvoří 4 čísla (každé pro jeden výstup).
- 0 - výstup bude vypnut
- 1 - výstup bude zapnut
- 5 - výstup bude ponechán v současném stavu
-
ActionOFF
- Stav, do kterého budou uvedeny výstupy příslušného NETIO, pokud je tlačítko rozepnuté.
- Řetězec tvoří 4 čísla (každé pro jeden výstup).
- 0 - výstup bude vypnut
- 1 - výstup bude zapnut
- 5 - výstup bude ponechán v současném stavu
- Příklad ovládání 2 NETIO:
- První IP adresa (192.168.1.1) s heslem netio-psw1 má při sepnutém tlačítku mít všechny výstupy zapnuté, při rozepnutém tlačítku všechny výstupy rozepnuté.
- Druhá IP adresa (192.168.1.2) s heslem netio-psw2 má při sepnutém tlačítku mít vypnuté výstupy 1 a 2, výstupy 3 a 4 mají zůstat v předchozím stavu. Při rozepnutém tlačítku mají být výstup 1 a 2 zapnuté a výstupy 3 a 4 mají opět zůstat v předchozím stavu.
-- IP, password, Action ON, Action OFF)
local IPs = {
"192.168.1.1", "netio-psw1", "1111", "0000",
"192.168.1.2", "netio-psw2", "0055", "1155"
}
Spuštění skriptu
- Po uložení všech skriptů a aktivaci sériové linky stačí restartovat NETIO a všechny skripty začnou pracovat.
FAQ:
1) Nastavení výstupů se děje opakovaně každou sekundu. Jak mohu tento čas změnit?
Téměř na konci třetího skriptu (Send URL commands) je následující řádek:
delay(1,function() checkRespond() end)
V něm je možné upravit periodu se kterou se budou výstupy opakovat (výchozí hodnota je 1 sekunda). Stačí změnit číslo ve funkci delay (nastavuje periodu v sekundách). Toto číslo musí být celé (Lua v NETIO nepodporuje desetinná čísla).
2) Při přepnutí výstupu na zařízení (například tlačítkem) se po chvilce přepne zpět na hodnotu kterou nastavuje centrální tlačítko. Lze tomu zabránit?
Nelze, skript periodicky nastavuje výstupy do stavů, ve kterých by měly být podle proměnné IPs. Je-li pro každý jeden výstup číslo akce 5, je možné výstup nastavovat libovolně. Ale pak jej neovládá centrální tlačítko.
3) Je možné použít jako výstup také NETIO PowerCable REST ?
Ano, PowerCable REST podporuje ovládání výstupu pomocí URL API. Stačí povolit URL API rozhraní stejně jako chytrých zásuvek NETIO 4 nebo 4All a vložit IP adresu + PassPhrase do proměnné IPs. Jelikož PowerCable má jen jeden výstup, je relevantní pouze první hodnota v ActionON a ActionOFF, ostatní doporučujeme nastavit na hodnotu 5. Příklad:
local IPs = {
"192.168.1.1", "PowerCablePsw", "1555", "0555"
}
Podporované verze FW:
3.0.0 a vyšší (Archiv firmware)
Tato Aplikační poznámka může být použita v:
|
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í. |