An Internet Power Switch (IPS) has been built for Mt Pleasant. Its main purpose is to provide remote and local control of power to a small cluster in the computer room. This can be operated from the front panel of the device or remotely via a terminal window. There are also several Remote Switches which plug into a wall socket and allow remote control of a single device via WiFi. Software on the IPS allows for control of these devices.
The front panel of the IPS consists of an Enable button and one button to control each of the 7 connected devices. There is a LED in each control button that indicates if power is on to the device. To avoid accidental toggling, the Enable button must be held on when controlling power to a device and released between button presses.
To turn power on/off to a device, hold down Enable and then press the button for the device you want to control.
The Raspberry Pi PC in the IPS can be accessed via VNC or on a terminal with ssh. The password is the usual one.
This starts a command-line interface that allows you to control power to devices. Type 'help' for a list of possible commands and 'help <command name>' for specific help on a command.
on <device number>
off <device number>
reboot <device number>
disable <device number>
enable <device number>
name <device number> <text>. e.g
name 3 My computer
The remote switches can also be controlled from the Switch Interface software.
Connect to ipspi1hb via VNC or ssh as above and start the Switch Interface. The
status command gives the status of all known remote switches. Each device has a short name rather than a number, e.g.
RR01, and this is the label to use when controlling it. A longer description of the device can be given with the
remote_description command and this will be displayed in the
The remote switch checks in with the IPS PC regularly. The interval between checks is configurable via the
remote_interval command. To turn the attached device on, off, or to reboot it, use the
remote_reboot commands respectively. The command will remain pending until the device checks in when it will be executed. If however, the device is turned on or off locally after the command is issued, it will be ignored.
Hardware consists of a Raspberry Pi PC inside the IPS, connected to two relay boards for managing power switching and a custom-made circuit board primarily for managing input from front-panel buttons and displaying switch status on the panel.
Software running on the Raspberry Pi consists of four programs:
SwitchInterface.py, runs from a terminal window. Multiple instances can be run at once. It provides a user interface for monitoring and control of the rack-mounted IPS and all available Remote Switches.
RemoteRelayServer.pywhich runs a MQTT server and manages input from buttons on the front panel of the IPS. The MQTT server accepts requests from
SwitchInterface.pyand from the Remote Switches. The Remote Switches are designed to have their WiFi switched off for most of the time to keep radio interference to a minimum, but report in once per minute (or at another configurable interval).
RemoteRelayServer.pymanages requests to switch this device and sends any update commands to the Remote Switch whenever it checks in on the network.
RemoteRelayServer.pyInteracts with the hardware in the rack-mounted IPS. It takes commands via MQTT from RemoteSelayServer.py and actually switches the corresponding relay. It also controls the LEDs that indicate status of the switches. The circuit board also has three temperature and humidity sensors attached and this software logs their values every minute to a SQL database.
IPSTHServer.pyprovides temperature and humidity data to MONICA on request
The Remote Switches have Arduino-compatible ESP8266 NodeMCU microcontrollers to manage a single relay switch. Each microcontroller runs software to manage the relay, WiFi connection, MQTT communication, a local button and some LEDs. When powered on it will connect to the local WiFi network if configured or start up as an access point if not, allowing a local connection for initial configuration (which is saved to non-volatile memory for next time). The software is in the Arduino directory, called RelayControl.ino.
Mount the SD card.
Enable ssh: touch /Volumes/boot/ssh
IP address: 184.108.40.206 hostname: ipspihb
interface eth0 static ip_address=220.127.116.11/26 # /26 = netmask of 255.255.255.192 static routers=18.104.22.168 static domain_name_servers=22.214.171.124