A revised version, inside are present some hints and semplifications...
{
:local ifWanted "auto-on|forced-on|off"; # it can be one or more, with | as a separator, between auto-on, forced-on and off
:local ifAlsoIdle true; # Can be true or false. If true displays also the poe capable interface on idle status
:local ifMode true; # Can be true or false. If true displays also how the interface mode is set
:local pTotalCurr 0
:local pTotalPowr 0
:local div do={
:local in [:tostr $1]
:local sym [:tostr $2]
:local int [:pick $in 0 ([:len $in] - 1)]
:local dec [:pick $in ([:len $in] - 1) [:len $in]]
:local ret "$int.$dec$sym"
:if ($ret = ".0$sym") do={:set ret "0.0$sym"}
:return $ret
}
:local form do={
:local in [:tostr $1]
:local sym [:tostr $2]
:local temp " $in"
:return "$[:pick $temp ([:len $temp] - 4) [:len $temp]]$sym"
}
:put ("POE Status:")
/interface ethernet poe
:foreach line in=[monitor [find where poe-out~$ifWanted] once as-value] do={
:local ifName ($line->"name")
:local ifPOut ($line->"poe-out")
:local ifPVol ($line->"poe-voltage")
:local ifStatus ($line->"poe-out-status")
:local pOutTens [$div ($line->"poe-out-voltage") "V"]
:local pOutCurr [$form ($line->"poe-out-current") "mA"]
:local pOutPowr [$div ($line->"poe-out-power") "W"]
:set pTotalCurr ($pTotalCurr + ($line->"poe-out-current"))
:set pTotalPowr ($pTotalPowr + ($line->"poe-out-power"))
:local ifStrMod ""
:if ($ifStatus = "powered-on") do={
:if ($ifMode) do={:set ifStrMod " Mode: $ifPVol\t $ifPOut\t $ifStatus\t|"}
:put ("Interface: $ifName\t|$ifStrMod $pOutTens | $pOutCurr | $pOutPowr")
} else={
:if ($ifAlsoIdle) do={
:set ifStrMod $ifStatus
:if ($ifMode) do={:set ifStrMod "| Mode: $ifPVol\t $ifPOut\t $ifStatus"}
:put ("Interface: $ifName\t$ifStrMod")
}
}
}
:local sysTens ""
:local sysPSUl ""
:local sysPSUh ""
/system health
:if ([:typeof [get psu1-voltage]] != "nil") do={
:set sysPSUl "PSU low $[$div [get psu1-voltage] "V"]"
:set sysPSUh " | PSU high $[$div [get psu2-voltage] "V"]"
} else={
:set sysTens [$div [get voltage] "V"]
}
:put ("Total: $[$form $pTotalCurr "mA"] | $[$div $pTotalPowr "W"]")
:put ("Routerboard: $sysTens$sysPSUl$sysPSUh")
}
Units with more than one PSU (CRS112-8P-4S or 16P or 24P or 48P devices)
on example ifWanted="auto-on|forced-on|off", ifAlsoIdle=true and ifMode=true
terminal code
POE Status:
Interface: ether1 | Mode: low auto-on powered-on | 23.8V | 98mA | 2.3W
Interface: ether2 | Mode: low forced-on powered-on | 23.7V | 120mA | 2.8W
Interface: ether3 | Mode: low auto-on short-circuit
Interface: ether4 | Mode: high auto-on waiting-for-load
Interface: ether5 | Mode: low off disabled
Interface: ether6 | Mode: low auto-on powered-on | 23.7V | 196mA | 4.6W
Interface: ether7 | Mode: low auto-on powered-on | 23.8V | 113mA | 2.6W
Interface: ether8 | Mode: low auto-on powered-on | 23.8V | 109mA | 2.5W
Total: 636mA | 14.8W
Routerboard: PSU low 24.2V | PSU high 48.6V
Units with single PSU (hEX PoE / PowerBOX models)
on example ifWanted="auto-on|forced-on", ifAlsoIdle=false and ifMode=false
terminal code
POE Status:
Interface: ether2 | 27.4V | 145mA | 3.9W
Interface: ether3 | 27.4V | 113mA | 3.0W
Total: 258mA | 6.9W
Routerboard: 27.4V