{"id":813,"date":"2011-03-18T02:31:12","date_gmt":"2011-03-18T01:31:12","guid":{"rendered":"http:\/\/www.zigbe.net\/?p=813"},"modified":"2011-03-18T02:31:12","modified_gmt":"2011-03-18T01:31:12","slug":"bmotespanel-5-creando-una-presentacion-con-digi-dia","status":"publish","type":"post","link":"https:\/\/blog.whatsbee.net\/?p=813","title":{"rendered":"bMotespanel: 5 Creando una presentaci\u00f3n con Digi DIA"},"content":{"rendered":"<div class=\"mceTemp mceIEcenter\">\u00a0<\/div>\n<p>Sobre la plataforma de harware del X4 corre un int\u00e9rprete de Python, sobre este lenguaje funcionan unos scripts a los que Digi llama DIA. Su funci\u00f3n es manejar el stack de Digi\/Xbee y crear las capas que abtraen del hardware y convierten los paquetes Zigbee en lecturas de sensores.<\/p>\n<p>Python es un lenguaje interpretado, con tipado din\u00e1mico, multiplataforma y orientado a objetos.\u00a0Su nombre est\u00e1 inspirado en el grupo de c\u00f3micos ingleses \u00abMonty Python\u00bb y fu\u00e9 creado a principios de los 90.<\/p>\n<p>Personalmente estoy m\u00e1s acostumbrado a la programaci\u00f3n funcional, aunque reconozco que la programaci\u00f3n orientada a objetos es mucho m\u00e1s intuitiva, la verdad es que me ha costado un poco entenderlo todo, los scripts est\u00e1n programados por otras personas, con unos criterios de nombre que seguramente ser\u00edan diferentes a los m\u00edos y que no conozco.<\/p>\n<div id=\"attachment_814\" style=\"width: 383px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blog.whatsbee.net\/wp-content\/uploads\/2011\/03\/iDia.jpg\"><img aria-describedby=\"caption-attachment-814\" loading=\"lazy\" class=\"size-full wp-image-814\" title=\"iDia\" src=\"http:\/\/blog.whatsbee.net\/wp-content\/uploads\/2011\/03\/iDia.jpg\" alt=\"\" width=\"373\" height=\"324\" srcset=\"https:\/\/blog.whatsbee.net\/wp-content\/uploads\/2011\/03\/iDia.jpg 373w, https:\/\/blog.whatsbee.net\/wp-content\/uploads\/2011\/03\/iDia-300x261.jpg 300w\" sizes=\"(max-width: 373px) 100vw, 373px\" \/><\/a><p id=\"caption-attachment-814\" class=\"wp-caption-text\">Esquema de la plataforma DIA<\/p><\/div>\n<p>En todo caso resumo como funciona&#8230;<\/p>\n<p>El IDE de desarrollo es una versi\u00f3n personalizada de Eclipse, en \u00e9l se escribe el c\u00f3digo de la soluci\u00f3n, y el propio IDE se encarga de hacer el Build, meterlo en un fichero.zip (el X4 no tiene sistema de ficheros), crear un archivo de configuraci\u00f3n (Dia.yml), subirlo al gateway y ejecutarlo. El gateway no tiene mucha capacidad de proceso y entremedias tiene que botar, por lo que se hace un poco pesado. Tiene adem\u00e1s una opci\u00f3n para hacer debug en el X4, funciona, pero es un poco lento.<\/p>\n<p>En el fichero de configuraci\u00f3n se crean:<\/p>\n<ul>\n<li>Devices -&gt; Son los scripts que permiten hacer la abtracci\u00f3n del HW (los drivers)<\/li>\n<li>Loggers -&gt; Una capa que sirve para almacenar las lecturas<\/li>\n<li>Presentations -&gt; Esta capa sirve para manejarlos y enviarlos a un dispositivo de visualizaci\u00f3n, a otro equipo, a una p\u00e1gina web, a un puerto, etc.<\/li>\n<li>Services -&gt; Solo hay configurado uno, un Watchdog que permite reiniciar el sistema cada cierto tiempo.<\/li>\n<\/ul>\n<p>Hasta ahora para los dicersos dispositivos hab\u00edamos creado devices, para el Panel tenemos que crear, adem\u00e1s del driver, un script de presentaci\u00f3n, en ello estoy, la idea (bastante avanzada en este momento) es crear un script de presentaci\u00f3n al que se le puedan dar como par\u00e1metros:<\/p>\n<ul>\n<li>El dispositivo que va a representar los datos (el panel)<\/li>\n<li>La lista de canales a la que se va a suscribir<\/li>\n<li>El intervalo de tiempo en el que se van a mostrar los datos.<\/li>\n<\/ul>\n<p>Por otro lado, si recordais el montaje lo que hicimos para cubrir los huecos es enviar la hora a intervalos regulares y mostrarla como si fuera un reloj,\u00a0 por ahorro de recursos estamos haciendo funcionar el micro del panel con su oscilador interno que no es muy preciso, lo que provoca ajustes de tiempo aunque el intervalo de actualizaci\u00f3n sea de menos de un minuto. La solcui\u00f3n a esto ser\u00e1 a\u00f1adir a la placa un reloj en tiempo real, en la l\u00ednea de la contenci\u00f3n de precios no vamos a ponerle bater\u00eda de bakup, en lugar de eso lo que har\u00e9 es que cuando se inicie el driver se actualice la hora y que cuando se actualice desde la red Zigbee se compare con al del reloj, y si es diferente se actualice el reloj. De esta forma conseguimos evitar la bater\u00eda de backup, mantener el relos sincronizado con una base de tiempos ntp por Internet y que mantenga la hora aunque no pueda conectar a la red.<\/p>\n<p>Sigo en ello&#8230;..<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00a0 Sobre la plataforma de harware del X4 corre un int\u00e9rprete de Python, sobre este lenguaje funcionan unos scripts a los que Digi llama DIA. Su funci\u00f3n es manejar el stack de Digi\/Xbee y crear las capas que abtraen del&hellip; <br \/><a class=\"read-more-button\" href=\"https:\/\/blog.whatsbee.net\/?p=813\">Leer m\u00e1s<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"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,21,10,23,11],"tags":[35,55,56,109,110,111,128,131,152,197],"_links":{"self":[{"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/posts\/813"}],"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=813"}],"version-history":[{"count":0,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/posts\/813\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=813"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=813"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=813"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}