Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
littlebits hack day @ bristol

##1 starting

Firstly, using terminal install YQL and request if you don't have it already:

npm install request
npm install yql

Create a new .js file - make sure you can navigate to it with the terminal prompt to run.

Make sure you have at the top:

var YQL = require('yql');
var request = require('request');

##2 Cloud Control

go to - username and password will be somewhere in real life I have indicated!

Find the pokemon name that matches yours - test it to make sure you can light it up.

Also make a note of the device ID access token 😄

##3 Sending Data

Here is an example request (you'll want to change which cloudbit your using)

function sendRequestToCloudBit(percent){

  //my cloudbit
  var pokemon = "243c200c0659";

  //set up request to send.
  var options = {
    method: "POST",
    url: ''+pokemon+'/output',
    body: JSON.stringify({
      "percent" : percent,
      "duration_ms" : 1000 }),
      headers: {
        'Content-Type' : 'application/json',
        'Authorization' : 'Bearer xxx'

    //completion function
    function callback(error, response, body) {
      if (!error && response.statusCode == 200) {

    //send request.
    request(options, callback);


Don't forget to call it like :


##4 Getting data from YQL

Have a play around on the YQL console to familiarise yourself with the data you'll be getting -

here's an example query:

select item.forecast 
  from weather.forecast 
  where woeid in 
    (select woeid 
      from geo.places 
      where text="bath, england") 
  AND u='c'

##5 Putting that into JS

Next, we want to put that into our JS script:

function getDataFromYahoo(){

  var query = new YQL('select item.forecast from weather.forecast where woeid in '
                      +'(select woeid from geo.places '
                      +'where text="bath, england") '
                      +'AND u=\'c\'');

  query.exec(function (error, response) {

      console.log("error!\n" + JSON.stringify(error));
    } else {


    }//end if error



##6. Next steps

Maybe you could expand your function to get data from YQL to allow a person to chose where? Could you allow them to type that in via the terminal prompt?

What if it doesn't rain a lot where you are? You could have a sunglasses checker? coat checker etc?

Weather isn't for everyone, you could play around with any other API's using request's GET instead of POST - my favourite API is the USGS earthquake API - I could build an earthquake notifier. What could you do instead?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment