Podporovaná zařízení: NETIO 4All, PowerPDU 4C, NETIO 4 (bez údajů o spotřebě),
Dvojice skriptů Skript A (Daily report) a Skript B (Switch counter) posílá jednou denně přehledně informace o jednotlivých výstupech (spotřeba [Wh / kWh), cena za spotřebovanou energii a počet přepnutí každého jednoho výstupu). V emailu jsou podrobné informace za posledních 24h, ale pro porovnání také průměr za uplynulých 7 dní.
První skript A (Daily report) slouží k periodickému odesílání emailu a vyčítání spotřeby. Druhý skript B (Switch counter) detekuje přepnutí jednotlivých výstupů, počítá je a stará se o jejich zaznamenávání.
Příklad emailu z AN06:
Nastavení emailu v NETIO 4x
V NETIO 4x zařízení v jeho web konfiguraci, je třeba nastavit podmínky pro odesílání emailu.
Web zařízení - sekce Settings-Email nastavte zařízení následovně:
-
SMTP server
- adresa smtp serveru Vašeho poskytovatele emailové služby (např. smtp.google.com, smtp.seznam.cz)
-
Enable SMTP authentication
- zaškrtnuto
- Username - emailová adresa
- Password - heslo k emailové adrese
- Enable TLS encryption - zašrtnuto
-
To
- emailová adresa
-
Use custom sender address
- volitelné
-
Send daily reports about NETIO 4All health
- Volitelná (neovlivňuje AN06)
-
Při zaškrtnutí posílá zařízení pravidelně dále uvedený report, který nemá nic společného s emailem z AN06.
Poznámka: Jedná se o doporučené nastavení, různí poskytovatelé emailových služeb mohou vyžadovat jiné nastavení. Doporučujeme nastavení zkontrolovat s doporučením konkrétního poskytovatele.
Příklad daily report emailu z NETIO 4x zařízení:
Daily report for device myNetio, date 2019-07-21.
== SYSTEM LOAD ==
Hour System load Incomming traffic
------------------------------------------
0 - 1 - -
1 - 2 - -
2 - 3 - -
3 - 4 - -
4 - 5 - -
5 - 6 - -
6 - 7 - -
7 - 8 - -
8 - 9 - -
9 - 10 - -
10 - 11 - -
11 - 12 - -
12 - 13 - -
13 - 14 - -
14 - 15 - -
15 - 16 - -
16 - 17 - -
17 - 18 - -
18 - 19 - -
19 - 20 - -
20 - 21 - -
21 - 22 - -
22 - 23 - -
23 - 24 - -
== SYSTEM LOGS ==
Errors: 0
Warnings: 0
=== System ===
=== Manager ===
=== Networking ===
=== Users ===
=== Storage ===
=== Devices ===
Vytvoření pravidel (rule) pro Skripty A a B.
Ve webové administraci NETIO 4 v sekci Actions, přidejte pravidlo pomocí tlačítka Create Rule
Skript A (Daily report)
1) Vyplňte následující parametry:
- Enabled: zaškrtnuto
- Name: Daily report (uživatelsky definovatelné)
- Description: Daily report about NETIO (uživatelsky definovatelné)
- Trigger: System started up
- Schedule: Always
2) Do pole pro script v jazyce Lua zkopírujte následující kód:
------------NETIO AN06------------ ------------Section 1------------ local electricityPrice = "0.12" -- price for kWh local currency = "$" -- currency local emailReport = "my.email@gmail.com" -- your email ---------End of Section 1--------- local emailTime = "01:00:00" local initialEnergy = {} local weekStats = {} for i=1,7 do weekStats[i] = {energy={0,0,0,0},switches={0,0,0,0}} end function initialize() local stringTime = os.date("%X") local time = (3600*tonumber(stringTime:sub(1,2)) + 60*tonumber(stringTime:sub(4,5)) + tonumber(stringTime:sub(7,8))) local emTime = (3600*tonumber(emailTime:sub(1,2)) + 60*tonumber(emailTime:sub(4,5)) + tonumber(emailTime:sub(7,8))) for i=1,4 do initialEnergy[i] = devices.system["output" .. i .. "_cumulatedConsumption"] end delay(86400-time+emTime,function() dailyReport() end) end function dailyReport() local day = tonumber(os.date("%w")) -- os.date("%w") returns 0 for Sunday if day == 0 then day = 7 end local prevDay = day - 1 if prevDay == 0 then prevDay = 7 end -- get data about switching if _G.weekSwitches[prevDay].switches == nil then weekStats[prevDay].switches = {0,0,0,0} else weekStats[prevDay].switches = _G.weekSwitches[prevDay].switches -- reset counter for previous day _G.weekSwitches[prevDay].switches = {0,0,0,0} end for i=1,4 do if devices.system["output" .. i .. "_cumulatedConsumption"] ~= nil then weekStats[prevDay].energy[i] = devices.system["output" .. i .. "_cumulatedConsumption"] - initialEnergy[i] initialEnergy[i] = devices.system["output" .. i .. "_cumulatedConsumption"] else weekStats[prevDay].energy[i] = 0 initialEnergy[i] = 0 end end -- formating email local text = "AN06 - Daily report from NETIO device\n" text = text .. os.date("%c") .. "\n" text = text .. "----------------------------------\n" text = text .. "Last 24 hours:\n" for i=1,4 do text = text .. "Output" .. i .. ": " text = text .. weekStats[prevDay].energy[i] .. "[Wh], " local price = computePrice(weekStats[prevDay].energy[i]) text = text .. price .. currency .. ", " text = text .. weekStats[prevDay].switches[i] .. "x switched\n" end text = text .. "----------------------------------\n" text = text .. "Last 7 days:\n" for i=1,4 do text = text .. "Output" .. i .. ": " local sumEnergy = 0 local sumSwitches = 0 for j=1,7 do sumEnergy = sumEnergy + weekStats[j].energy[i] sumSwitches = sumSwitches + weekStats[j].switches[i] end text = text .. sumEnergy .. "[Wh], " local price = computePrice(sumEnergy) text = text .. price .. currency .. ", " text = text .. sumSwitches .. "x switched\n" end logf("Sending daily report, day: %d",day) mail(emailReport,"NETIO daily report",text,5) delay(86400,function() dailyReport() end) end function computePrice(energy) local price = string.gsub(electricityPrice,'%.','') return tonumber(price)*energy/100000 end log("Mail skript started") -- Measurment variables are not available after power up, some delay is necessary delay(1,function() initialize() end)
Skript B (Switch counter)
1) Vyplňte následující parametry:
- Enabled: zaškrtnuto
- Name: Switch counter (uživatelsky definovatelné)
- Description: Switching counter for daily report (uživatelsky definovatelné)
- Trigger: DO state changed
- Schedule: Always
2) Do pole pro script v jazyce Lua zkopírujte následující kód:
------------NETIO AN06------------ local day = tonumber(os.date("%w")) -- os.date("%w") returns 0 for Sunday if day == 0 then day = 7 end -- Initializing if _G.weekSwitches == nil then _G.weekSwitches = {} for i=1,7 do _G.weekSwitches[i] = {switches={0,0,0,0}} end --Script is triggered once on power up for every output _G.weekSwitches[day] = {switches={-1,-1,-1,-1}} end -- Incrementing counter for k in pairs(event.args) do _G.weekSwitches[day].switches[tonumber(k:sub(7,7))] = _G.weekSwitches[day].switches[tonumber(k:sub(7,7))] + 1 end
Princip
- Skript A (Daily report) slouží k periodickému odesílání emailu a vyčítání spotřeby.
- Skript B (Switch counter) detekuje přepnutí každého jednoho výstupu na zařízení, tyto změny stavu počítá v globální proměnné.
- Při spuštění zařízení dojde k inicializaci Skriptu A (Daily report) a vyčtou se současné hodnoty čítačů spotřeby. Skript poprvé odešle pravidelný email v 1:00 (1 a.m). Email obsahuje zprávu o spotřebě z jednotlivých výstupů, počtu přepnutí a ceně za spotřebovanou energii. Kromě informací o předchozím dni zasílá také informace o předchozích 7 dnech.
- Skript obsahuje globální proměnnou _G.weekSwitches, která slouží k předávání informací ohledně počtu přepnutí. Při vytváření dalších skriptů je nutné dbát na to, aby takto nebyla pojmenovaná jiná proměnná.
Nastavení proměnných
-
electricityPrice
- V této proměnné se nastavuje cena za jednu kWh.
- Proměnnou je třeba zadat jako řetězec (string).
- Hodnota musí být na 2 desetinná místa.
- Vypočítaná cena je zaokrouhlena na celé číslo.
- Příklad pro 12 centů za kWh: local electricityPrice = "12.00"
-
currency
- Proměnná nastavující měnu, která byla zadána v proměnné electricityPrice.
- Příklad pro ¢: local currency = "¢"
-
email
- Emailová adresa na kterou se bude odesílat report.
- Jedná se o řetězec (string), je tedy nutné ho uzavřít do uvozovek.
- Příklad pro email my.email@gmail.com: local email = "my.email@gmail.com"
FAQ
1) Je možné dostávat denní report jindy než v 1 hodinu ráno?
Ano, stačí upravit proměnnou emailTime. Je ovšem nutné zachovat formátování, například pro odesílání v 15:30 bude proměnná vypadat následovně: local emailTime= "15:30:00".
2) Je možné daily report použít i pro NETIO zásuvky, které neměří spotřebu elektřiny?
Ano, v emailu pouze budou na místech pro spotřebu a cenu vždy nuly.
3) Co se stane s emailem, pokud nebude NETIO připojené na síti v nastaveném čase?
V takovém případě se email neodešle. NETIO potřebuje spojení na SMTP server v okamžiku odesílání emailu.
4) Dojde při výpadku napájení k vyresetování údajů o spotřebě za poslední nedokončený den?
Ano, při výpadku napájení se vyresetují všechny údaje. Data pro posledních 7 dní jsou v emailu vždy až od doby kdy došlo k obnovení napájení.
5) Je možné poslat z NETIO email při startu zařízení?
Ano, již vytvořený skript a postup pro nastavení je možné najít v AN05.
Podporované verze FW:
3.1.0 a novější (Archiv firmware)
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í. |