{"id":1010,"date":"2011-09-22T23:37:48","date_gmt":"2011-09-22T22:37:48","guid":{"rendered":"http:\/\/www.zigbe.net\/?p=1010"},"modified":"2016-02-27T17:46:41","modified_gmt":"2016-02-27T16:46:41","slug":"bmoteseth-5-primeros-interfaces-con-el-sensor","status":"publish","type":"post","link":"https:\/\/blog.whatsbee.net\/?p=1010","title":{"rendered":"bMotesETH: 5 primeros interfaces con el sensor"},"content":{"rendered":"<p>La verdad es que llevamos una semana muy buena en t\u00e9rminos de musas, inspiraci\u00f3n y, como dicen en el sur de Espa\u00f1a \u00abestar sembraos\u00bb<\/p>\n<p>El mote lo construimos sin demasiados problemas, integramos el sensor sensiri\u00f3n con las librer\u00edas de Arduino, resolvimos el tema del interfaz web con el resto del mundo (humanos y m\u00e1quinas) con la librer\u00eda webduino, todo sin atascarnos. Teniendo en cuenta que existe una ley emp\u00edrica que provoca que en todos los proyectos haya un punto en el que te atascas me tem\u00eda lo peor en la parte que nos quedaba.<\/p>\n<p>Por un lado la integraci\u00f3n con Nagios, \u00a0partimos de un script en C open source que modifiqu\u00e9 y compil\u00e9 en\u00a0innumerables\u00a0ocasiones, despu\u00e9s de varias horas y de ir resolviendo algunos problemas me qued\u00e9 atascado en un punto, el script abr\u00eda un socket contra el mote para recoger la informaci\u00f3n, pero en el momento del \u00abparseo\u00bb no lograba encontrar las cadenas buscadas. Despu\u00e9s de muchas peleas con el C y con lo esot\u00e9rico de sus punteros lo dej\u00e9,\u00a0b\u00e1sicamente\u00a0para ver si la almohada me inspiraba a encontrar soluciones alternativas. Al d\u00eda siguiente un amigo me di\u00f3 la soluci\u00f3n,\u00a0obvia y\u00a0sencilla, la que no fu\u00ed capaz de ver despu\u00e9s de horas de darle vueltas a mi script.<\/p>\n<p>Para cada nodo y cada servicio que chequea el Nagios se ejecuta un script, la \u00fanica misi\u00f3n del script es devolver por el stdOut una cadena con la informaci\u00f3n de los status y un formato conocido. Evidentemente el lenguaje C es una opci\u00f3n perfectamente v\u00e1lida (especialmente si lo dominas), pero un shell Script es una opci\u00f3n tan v\u00e1lida como un script en C y mucho m\u00e1s f\u00e1cil de generar, modificar y mantener. Supongo que el C tiene un rendimiento mayor, pero eso no es un problema.<\/p>\n<p>Al final ya tenemos un script para integrar nuestro sensor con Nagios, ahora vamos a por el Cacti para poder graficar sus valores.<\/p>\n<p>En paralelo descubr\u00ed el <a title=\"AppInventor\" href=\"http:\/\/www.appinventorbeta.com\" target=\"_blank\">AppInventor<\/a>. El AppInventor es un entorno de programaci\u00f3n de Google para Android, la filosof\u00eda de programaci\u00f3n es la misma que el Scratch. El Scratch es un \u00abinvento\u00bb del MIT, un lenguaje de programaci\u00f3n para ni\u00f1os basado en una filosof\u00eda parecida al Lego, los programas se construyen con bloques de\u00a0puzle\u00a0que van encajando. Los resultados son impresionantes, \u00a0\u00a0un ni\u00f1o con 20 minutos de explicaciones es capaz de hacer un programa con una complejidad razonable, sin la necesidad de aprender nombres de funciones, sintaxis complicadas, etc.<\/p>\n<p>&nbsp;<\/p>\n<p>Con el AppInventor hice una aplicaci\u00f3n para Android, dediqu\u00e9 4 horas a familiarizarme con el entorno y a hacer una aplicaci\u00f3n que tiene las siguientes caracter\u00edsticas:<\/p>\n<ul>\n<li>Se conecta con el mote\u00a0peri\u00f3dicamente\u00a0y lee los valores de los sensores.<\/li>\n<li>Muestra los valores con colores en funci\u00f3n de los umbrales establecidos.<\/li>\n<li>Analiza la tendencia de cada valor y la \u00a0muestra gr\u00e1ficamente.<\/li>\n<li>Si se dispara una alarma lo muestra con un mensaje en la pantalla del m\u00f3vil, el m\u00f3vil lo puede decir hablando o envia un mensaje a otro m\u00f3vil.<\/li>\n<li>El aspecto es \u00abrazonablemente\u00bb profesional, m\u00e1s teniendo en cuenta el tiempo dedicado y el hecho de haber partido de cero.<\/li>\n<\/ul>\n<p>Este es el aspecto de la pantalla principal de la aplicaci\u00f3n:<\/p>\n<div id=\"attachment_1011\" style=\"width: 289px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blog.whatsbee.net\/wp-content\/uploads\/2011\/09\/Android.jpg\"><img aria-describedby=\"caption-attachment-1011\" loading=\"lazy\" class=\"size-full wp-image-1011\" title=\"Android\" src=\"http:\/\/blog.whatsbee.net\/wp-content\/uploads\/2011\/09\/Android.jpg\" alt=\"\" width=\"279\" height=\"563\" srcset=\"https:\/\/blog.whatsbee.net\/wp-content\/uploads\/2011\/09\/Android.jpg 279w, https:\/\/blog.whatsbee.net\/wp-content\/uploads\/2011\/09\/Android-149x300.jpg 149w\" sizes=\"(max-width: 279px) 100vw, 279px\" \/><\/a><p id=\"caption-attachment-1011\" class=\"wp-caption-text\">Emulador de Android mostrando la aplicaci\u00f3n<\/p><\/div>\n<p>Seguimos trabajando y perfeccionando&#8230;.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>La verdad es que llevamos una semana muy buena en t\u00e9rminos de musas, inspiraci\u00f3n y, como dicen en el sur de Espa\u00f1a \u00abestar sembraos\u00bb El mote lo construimos sin demasiados problemas, integramos el sensor sensiri\u00f3n con las librer\u00edas de Arduino,&hellip; <br \/><a class=\"read-more-button\" href=\"https:\/\/blog.whatsbee.net\/?p=1010\">Leer m\u00e1s<\/a><\/p>\n","protected":false},"author":1,"featured_media":1011,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0},"categories":[16,2,20,21,9,10],"tags":[33,35,109,110,111,112,152,173,183],"_links":{"self":[{"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/posts\/1010"}],"collection":[{"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1010"}],"version-history":[{"count":1,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/posts\/1010\/revisions"}],"predecessor-version":[{"id":7596,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/posts\/1010\/revisions\/7596"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/media\/1011"}],"wp:attachment":[{"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1010"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1010"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1010"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}