Nodejs-and-LCDproc

LCD display of bitcoin price

I developed my first node.js module today. Its called lcdproc-client and provides a client interface for lcdproc. For those not in the know, lcdproc is a tcp server that controls most lcd displays (not the monitors but the blocky text ones you see on media players.)

I wish these were more popular, In my opinion they should be on every desktop PC. On mine I wanted to display bitcoin prices and I wanted to do it in either ruby or node.js. Ruby’s library didnt work and I couldnt find one for node.js. I did find one that worked in Perl but I didnt want to write perl code. Plus I had an idea that I might use this for a later raspberry pi project and node.js works well on node.js. I did use the perl code to capture the protocol to figure out how it worked.

Anyway the lcdproc-client has been released so others can use lcdproc with node.js. Also if you don’t have a lcd screen you can use the curses simulation by installing lcdproc and running the daemon with curses LCD simulation (LCDd -d lis).

Below is the code for the BTC display on the LCD.

var Client = require('node-rest-client').Client;
var LcdClient = require('lcdproc-client').LcdClient;

lc = new LcdClient(13666,'localhost');

function get_bitcoin()
{
  console.log("Get Bitcoin");
  client = new Client();
  client.registerMethod("jsonMethod", "http://blockchain.info/ticker", "GET");
  client.methods.jsonMethod(function(data, response){
            // parsed response body as js object
    var obj = JSON.parse(data);
            buy = obj.USD['buy'];
            sell = obj.USD['sell'];
        lc.widget_val("first_line",1,1,"BTC " );
        lc.widget_val("second_line",1,2,"B:" + buy + " S:" + sell);
        });
}


lc.on('ready', function() {
  console.log("AAA");
  console.log("WIDTH: " + lc.width);
  console.log("HEIGHT: " + lc.height);
  lc.screen("bacon");
  lc.widget("first_line");
  lc.widget_val("first_line",1,1,"This is a line");
  lc.widget("second_line");
  lc.widget_val("second_line",1,2,"This is a second line");
  get_bitcoin();
  setInterval(get_bitcoin, 300000);
});
lc.init();
Written on December 29, 2013