{"id":901,"date":"2011-05-26T00:58:30","date_gmt":"2011-05-25T23:58:30","guid":{"rendered":"http:\/\/www.zigbe.net\/?p=901"},"modified":"2011-05-26T00:58:30","modified_gmt":"2011-05-25T23:58:30","slug":"interfaz-de-usuario-primeras-pruebas-con-vb-net","status":"publish","type":"post","link":"https:\/\/blog.whatsbee.net\/?p=901","title":{"rendered":"Interfaz de usuario: primeras pruebas con VB.NET"},"content":{"rendered":"<p>Una vez superado el tema del Python, de la red Zigbee y del gateway me he decidido a intentar empezar un interfaz de usuario. Me he visto abrumado por la cantidad de opciones, intentar\u00e9 resumirlas&#8230;<\/p>\n<p>Tal como coment\u00e1bamos en el entorno Digi Dia las presentaciones son los scripts responsables de comunicarse con el exterior. Podemos crear las presentaciones que necesitemos, pero hay una serie de presentaciones que vienen en los scripts de Dia que son altamente aprovechables, hay presentaciones que devuelven p\u00e1ginas web, que devuelven una c\u00f3nsola Telnet, etc. Nos centraremos en aquellas m\u00e1s pensadas para comunicarse con otras aplicaciones:<\/p>\n<ul>\n<li>IdigiDB: Pensada para interactuar con los servicios en la nube de Digi.<\/li>\n<li>XMLRPC: proporciona un interfaz para una serie de comandos,\u00a0b\u00e1sicamente\u00a0los comandos est\u00e1n relacionados con los canales y su actualizaci\u00f3n.<\/li>\n<li>RCI: permite los mismos comandos que el anterior, adem\u00e1s a\u00f1ade otros comandos para trabajar m\u00e1s directamente con el HW, permite realizar descubrimientos en la red Zigbee, interactuar con los par\u00e1metros de los m\u00f3dulos, etc.<\/li>\n<\/ul>\n<p>Los dos \u00faltimos casos son los que nos ocupan, y con los que he hecho las primeras pruebas. Desde mi punto de vista tienen un inconveniente importante, la iniciativa de la comunicaci\u00f3n siempre es del software que utilizamos como interfaz, eso no permite que un evento en un mote informe a la aplicaci\u00f3n. La inciativa es siempre de la aplicaci\u00f3n que hace un \u00abrequest\u00bb al gateway y este le da una respuesta.<\/p>\n<p>Evidentemente una soluci\u00f3n ser\u00eda interrogar cada x segundos al gateway, con los inconvenientes de consumo de ancho de banda. Se me ocurre que para minimizar esto se podr\u00eda crear una presentaci\u00f3n, suscrita a todos los canales que tenga un canal propio del estado de la acualizaci\u00f3n. En lugar solicitar informaci\u00f3n de todos los canales cada x segundos solicitar\u00edamos informaci\u00f3n de si se ha actualizado alguno, si hay una respuesta positiva pedir\u00edamos un chanel_dump para obtener la de todos.<\/p>\n<p>La soluci\u00f3n definitiva es crear otra presentaci\u00f3n que haga un push de la informaci\u00f3n en un servicio web, pero eso lo dejaremos para m\u00e1s adelante.<\/p>\n<div id=\"attachment_902\" style=\"width: 510px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blog.whatsbee.net\/wp-content\/uploads\/2011\/05\/AplicacionVB.jpg\"><img aria-describedby=\"caption-attachment-902\" loading=\"lazy\" class=\"size-full wp-image-902\" title=\"AplicacionVB\" src=\"http:\/\/blog.whatsbee.net\/wp-content\/uploads\/2011\/05\/AplicacionVB.jpg\" alt=\"\" width=\"500\" height=\"399\" srcset=\"https:\/\/blog.whatsbee.net\/wp-content\/uploads\/2011\/05\/AplicacionVB.jpg 500w, https:\/\/blog.whatsbee.net\/wp-content\/uploads\/2011\/05\/AplicacionVB-300x239.jpg 300w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/a><p id=\"caption-attachment-902\" class=\"wp-caption-text\">Imagen de la aplicaci\u00f3n<\/p><\/div>\n<p>La aplicaci\u00f3n utiliza la librer\u00eda de VB.NET XMLRPC.NET, como se puede apreciar claramente es una aplicaci\u00f3n de pruebas, he ido poniendo botones para ir viendo las opciones. Soy capaz de cargar un listado de los motes en una listBox, un listado de los canales en un Tree View, de leer\u00a0peri\u00f3dicamente\u00a0el valor de los canales, de actualizar la imagen de un term\u00f3metro en funci\u00f3n de la temperatura, de averiguar los permisos da ceda canal y de actualizarlos, etc.<\/p>\n<p>Con las posibilidades que da el XMLRPC y el VB.net se podr\u00eda resolver cualquier necesidad (exceptuando la de las actualizaciones a iniciativa del Gateway) para una aplicaci\u00f3n comercial. la aplicaci\u00f3n est\u00e1 hecha con Visual Studio 2005 y VB.NET, la verdad es que he trabajado muy poco con este lenguaje de programaci\u00f3n, pero no parece complicado.<\/p>\n<p>Los siguientes pasos:<\/p>\n<ul>\n<li>Averiguar como funciona el RCI y probarlo, con el objetivo de ser capaz de capturar el identificador de cada dispositivo en cada una de las radios y poder configurar los controles en funci\u00f3n de eso.<\/li>\n<li>Hacer alguna prueba con servicios web, la intenci\u00f3n es crear una capa de almacenamiento intermedio en la nube, de forma que se tenga acceso a los datos desde cualquier punto con conexi\u00f3n a Internet, en l\u00ednea o fuera de l\u00ednea.<\/li>\n<li>Crear alguna soluci\u00f3n sin gateway basada en un API para encontrar una soluci\u00f3n econ\u00f3mica para redes de pocos nodos.<\/li>\n<li>Crear interfaces para Android, Iphone, etc.<\/li>\n<\/ul>\n<p>Supongo que me ir\u00e9 cansando y alternando con el dise\u00f1o de HW&#8230;..<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Una vez superado el tema del Python, de la red Zigbee y del gateway me he decidido a intentar empezar un interfaz de usuario. Me he visto abrumado por la cantidad de opciones, intentar\u00e9 resumirlas&#8230; Tal como coment\u00e1bamos en el&hellip; <br \/><a class=\"read-more-button\" href=\"https:\/\/blog.whatsbee.net\/?p=901\">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":[15,21,11],"tags":[56,76,109,152,164,197],"_links":{"self":[{"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/posts\/901"}],"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=901"}],"version-history":[{"count":0,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/posts\/901\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=901"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=901"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=901"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}