Ako je neko od vas imao potrebu da mu je zatrebala notifikacija mailom ukoliko dodje do nestanka struje na nekoj od lokacija gde se koristite baterijski bekapi onda je ova skripta jako zgodna stvar. Ili ukoliko ste je koristili znacete da je prestala sa radom nakon 6.30 verzije ali nasao sam jednostavno resenje. Bila je samo jedna greska oko pozivanja druge skripte, a o cemu se radi napisacu ispod.
Naime treba napraviti 2 skripte, jedna za monitoring a druga za slanje dnevnog izvestaja (ukoliko zelite nesto poput toga)
Kreirati skriptu pod nazivom voltmonitor i obratiti paznju na poslednji deo koda koji je i pravio gresku u prethodnoj verziji:
/system script add name=voltmonitor
zatim uneti skriptu
#podesite lowvoltalarm kao napon za ~ 1V nize nego trenutna voltaza (jer kada nestane struje napon na baterijama ce pasti za otprilike 1v i nastavice da pada), podesavate ga kao trocifren broj, npr 125 = 12.5v
:global lowvoltalarm 260
:global highvolt
:global lowvolt
:global starttime
:global hivolttime
:global lovolttime
:global vh
:local thisbox [/system identity get name]
:global voltage [/system health get value-name=voltage]
:local thistime [/system clock get time]
:local thisdate [/system clock get date]
:local thishour [:pick $thistime 0 2]
:local emessage ($thisbox . " voltage is " . [:pick $voltage 0 2] . "." . [:pick $voltage 2 3])
:if ([:len $lowvolt] < 1) do={:set lowvolt 999; :set highvolt 0}
# set your email address in the next line
:if ($voltage <= $lowvoltalarm) do={/tool e-mail send to="email na koji cete slati mail" subject="$thisbox low voltage" body=$emessage start-tls=yes}
:if ($voltage > $highvolt) do={:set highvolt $voltage; :set hivolttime ($thistime . " " . $thisdate)}
:if ($voltage < $lowvolt) do={:set lowvolt $voltage; :set lovolttime ($thistime . " " . $thisdate)}
:if ([:len $vh] > 0) do={:set vh ([:toarray $voltage] + $vh)} else={:set vh [:toarray $voltage]}
:if ([:len $starttime] < 1) do={:set starttime ($thistime . " " . $thisdate)}
#ovde obratiti paznju. nekada je skripta pozivala voltreport skriptu ali ovako (:if ($thishour = "23") do={:execute voltreport} ), medjutim pozivanje komandom execute nakon verzije 6.30 vise ne radi ukoliko se naziv skripte ne postavi pod navodnike i zato ih morate dodati u nazivu skripte koju pozivate i to je cela zavrzlama.
:if ($thishour = "23") do={:execute
"voltreport"}
#:if ($thishour = "23") znaci da ce u 23h skripta poslati mail sa listom napona u svakom satu. Ukoliko zelite u neko drugo vreme da se salje onda postavite vreme koje vam odgovara.
Nakon toga napravite skriptu voltreport koja ce slati dnevni izvestaj sa listom napona u svakom satu.
/system script add name=voltreport
zatim u nju unestite sledeci kod:
:global highvolt
:global lowvolt
:global hivolttime
:global lovolttime
:global starttime
:global vh
:local tvolt
:local thisbox [/system identity get name]
:local thisdate [/system clock get date]
:local thishour
:local emessage "Daily voltage report for $thisbox on $thisdate\n\n"
:if ([:len $vh] > 0) do={
:for x from=0 to=([:len $vh]-1) step=1 do={
:set tvolt [:tostr [:pick $vh $x]]
:set thishour [:tostr (23 - $x)]
:while ([:len $thishour] < 2) do={:set thishour ("0" . $thishour)}
:set emessage ($emessage . $thishour . ":00 = " . [:pick $tvolt 0 2] . "." . [:pick $tvolt 2 3] . "\n")
}
:set emessage ($emessage . "\nSince voltmonitor started on " . $starttime . "\n")
:set tvolt [:tostr $highvolt]
:set emessage ($emessage . "Maximum = " . [:pick $tvolt 0 2] . "." . [:pick $tvolt 2 3] . "v at " . $hivolttime . "\n")
:set tvolt [:tostr $lowvolt]
:set emessage ($emessage . "Minimum = " . [:pick $tvolt 0 2] . "." . [:pick $tvolt 2 3] . "v at " . $lovolttime . "\n")
# set email address in next line
/tool e-mail send to="mail na koji ce biti poslato" subject="$thisbox Voltage Report" body=$emessage start-tls=yes
}
# remark out the next line for testing to avoid resetting the voltage array
:set vh
Naravno za sve ovo morate imati podesen email. Za slanje sa gmail naloga dodajte sledece:
/tool e-mail
set address=64.233.166.108 from="email sa koga saljete" password="sifra od gmail naloga" port=587 start-tls=yes user="ponovo mail adresa gmail naloga"
Ako smtp server prestane da radi, sto se desava ponekad onda mozete dodati deo skripte koja ce automatski resolvovati smtp server. Dodajte sledece ko dela skripte koja salje mail:
dodate promenljivu na pocetku bilo gde
:local SMTPserver "smtp.gmail.com"
zatim u delu skripte gde saljete mail, npr:
:if ($voltage <= $lowvoltalarm) do={
/tool e-mail set address=[:resolve $SMTPserver] send to="email na koji cete slati mail" subject="$thisbox low voltage" body=$emessage start-tls=yes}
I naravno za sve ovo jedan scheduler da pokrece voltmonitor svakih sat vremena:
/system scheduler
add interval=1h name=voltmonitor on-event=voltmonitor policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=mar/01/2016 start-time=00:00:00
Izvor:
http://wiki.mikrotik.com/wiki/...r_input_voltage_on_RB333/433AH.
[Ovu poruku je menjao bmarkovic06 dana 03.03.2016. u 22:54 GMT+1]