Micro Framework ¿Aplicable?

Para este artículo en vísperas de la presentación en el congreso de la tecnología de MF, les voy a dejar una síntesis de la implementación que llevo adelante actualmente sobre uno de los proyectos puntuales de desarrollo.

El proyecto en donde apliqué la tecnología tiene como eje central tratar la problemática del consumo energético para quienes estén interesados en conocer más sobre la elaboración de las bases les dejo el vínculo (demás está decirles que quien quiera aportar a las bases será bienvenido):

http://proyectoiris.blogspot.com/

Vamos a lo nuestro, para este ejemplo voy a utilizar MF en el escenario de control de dispositivos particularmente trabajando en un entorno hogareño, además en esquemas organizacionales también es aplicable pero está fuera del alcance de este artículo.

La idea es obtener y gestionar el esquema de consumo de u dispositivo, básicamente los dispositivos tienen una potencia declarada expresada en wattios se puede consultar en la documentación de cualquier electrodoméstico hogareño, ahora también tenemos que controlar la cantidad de tiempo que un dispositivo con esa potencia está en funcionamiento, para este caso vamos a trabajar con horas, esto nos va a dar un resultado global de wattios hora, el consumo expresado generalmente en kw/h.

Al realizar el censo del funcionamiento del dispositivo podemos calcular un buen funcionamiento del mismo, gestionar el consumo de energía y además puedo, si voy a un poco más profundo filtrar su potencia para lograr economizar, por ahora solo vamos a controlar.

Veamos como MF me permite rápidamente llegar al objetivo:

Para esta solución voy a utilizar:



En primer lugar les voy a graficar el esquema de Display de la tecnología para quienes lo leen por primera vez:



Ahora les voy a detallar el entry point del aplicativo:



public
static
void Main()

{


// Init and run the application main window


App theApp = new
App();

theApp.Run(theApp.MainWindow);

}


Bien, simple solo se inicia la aplicación. Ahora voy a detallarles la configuración de botones para este dominio de control:

static
ButtonDefinition[] ButtonDefs = {


new
ButtonDefinition(Button.Up, true, Tahoe.Pins.SW5),


new
ButtonDefinition(Button.Left, true, Tahoe.Pins.SW6),


new
ButtonDefinition(Button.Select, false, Tahoe.Pins.SW7),


new
ButtonDefinition(Button.Right, true, Tahoe.Pins.SW8),


new
ButtonDefinition(Button.Down, true, Tahoe.Pins.SW9),


new
ButtonDefinition(Button.Play, true, Tahoe.Pins.SW1),


new
ButtonDefinition(Button.Stop, true, Tahoe.Pins.SW2),


new
ButtonDefinition(Button.Home, true, Tahoe.Pins.SW3),


new
ButtonDefinition(Button.Menu, true, Tahoe.Pins.SW4)

De esta forma estoy definiendo el vínculo con los Pins que maneja la placa.

Siguiendo con el desarrollo voy a utilizar una ventana principal y en la misma voy a definir una seria de panel de estado para realizar la lectura necesaria de consumo:

StackPanel mainStack = new
StackPanel(Orientation.Vertical);



//Visualización del panel de Consumo

visorDeConsumo = new
VisorDeConsumo();


//Visualización del Panel de conexion (estado del socket)

visorDeConexion = new
VisorDeConexion();


//Visualización del esquema de reloj

clockDisplay = new
ClockDisplay();




//Agrego al main los visores detallados.

mainStack.Children.Add(visorDeConsumo);

mainStack.Children.Add(visorDeConexion);

mainStack.Children.Add(clockDisplay);



this.Child = mainStack;



// Agrego el manejador para los botones


this.AddHandler(Buttons.ButtonDownEvent, new
ButtonEventHandler(OnButtonDown), false);



// coloco en visible la ventana.


this.Visibility = Visibility.Visible;



// Se establece el foco


Buttons.Focus(this);

Como vemos en el código anterior estoy manejando en clases extras los paneles, luego en un stackpanel visualizando por pantalla y además tengo un manejador para eventos de los botones.

De esta forma puedo informar de diversos parámetros a cada una de las clases encargadas de censar el consumo y las conexiones necesarias.


Como vemos la funcionalidad actual tiene contemplado en el panel de consumo la potencia del dispositivo y el consumo del mismo, calculado por la potencia y la cantidad de horas de funcionamiento, esta hora están expresadas en el panel de control de tiempo.

Además les dejo un video de una demo sobre el aplicativo:


Bien no solo estoy interactuando con MF sino que datos de dispositivos los obtengo por esquema de redes y estoy trabajando en un escenario DPWS (Device Profile Web Service) pero aun no tengo los medios disponibles para realizar este segmento de funcionalidad.

Les dejo la captura en emulador de la demo implementada, para la próxima les prometo más aplicaciones, y un acercamiento mas completo a esta tecnología ultra mobile…que lo disfruten.


Grupo de Desarrollo:


Entradas más populares de este blog

7 arquetipos #Polymer 1.0 puntos esenciales prácticos

El potencial de la nube en 5 pasos desde Buenos Aires y junto al ecosistema regional

Iniciando la representación de una mobile-web-page pensando en el rendimiento - Parte 1