API de openweathermap.org, thingful.net (Internet of Things)
Contingut
Introducció
Encara no disposo de cap dispositiu real per penjar-lo a la thingful.net. Mentrestant, puc publicar virtualment un recurs gràcies a la API de openweathermap.org, que em simula que tinc una estació meteorològica.
El projecte que vull fer de IoT està descrit a:
Es tracta de ficar una raspberry que llegeixi alguna dada d'un sensor, i la publiqui en una url pública mitjançant una REST API.
Openweathermap
Tenen vàries APIs per accedir a informació meteorològica. La que et dóna informació del temps a temps real (la més habitual) és la Current weather data API
Access current weather data for any location including over 200,000 cities
Current weather is frequently updated based on global models and data from more than 40,000 weather stations
Data is available in JSON, XML, or HTML format
Available for Free and all other paid accounts
Per tenir una clay per poder fer servir la API em registro:
- username: joanillo
- joanqc@gmail.com
- pwd: S*******
- obtinc una API key: e2aec1bc0914a482546efb1b491a6f2a
API Current weather data:
Access current weather data for any location on Earth including over 200,000 cities! Current weather is frequently updated based on global models and data from more than 40,000 weather stations. Data is available in JSON, XML, or HTML format.
Per tal de què funcionin les consultes, he d'afegir a la url la appid. Per exemple:
- api.openweathermap.org/data/2.5/weather?q=Barcelona&units=metric&lang=ca&APPID=e2aec1bc0914a482546efb1b491a6f2a
- api.openweathermap.org/data/2.5/weather?lat=41.40&lon=2.16&units=metric&lang=ca&APPID=e2aec1bc0914a482546efb1b491a6f2a
Barcelona (Gràcia): 41.4011873,2.1634635,17
Les dades que obtinc del servidor són del tipus:
{"coord":{"lon":2.16,"lat":41.39},"weather":[{"id":800,"main":"Clear","description":"Cel net","icon":"01n"}],"base":"stations","main":{"temp":11.63,"pressure":1030,"humidity":100,"temp_min":11.63,"temp_max":11.63,"sea_level":1038.74,"grnd_level":1030},"wind":{"speed":2.31,"deg":236.504},"clouds":{"all":0},"dt":1487619338,"sys":{"message":0.0026,"country":"ES","sunrise":1487572688,"sunset":1487611943},"id":6544100,"name":"Eixample","cod":200}
Per defecte les unitats estan en Kelvin, però jo utilitzo el paràmetre &units=metric en les crides. Unit Default: Kelvin, Metric: Celsius, Imperial: Fahrenheit.
Veig que el català és un dels idiomes disponibles: puc utilitzar lang=ca i obtinc la informació textual en català:
"description":"Cel net"
Si vull accedir des de la consola mitjançant curl ho faré de la següent manera: (no oblidar-se de posar la cometa simple)
$ curl -i 'http://api.openweathermap.org/data/2.5/weather?lat=41.40&lon=2.16&units=metric&lang=ca&APPID={e2aec1bc0914a482546efb1b491a6f2a}'
thingful.net
Ara que ja tinc una API que simula un dispositiu de Internet of Things, em puc registrar a thingful.net, per tal de donar d'alta la meva url que dóna informació al món sobre un dispositiu de IoT. Evidentment, jo no tinc cap dispositiu, sinó que és una API pública.
Faig Login with Twitter
Anem a afegir el nostre punt de Internet of Things:
- Menu > Add Public Data
- Repository Name: Joanillo Meteo de Gràcia
- Website: http://www.joanillo.org
- Base URL: http://api.openweathermap.org/data/2.5/weather?lat=41.40&lon=2.16&units=metric&APPID=e2aec1bc0914a482546efb1b491a6f2a
- Data Access: Open
- Sample Data:
{"coord":{"lon":2.16,"lat":41.39},"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01n"}],"base":"stations","main":{"temp":12.73,"pressure":1029.45,"humidity":99,"temp_min":12.73,"temp_max":12.73,"sea_level":1038.13,"grnd_level":1029.45},"wind":{"speed":3.92,"deg":220.503},"clouds":{"all":0},"dt":1487618120,"sys":{"message":0.0023,"country":"ES","sunrise":1487572689,"sunset":1487611942},"id":6544100,"name":"Eixample","cod":200}
creat per Joan Quintana Compte, febrer 2017