I've hacked a bunch of scripts together to send the CPU load of my server to an Arduino with some LEDs. They require two bash sessions at once: one to keep the port open and one to poll "top" for the cpu load and send it to the port. At first I did not automate this, which means that after a reboot of the server (which occurs rarely), I would always forget to set it up again.
I'm using screen, because I want to be able to log in over ssh and see how each process is doing. I'm positive that it's possible to do this in a much more elegant way, but that wasn't really my priority. It's just to see if I could make the Arduino do something useful.
Since getting the script to work with multiple screen windows was quite challenging, I thought I would post it here:
#!/bin/bash
~/rekelbox/initPort.sh
# Wait 10 seconds to initialize
sleep 10
# Create screen session rekelbox (-S) without attaching (-dm)
screen -dmS rekelbox
sleep 1
# create a new window (window 1) from window 0
screen -S rekelbox -p 0 -X stuff "screen$(printf \\r)" # on a bash prompt instead of $(printf \\r) do ctrl+V enter, now ^M will show
# send "cat </dev/ttyUSB0" command to rekelbox, window 0
screen -S rekelbox -p 0 -X stuff "cat </dev/ttyUSB0$(printf \\r)"
# send "watch -n1 ./sendCpuPerc.sh" command to rekelbox, window 1
screen -S rekelbox -p 1 -X stuff "watch -n1 ~/rekelbox/sendCpuPerc.sh$(printf \\r)"