encounters with electron•ics / by flabbergast

Monitoring temperatures with ruby and XRF

I’ve written about monitoring the temperature using a Raspberry Pi (running a node.js app) and XRF radios from Ciseco, communicating together using LLAP messages.

The hardware setup hasn’t changed: a battery powered XRF + thermistor periodically sending LLAP messages with current temperature over radio to Raspberry Pi, where they get logged and processed. Previous software approach was to have a node.js application listen to messages, process them, log them, as well as act as a web server presenting the data to clients. However I was having a hard time making logging work the way I wanted, and figuring out how to make graphs was even more daunting. Another slightly annoying fact was that running a full node server with websockets and all was a bit of an overkill, and it resulted in not so fast (a couple of seconds) response times.

So, I tried a different approach that I like a lot so far. Different programs handling different parts of the task:

  • A ruby script for listening on the serial port for messages (using serialport gem). The temperatures and voltages are logged to RRD database.
  • Another ruby script that runs periodically to generate a static html page and refresh the graphs. It is extremely easy to generate nice graphs with rrdtool.
  • A webserver to serve the generated static pages (at the moment lighttpd).

The project can be found on github. If you want to “deploy” this on your machine, you’ll undoubtedly need to edit the scripts a little (adjust directories and such). The scripts are relatively straightforward though.