Rainmeter render node skin: batch wake and sleep

Another break between projects and another Rainmeter skin to share, really useful one. It does only two things: wakes all my nodes, making their fans spin at 800 RPMs, and puts them to sleep, so the LED lights of the nodes’ cases chase to blink in the dark illuminating the corridor, in which they stand, with red.

render_node_skin-remote

Continuing the skin series Render node skin and Render node skin: Dual CPU.

How to wake a remote node

As time goes by I got used to simple utilities, as simple as possible, tiny and single-functioned. One of the WOL implementations is described in Depicus’s Wake On Lan Command Line. Grab it, copy it to Windows directory to run without typing every time its full path.

The syntax is simple: wolcmd [mac address] [ip address] [subnet mask] [port number]. To wake all of the nodes you need a batch script, like this:

echo Waking N01
wolcmd 000000000000 10.0.0.1 255.255.255.0 7

echo Waking N02
wolcmd 111111111111 10.0.0.2 255.255.255.0 7

One by one it’ll send one magic packet to each node and try to awaken them, if it’s possible and your network adapters are configured to receive them.

How to put a remote note to sleep

The easiest way I found is to use PsExec from PsTools by Mark Russinovich. It executes a process remotely, simple, like if you’d run it in local Windows’ console. For example, to sleep or hibernate a node:

echo Putting N01 to sleep
PsExec \\N01 -s -d Rundll32 Powrprof.dll,SetSuspendState

Where Rundll32 is a built-in within Windows utility, which obviously runs DLLs, here it’s powrprof.dll or Power Profile Helper DLL. If the node’s hibernation is on, it’ll be hibernated instead of put to sleep.

Or to shut them all forcedly down in 5 seconds:

echo Putting nodes to sleep
PsExec \\N01,N02,N03 -s -d shutdown /s /f /t 5

There are many options for your fantasy.

Rainmeter skin

Now, the skin which I use a lot for a year and which have only two active buttons “[wake]” and “[sleep]”, look at the picture above. One to wake them all, One to bring them all and in the darkness bind them One to put them all to sleep, accordingly.

[wake]
Meter=String
MeterStyle=Style
X=(#height#/2+5)
Y=(#height#/3-5)
FontSize=(#height#/5)
LeftMouseUpAction=!Execute ["wakeup_node.bat"]
Text="[wake]"

It’s a simple text block with LeftMouseUpAction which executes a program or a script after the left mouse button is released. In this example it runs wakeup_node.bat. You can find the samples of wake_node.bat and sleep_node.bat inside the installed folder.

RenderNodeWakeSleep_0.1.rmskin

If you still have questions, feel free to contact me, I’ll try to help.
Thanks for visiting, hope to see you next time.