This code is made for the beta firmware
First listing is the agent code, second is device code.
I have modified the code, so you can run it without the hardware
You don’t use nodes anymore
Agent:
tickers <- ["AAPL", "YHOO", "GOOG", "CHRM"]; //tickers <- ["GOOG"]; //tickers <- []; CanUpdate <- true http.onrequest(function(request,res){ server.log("http.onrequest called (in Agent)"); server.log("*** body: " + request.body +" (in Agent)"); if (request.body == "0"){ //clear server.log("*** clears tickers (in Agent)"); CanUpdate = false quotes <- {}; } else if (request.body == "1"){ // refresh now CanUpdate = true server.log("*** enable Quotes (in Agent)"); getQuotes(); } else { local symbols = split(request.body, ","); server.log("*** add Quotes "+ request.body +" ( in Agent)"); foreach (s in symbols){ tickers.push(s); } getQuotes(); } //res.send(200, "received"); res.send(200, request.body); }); function getQuotes(){ server.log("function getQuotes called (in Agent)"); local url = "http://download.finance.yahoo.com/d/quotes.csv?s="; foreach (symbol in tickers){ url += symbol+"+"; } url += "&f=sl1"; server.log("****** String passed to download.finance.yahoo.com ******"); server.log(url); local response = http.get(url,{}).sendsync(); // response comes back like this: "Apple Inc.",439.41,439.39 "Google Inc.",753.88,753.68 "Microsoft Corpora",27.89,27.88 server.log("****** response fom download.finance.yahoo.com (in Agent) ******"); server.log(response.body ); server.log(""); local parse = split(response.body, "\ "); foreach (element in parse){ local stock = split(element,","); //server.log(stock[0]); //server.log(stock[1]); local ticker = stock[0]; local price = stock[1]; //if (stock[0]=="GOOG"){ //output.set(stock[1]); //} ticker = ticker.slice(1,ticker.len()-1); // get rid of " price = split(price, ".")[0]; // get rid of . quotes[ticker] <- price; } } function update(){ server.log("*** Function update called (in Agent)"); server.log("*** CanUpdate = " + CanUpdate ); if (CanUpdate){ getQuotes(); imp.wakeup(60.0,update); } } function send(){ server.log("Function send called (in Agent)"); // iterate through each current symbol and display for 5 seconds foreach (key, value in quotes){ device.send("display", key+" "+value); server.log("** Sending: " + key + " " + value +" (in Agent)"); //imp.sleep(5.0); } // repeat the cycle every 5 seconds imp.wakeup(10.0,send); } server.log("*************************************************************"); server.log("access me via: "+ http.agenturl()); server.log("*************************************************************"); update(); send();
Device:
`// Simple Stock Ticker
server.log(“Simple Stock Ticker Started (in Device)”);
local currentString = “”;
output <- OutputPort(“Google”, “number”);
function set(inputString) {
server.log(“function set called (in Device)”);
inputString = inputString.tostring();
inputString = inputString.toupper();
server.log(format("** Received %s (in Device)",inputString));
currentString = inputString;
}
imp.configure(“Simple Stock Ticker”, [], [output]);
set(“set example”);
agent.on(“display”,function(msg){
server.log(“agent.on called (in Device)”);
set(msg);
server.log("* msg = " + msg);
});`