Power control devices

Power control devices share some common functionality through the MagAO-X outletController.

Common INDI properties

Read/write Properties

Channel states are reported by the property with the channel name, and state changes can be requested by the same property. The target element contains the last requested state until the state element, which is the current state, matches it. Changing either state or target will request a state change in that channel.

<name>.<channelName>.state = On | Int | Off
<name>.<channelName>.target = On | Off | [empty]

Read-only Properties

The status property gives the reported device status. This does not appear to be useful.

<name>.status.value = ?

The load property gives the line frequency, line voltage, and drawn current as reported by the device.

<name>.load.frequency = [Hz]
<name>.load.voltage = [V]
<name>.load.current = [A]

Each outlet has a property which indicates its current state.

<name>.outlet<N>.state = On | Int | Off

Channel Configuration

The outlets are controlled in channels, which consist of at least one outlet. Channels are configured as sections in the configuration file. Any section name, say [channel1], which has either a oulet= or outlets= keyword will be treated as a channel specification.

The oulet= or outlets= keyword=value pair specifies which outlet or outlets are controlled by this channel. Multiple outlets are specified in an comma separated list.

You can also specify the order in which the outlets are turnned on with the onOrder and offOrder keywords. The values contain indices in the vector specified by the outlet/outlets keyword, not the outlet numbers. So if you have outlets=7,8 you would then have onOrder=1,0 to turn on outlet 8 first, then outlet 7.

You can use onDelays and offDelays, to specify the delays between outlet operations in milliseconds. The first entry is always ignored, then the second entry specifies the delay between the first and second outlet operation, etc.

An example config file section is:

[sue]           #this channel will be named sue
outlets=4,5     #this channel uses outlets 4 and 5
onOrder=1,0     #outlet 5 will be turned on first
offOrder=0,1    #Outlet 4 will be turned off first
onDelays=0,150  #a 150 msec delay between outlet turn on
offDelays=0,345 #a 345 msec delay between outlet turn off


trippLitePDU provides an interface to a Tripp Lite power distribution unit. INDI properties provide the status of each outlet, as well as line power status.

Driver-specific options

Short Long Config-File Type Description
-a --device.address device.address string The device address.
-p --device.port device.port string The device port.
-u --device.username device.username string The device login username.
--device.passfile device.passfile string The device login password file (relative to secrets dir).
--device.readTimeout device.readTimeout int timeout for reading from device
--device.writeTimeout device.writeTimeout int timeout for writing to device
--timeouts.outletStateDelay timeouts.outletStateDelay int The maximum time to wait for an outlet to change state [msec]. Default = 5000
--limits.freqLowWarn limits.freqLowWarn int The low-frequency warning threshold
--limits.freqHighWarn limits.freqHighWarn int The high-frequency warning threshold
--limits.freqLowAlert limits.freqLowAlert int The low-frequency alert threshold
--limits.freqHighAlert limits.freqHighAlert int The high-frequency alert threshold
--limits.freqLowEmerg limits.freqLowEmerg int The low-frequency emergency threshold
--limits.freqHighEmerg limits.freqHighEmerg int The high-frequency emergency threshold
--limits.voltLowWarn limits.voltLowWarn int The low-voltage warning threshold
--limits.voltHighWarn limits.voltHighWarn int The high-voltage warning threshold
--limits.voltLowAlert limits.voltLowAlert int The low-voltage alert threshold
--limits.voltHighAlert limits.voltHighAlert int The high-voltage alert threshold
--limits.voltLowEmerg limits.voltLowEmerg int The low-voltage emergency threshold
--limits.voltHighEmerg limits.voltHighEmerg int The high-voltage emergency threshold
--limits.currWarn limits.currWarn int The high-current warning threshold
--limits.currAlert limits.currAlert int The high-current alert threshold
--limits.currEmerg limits.currEmerg int The high-current emergency threshold


Device not responding

If the device stops responding on the CLI port. A fix is to login via ssh, e.g.

$ ssh localadmin@x.x.x.x

You will need the current password for this device. Once logged in, navigate to the menu choice to Restart PowerAlert.

2- System Configuration

   7- Restart PowerAlert

      1- Restart PowerAlert Now

This can take a loooooong time to reboot.

If the software reboot doesn’t fix it, reset the device using the recessed reset button under the ethernet adapter.

If that doesn’t work, you need to completely unplug the device to force a full reset.


xt1121DCDU provides an interface to a xt1121-based D.C. distribution unit. This is an Electronics-Salon D-228 relay module controlled by an Acromag xt1121 digital I/O module.

Driver-specific options

Short Long Config-File * Type Description
--power.device power.device string Device controlling power for this app's device (INDI name).
--power.channel power.channel string Channel on device for this app's device (INDI name).
--power.element power.element string INDI element name. Default is "state", only need to specify if different.
--device.name device.name string The device INDI name.
--device.channelNumbers device.channelNumbers vector The channel numbers to use for the outlets, in order.