You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
4.2 KiB
116 lines
4.2 KiB
5 years ago
|
/*
|
||
|
GetYahooWeatherReport
|
||
|
|
||
|
Demonstrates making a request to the Yahoo! Weather API using Temboo from an Arduino Yún.
|
||
|
|
||
|
Check out the latest Arduino & Temboo examples and support docs at http://www.temboo.com/arduino
|
||
|
|
||
|
A Temboo account and application key are necessary to run all Temboo examples.
|
||
|
If you don't already have one, you can register for a free Temboo account at
|
||
|
http://www.temboo.com
|
||
|
|
||
|
This example assumes basic familiarity with Arduino sketches, and that your Yún is connected
|
||
|
to the Internet.
|
||
|
|
||
|
Looking for another API to use with your Arduino Yún? We've got over 100 in our Library!
|
||
|
|
||
|
This example code is in the public domain.
|
||
|
*/
|
||
|
|
||
|
#include <Bridge.h>
|
||
|
#include <Temboo.h>
|
||
|
#include "TembooAccount.h" // contains Temboo account information
|
||
|
// as described in the footer comment below
|
||
|
|
||
|
|
||
|
// the address for which a weather forecast will be retrieved
|
||
|
String ADDRESS_FOR_FORECAST = "104 Franklin St., New York NY 10013";
|
||
|
|
||
|
int numRuns = 1; // execution count, so that this doesn't run forever
|
||
|
int maxRuns = 10; // max number of times the Yahoo WeatherByAddress Choreo should be run
|
||
|
|
||
|
|
||
|
void setup() {
|
||
|
Serial.begin(9600);
|
||
|
|
||
|
// for debugging, wait until a serial console is connected
|
||
|
delay(4000);
|
||
|
while(!Serial);
|
||
|
Bridge.begin();
|
||
|
|
||
|
}
|
||
|
|
||
|
void loop()
|
||
|
{
|
||
|
// while we haven't reached the max number of runs...
|
||
|
if (numRuns <= maxRuns) {
|
||
|
|
||
|
// print status
|
||
|
Serial.println("Running GetWeatherByAddress - Run #" + String(numRuns++) + "...");
|
||
|
|
||
|
// create a TembooChoreo object to send a Choreo request to Temboo
|
||
|
TembooChoreo GetWeatherByAddressChoreo;
|
||
|
|
||
|
// invoke the Temboo client
|
||
|
GetWeatherByAddressChoreo.begin();
|
||
|
|
||
|
// add your temboo account info
|
||
|
GetWeatherByAddressChoreo.setAccountName(TEMBOO_ACCOUNT);
|
||
|
GetWeatherByAddressChoreo.setAppKeyName(TEMBOO_APP_KEY_NAME);
|
||
|
GetWeatherByAddressChoreo.setAppKey(TEMBOO_APP_KEY);
|
||
|
|
||
|
// set the name of the choreo we want to run
|
||
|
GetWeatherByAddressChoreo.setChoreo("/Library/Yahoo/Weather/GetWeatherByAddress");
|
||
|
|
||
|
// set choreo inputs; in this case, the address for which to retrieve weather data
|
||
|
// the Temboo client provides standardized calls to 100+ cloud APIs
|
||
|
GetWeatherByAddressChoreo.addInput("Address", ADDRESS_FOR_FORECAST);
|
||
|
|
||
|
// add an output filter to extract the name of the city.
|
||
|
GetWeatherByAddressChoreo.addOutputFilter("city", "/rss/channel/yweather:location/@city", "Response");
|
||
|
|
||
|
// add an output filter to extract the current temperature
|
||
|
GetWeatherByAddressChoreo.addOutputFilter("temperature", "/rss/channel/item/yweather:condition/@temp", "Response");
|
||
|
|
||
|
// add an output filter to extract the date and time of the last report.
|
||
|
GetWeatherByAddressChoreo.addOutputFilter("date", "/rss/channel/item/yweather:condition/@date", "Response");
|
||
|
|
||
|
// run the choreo
|
||
|
GetWeatherByAddressChoreo.run();
|
||
|
|
||
|
// when the choreo results are available, print them to the serial monitor
|
||
|
while(GetWeatherByAddressChoreo.available()) {
|
||
|
|
||
|
char c = GetWeatherByAddressChoreo.read();
|
||
|
Serial.print(c);
|
||
|
}
|
||
|
GetWeatherByAddressChoreo.close();
|
||
|
|
||
|
}
|
||
|
|
||
|
Serial.println("Waiting...");
|
||
|
Serial.println("");
|
||
|
delay(30000); // wait 30 seconds between GetWeatherByAddress calls
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
IMPORTANT NOTE: TembooAccount.h:
|
||
|
|
||
|
TembooAccount.h is a file referenced by this sketch that contains your Temboo account information.
|
||
|
You'll need to edit the placeholder version of TembooAccount.h included with this example sketch,
|
||
|
by inserting your own Temboo account name and app key information. The contents of the file should
|
||
|
look like:
|
||
|
|
||
|
#define TEMBOO_ACCOUNT "myTembooAccountName" // your Temboo account name
|
||
|
#define TEMBOO_APP_KEY_NAME "myFirstApp" // your Temboo app key name
|
||
|
#define TEMBOO_APP_KEY "xxx-xxx-xxx-xx-xxx" // your Temboo app key
|
||
|
|
||
|
You can find your Temboo App Key information on the Temboo website,
|
||
|
under My Account > Application Keys
|
||
|
|
||
|
The same TembooAccount.h file settings can be used for all Temboo SDK sketches.
|
||
|
|
||
|
Keeping your account information in a separate file means you can share the main .ino file without worrying
|
||
|
that you forgot to delete your credentials.
|
||
|
*/
|