Od hapi na ISPForum.cz:
-----------------------
(7.9.2009)
včera mě napadla jedna věc a tak vám jí přináším. RB433AH umí měřit napětí na napájení tak proč toho nevyužít.
Vtip je v tom, že pokud člověk má někde například záložní zdroj od flajzara nebo emka, nebo nějaký jiný
kde s vybíjející se baterií klesá napětí, jde podle toho nastavit chování a tim pádem i sledování stavu baterie.
Měření napětí tušim funguje i u RB333, RB600 a RB433AH. Pozná se podle toho, že použijete script na vyčítání napětí
a bude tam něco kromě 0V.
Script sleduje napětí na napájení a podle toho provádí jednotlivé úkony. Např: pokud jde elektřina, napětí je
maximální možné, v případě 12V záložních zdrojů 13.5-13.8. Pokud ale elektřina nejde, nedozvíme se o tom a pak
za pár hodin podlehne i záloha. Ovšem při přepnutí na zálohu klesne napětí a to klidně i o 0,5V a toho využijem.
Ve scriptu se dá nastavit napětí této hranice, hranice před vybitím baterie, čas spoždění a pípání RBčka jako UPS zdroje.
Jaké hodnoty doplnit?
vTime (1-...) udává počet minut do nějaké akce při změně. Např: když se přepne na napájení z baterie tak za minutu se pošle mail (sms).
vBeep (0,1) zapne nebo vypne pípání při výpadku elektřiny.
vNormal udává hranici nad kterou je napájení v pořádku, jde o hodnotu napětí vynásobenou x10 (13.7V je 137)
vLow udává hranici pod kterou je už baterie téměř vybitá, jde o hodnotu napětí vynásobenou x10 (13.7V je 137)
Jak postupovat při nastavování správné hodnoty u napětí (vNormal, vLow)
Nejlépe je provádět nastavování při finální instalaci kdy už máme napájecí kabely tak dlouhé jak potřebujem a tedy úbytky
napětí už jsou konečné. Zapneme vše, i záložní zdroj připojíme do elektřiny tak, aby na napájení bylo maximální možné napětí.
Vyčteme hodnotu napětí v mikrotiku a odečteme od ni 0,3V (script na vyčtení napětí, klikací system healt neobnovuje údaje,
aspoň v v3.28 to nedělal). Tuto hodnotu dosadíme do vNormal. Timto jsme nastavili hranici kdy elektřina funguje a napájeni
neprobíhá z baterií.
Script umožňuje ještě nastavení hranice, pod kterou už v baterii nezbývá moc kapacity. Nejlépe je možné toto vyzkoušet tak,
že vypnete elektřinu a počkáte na hodnotu napětí která je naposledy vidět než se odpojí baterie a k ní přičtete 0,3V.
Druhý způsob je, že pokud máme 12V baterii a víme, že plně nabitá baterie má 13.7V a mikrotik ukazuje například 13.5V
(úbytky v napájecí cestě nebo nepřesnost měření), můžeme při 11V vyvolat akci (poslat email o tom, že brzo dojde k odpojení bateri
z důvodu vybití) a ve scriptu jako hodnotu doplníme 108 (10.8V). 0.2V rozdílu (13.7-13.5). Druhý způsob lze použít za předpokladu,
že zdroj nepodpojí baterii dříve než při poklesu pod 11V. Většinou zdroje odpojují baterii až pod 10.8V takže by to neměl být problém.
Pokud nechcete tuto funkci použít, nastavte hodnotu na 001.
Script je nastaven tak, že pokud je napájení v pořádku po dobu 2 minut (dvojnásobek hodnoty vTime), vypíše do logu "napájení v pořádku".
Pokud dojde k výpadku, tak za hodnotu u vedenou ve vTime (aktuálně tedy na minutu) pošle email (aktálně zakázán znakem # na začátku řádky).
Pokud napětí na baterii klesne pod vLow, tak se pošle ihned varovný email a do logu se sázeji hlášky po 10 sekundách.
Pokud dojde k nahození elektřiny, tedy napětí stoupne nad vNormal, hláška do logu o napájení se háže lo 120 sekundách a odkomentování
řákdy se i pošle mail o stavu.
script na vyčítání hodnoty napětí z terminalu:
:while (true) do={:put [/system health get voltage]; :delay 1;}
samotný script:
:global vTime "1";
:global vBeep "1";
:global vNormal "279";
:global vLow "261";
:global mailNormal "0";
:global mailBat "0";
:global mailLow "0";
:global mailSendedNormal "1";
:global mailSendedBat "0";
:global mailSendedLow "0";
:global vLoopNormal "10";
:global vLoopBat "0";
:global vLoopLow "0";
:while (true) do={
:global voltage [/system health get voltage];
:if ($voltage >= $vNormal) do={
:if ($vLoopNormal = 10) do={
### rychly zapis do logu pri nahozeni elektriny
:log info "napajeni v poradku";
###
:beep frequency=1200; :delay 50ms; :beep frequency=1500;
}
:if ($vLoopNormal > (120 * $vTime)) do={
:if ($mailSendedNormal = "0") do={
:set mailSendedNormal "1";
### akce za interval uvedeny v vTime x 2 pri zapnuti elektriny
# /tool e-mail send to="email@email.cz" body="napajeni v poradku";
###
}
### zapis do logu za interval uvedeny v vTime pri zapnute elektrine
:log info "napajeni v poradku";
###
:set vLoopNormal "10";
}
} else={
:set vLoopNormal "0";
:set mailSendedNormal "0";
}
:if ($voltage < $vNormal && $voltage > $vLow) do={
:if ($vLoopBat = 10) do={
### rychly zapis do logu pri prepnuti na baterii
:log info "napajeni z baterie";
###
}
:if ($vLoopBat > (60 * $vTime)) do={
:if ($mailSendedBat = "0") do={
:set mailSendedBat "1";
### akce za interval uvedeny v vTime pri prepnuti na baterii
# /tool e-mail send to="email@email.cz" body="napajeni z baterie";
###
}
### zapis do logu za interval uvedeny v vTime pri zapnute elektrine
# :log info "napajeni z baterie";
###
:set vLoopBat "10";
}
:if ($vBeep = "1") do={:beep frequency=1500 length=3;}
} else={
:set vLoopBat "0";
:set mailSendedBat "0";
}
:if ($voltage <= $vLow) do={
:if ($vLoopLow > (1 * $vTime)) do={
:if ($mailSendedLow = "0") do={
:set mailSendedLow "1";
### akce za interval uvedeny v vTime pri nizkem napeti baterie
# /tool e-mail send to="email@email.cz" body="napajeni z baterie - nizke napeti";
###
}
:set vLoopLow "10";
}
### zapis do logu kazdych 10 sekund
# :log info "napajeni z baterie - nizke napeti";
###
:if ($vBeep = "1") do={:beep frequency=4000 length=3;}
} else={
:set mailSendedLow "0";
:set vLoopLow "0";
}
:set vLoopNormal ($vLoopNormal + 10);
:set vLoopBat ($vLoopBat + 10);
:set vLoopLow ($vLoopLow + 10);
:delay 10;
}