A new project…Jeeves

After returning from underway, I finally got my hands on a LCD Cape for my Beaglebone. Ever since I got my Beaglebone, I’ve been wanting to implement a home automation system. I started using NodeJS but quickly decided I needed something more robust. After some searching, I picked Python and QT.

I hit it head first and so far, I’m pleased with my progress. I started off making the interface (below). It took me a while to get the serial data parsed in, but thanks to a lot of Googling, I got it. I haven’t worked on the other tabs of the user interface yet, but I don’t think they’ll be much more difficult.

This whole solution is really reinventing the wheel, and probably just as expensive as a commercial solution, but I enjoy creating it, and having the ability to add/change things later as I see fit.

Jeeves v0.1

Jeeves v0.1

Cloud9 IDE and NodeJS v0.6.15 on Beaglebone

Being that I wanted to develop using Cloud9 IDE and NodeJS v0.6.x, I had to do a bit of digging to get it working.

After Matt Pardee told me the master branch of cloud9 had a -e runtime argument that would allow you to specify which binary to launch when running/debugging from within the IDE, I knew I needed to finally update cloud9. Originally, when I installed Gentoo on my Beaglebone, I was lazy and extracted the cloud9 folder from the Angstrom image, copied it over, installed node v0.4.9, and everything was great. Now I needed to bunker down and figure out the manual build/install.

The first thing you will want to do is copy your node v0.4.x binary to somewhere. I chose to copy it to Cloud9′s folder, being that there is already a place for it. I then updated NodeJS, and then I pulled Cloud9 from GitHub. I thought it’d be a snap, but I was a bit wrong. It took me 3 days of tinkering, and a few days of waiting to get a reply from a developer at Cloud9. What follows is how I went about doing it.

Read more

Gentoo Cloud9 init script

Here’s the init script I use:

conf.d/cloud9

C9_JS="cloud9.js"
 C9_DIR="/usr/share/cloud9/bin/"
 PID_FILE="/var/run/cloud9.pid"

init.d/cloud9

#!/sbin/runscript
depend() {
    need net localmount
    after bootmisc
    use dns
}
start() {
    ebegin "Starting Cloud9 IDE"
    start-stop-daemon --start --quiet --background --make-pidfile --pidfile "${PID_FILE}" -d "${C9_DIR}" --exec /usr/share/cloud9/support/node-builds-v4/node-armv7l "${C9_JS}" -- -l all -w /home/ian/projects -e node
    eend $?
}
stop() {
    ebegin "Stopping Cloud9 IDE"
    start-stop-daemon --stop --quiet --pidfile "${PID_FILE}"
    eend $?
}

 

You will want to change the –exec to the path of your node binary (mine is located there because I’m using NodeJS v0.6.15 for running my apps, but v4 is required for Cloud9)

I’m sure you’ll want to edit the workspace (/home/ian/projects), and if you’re not running the most recent version of Cloud9 from Github, you’ll want to remove the -e node (I’ll write about updating Cloud9 later).

Updating NodeJS to 0.6.15 on Beaglebone

A special note before reading this: updating NodeJS can possibly break your current NodeJS apps, including Cloud 9 IDE. Care should be taken when to prevent this.

wget http://nodejs.org/dist/v0.6.15/node-v0.6.15.tar.gz
tar xzf node-v0.6.15.tar.gz
cd node-v0.6.15

 

Now you have to edit one file before compiling it. I use nano, but you can use which ever editor you like:

nano deps/v8/SConstruct

Search for the following:

 'CCFLAGS': ['$DIALECTFLAGS', '$WARNINGFLAGS'],

Change the line to (don’t forget the comma at the end):

'CCFLAGS': ['$DIALECTFLAGS', '$WARNINGFLAGS', '-march=armv7-a'],

All that is left is:

./configure --prefix=/usr && make && make install

(I installed node into /usr but you can change that if you’d like)

Sit back and wait. It will take around an hour for it to compile on DC power.

Hello Beaglebone

I got my Beaglebone from Adafruit about a month ago, and I’ve been playing around with it as much as I can.

Immediately after getting it home, I realized that the default install of Angstrom wasn’t going to suit me, as I’ve used Gentoo almost exclusively since I first started dabbling with Linux. I quickly got Gentoo installed, and have loved this little machine ever since.

Right now I’m working on setting up a NodeJS application to read data on the serial port from a Xbee that will eventually be connected with about 10 other Xbees that are connected to Arduinos.

It’s going to be a long ride, as I know next to no NodeJS, but hopefully I’ll get it all setup and running rather efficiently soon.