Cylon and Travis
For this Cylon example, we're going to check on a Travis build every ten seconds, and change the color of a Sphero depending on the result.
Before you run this, make sure you install the following dependencies:
- travis-ci (npm install travis-ci)
- cylon-sphero (npm install cylon-sphero)
First of all, let's load up Cylon. We're going to load the version directly from the repo, since we're here already:
var Cylon = require('cylon');
Next, we'll set up Travis. We're going to be using the very useful travis-ci module.
var Travis = require('travis-ci')
Now that we've got our Travis module imported, let's set it up:
var travis = new Travis({version: '2.0.0'});
Now we have a working interface to the Travis-CI API. Let's set up a username and repo to query Travis about later, as long as we're here. Feel free to change these if you want to try with your own repositories.
var user = "hybridgroup", name = "cylon";
Robot
And with that last bit of setup done, let's start setting up our robot!
Cylon.robot({
We use a connection to tell Cylon what port it can use to communicate with our
Sphero, along with what adaptor it should require (cylon-sphero
) to connect to
it. We give it a name to make it easier to reference later on.
connections: { sphero: { adaptor: 'sphero', port: '/dev/rfcomm0' ;n },
Devices are set up in a similar fashion, but allow us to directly issue commands to the sphero. These are added to the robot's namespace directly to make them easy to access.
devices: { sphero: { driver: 'sphero' } },
Now that we've told our robot what hardware it has access to, we can start telling it what it should do. The work function passes along one argument, a reference to the robot so we can access it's state and hardware.
work: function(my) {
We'll define a function to check Travis and change the Sphero's color depending on the state of the last build.
var checkTravis = function() {
First, it will log that it's checking Travis to the logger:
console.log("Checking repo " + user + "/" + name);
Let's set the default color of the Sphero to blue until we know what the build status is:
my.sphero.setColor('blue', true);
Now we'll fetch the Travis build status:
travis.repos({ owner_name: user, name: name }, function(err, res) {
If we were returned a response containing a repo, we'll check the status of the build and use that to determine what color we should make the Sphero.
if (res.repo === undefined) { my.sphero.setColor('blue', true); } switch (res.repo.last_build_state) {
When the build state is passed, then we'll set the Sphero's color to green:
case 'passed': my.sphero.setColor('green', true); break;
And if the build has failed, let's set the Sphero's color to red:
case 'failed': my.sphero.setColor('red', true); break;
Otherwise, we'll just set it to blue:
else me.sphero.setColor 'blue', true default: my.sphero.setColor('blue', true); } }); };
Now that we've got that function defined, let's call it to set the initial color of the Sphero:
checkTravis();
And every ten seconds, let's keep checking Travis:
every((10).seconds(), checkTravis);
}
And now that we've got our work defined, let's start the robot!
}).start();