Difference between revisions of "Monitor input voltage on RB333/433AH"

From MikroTik Wiki
Jump to: navigation, search
m (voltmonitor)
m (Rearrange script grouping)
Line 47: Line 47:
 
== Requirements ==
 
== Requirements ==
  
/tool e-mail must be set correctly to send email
+
/tool e-mail must be set correctly to send email,
  
/system ntp client must be set correctly for the correct time after a reboot.
+
/system ntp client must be set correctly for the correct time after a reboot,
  
 +
and the following three scripts:
  
This requires three scripts.
 
  
The first is voltstart. It should be scheduled to run on startup/reboot in the system scheduler.
+
== voltstart ==
 +
 
 +
The first is voltstart. It should be scheduled to run on startup in /system schedule.
  
== voltstart ==
 
 
<pre>
 
<pre>
 
:global voltage [/system health get voltage]
 
:global voltage [/system health get voltage]
Line 65: Line 66:
 
</pre>
 
</pre>
  
The second is voltmonitor. It should be scheduled to run once an hour on the hour (or within a minute or so)
 
  
 
== voltmonitor ==
 
== voltmonitor ==
 +
 +
The second is voltmonitor. It should be scheduled to run once an hour on the hour (or within a minute or so after) in /system schedule.
  
 
<pre>
 
<pre>
Line 96: Line 98:
 
</pre>
 
</pre>
  
The third is voltreport. It does not need to be scheduled. It is executed by voltmonitor at 11PM every day.
 
  
 
== voltreport ==
 
== voltreport ==
 +
 +
The third is voltreport. It does not need to be scheduled. It is executed by voltmonitor at 11PM every day.
  
 
<pre>
 
<pre>

Revision as of 21:33, 30 August 2008

Hourly monitor and report via email low voltage warnings and daily voltage levels.

This applies to the RB333 and RB433AH with V3.11 or greater ONLY!

The Low Voltage Report

ThisBox voltage is 12.5v

The Daily Voltage Report

Daily voltage report for aug/29/2008

23:00 = 12.8v
22:00 = 12.8v
21:00 = 12.9v
20:00 = 13.0v
19:00 = 13.0v
18:00 = 13.3v
17:00 = 14.1v
16:00 = 14.0v
15:00 = 14.0v
14:00 = 13.9v
13:00 = 13.9v
12:00 = 13.9v
11:00 = 13.9v
10:00 = 13.5v
09:00 = 13.2v
08:00 = 12.6v
07:00 = 12.5v
06:00 = 12.5v
05:00 = 12.5v
04:00 = 12.6v
03:00 = 12.6v
02:00 = 12.6v
01:00 = 12.7v
00:00 = 12.7v

Since recording started on 13:00:00 aug/28/2008
Maximum = 14.2v at 13:00:00 aug/28/2008
Minimum = 12.5v at 05:00:00 aug/29/2008


Requirements

/tool e-mail must be set correctly to send email,

/system ntp client must be set correctly for the correct time after a reboot,

and the following three scripts:


voltstart

The first is voltstart. It should be scheduled to run on startup in /system schedule.

:global voltage [/system health get voltage]
:global highvolt $voltage
:global lowvolt $voltage
:global hivolttime ([/system clock get time] . " " . [/system clock get date])
:global lovolttime $hivolttime


voltmonitor

The second is voltmonitor. It should be scheduled to run once an hour on the hour (or within a minute or so after) in /system schedule.

#set lowvoltalarm to desired alarm voltage in tenths of a volt. 125 = 12.5v
:global lowvoltalarm 125
:global highvolt
:global lowvolt
:global starttime
:global hivolttime
:global lovolttime
:global vh
:local thisbox [/system identity get name]
:global voltage [/system health get voltage]
:local thistime [/system clock get time]
:local thisdate [/system clock get date]
:local thishour [:pick $thistime 0 2]
:local voltint [:pick $voltage 0 2]
:local voltrem [:pick $voltage 2 3]
:local voltstr ($voltint . "." . $voltrem)
:local emessage ($thisbox . " voltage is " . $voltstr)
# set your email address in the next line
:if ($voltage <= $lowvoltalarm) do={/tool e-mail send to="youremail@yourdomain.com" subject="$thisbox low voltage" body=$emessage}
: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)}
:if ($thishour = "23") do={:execute voltreport}


voltreport

The third is voltreport. It does not need to be scheduled. It is executed by voltmonitor at 11PM every day.

:global voltage
:global highvolt
:global lowvolt
:global hivolttime
:global lovolttime
:global starttime
:global vh
:local tvolt
:local thisdate [/system clock get date]
:local thishour
:local emessage "Daily voltage report for $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]]
        :if ($x = 23) do={:set thishour "00"} else={
            :if ($x > 13) do={:set thishour ("0" . [:tostr (23 - $x)])} else={:set thishour [:tostr (23 - $x)]}
        }
        :set emessage ($emessage . $thishour . ":00 = " . [:pick $tvolt 0 2] . "." . [:pick $tvolt 2 3] .  "v\n")
    }
    :set emessage ($emessage . "\nSince recording 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="youremail@yourdomain.com" subject="Voltage Report" body=$emessage
}
# remark out the next line for testing to avoid resetting the voltage array
:set vh