{"id":489,"date":"2017-04-07T19:55:58","date_gmt":"2017-04-07T17:55:58","guid":{"rendered":"http:\/\/www.joanillo.org\/?p=489"},"modified":"2020-09-24T19:58:50","modified_gmt":"2020-09-24T17:58:50","slug":"internet-of-things-restful-api-amb-python-i-flask-raspberry-pi-zero-i-sensor-de-temperatura","status":"publish","type":"post","link":"https:\/\/www.joanillo.org\/?p=489","title":{"rendered":"Internet of Things, Restful API amb Python i Flask, Raspberry Pi Zero i sensor de temperatura"},"content":{"rendered":"<p><a href=\"http:\/\/www.joanillo.org\/wp-content\/uploads\/2017\/04\/rpi_zero_sensor_temp.jpg\"><img loading=\"lazy\" src=\"http:\/\/www.joanillo.org\/wp-content\/uploads\/2017\/04\/rpi_zero_sensor_temp-300x222.jpg\" alt=\"\" title=\"rpi_zero_sensor_temp\" width=\"300\" height=\"222\" class=\"alignright size-medium wp-image-1454\"><\/a>Estic muntant un projecte acad\u00e8mic de <strong>Internet of Things<\/strong>. Es pret\u00e9n mesurar la temperatura exterior del meu barri amb un sensor <strong>DS18B20<\/strong> connectat a una Raspberry Pi Zero. Tal com es veu a la foto, he hagut de connectar un llapis Wifi USB. Idealment seria millor fer el projecte amb la nova Raspberry Pi Zero W que acaba de sortir fa un mes, i que porta wifi incorporat.<\/p>\n<p>La temperatura es va gravant cada 10 minuts a una base de dades <strong>MongoDB<\/strong>. La part m\u00e9s interessant del projecte \u00e9s programar una <strong>Restful API<\/strong>, i per fer-ho ho far\u00e9 amb <strong>Python<\/strong> i el microframework <strong>Flask<\/strong>, a partir  d&#8217;algun exemple que he trobat (veure els enlla\u00e7os). En la versi\u00f3 1 nom\u00e9s hi havia un servei, que era bolcar totes les temperatures. La versi\u00f3 2 ja fa m\u00e9s coses: bolcar totes les temperatures; recuperar la temperatura actual; filtrar per un dia; filtrar per varis dies al mateix temps.<\/p>\n<p>Una altra part important \u00e9s la capa de presentaci\u00f3, i per fer-ho utilitzo la llibreria <strong>Highcharts.com<\/strong>, que d\u00f3na uns resultats molt espectaculars. Per cada funci\u00f3 de la API es donar\u00e0 un exemple html, per exemplificar com podem digerir les dades.<\/p>\n<p>En les futures versions de la API es calcularan les mitjanes de temperatura di\u00e0ries, mensuals i anuals, de manera que es puguin fer comparatives entre dies, mesos,&#8230; De moment encara no est\u00e0 disponible.<\/p>\n<p>La API encara no \u00e9s p\u00fablica, estic en fase de desenvolupament. En el moment que sigui estable i p\u00fablica ja ho anunciar\u00e9. De moment la tinc dins de casa, sota els efectes del termostat de la calefacci\u00f3, amb la qual cosa els resultats no s\u00f3n interessants. Per\u00f2 la idea \u00e9s despr\u00e9s de Setmana Santa traslladar-ho tot al local, el sensor a l&#8217;exterior, i la Raspberry Pi dins del local. Es podr\u00e0 accedir a la API en el domini <em>http:\/\/joanqc.no-ip.biz\/<\/em>, per\u00f2 encara no est\u00e0 disponible.<\/p>\n<p>La idea de desenvolupar aquesta API \u00e9s, a part de qu\u00e8 programar \u00e9s divertit, poder utilitzar <em>open data<\/em> en format JSON a l&#8217;assignatura de <strong>Javascript (M06)<\/strong> en el cicle de Desenvolupament d&#8217;Aplicacions Web (DAW), a l&#8217;institut. Evidentment, hi ha molts exemples disponibles d&#8217;open data i format <em>JSON<\/em>. Per\u00f2 un exemple on els alumnes vegin d&#8217;on surten realment les dades, sempre ser\u00e0 interessant.<\/p>\n<p>En el primer enlla\u00e7 tenim la documentaci\u00f3 i discussi\u00f3 de tota la posta a punt. \u00c9s el punt de partida principal si es vol reproduir el projecte. En el segon enlla\u00e7 es documenta la API, en les seves diferents versions.<\/p>\n<ul>\n\\t<\/p>\n<li><a href=\"http:\/\/wiki.joanillo.org\/index.php\/IoT,_Raspberry_Pi,_RESTful_web_services\" title=\"IoT, Raspberry Pi, RESTful web services\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/wiki.joanillo.org\/index.php\/IoT,_Raspberry_Pi,_RESTful_web_services<\/a><\/li>\n<p>\\t<\/p>\n<li><a href=\"http:\/\/wiki.joanillo.org\/index.php\/Rest_API-IoT-Raspberry:_joanillo_temperatura_restapi\" title=\"Rest API IoT Raspberry: joanillo_temperatura_restapi\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/wiki.joanillo.org\/index.php\/Rest_API-IoT-Raspberry:_joanillo_temperatura_restapi<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Estic muntant un projecte acad\u00e8mic de Internet of Things. Es pret\u00e9n mesurar la temperatura exterior del meu barri amb un sensor DS18B20 connectat a una Raspberry Pi Zero. Tal com es veu a la foto, he hagut de connectar un llapis Wifi USB. Idealment seria millor fer el projecte amb la nova Raspberry Pi Zero [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[18,30,35,16,12,10],"tags":[],"_links":{"self":[{"href":"https:\/\/www.joanillo.org\/index.php?rest_route=\/wp\/v2\/posts\/489"}],"collection":[{"href":"https:\/\/www.joanillo.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.joanillo.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.joanillo.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.joanillo.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=489"}],"version-history":[{"count":1,"href":"https:\/\/www.joanillo.org\/index.php?rest_route=\/wp\/v2\/posts\/489\/revisions"}],"predecessor-version":[{"id":490,"href":"https:\/\/www.joanillo.org\/index.php?rest_route=\/wp\/v2\/posts\/489\/revisions\/490"}],"wp:attachment":[{"href":"https:\/\/www.joanillo.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=489"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.joanillo.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=489"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.joanillo.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=489"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}