##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:
//includes
var YQL = require('yql');
var request = require('request');
##2 Cloud Control
go to control.littlebitscloud.cc - 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: 'https://api-http.littlebitscloud.cc/v2/devices/'+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) {
console.log(JSON.stringify(body));
}
}
//send request.
request(options, callback);
}
Don't forget to call it like :
sendRequestToCloudBit(30);
##4 Getting data from YQL
Have a play around on the YQL console to familiarise yourself with the data you'll be getting - https://developer.yahoo.com/yql/console
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) {
if(error){
console.log("error!\n" + JSON.stringify(error));
} else {
console.log(JSON.stringify(response));
}//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?