Rest API-IoT-Raspberry: joanillo temperatura restapi
Contingut
- 1 Introducció
- 2 joanillo_temperatura_restapi, v1
- 3 joanillo_temperatura_restapi, v2
- 3.1 Totes les temperatures
- 3.2 Temperatura actual
- 3.3 Temperatures d'un dia
- 3.4 Temperatures d'uns dies
- 3.5 Totes les temperatures mitjanes diàries
- 3.6 Temperatures mitjanes diàries d'un mes
- 3.7 Temperatures mitjanes diàries d'uns mesos
- 3.8 Temperatures mitjanes diàries d'un any
- 3.9 Temperatures mitjanes diàries d'uns anys
- 3.10 Totes les temperatures mitjanes mensuals
- 3.11 Temperatures mitjanes mensuals d'un any
- 3.12 Temperatures mitjanes mensuals d'uns anys
- 3.13 Temperatures mitjanes anuals
- 3.14 Afegir una mostra de temperatura
- 3.15 Modificar una mostra de temperatura
- 3.16 Eliminar una mostra de temperatura
- 3.17 Mostrar info
Introducció
En aquest enllaç s'ha explicat la posta a punt de la RPi i el sensor de temperatura, la API, i les primeres proves amb les aplicacions web que ataquen la API:
En el present article es documentarà la API, en les seves diferents versions.
NOTA.La API pot respondre amb una funció de callback, si així ho especifiquem en la crida. La funció de callback es diu JSONPHandler().
NOTA. El projecte està a /home/joan/projectes/joanillo_temperatura_restapi. Cada versió de la API està en la seva carpeta. A més, hi ha la carpeta html on hi ha proves per a cada versió de la API.
NOTA. Finalment el sensor està al local amb una IP fixa de 192.168.1.50, i el router del local es pot accedir públicament en el domini joanqc.no-ip.
joanillo_temperatura_restapi, v1
llistar totes les temperatures
- url1: http://joanqc.no-ip.biz:5000/v1/temperatures
- url2: http://joanqc.no-ip.biz:5000/v1/jsonp/temperatures
- descripció: mostra les temperatures i timestamp registrades a la base de dades, des de l'origen de temps.
- format:
{ "result": [ { "datetime": "Mon, 03 Apr 2017 21:30:51 GMT", "temp": 19.75 }, { "datetime": "Mon, 03 Apr 2017 21:31:02 GMT", "temp": 22.53 } ... ] }
o bé
JSONPHandler({ "result": [ { "datetime": "Mon, 03 Apr 2017 21:30:51 GMT", "temp": 19.75 }, { "datetime": "Mon, 03 Apr 2017 21:31:02 GMT", "temp": 22.53 } ... ] })
joanillo_temperatura_restapi, v2
Totes les temperatures
- url1: http://joanqc.no-ip.biz:5000/v2/temperatures
- url2: http://joanqc.no-ip.biz:5000/v2/jsonp/temperatures
- descripció: mostra les temperatures i timestamp registrades a la base de dades, des de l'origen de temps.
- format:
{ "result": [ { "datetime": "Mon, 03 Apr 2017 21:30:51 GMT", "temp": 19.75 }, { "datetime": "Mon, 03 Apr 2017 21:31:02 GMT", "temp": 22.53 } ... ] }
o bé
JSONPHandler({ "result": [ { "datetime": "Mon, 03 Apr 2017 21:30:51 GMT", "temp": 19.75 }, { "datetime": "Mon, 03 Apr 2017 21:31:02 GMT", "temp": 22.53 } ... ] })
Temperatura actual
- url1: http://joanqc.no-ip.biz:5000/v2/temperatura
- url2: http://joanqc.no-ip.biz:5000/v2/jsonp/temperatura
- descripció: mostra les temperatura i timestamp actual (última dada registrada, marge d'error de 10 minuts).
- format:
{ "result": [ { "datetime": "Mon, 03 Apr 2017 21:30:51 GMT", "temp": 19.75 } ] }
o bé
JSONPHandler({ "result": [ { "datetime": "Mon, 03 Apr 2017 21:30:51 GMT", "temp": 19.75 } ] })
Temperatures d'un dia
- url1: http://joanqc.no-ip.biz:5000/v2/temperatures/<yyyymmdd>
- url2: http://joanqc.no-ip.biz:5000/v2/jsonp/temperatures/<yyyymmdd>
- descripció: mostra les temperatures i timestamp d'un dia concret (el dia s'ha de posar en format yyyymmdd).
- format:
{ "result": [ { "datetime": "Mon, 03 Apr 2017 21:30:51 GMT", "temp": 19.75 }, { "datetime": "Mon, 03 Apr 2017 21:31:02 GMT", "temp": 22.53 } ... ] }
o bé
JSONPHandler({ "result": [ { "datetime": "Mon, 03 Apr 2017 21:30:51 GMT", "temp": 19.75 }, { "datetime": "Mon, 03 Apr 2017 21:31:02 GMT", "temp": 22.53 } ... ] })
Temperatures d'uns dies
La idea d'aquesta crida és poder comparar entre dies. Podem ficar un número indeterminat de dies, fins a 9 dies. Els paràmetres que passem a la url són dia1, dia2,... L'objectiu d'aquesta crida és poder comparar el registre de temperatures entre diferents dies. La llibreria highchart té exemples xulos de com es pot sobreposar registres.
- url1: http://joanqc.no-ip.biz:5000/v2/temperatures_dia?dia1=yyyymmdd&dia2=yyyymmdd&...
- url2: http://joanqc.no-ip.biz:5000/v2/jsonp/temperatures_dia?dia1=yyyymmdd&dia2=yyyymmdd&...
- descripció: mostra les temperatures i timestamp dels dies que passem com a paràmetres (el dia s'ha de posar en format yyyymmdd).
- format:
result és un array d'arrays bidimensionals, o en primer element és el dia, i el segon element és un array de la col.lecció de temperatures.
{ "result": [ [ { "date": "Mon, 03 Apr 2017"}, [ { "datetime": "Mon, 03 Apr 2017 21:30:51 GMT", "temp": 19.75 }, { "datetime": "Mon, 03 Apr 2017 21:31:02 GMT", "temp": 22.53 } ... ] ], [ { "date": "Mon, 04 Apr 2017"}, [ { "datetime": "Mon, 04 Apr 2017 21:30:51 GMT", "temp": 19.75 }, { "datetime": "Mon, 04 Apr 2017 21:31:02 GMT", "temp": 22.53 } ... ] ], ... ] }
o bé
JSONPHandler({ "result": [ [ { "date": "Mon, 03 Apr 2017"}, [ { "datetime": "Mon, 03 Apr 2017 21:30:51 GMT", "temp": 19.75 }, { "datetime": "Mon, 03 Apr 2017 21:31:02 GMT", "temp": 22.53 } ... ] ], [ { "date": "Mon, 04 Apr 2017"}, [ { "datetime": "Mon, 04 Apr 2017 21:30:51 GMT", "temp": 19.75 }, { "datetime": "Mon, 04 Apr 2017 21:31:02 GMT", "temp": 22.53 } ... ] ], ... ] })
Totes les temperatures mitjanes diàries
- url1: http://joanqc.no-ip.biz:5000/v2/temperatures_mitjanes_diaries
- url2: http://joanqc.no-ip.biz:5000/v2/jsonp/temperatures_mitjanes_diaries
- descripció: mostra les temperatures mitjanes diàries registrades a la base de dades, des de l'origen de temps.
- format:
{ "result": [ { "datetime": "Mon, 03 Apr 2017 00:00:00 GMT", "tempavg": 19.75 }, { "datetime": "Mon, 04 Apr 2017 00:00:00 GMT", "tempavg": 22.53 } ... ] }
o bé
JSONPHandler({ "result": [ { "datetime": "Mon, 03 Apr 2017 00:00:00 GMT", "tempavg": 19.75 }, { "datetime": "Mon, 03 Apr 2017 00:00:00 GMT", "tempavg": 22.53 } ... ] })
Temperatures mitjanes diàries d'un mes
- url1: http://joanqc.no-ip.biz:5000/v2/temperatures_mitjanes_diaries/<yyyymm>
- url2: http://joanqc.no-ip.biz:5000/v2/jsonp/temperatures_mitjanes_diaries/<yyyymm>
- descripció: mostra les temperatures mitjanes diàries del mes especificat (el mes s'ha de posar en format yyyymm).
- format:
{ "result": [ { "datetime": "Mon, 01 Apr 2017 00:00:00 GMT", "tempavg": 19.75 }, { "datetime": "Tue, 02 Apr 2017 00:00:00 GMT", "tempavg": 22.53 } ... ] }
o bé
JSONPHandler({ "result": [ { "datetime": "Mon, 01 Apr 2017 00:00:00 GMT", "tempavg": 19.75 }, { "datetime": "Tue, 02 Apr 2017 00:00:00 GMT", "tempavg": 22.53 } ... ] })
Temperatures mitjanes diàries d'uns mesos
La idea d'aquesta crida és poder comparar entre mitjanes de temperatura diàries de diferents mesos. Podem ficar un número indeterminat de mesos, fins a 9 mesos. Els paràmetres que passem a la url són mes1, mes2,... L'objectiu d'aquesta crida és poder comparar el registre de temperatures mitjanes diàries entre diferents mesos. La llibreria highchart té exemples xulos de com es pot sobreposar registres.
- url1: http://joanqc.no-ip.biz:5000/v2/temperatures_mitjanes_diaries_mes?mes1=yyyymm&mes2=yyyymm&...
- url2: http://joanqc.no-ip.biz:5000/v2/jsonp/temperatures_mitjanes_diaries_mes?mes1=yyyymm&mes2=yyyymm&...
- descripció: mostra les temperatures mitjanes diàries dels mesos que passem com a paràmetres (el mes s'ha de posar en format yyyymm).
- format:
result és un array d'arrays bidimensionals, o en primer element és el mes, i el segon element és un array de la col.lecció de temperatures mitjanes diàries.
{ "result": [ [ { "date": "Mon, 01 Mar 2017"}, [ { "datetime": "Mon, 01 Mar 2017 00:00:00 GMT", "tempavg": 19.75 }, { "datetime": "Tue, 02 Mar 2017 00:00:00 GMT", "tempavg": 22.53 } ... ] ], [ { "date": "Mon, 01 Apr 2017"}, [ { "datetime": "Mon, 01 Apr 2017 00:00:00 GMT", "tempavg": 19.75 }, { "datetime": "Tue, 02 Apr 2017 00:00:00 GMT", "tempavg": 22.53 } ... ] ], ... ] }
o bé
JSONPHandler({ "result": [ [ { "date": "Mon, 03 Apr 2017"}, [ { "datetime": "Mon, 01 Mar 2017 00:00:00 GMT", "tempavg": 19.75 }, { "datetime": "Tue, 02 Mar 2017 00:00:00 GMT", "tempavg": 22.53 } ... ] ], [ { "date": "Mon, 04 Apr 2017"}, [ { "datetime": "Mon, 01 Apr 2017 00:00:00 GMT", "tempavg": 19.75 }, { "datetime": "Tue, 02 Apr 2017 00:00:00 GMT", "tempavg": 22.53 } ... ] ], ... ] })
Temperatures mitjanes diàries d'un any
- url1: http://joanqc.no-ip.biz:5000/v2/temperatures_mitjanes_diaries/<yyyy>
- url2: http://joanqc.no-ip.biz:5000/v2/jsonp/temperatures_mitjanes_diaries/<yyyy>
- descripció: mostra les temperatures mitjanes diàries de l'any especificat (l'any s'ha de posar en format YYYY).
- format:
{ "result": [ { "datetime": "Mon, 01 Gen 2014 00:00:00 GMT", "tempavg": 19.75 }, { "datetime": "Tue, 02 Gen 2014 00:00:00 GMT", "tempavg": 22.53 } ... ] }
o bé
JSONPHandler({ "result": [ { "datetime": "Mon, 01 Gen 2014 00:00:00 GMT", "tempavg": 19.75 }, { "datetime": "Tue, 02 Gen 2014 00:00:00 GMT", "tempavg": 22.53 } ... ] })
Temperatures mitjanes diàries d'uns anys
La idea d'aquesta crida és poder comparar entre mitjanes de temperatura diàries de diferents anys. Podem ficar un número indeterminat d'anys, fins a 9 anys. Els paràmetres que passem a la url són any1, any2,... L'objectiu d'aquesta crida és poder comparar el registre de temperatures mitjanes diàries entre diferents anys. La llibreria highchart té exemples xulos de com es pot sobreposar registres.
- url1: http://joanqc.no-ip.biz:5000/v2/temperatures_mitjanes_diaries_any?any1=yyyy&any2=yyyy&...
- url2: http://joanqc.no-ip.biz:5000/v2/jsonp/temperatures_mitjanes_diaries_any?any1=yyyy&any2=yyyy&...
- descripció: mostra les temperatures mitjanes diàries dels anys que passem com a paràmetres (l'any s'ha de posar en format yyyy).
- format:
result és un array d'arrays bidimensionals, o en primer element és l'any, i el segon element és un array de la col.lecció de temperatures mitjanes diàries.
{ "result": [ [ { "date": "Mon, 01 Gen 2015"}, [ { "datetime": "Mon, 01 Gen 2015 00:00:00 GMT", "tempavg": 19.75 }, { "datetime": "Tue, 02 Gen 2015 00:00:00 GMT", "tempavg": 22.53 } ... ] ], [ { "date": "Mon, 01 Gen 2016"}, [ { "datetime": "Mon, 01 Gen 2016 00:00:00 GMT", "tempavg": 19.75 }, { "datetime": "Tue, 02 Gen 2016 00:00:00 GMT", "tempavg": 22.53 } ... ] ], ... ] }
o bé
JSONPHandler({ "result": [ [ { "date": "Mon, 01 Gen 2015"}, [ { "datetime": "Mon, 01 Gen 2015 00:00:00 GMT", "tempavg": 19.75 }, { "datetime": "Tue, 02 Gen 2015 00:00:00 GMT", "tempavg": 22.53 } ... ] ], [ { "date": "Mon, 01 Gen 2016"}, [ { "datetime": "Mon, 01 Gen 2016 00:00:00 GMT", "tempavg": 19.75 }, { "datetime": "Tue, 02 Gen 2016 00:00:00 GMT", "tempavg": 22.53 } ... ] ], ... ] })
Totes les temperatures mitjanes mensuals
- url1: http://joanqc.no-ip.biz:5000/v2/temperatures_mitjanes_mensuals
- url2: http://joanqc.no-ip.biz:5000/v2/jsonp/temperatures_mitjanes_mensuals
- descripció: mostra les temperatures mitjanes mensuals registrades a la base de dades, des de l'origen de temps.
- format:
{ "result": [ { "datetime": "Mon, 01 Gen 2017 00:00:00 GMT", "tempmax": 14.00, "tempmin": 13.00, "tempavg": 13.75 }, { "datetime": "Mon, 01 Feb 2017 00:00:00 GMT", "tempmax": 15.00, "tempmin": 14.00, "tempavg": 14.53 } ... ] }
o bé
JSONPHandler({ "result": [ { "datetime": "Mon, 01 Gen 2017 00:00:00 GMT", "tempmax": 14.00, "tempmin": 13.00,"tempavg": 13.75 }, { "datetime": "Mon, 01 Feb 2017 00:00:00 GMT", "tempmax": 15.00, "tempmin": 14.00,"tempavg": 14.53 } ... ] })
Temperatures mitjanes mensuals d'un any
- url1: http://joanqc.no-ip.biz:5000/v2/temperatures_mitjanes_mensuals/<yyyy>
- url2: http://joanqc.no-ip.biz:5000/v2/jsonp/temperatures_mitjanes_mensuals/<yyyy>
- descripció: mostra les temperatures mitjanes mensuals de l'any especificat (l'any s'ha de posar en format yyyy).
- format:
{ "result": [ { "datetime": "Mon, 01 Jan 2017 00:00:00 GMT", "tempmax": 20.00, "tempmin": 19.00,"tempavg": 19.75 }, { "datetime": "Tue, 02 Feb 2017 00:00:00 GMT", "tempmax": 23.00, "tempmin": 22.00,"tempavg": 22.53 } ... ] }
o bé
JSONPHandler({ "result": [ { "datetime": "Mon, 01 Jan 2017 00:00:00 GMT", "tempmax": 20.00, "tempmin": 19.00,"tempavg": 19.75 }, { "datetime": "Tue, 02 Feb 2017 00:00:00 GMT", "tempmax": 23.00, "tempmin": 22.00,"tempavg": 22.53 } ... ] })
Temperatures mitjanes mensuals d'uns anys
La idea d'aquesta crida és poder comparar entre mitjanes de temperatura mensuals de diferents anys. Podem ficar un número indeterminat d'anys, fins a 9 anys. Els paràmetres que passem a la url són any1, any2,... L'objectiu d'aquesta crida és poder comparar el registre de temperatures mitjanes mensuals entre diferents anys. La llibreria highchart té exemples xulos de com es pot sobreposar registres.
- url1: http://joanqc.no-ip.biz:5000/v2/temperatures_mitjanes_mensuals_any?any1=yyyy&any2=yyyy&...
- url2: http://joanqc.no-ip.biz:5000/v2/jsonp/temperatures_mitjanes_mensuals_any?any1=yyyy&any2=yyyy&...
- descripció: mostra les temperatures mitjanes mensuals dels anys que passem com a paràmetres (l'any s'ha de posar en format yyyy).
- format:
result és un array d'arrays bidimensionals, o en primer element és l'any, i el segon element és un array de la col.lecció de temperatures mitjanes mensuals d'aquell any.
{ "result": [ [ { "date": "Mon, 01 Jan 2015"}, [ { "datetime": "Mon, 01 Jan 2015 00:00:00 GMT", "tempmax": 20.00, "tempmin": 19.00,"tempavg": 19.75 }, { "datetime": "Tue, 01 Feb 2015 00:00:00 GMT", "tempmax": 23.00, "tempmin": 22.00,"tempavg": 22.53 } ... ] ], [ { "date": "Mon, 01 Jan 2016"}, [ { "datetime": "Mon, 01 Jan 2016 00:00:00 GMT", "tempmax": 20.00, "tempmin": 19.00,"tempavg": 19.75 }, { "datetime": "Tue, 01 Feb 2016 00:00:00 GMT", "tempmax": 23.00, "tempmin": 22.00,"tempavg": 22.53 } ... ] ], ... ] }
o bé
JSONPHandler({ "result": [ [ { "date": "Mon, 01 Jan 2015"}, [ { "datetime": "Mon, 01 Jan 2015 00:00:00 GMT", "tempmax": 20.00, "tempmin": 19.00,"tempavg": 19.75 }, { "datetime": "Tue, 01 Feb 2015 00:00:00 GMT", "tempmax": 23.00, "tempmin": 22.00,"tempavg": 22.53 } ... ] ], [ { "date": "Mon, 01 Jan 2016"}, [ { "datetime": "Mon, 01 Jan 2016 00:00:00 GMT", "tempmax": 20.00, "tempmin": 19.00,"tempavg": 19.75 }, { "datetime": "Tue, 01 Feb 2016 00:00:00 GMT", "tempmax": 23.00, "tempmin": 22.00,"tempavg": 22.53 } ... ] ], ... ] })
Temperatures mitjanes anuals
- url1: http://joanqc.no-ip.biz:5000/v2/temperatures_mitjanes_anuals
- url2: http://joanqc.no-ip.biz:5000/v2/jsonp/temperatures_mitjanes_anuals
- descripció: mostra les temperatures mitjanes anuals registrades a la base de dades, des de l'origen de temps.
- format:
{ "result": [ { "datetime": "Mon, 01 Jan 2015 00:00:00 GMT", "tempmax": 14.00, "tempmin": 13.00,"tempavg": 13.75 }, { "datetime": "Mon, 01 Jan 2016 00:00:00 GMT", "tempmax": 15.00, "tempmin": 14.00,"tempavg": 14.53 } ... ] }
o bé
JSONPHandler({ "result": [ { "datetime": "Mon, 01 Jan 2015 00:00:00 GMT", "tempmax": 14.00, "tempmin": 13.00,"tempavg": 13.75 }, { "datetime": "Mon, 01 Jan 2016 00:00:00 GMT", "tempmax": 15.00, "tempmin": 14.00,"tempavg": 14.53 } ... ] })
Afegir una mostra de temperatura
Hem d'agegir una mostra de temperatura, amb els paràmetres datetime i temperatura que es passen en la url:
- url1: http://joanqc.no-ip.biz:5000/v2/afegir_mostra/yyyymmdd-hhmi-tt.tt
- url2: http://joanqc.no-ip.biz:5000/v2/jsonp/afegir_mostra/yyyymmdd-hhmi-tt.tt
- descripció: Afegir una mostra de temperatura en el timestamp especificat
- format: 19 dígits exacatament: yyyymmdd-hhmi-tt.tt (ex: 20170427-1236-23.05)(temperatura amb dos dígits obligatòriament)
{ "result": "OK/ERROR" }
o bé:
JSONPHandler({ "result": "OK/ERROR" } )
La sentència equivalent per fer-ho directament a mongodb seria:
insert (amb temps UTC) (són les 13h reals dels 27-abr) db.temperatura.insert({ temp: 30.2, "datetime": new Date(2017,3,27,15,00,00) }) o bé fer-ho directament amb UTC: db.temperatura.insert( { temp: 30.4, "datetime": ISODate("2017-04-27T13:00:00Z") } ) > db.temperatura.find( { "datetime": ISODate("2017-04-27T13:00:00Z") } ) { "_id" : ObjectId("5900e4740ffe6fc2dbd57f0a"), "temp" : 30.2, "datetime" : ISODate("2017-04-27T13:00:00Z") } The ISODate is in UTC.
Modificar una mostra de temperatura
Hem de fer un update d'una mostra de temperatura, amb els paràmetres datetime i temperatura que es passen en la url:
- url1: http://joanqc.no-ip.biz:5000/v2/modificar_mostra/yyyymmdd-hhmi-tt.tt
- url2: http://joanqc.no-ip.biz:5000/v2/jsonp/modificar_mostra/yyyymmdd-hhmi-tt.tt
- descripció: Modificar una mostra de temperatura en el timestamp especificat. Tenim una resolució de 1 minut, és a dir, es modificaran totes les mostres que hi poden haver dins d'aquest minut. Això no és problema perquè s'agafa una mostra cada 10 minuts.
- format: 19 dígits exacatament: yyyymmdd-hhmi-tt.tt (ex: 20170427-1236-23.05)(temperatura amb dos dígits obligatòriament)
{ "result": "OK/ERROR" }
o bé:
JSONPHandler({ "result": "OK/ERROR" } )
Per fer un update amb MongoDB directament (el primer paràmetre és la condició, el filtres; i el segon paràmetre són les dades, s'han de posar tots els camps; hi ha un tercer paràmetre opcional):
> db.temperatura.update( { "datetime": ISODate("2017-04-27T13:00:00Z") }, { temp: 31.4, "datetime": ISODate("2017-04-27T13:00:00Z") } )
Eliminar una mostra de temperatura
Hem d'eliminar una mostra de temperatura, amb els paràmetres datetime que es passen en la url:
- url1: http://joanqc.no-ip.biz:5000/v2/eliminar_mostra/yyyymmdd-hhmi
- url2: http://joanqc.no-ip.biz:5000/v2/jsonp/eliminar_mostra/yyyymmdd-hhmi
- descripció: Eliminar una mostra de temperatura en el timestamp especificat. Tenim una resolució de 1 minut, és a dir, es modificaran totes les mostres que hi poden haver dins d'aquest minut. Això no és problema perquè s'agafa una mostra cada 10 minuts.
- format: 13 dígits exacatament: yyyymmdd-hhmi (ex: 20170427-1236)
{ "result": "OK/ERROR" }
o bé:
JSONPHandler({ "result": "OK/ERROR" } )
Per eliminar aquesta data amb MongoDB directament:
> db.temperatura.remove( { "datetime": ISODate("2017-04-27T13:00:00Z") } )
Mostrar info
Hem de mostrar en format JSON la info del projecte. Localització GPS, objectiu, material, url,...
- url1: http://joanqc.no-ip.biz:5000/v2/info
- url2: http://joanqc.no-ip.biz:5000/v2/jsonp/info
- descripció: info sobre la RestFul API.
- format:
{ "result": { "description": "This is an academic project of Internet of Things, a DS18B20 temperature sensor attached to a Raspberry Pi Zero, a Restful API programming, and different examples of the front-side for visualizing the data (stored in a MongoD database).", "lat": 41.40531, "location": "Barcelona-Gracia", "lon": 2.16067, "owner": "Joan Quintana - joanillo", "title": "DS18B20 temperature sensor, Internet of Things, Restful API", "url": "http://wiki.joanillo.org/index.php/IoT,_Raspberry_Pi,_RESTful_web_services" } }
o bé:
JSONPHandler({ "result": { " description": "This is an academic project of Internet of Things, a DS18B20 temperature sensor attached to a Raspberry Pi Zero, a Restful API programming, and different examples of the front-side for visualizing the data (stored in a MongoD database).", "lat": 41.40531, "location": "Barcelona-Gracia", "lon": 2.16067, "owner": "Joan Quintana - joanillo", "title": "DS18B20 temperature sensor, Internet of Things, Restful API", "url": "http://wiki.joanillo.org/index.php/IoT,_Raspberry_Pi,_RESTful_web_services" } } )
creat per Joan Quintana Compte, abril 2017