Cómo funciona un microondas domestico


El horno de microondas es un invento fortuito ,al igual que otros inventos fruto  un proyecto de investigación relacionado con el radar, alrededor de 1946 en el que el doctor Percy Spencer autor de más de 100 patentes , probando un nuevo tubo al vacío llamado magnetrón cuando descubrió que una chocolatina que tenía en su bolsillo se había derretido. Intrigado y pensando que quizá la barra de chocolate había sido afectada casualmente por esas ondas, el doctor Spencer hizo muchos más experimentos.

Al poco tiempo ,el doctor Spencer diseñó una caja metálica con una abertura en la que introdujo energía en forma de microondas la cual dentro de la caja, no podía escapar y por lo tanto creaba un campo electromagnético de mayor densidad. Cuando se le colocaba alimento la temperatura del alimento aumentaba rápidamente.:el doctor Spencer había inventado lo que iba a revolucionar la forma de cocinar y sentaba las bases de una industria multimillonaria: el horno de microondas.

A pesar de la gran revolución de este invento ,hubo bastante resistencia contra estas unidades y no fueron aceptadas de inmediato. Sin embargo, las mejoras y refinamientos ulteriores produjeron un horno más fiable y liviano, menos caro y con un nuevo magnetrón enfriado por aire, que eliminó la necesidad de colocar tuberías asi que por los años 70’s finalmente el horno de microondas alcanzó un nivel de aceptación relativa, particularmente en el campo de la venta de alimentos rápidos.

 

 

El horno microondas funciona mediante la generación de ondas electromagnéticas en la frecuencia de las microondas. El agua, grasas y otras sustancias presentes en los alimentos absorben la energía de las microondas en un proceso llamado calentamiento dieléctrico.

 

Muchas moléculas (como las de agua) son dipolos eléctricos, lo que significa que tienen una carga positiva parcial en un extremo y una carga negativa parcial en el otro, y por tanto giran en su intento de alinearse con el campo eléctrico alterno de las microondas de modo que al rotar, las moléculas chocan con otras y las ponen en movimiento, dispersando así la energía  que cuando se dispersa como vibración molecular en sólidos y líquidos (tanto como energía potencial y como energía cinética de los átomos), lo hace en forma de calor.

El calentamiento por microondas es más eficiente en el agua líquida que en el agua congelada, donde el movimiento de las moléculas está más restringido y  es menos eficiente en grasas y azúcares (que tienen un momento dipolar molecular menor) que en el agua líquida.

Como curiosidad  los azúcares y triglicéridos (grasas y aceites) absorben las microondas debido a los momentos dipolares de sus grupos hidroxilo o éster,pero sin embargo, debido a la capacidad calorífica específica más baja de las grasas y aceites, y a su temperatura más alta de vaporización, a menudo alcanzan temperaturas mucho más altas dentro de hornos de microondas. Esto puede inducir a temperaturas en el aceite o alimentos muy grasos, como el tocino, muy por encima del punto de ebullición del agua, y lo suficientemente altos como para inducir reacciones de tostado, como en el asado a la parrilla convencional o en las freidoras. Los alimentos en alto contenido de agua y con poco aceite rara vez superan temperaturas superiores a las de ebullición del agua.

Un aspecto a considerar es que el calentamiento por microondas puede causar un exceso de calentamiento en algunos materiales con baja conductividad térmica, que también tienen constantes dieléctricas que aumentan con la temperatura, como por ejemplo en el vidrio, que puede exhibir embalamiento térmico en un horno de microondas hasta el punto de fusión.

 

También  las microondas pueden derretir algunos tipos de rocas, produciendo pequeñas cantidades de lava sintética asi como algunas cerámicas también se pueden fundir, e incluso pueden llegar a aclararse enfriarse. El embalamiento térmico es más típico de líquidos eléctricamente conductores, tales como agua salada.

Como aspecto importante  en alimentos uniformemente estructurados o razonablemente homogéneos, las microondas son absorbidas en las capas exteriores de una manera  similar al calor de otros métodos,pero dependiendo del contenido de agua, la profundidad de la deposición de calor inicial puede ser de varios centímetros o más con los hornos de microondas, en contraste con el asado (infrarrojos) o el calentamiento convectivo (métodos que depositan el calor en una fina capa de la superficie de los alimentos). La profundidad de penetración de las microondas depende de la composición de los alimentos y de la frecuencia, siendo las frecuencias de microondas más bajas (longitudes de onda más largas) las más penetrantes.

 

En el siguiente vídeo el Ingeniero Bill detalla como un horno de microondas calienta la comida describiendo cómo el tubo de vacío de microondas o magnetrón, genera frecuencias de radio que causan que el agua en los alimentos  gire hacia atrás y adelante.

El autor muestra la onda estacionaria en el interior del horno, y señala que se puede medir la longitud de onda con queso derretido

Concluye describiendo cómo un magnetrón genera ondas de radio.

 

 

Fuente   aqui

Anuncio publicitario

Portales de productos electronicos y tecnologia


Según un análisis publicado por InternetRetailer en el que se analiza a las 500 principales empresas de venta minoristaonline de China, las ventasonline de loseCommerce chinos crecieron un 42% en 2013.Cabe destacar, que en estos momentos China es un gran mercado en que hay muchas necesidades de compra de productos infantiles, maternos, cosméticos y bienes de lujo, etc. Muchos consumidores buscan productos baratos y con calidad fuera de China  a través del comercio online, como marcas de cosméticos extranjeras, productos maternos, etc.

De los principales minoristas electrónicos chinos, Alibaba encabeza el grupo, por detrás le siguen dos grandes portales de venta online, Taobao y Tmall, que representan el 80% de las ventas de los e-retailers en China.

A continuación, en este especial conoceremos algunos sites, unos mejores que otros, pero todos con diferentes particularidad para realizar compras online:

Amazon – www.amazon.com

El site de Amazon es una compañía estadounidense de comercio electrónico y servicios de cloud computing a todos los niveles con sede en Seattle, Estado de Washington.

Esta es la tienda virtual más usada para hacer compras por Internet en el mundo y puedes comprar desde artículos como ropa hasta repuestos para autos. Cada vez que usas Amazon, recibes un excelente servicio y precios incomparables en todo tipo de mercancía.

En la actualidad está totalmente diversificada en diferentes líneas de productos, ofreciendo software, videojuegos, electrónica, ropa, muebles, comida, libros, non food, entre otros.

 eBay – www.ebay.com

El sitio para comprar por Internet de eBay es uno de los más populares y una de las maneras de ahorrar dinero al hacer compras por Internet. Este sitio ha implementado muchas medidas de seguridad para proteger a los usuarios y así poder ofrecer muchísimos descuentos. No es extraño encontrar descuentos de hasta 30 a 90% de descuento en los productos.

Al comprar por Internet en eBay, puedes participar en subastas en las cuales ofreces el precio máximo que estás dispuesto a pagar por un producto y si tu oferta es la ganadora, recibes el producto por el precio máximo que ofreciste (o muchas veces hasta menos). Si no te gusta el sistema de subastas, puedes comprar en este sitio usando sus productos listados como Buy It Now (comprar ahora), el cual te permite pagar por el producto con un precio ya fijado.

Para protegerte al comprar en este sitio, te recomendamos solo comprar de vendedores que tengan un feedback positivo, cerca del 100% (o las experiencias que han tenido con clientes anteriores). Mientras más cerca sea su puntaje al 100%, más seguro será comprar de este vendedor.

 Alibaba – www.alibaba.com

Alibaba es la web más grande del mundo en cuanto a compra-venta de productos entre mayoristas. Es una página web ideal para comprar productos en China e importarlos. Alibaba tiene disponible sus servicios para aproximadamente 240 países y sus usuarios ya se cuentan en más de cinco millones. Ofrece todo tipo de productos, directamente de fabricantes, que sobre todo son asiáticos.

Alibaba asegura estar preparada para lanzar una página web de comercio electrónico en Estados Unidos a través de sus filiales Vendio y Auctivia, que son a su vez parte del grupo Alibaba.com

El creador de este imperio, radicado en Hangzhou, se llama Ma Yun (aunque es conocido como Jack Ma), y es una de las personas más ricas del mundo según la revista Forbes.

Sears en Español – http://www.sears.com/es/us/

Sears en Español es la primera tienda virtual que ofrece buenos descuentos, servicios y una muy buena política de devolución completamente en español.

Cuando usas este sitio para comprar en Internet, no tienes necesidad de hablar en inglés y puedes comprar directamente. Además, si vives en Estados Unidos puedes devolver los productos que compraste en Internet en la tienda Sears más cercana.

En la web podrás encontrar las mejores ofertas de categorías de marzo, ofertas de 48 horas, además puedes rastrear tu orden, una página muy práctica con muy buenos descuentos.

Desde sus inicios como compañía de venta por catálogo, la empresa creció hasta convertirse en el mayor minorista de los Estados Unidos a mediados del siglo 20, y sus catálogos se hicieron famosos.

 Focalprice – http://www.focalprice.com/

Focalprice es una página web de nacionalidad china dedicada a la venta de artículos y accesorios variados de las categorías: Accesorios Apple, cámaras y videocámaras, teléfonos móviles, ordenadores y redes, memorias flash, hogar, lasers y linternas, juguetes, hobbies, relojes y videojuegos.

Si nunca te habías parado a pensar de dónde sacan las tiendas esos productos electrónicos tan baratos, ahora ya lo sabes. Si estás dispuesto a esperar al envío desde china, podrás aprovecharte de todo lo que quieras y con gastos de envío gratis.

#7. Tmall –http://www.tmall.com/

Tmall.com es una web dedicada a los negocios fuera de China y en la que se puede vender los productos de marcas internacionales directamente a los consumidores chinos. A partir de octubre 2013 fue el octavo sitio web más visitado en China.

Los vendedores pueden usar el chino como idioma en la web a través de Alitalk, la mensajería instantánea de Alibaba. Todos los productos se envían  en 72 horas, y se puede hace el retorno en China, que hace más seguro los negocios.

Actualmente en la plataforma ya hay más de 140 comerciantes internacionales de todo el mundo.

#8. TinyDeal – http://www.tinydeal.com/es/

TinyDeal es una de las tiendas más confiables para comprar en China desde todo el mundo, puedes incluso ingresar a la versión en español que te será muy práctica en esta web y podrás comprar al por mayor en línea, sin cantidades ni pedidos mínimos. Después de registrarte en la tienda en línea de China podrá comprar productos con envío gratis.

Usted podrá encontrar todo lo que quiera en Tinydeal.com, tales como productos electrónicos, Ropa,Bisutería & Relojes, Hogar, Salud y Belleza, Juguetes y Deportes.

Además cuenta con varios medios de pagos, incluyendo tarjetas de crédito y de débito, PayPal, WebMoney, Yandex.Money que son aceptados. También cuentan con transferencia bancaria y pagos de Western Union.

#9. Yihaodian – http://www.yhd.com/?type=1

Yihaodian significa en mandarín “La tienda número uno”, apareció el 2008, y es controlada desde el 2012 por la cadena comercial estadounidense Walmart con un 51% de participación.

Yihaodian.com, con sede central en Shanghái, duplicó sus ventas anuales durante 2013, cuando alcanzó un valor de US$1.900 millones.

 Mercado libre – http://www.mercadolibre.com/

MercadoLibre, es una empresa argentina dedicada a la intermediación entre usuarios inscritos a su servicio de compras, ventas, pagos y subastas por Internet. Cuenta con operaciones en Argentina, Brasil, Chile, Colombia, Costa Rica, Ecuador, México, Panamá, Perú, Portugal, República Dominicana, Uruguay y Venezuela.

Los usuarios pueden vender tanto productos nuevos como usados a precio fijo o en la modalidad de subastas. MercadoLibre también posee MercadoPago, una compañía que ofrece diversas modalidades de cobro a los vendedores.

Según The Nielsen Company más de 52.000 personas generan todo o la mayor parte de sus ingresos vendiendo a través de MercadoLibre y en 2009 más de 3 millones de personas y empresas vendieron por lo menos un artículo a través de este medio.

Firmas de moda con tienda online

Y de portales de ventas pasamos a los creados a partir de tiendas físicas como Mango que fue la primera firma española de moda que apostó por la venta a ‘golpe de clic’ en el año 2000. El día de hoy, además, disponen de un portal outlet.

Siguiendo sus pasos, aunque una década más tarde, Zara inició su andadura por Internet en septiembre de 2010. Tras su entrada en el mercado online llegó el turno, un año después para el resto de firmas de Inditex: Massimo Dutti, Uterqüe, Oysho, Stradivarius y Bershka, así como para marcas de moda como Gap, Forever 21, Abercrombie, entre otras.

Y cada vez son más las tiendas de ropa que se suman a este mundo “online”.

Fuente  aqui

Internet de las cosas con Nimbits


Nimbits  en efecto tiene   muchas similitudes con Pachube(ahora Cosm,.com): es un repositorio de datos «basada en la nube» con una interfaz de navegador para la configuración de tus feeds y visualización de los datos. Ademas ambos servicios ofrecen una API REST para  las aplicaciones de los datos de entrada y salida

Si usted es un desarrollador vera una ventaja clave de Nimbits : que es un proyecto de código abierto basado en el Google App Engine , y de hecho es muy fácil de instalar Nimbits en su propia cuenta de Google App Engine,lo que le permite ser  «dueño» de los datos fijar su actualización con la frecuencia que desee y mantenerlk durante todo el tiempo que lo desee.

GAE tiene límites en la cantidad de datos que puede arrojar sobre sin pagar. De acuerdo a la página de Google «¿Qué es Google App Engine»: «Todas las aplicaciones pueden utilizar hasta 500 MB de almacenamiento y suficiente CPU y ancho de banda para soportar una aplicación eficiente de servir alrededor de 5 millones de páginas vistas al mes, absolutamente libre». La compresión de datos es uno de los principales puntos fuertes del software Nimbits, por lo que es seguro asumir que no va a se acerca a ese límite,

El servicio de App Engine de  Google es ampliamente utilizado, y extensamente documentado, por lo que es sin duda una base sólida para la experimentación de formas de procesar y mostrar los datos. El código Nimbits está todo escrito en Java. Por lo tanto, si usted sabe GAE y Java, el cielo es el límite para lo que puede hacer con Nimbits

Configuración de una cuenta Nimbits

Tiene 2 opciones para alojar sus datos: Utilice el servidor Nimbits público enapp.nimbits.com , o crear el suyo con una cuenta de Google App Engine. Usted probablemente querrá utilizar la primera opción para probar la conexión  y familiarizarse con la interfaz Nimbits,y  luego probar  la segunda opción más adelante.

Vamos  a pasar por ambos procesos, comenzando con el servidor público.

  •  Abra http://cloud.nimbits.com/ en un navegador. Se le pedirá iniciar sesión con una cuenta de Gmail del usuario-ID (o si ya has iniciado sesión, para confirmar que desea utilizar ese ID  de inicio de sesión).
  • No, pero Google App Engine es, y no es sorprendente que utiliza Gmail como el principal tipo de autenticación. De hecho, algunas partes de Nimbits (GAE) y están estrechamente ligados a Gmail – tus alertas sólo se pueden enviar a la cuenta de Gmail.Sin embargo, si es  un desarrollador es posible que desee utilizar una cuenta de Google secundaria aquí. Sus aplicaciones se conectarán con la autenticación de Gmail o con una clave de API Nimbits específica. Mientras que la clave de la API funciona bien para todas las características Nimbits, si usted cava profundamente en el marco de Google App Engine subyacente puede empezar a experimentar con la autenticación de GMail.Por cierto, si usted está generalmente conectado a Gmail durante todo el día, se encuentra la configuración de su navegador «Navegación privada» (también conocido como «ventana de incógnito» aka «modo porno») para ser una forma práctica de iniciar la sesión con una cuenta de Gmail secundaria sin tener que salir de su principal.
  •  Su navegador mostrará la interfaz de usuario estándar Nimbits, como se muestra a continuación. Para configurar un  feed , Haga clic en «Nuevo Punto de datos» en el marco de la izquierda.

  • Un punto de datos Nimbits es como un Pachube Datastream. Pero – obtener este – que tiene un nombre en lugar de un número. Lejos! En realidad, puede hacer las cosas un poco más fácil en el extremo de codificación (pero más difícil en el extremo de visión) estableciendo el nombre de punto de datos en el sensor # en el script wattcher.py (es decir, «0» para el primero  del sensor, y así sucesivamente). No se puede cambiar el nombre de un punto de datos, sin embargo, así que elige con cuidado.
  • l nuevo punto de datos se añade a la estructura de la izquierda. Configuración adicional es opcional – la configuración predeterminada permitirá guardar lecturas Tweet-A-Watt y verlos en un gráfico. Sin embargo, hay algunas interesantes características incorporadas en la pantalla de configuración, así que echemos un vistazo.
  •  Haga doble clic en el punto de datos. Un par de ventanas se abrirá en la ventana principal, como se muestra a continuación. Haga clic en Ajustes del punto de la barra de menú, y luego el nombre de punto de datos.

  •  Se muestra la pestaña «General» del cuadro de diálogo de configuración más adelante, con los ajustes que uso. Por cierto, este diálogo es también la única manera de eliminar un punto de datos (usando el icono de la barra de herramientas).

  •  La compresión por defecto es 0.1, lo que significa que una nueva lectura que está dentro de 0.1 de la lectura anterior no será almacenada. Esta opción es muy útil si el origen de datos está bombardeando el servidor con varias lecturas por segundo, pero su feed es probable que se envía sólo 1 lectura cada 5 minutos. Si su uso no es continuo durante largos períodos, puede desactivar la compresión mediante la introducción de cero.
  •  El valor predeterminado Historia de 90 días significa que sólo los más recientes 3 meses de datos serán almacenados. Usted probablemente querrá aumentar esto en algún momento, sobre todo si la configuración de su propia cuenta de Google App Engine
  •  Debe apuntar la unidad de medida ( Watts en caso de consumo de energia)s.
  • Dejé el ajuste en público. No se preocupe – esto no significa que las masas sin lavar pueden enviar datos a su alimentación; sólo que ellos pueden ver su alimentación a través de la API REST. (No te preocupes – no lo harán.) La configuración pública hace que jugar un poco con la API de un poco más fácil, sobre todo cuando se conecta a través de 3 ª parte de software como Excel , así que te sugiero que se lo deja hasta que haya logrado cosas de trabajo.
  •  Las opciones de mensajería pueden utilizarse para infligir todas sus lecturas de datos de tus amigos o enemigos inusualmente sociales. Esta podría ser una buena manera de convertir la primera a la segunda.
  • . En la ficha Alertas, puede configurar un umbral de alta y / o baja a la que se activará una alerta. Aquí, las opciones de los mensajes se vuelven más útil, y puede usar la configuración de mensajes instantáneos 

  •  La otra opción de configuración o es la alarma de inactividad, que se añadió recientemente a Nimbits. Esto le permite saber cuando su configuración de un feedt deja de funcionar, lo que me parece por lo general significa  que el dispositivo emisor (sensor ) se ha detenido

  •  Eso es para la configuración del punto de datos. Haga clic en Guardar.
  •  Si tiene vario sensores , puede crear otros puntos de datos para cada uno. Recuerde que el nombre de punto de datos identifica el flujo de datos.
  • .Usted probablemente ha notado que hay algo que se llama una «Categoría», que es un grupo de puntos de datos relacionados (el equivalente de «Feed» de Pachube). Las categorías son opcionales, y son más útiles si se utiliza la API de «caminar» a través de puntos de datos del servidor. Para crear una categoría, haga clic en el icono de la carpeta verde, a continuación, arrastre cada punto de datos en la nueva categoría en el marco de la izquierda. Es posible que tenga que actualizar la página del navegador antes de las obras de arrastrar y soltar.
  •  Una última cosa antes de que haya terminado con el lado Nimbits de la configuración:. Crear una clave de API. Como se mencionó anteriormente, esta opción le permite enviar datos a su alimentación sin colgando su contraseña de Google a la Internet. Haga clic en el icono de la clave secreta en la barra de herramientas, a continuación, siga las instrucciones. Tenga en cuenta que, a diferencia de Pachube, sólo hay una clave para su cuenta – generar una nueva invalida la anterior.

 

 

Ejemplo de configuración Tweet-A-Watt

Las modificaciones necesarias para la secuencia de comandos wattcher.py Tweet-A-Watt son un poco diferentes de las de Pachube, tal como se describe en el qui .Para Nimbits se invoca la API REST directamente, mientras que para Pachube se utilizó una biblioteca independiente (eeml) como interfaz.

Agregue el código siguiente para update_graph método, en la misma sección que se ha añadido el código Pachube, usted debe, por supuesto, cambiar [Datos Nombre Point], [e-mail] y [clave secreta] con los valores utilizados para configurar su cuenta Nimbits (sin los corchetes)

  Sugerencias de búsqueda:
 urllib.urlopen ("http://app.nimbits.com/service/currentvalue?value =" +
 str (avgwattsused) +
      "Y punto = [Datos Nombre Point] y email = [e-mail] y secreto = [clave secreta]")
 except IOError:
 print 'Error al enviar a Nimbits

 

Si tiene varios sensores Tweet-A-Watt, y que decidió no utilizar el sensor # como el nombre de punto de datos, tendrás que añadir un poco de código en Python para configurar el Parm «Punto de datos Nombre», basada en el sensorhistory.sensornumvariable.

Después de reiniciar el guión wattcher.py, vuelva a la página Nimbits en el navegador. Si todo funciona, el «Valores actuales» ventana en el marco principal mostrará un valor de marca de tiempo y enviado por su Tweet-A-Watt en pocos minutos.

El gráfico de la página Nimbits toma un poco de tiempo para acostumbrarse. Por un lado, utiliza Adobe Flash, así que olvídate de arriba viéndolo en tu iPhone. Por defecto, se muestra la última hora de los datos. Bueno, en realidad, se muestra una hora de los datos – la hora especificada en los 2 cuadros de texto en la parte superior de la gráfica. Al hacer clic en el icono Actualizar no se actualiza la gráfica, ya que los cuadros de texto no se cambian. Similarmente, al hacer clic en el enlace «1d» no muestra el último día de los datos, ya que los cuadros de texto malditos no se cambian. Wah!

No culpe Nimbits para eso, culpar Google. Es su gráfico. Oficialmente, se trata de una «Tiempo Anotado Line» (sin anotaciones), tal como se documenta en el sitio de la API de Google Vizualización .

Así pues, aquí es como funciona: introduzca una fecha y rango de tiempo en los cuadros de texto, a continuación, haga clic en el botón de actualización del gráfico. Ahora puede utilizar los enlaces (1h, 1d, etc) para ampliar una ventana de datos de esa longitud. A continuación, puede utilizar el control deslizante en la parte inferior de la gráfica para desplazarse una vista ampliada de los datos sobre el rango de tiempo completo. En la siguiente imagen, el gráfico de líneas muestra el uso de electricidad durante una hora terminando a las 11 pm el 14 de marzo, mientras que la parte inferior de la tabla le permite utilizar el control deslizante para desplazarse a través de la gama de tiempo completo entre 12 de marzo y 14 de marzo. ( Hey, no juzgues! Mi ‘duinos tienen necesidades especiales. Y 2 luces de la planta.)

. El Google Galería API de visualización se muestra la lista completa, cualquiera de los cuales se pueden visualizar a través de la API REST. La página Nimbits sólo 2 ha incorporado, la línea de tiempo anotado y el gráfico dinámico. No estoy del todo seguro de cómo estas últimas obras, pero si hace clic en él lo suficiente, empieza a actuar como un juego de Asteroides .(La Tabla de movimiento parece haber sido eliminado de Nimbits 3.1, lo cual es bueno ya que soy muy malo en los asteroides.)

Google Talk

La función de mensajería instantánea a ser muy útil, ya que no requiere ningún amigos reales. (Pachube no ofrece ninguna conectividad de mensajería instantánea preenvasados ​​en la actualidad).

Esta función aprovecha la interfaz de Google App Engine a «cualquier cliente de mensajería instantánea compatible con XMPP». y  se integra con su cuenta de Gmail – si usted no está en línea cuando su servidor Nimbits tiene algo que quiere que le enviemos, le envia por correo electrónico en su lugar. Tendrá que instalar el software de escritorio de Google Talk , y acceder a Google Talk con el mismo ID Gmail con el que se acceda a Nimbits. Usted también tendrá que activar la opción de mensajería instantánea en Nimbits, como se describe en este artículo en el blog Nimbits .

Hay básicamente 3 maneras que usted puede utilizar la interfaz de mensajería instantánea:

  1. Recibir alertas cuando los datos pasa de un umbral especificado. Esto se configura en la sección «Alertas» y las fichas de «Alarma de inactividad», como se muestra anteriormente. Aunque no es obvio desde el diálogo «Alarm Idle», parece utilizar la misma configuración que las alertas para determinar dónde enviar la alarma.
  2. La interfaz interactiva. Los comandos se describen en la entrada del blog Nimbits .Esto es particularmente útil si usted está usando un teléfono inteligente Android no (hay una aplicación Nimbits para Android). Por cierto, yo no tuve mucha suerte en mi iPhone usando la página web de Google Talk específica iPhone de Google, pero hay un montón de aplicaciones que soportan Google Talk. Yo uso la aplicación IM +para esto.
  3. Recibe cada nueva lectura de datos. Esto es lo que sucederá si se habilita la mensajería instantánea en la pestaña «General». Posiblemente útil para conseguir excusados ​​de (o expulsado de) reuniones y actos sociales incómodas.

Rodando su propia plataforma 

Una vez arriba y funcionando con el público Nimbits Server, se debe considerar la configuración de su propio sitio AppSpot usando el Google App Engine. Es sorprendentemente fácil de hacer, y casi totalmente libre de mantenimiento. Acerca de la única vez que tendrá que jugar con los controles es que si usted decide actualizar su versión de Nimbits.

La interfaz del navegador y API es idéntico, así que no hay curva de aprendizaje adicional. En el lado negativo, no hay manera fácil de exportar los datos desde el servidor público a su cuenta.

Las instrucciones aquí (comenzando con la sección «Getting Started») hacen un buen trabajo de usuario a través del proceso – lo que realmente es así de simple. Voy a añadir algunas observaciones sobre el proceso:

  • La sugerencia sobre el uso de una cuenta de Gmail secundaria también se aplica a registrarse para Google App Engine. Si usted es un desarrollador, hay algunas cosas que su código puede hacer sólo cuando la autenticación a través de Google, y que definitivamente no quieren ser una posición de codificación dura de su contraseña principal Gmail en cualquier aplicación.
  • Al introducir su nombre de la aplicación en la página de Google App Engine, asegúrese de usar sólo caracteres en minúscula. Cuando yo era la creación de la mía, yo no podía creer que cada nombre de aplicación lo intenté fue tomada de acuerdo con el botón «Verificar disponibilidad». «Vamos, alguien utilizó GigaMegaAlphaBeta!¿Tengo un acosador? «Resulta que las letras mayúsculas no están permitidas. (Son el mal).
  • Asegúrese de descargar el Java SDK de App Engine, no el que Python. Incluso si usted no va a hacer ningún desarrollo, necesitará la herramienta de implementación de Java – es el «programa de instalación» para Nimbits en este caso.
  • Si esta es la primera vez que ha implementado Nimbits a GAE, usted debe encontrar que la versión más Nimbits ya está establecido como predeterminado. Si más adelante instala una actualización de Nimbits, entonces usted tendrá que cambiar manualmente la versión en GAE – la nueva versión no pasa de forma automática «en vivo».
  • En la página «ServerSettings», el único ajuste que tenía que cambiar era administrador (que debe ser tu dirección de Gmail). El ajuste RootURL se puede dejar en http://app.nimbits.com .

Después de terminar con los ServerSettings, puede abrir <yourappname>. Appspot.com en su navegador, y usted debe ser presentada con la misma interfaz exacta como en app.nimbits.com. Vas a tener que volver a crear los puntos de datos, utilizando el mismo procedimiento descrito anteriormente. Al final Tweet-A-Watt, basta con sustituir «app.nimbits.com» con «<yourappname>. Appspot.com» en el guión wattcher.py

por ejemplo,

  urllib.urlopen (<a href = http://gigamegaalphabeta.appspot.com/service/currentvalue ...

 

Conclusión

A diferencia Pachube, Nimbits ofrece una . DLL neto, así como el apoyo a las llamadas a través de una API REST . El archivo. DLL utiliza una tecnología fascinante , por lo que su  biblioteca Java del SDK es accesible para. Net través IKVM .

No hay una gran cantidad de documentación sobre el. API Net, así que habra que ir pensando en poner algunos ejemplos de código de una futura entrada en este  blog.

 

Fuente aqui

Arduino para Visual Studio


El hardware de la plataforma Arduino y el software es, en palabras de la página principal de Arduino «, destinado a artistas, diseñadores, aficionados y cualquier persona interesada en la creación de objetos o entornos interactivos».

Los buenos artistas prestando código, los grandes artistas robando código, pero ningún artista debería tener que escribir código…Y sin embargo, la mayoría lo hace, o al menos tiene que intentarlo.

 

La codificación es difícil para los principiantes, y la codificación en C no es un gran lugar para comenzar. Nombres de mayúsculas y minúsculas, los paréntesis no coincidentes, variables con establecimiento inflexible: estas son las cosas que hacen tropezar a cada recién llegado, y no hay manera de que les rodea. El minimalista Arduino IDE oculta estos temas, pero no los resuelve..Escribir y depurar código en el IDE de Arduino es lento y frustrante: una servidumbre de ensayo y error.

No tiene que ser así! Artistas, diseñadores, aficionados: tires sus herramientas primitivas y únanse  a la revolución tecnológica! He aquí … Arduino para Microsoft Visual Studio !

 

OK, vamos a terminar con esto. Su reacción a esto es probablemente una de 3 cosas:

  1.  Oh, bien, Microsoft. ¿Cuánto es que me va a costar? Probablemente nada
  2.  Oh, bien, Microsoft. ¿Por cuánto tiempo es el que me va a llevar a aprender?  Menos de lo que piensa
  3. ¿Espera código cerrado?    Sí, Microsof  Visual Studio nunca va a ser de código abierto, y sólo se ejecuta en Windows. Si eso es un motivo de ruptura para usted, entonces usted puede dejar de leer.Puede que no quiera saber lo que se estás perdiendo.

Costo y la curva de aprendizaje

Arduino Visual Micro complemento requiere Visual Studio Professional, no Visual Studio Express. De vuelta en el día, Microsoft Visual Studio dirigido a las grandes corporaciones, y tenía un precio en consecuencia.

Afortunadamente, eso ya no es cierto. La página web de Visual Micro tiene más información sobre cómo usted puede obtener legalmente una copia de Visual Studio de forma gratuita . Otra opción para los muchachitos jóvenes es de Microsoft DreamSpark programa para los estudiantes .

En los últimos 10 + años, Microsoft ha reducido cada vez más la barrera para los desarrolladores que adquieren sus herramientas de desarrollo. Microsoft no está siendo puramente altruista aquí. Su motivación es atraer a nuevos desarrolladores para la  plataforma  Windows  , pero el resultado final es que Visual Studio es mucho más fácil de conseguir de lo que solía ser.

En cuanto a la curva de aprendizaje, Visual Micro ha hecho un buen trabajo en la reducción de 3 pasos el proceso de carga / creación de un boceto y subirlo a Arduino.la documentación de Visual Micro es muy amplia – usted no tiene que confiar en los blogs y foros para averiguar cómo usar su producto.)

Sí, Visual Studio está erizada de menús, barras de herramientas y ventanas, pero se puede ignorar el 95% de ellos, al igual que ya lo hacen en Microsoft Word. El 5% restante de estas características, por otro lado, le ahorrará un montón de tiempo.

No está convencido? Vamos a entrar en lo que siento son los 6 mejores características de Arduino para Visual Studio. La mayoría de estos será familiar para cualquiera que haya usado Visual Studio con otros lenguajes: lo bueno es que Visual Micro les ha traído al mundo Arduino.

1. Finalización Código

¿Alguna vez tiene problemas para recordar lo que la sintaxis exacta de una sentencia Arduino es? ¿Es Serial.print o Serial.print o Serial.Write? ¿Cuáles son los parámetros.

Sí, nosotros los profesionales tenemos  el mismo problema,pero ue tendemos a no memorizar las cosas a menos que tengamos que hacerlo, y gracias a la finalización de código en Visual Studio (y Google), que rara vez tiene que hacerlo.

Al comenzar a escribir una declaración en Visual Studio, aparecerá una lista desplegable de opciones para completar la declaración. En lugar de escribir todo esto, sólo tiene que utilizar las teclas de flecha para seleccionar el que desee y, a continuación, haga clic en la tecla Tab para completar el resto.

Cuando usted no está seguro de cuál de ellos desea, hacer una pausa en una de las opciones y la información sobre herramientas aparecerá una lista de los parámetros que los métodos de toma.

2. Resaltado Error

El proceso de corrección de erratas en el IDE de Arduino es una rutina tediosa: construir, descifrar el mensaje de error, averiguar qué línea de código a su referencia a,  corregir el error, construir, repetir ….

Esa es la forma en que los profesionales codificaban software también, hace 20 años, pero con un poco de esfuerzo en la construcción de mejores herramientas el resultado de esto es en vuelo el  resaltado de error poe ejemplo . Cada nueva versión de Visual Studio ha conseguido mejorar en esto, y  ahora en un punto que puede solucionar el 90% de sus errores antes de llegar a la etapa de construcción.

Y, por supuesto, es mucho más fácil de averiguar qué línea de código es incorrecta cuando está subrayado para usted.

3. Búsqueda inteligente

La función de búsqueda de un resultado en un-tiempo es otra área donde el Arduino IDE es de unos 15 años detrás del estado de la técnica. Teniendo en cuenta que todo lo que hemos aprendido a aprovechar los motores de búsqueda en la búsqueda de todo tipo de respuestas, es desconcertante que esto no ha sido mejorada.

Hay un montón de diferentes maneras de buscar información en Visual Studio:

  • Necesidad de revisar rápidamente el código que utiliza una variable? Esto sucede todo el tiempo: no está seguro de si es un string o número, o no están seguros de qué valor ha inicializado a, o no está seguro de que su ser leído o actualizado en su programa. En Visual Studio, haga clic derecho y seleccione Buscar todas las referencias. Se abrirá una ventana que enumera toda la código que utiliza esa variable.
  • Olvidado de lo que se llama una variable? Si conoces parte del nombre, función Buscar de Visual Studio mostrará una lista de todas las líneas de código que contienen una cadena de búsqueda en particular. Los comodines son compatibles.Haciendo doble clic en uno de los resultados de la búsqueda le llevará directamente a la línea de código
  • Usted sabe que cool «buscar mientras escribe» función en la búsqueda de texto en una página web, en el que el cursor salta automáticamente al primer partido mientras se escribe el término de búsqueda? Visual Studio tiene que demasiado: sólo tienes que escribir Ctrl-I para la búsqueda.

4 Bibliotecas:. Dios mío, está lleno de código!

Las bibliotecas son la mayor fortaleza de la Arduino. Codificadores brillantes han creado bibliotecas empaquetadas para manejar todas las cosas complicadas: la lectura y la escritura a los dispositivos, manejo de cuerdas, que conecta a los sitios Web, y así sucesivamente. Usted no sabe cómo funcionan, y que no te importa. Sólo trabajan.

Excepto cuando no lo hacen. Cuando se llama a una función de la biblioteca, y se cuelga, se devuelve un mensaje de error genérico, o no hace nada, uno se queda en la estacada.¿Qué hice mal? Parámetro incorrecto? Ajustes erróneos? Google?!

En Visual Studio, hay algunas maneras diferentes para tirar de la cortina y tener un buen vistazo a la biblioteca que está utilizando.

Si hace clic en una clase o función y selecciona Buscar Declaración, Visual Studio automáticamente cargarlo en el editor. A menudo, los comentarios agregados por el codificador le dará la información que se está perdiendo. Si no es así, echa un vistazo a el código. No se deje intimidar: si usted puede escribirlo, puede leerlo. El código abierto no es sólo una palabra de moda, ¿sabes?

En el Visual Studio Encuentra en diálogo de archivos, se cambia el «Buscar en» campo «Proyecto actual», aparecerá una lista de todas las apariciones de una variables, incluyendo los que aparecen en las bibliotecas. Esto es útil cuando usted está buscando para una constante especial: usted tiene una idea de lo que quieres, pero no estás seguro de lo que se escribe exactamente es.

Por último, cuando se quiere dar marcha atrás y echar un vistazo a la imagen más grande, el Examinador de objetos enumera todo lo relacionado con una biblioteca en un lugar conveniente. El panel de la izquierda se indican todas las clases en las bibliotecas que se incluyen en el proyecto. Selección de una clase se enumeran las funciones de esa clase en el panel superior derecho. Al hacer doble clic en una función abre el código fuente de la biblioteca y le lleva a la definición de la función

Si realmente quieres volar tu mente, active la opción «Mostrar todos los archivos Arduino», a continuación, comprobar el Explorador de soluciones. ¡Caramba, ¿de dónde todos esos archivos vienen? Aquellos que todos han estado en su proyecto desde el principio, cubierto por la capa de invisibilidad de Arduino. Usted probablemente querrá dejar el «Show All Arduino archivos» de salir la mayoría del tiempo (yo), pero es muy útil para poder buscar fácilmente a través de ese código en las pocas ocasiones en las que usted necesita.

 5 Serial Console: no es sólo una idea tardía

La consola serie Arduino también ha parecido como algo que a regañadientes viraron a software. Se supone que el código Arduino es  «sólo trabajo». ¿Quién necesita un depurador? ¿Por qué molestarse en poner el trabajo en algo que nadie va a usar?

Visual Micro hizo poner un poco de trabajo en los sus años, y tiene varias características interesantes que Arduino de carencias.

En primer lugar, han hecho lejos con esa limitación tonto de tener que cerrar la consola cada vez que subes código para el Arduino. Depuración mediante declaraciones de impresión es bastante difícil: quitar esa información cada vez que se ejecuta el código es sencillamente asqueroso. En Visual Studio, usted no tiene que cerrar la consola, nunca.Al transferir el código para el Arduino, la consola de serie en voz baja y automáticamente libera el puerto serie, y luego se vuelve a conectar cuando se realiza la transferencia.

Cuando se selecciona un texto en la consola de serie y haga clic en, un contexto de menú lista todas las opciones:. Seleccionar todo, copiar, cortar, etc Es una cosa pequeña, pero un ahorro de tiempo que cualquier ventana de texto debería tener.

Otro ahorro de tiempo es la capacidad de rápidamente volver a introducir texto mediante la selección en un menú desplegable. Depuración de prueba y error es siempre un dolor, pero ser capaz de hacer introducciones en un solo clic hace que los ensayos menos doloroso.

6. No Java

Java está comenzando a rivalizar con Internet Explorer como un software que es más problemas de lo que vale. El agresivo auto-actualizador pasiva es bastante malo, pero los autores de malware se dirigen cada vez más a Java como un medio de hacer furtivamente su software en los PC. El único software Java corro es Arduino, por lo que reemplazar el Arduino IDE tiene un beneficio secundario importante.

Muchos de los recién llegados a Arduino tener la impresión de que Java es fundamental para Arduinos; algunos piensan que el lenguaje de programación Arduino es Java. En realidad, Java y el Arduino son una extraña pareja. Arduinos están codificados en C + +, el mismo lenguaje de Visual Studio está escrito en, y un lenguaje que el IDE de Visual Studio ha apoyado durante 15 años. Visual Studio C + + se pone de una manera que un IDE basado en Java no se puede. Visual Micro ha hecho un trabajo increíble en el aprovechamiento de un rico soporte de Visual Studio para C + + de desarrollo.

Conclusión

Arduino para Visual Studio ha estado realmente alrededor por un tiempo ahora, y me gustaría la intención de escribir sobre ello de nuevo en la primavera. Se desvió fuera de mi radar cuando dejé de usar el Arduino en mis proyectos.

Mi principal problema con el Arduino es la falta de depuración. Depuración de prueba y error es una gran pérdida de tiempo.

Arduino para Visual Studio apareció de nuevo en mi radar recientemente cuando Visual Micro lanzó un depurador de Arduino para pruebas beta . Si pensabas «Visual Studio para Arduino» era una frase de aspecto extraño, ¿qué hay de «Arduino Debugger»? Este es un depurador de software, sin necesidad de JTAG u otros complementos de hardware, algo que había pensado previamente imposible. No es una idea tan loca, sin embargo.Como he dicho antes, Visual Studio está estrechamente integrado con C + +, y su depuración se ha conectado a varios entornos de ejecución de C + +. Visual Micro ha descubierto la manera de conectar el Arduino a ella.

Un depurador Arduino, integrado en Visual Studio, es un potencial cambio de juego, algo que hará que sea posible hacer proyectos de codificación mucho más ambiciosos en mucho menos tiempo. Estoy con ganas de darle una oportunidad. Si usted es demasiado, la cabeza hacia el sitio web de Visual Micro y leer todo al respecto.

 

Fuente aqui

Conexion de un modulo Xbee a Netduino


Como usted probablemente sabe, es bastante posible usar un Netduino Plus , o un Netduino normal  con un escudo Ethernet , para conectar un Netduino directamente a Internet. De hecho, O’Reilly ha publicado recientemente un libro protagonizado por el Netduino Plus , que le muestra básicamente como salvar medidas en la plataforma M2M cosm.com  antes Pachube y luego Xively.

 

En lugar de Ethernet, el autor usó  un Xbee  con conexión a un PC que actúa como intermediario, en parte porque el autor ya tenía esa configuración  para apoyar el monitoreo Tweet-A-Watt , pero también debido a ciertas ventajas evidentes:

  • Conexiones Ethernet con cable no son prácticos para la mayoría de las partes de una casa pues es dificultoso tener red cableada   por todas partes ( auque sabemos que esta dificultad se puede minimizar con PLC’s o inlcuso con repetidores WIFI con salida  ethernet
  • XBee es más barato que el Wi-Fi, especialmente si usted planea usar múltiples Netduinos en varias partes de la casa (que lo haremos, una vez que añadimos monitoreo de sensores a la mezcla)
  • El Netduino es una plataforma de desarrollo relativamente limitada en comparación con un PC. Por lo tanto, esta perspectiva ayuda a limitar el papel del Netduino para  las «líneas del frente»gracias a que  tienen gran parte del código que se ejecuta en un PC que actúa como «comando y control». Esto, también, se convertirá en una ventaja más grande cuando haya múltiples Netduinos involucrados.

La gran desventaja de este enfoque es que necesita  un PC encendido 24/7.Eso  supone  una gran cantidad de electricidad desperdiciada, considerando qué  su carga de trabajo va a ser muy baja . Dedicando un 120W + PC para este proyecto es  claramente  excesivo,pero afortunadamente, hay un número creciente de dispositivos de ultra baja potencia que son capaces de actuar como el PC para este propósito. Como siempre esto es cierto siempre que tenga un puerto USB, conexión a Internet y se puede ejecutar Python, 

 BeagleBoard puede ser un alternativa cuando se ejecuta la secuencia de comandos de Linux y Python en este proyecto, un BeagleBoard XM utiliza sobre 3W (medida por un medidor Kill A Watt).

En comparación, la «eficiencia energética»  con 2 años de uso es mucho mayor que usando un PC ,pues los promedios de PC de Windows  consumen cerca de 200W. Teniendo en cuenta que es capaz de servir como un servidor principal de pleno derecho, la BeagleBoard es increíble, y es de esperar una indicación de la dirección futura de PCs para el hogar.

Por cierto, la combinación Netduino / Arduino / LCD utilizado en este proyecto consume  menos de 1W, así que usar * duinos en sus proyectos en el hogar es definitivamente una alternativa de energía respetuosa.

TonidoPlug ordenador

TonidoPlug ordenador

Una opción menos costosa, y que usa este  proyecto, es el $ 99 TonidoPlug . Viene con Ubuntu ya instalado, y un puerto  Ethernet y puerto USB. Puede conectar el XBee al puerto USB directamente si lo desea, y que va a funcionar bien para los fines de este proyecto. Sin embargo, si desea ejecutar el software Tonido entonces usted necesitará un concentrador USB con alimentación – el software Tonido requiere una unidad USB, y no sólo el 1 puerto integrado.

 

Al igual que los Beagleboards,el TonidoPlug es un dispositivo muy fiable, y es igual de eficiente de la energía. No es fácil de actualizar o reemplazar el sistema operativo, pero la versión incorporada de Ubuntu es más que suficiente para los proyectos normales.

Si usted decide ir con un BeagleBoard, uno de los últimos artículos cubre la instalación de Angstrom y Python , y esta página eLinux es la guia ideal  si está instalando Ubuntu.

En cuanto aTonidoPlug, viene con Ubuntu 9.04 (Jaunty Jack), Python 2.5 y un servidor SSH  incluidos . Todo lo que necesita para agregar a este proyecto es la biblioteca de serie Python y la utilidad de la pantalla de GNU para el funcionamiento de la aplicación Python en una sesión de terminal de fondo.

Para instalarlos, entrar como root a través de SSH, cree entonces directorio utilizado por el gestor de paquetes apt, a continuación, instalar un par de paquetes:

  mkdir-p / var / cache / apt / archives / partial
 apt-get update
 apt-get install python-serial
 apt-get pantalla de instalación

 

 

 

La conexión de hardware a la Netduino es relativamente simple, porque el Netduino utiliza el mismo nivel de tensión de 3,3 V como el XBee y pins de serie del Netduino hablar el mismo idioma que el XBee.

La única complicación es que el XBee utiliza un espaciamiento generalmente apretado para sus pines, sólo 2 mm de separación. Esto hace que sea difícil de conectar los cables de puente a los pines, y imposible enchufar el XBee en un tablero. La mayoría de la gente utiliza un tablero del desbloqueo de resolver este problema, como la de Sparkfun XBee Breakout Junta o de Adafruit adaptador XBee PCB (que es el PCB utilizados en su kit de adaptador – que funciona bien como un tablero del desbloqueo).

Como se muestra en la foto de abajo, se ha conectado el XBee en una placa protoboard usando un adaptador XBee Adafruit. Esto hace que sea fácil compartir pin 3.3V del Netduino con otros dispositivos, además de la XBee, y le permite conectar un LED para algunos de los pines del XBee para la solución de problemas:

XBee Pin Conexión
1 3.3V
2 Netduino RX (por ejemplo D0)
3 Netduino TX (por ejemplo, D1)
6 LED (encendido cuando se recibe, opcional)
10 Suelo

 

XBee Para Netduino Conexiones

XBee Para Netduino Conexiones

Ejecución del software Python

Una vez que el hardware está en su lugar, el siguiente paso es iniciar el software Python en ejecución.

Usted tendrá que tener pySerial instalado. Si has seguido las  instrucciones para configurar Angstrom Linux en un BeagleBoard , o configurar Ubuntu en un TonidoPlug , entonces ya está todo listo. De lo contrario, consulte lasinstrucciones de instalación que aparecen en la pySerial pag e.

Descargue el código Python del proyecto en Google Code. Guarde el archivo en cualquier carpeta del PC host – si usted está usando un TonidoPlug o BeagleBoard ejecutando Linux, a continuación, la carpeta de inicio está bien.

Si utiliza Linux, es probable que necesite para ejecutar el código Python como root para poder acceder al puerto serie:

es decir,

  sudo python TimeServer.py

Los parámetros de línea de comandos para el programa son todos opcionales:

  TimeServer.py [nl] [-d] [-port xxxx]
  • -Nl – Desactiva el registro. De lo contrario, cualquier error se escriben en el directorio actual en un archivo llamado controller.txt. Esperemos que este archivo no obtendrá grandes, pero desactivando el registro es necesario si está ejecutando el código de un directorio de sólo lectura.
  • -D – enciende los mensajes de depuración por escrito a la consola.
  • -Port – Especifica el puerto serie que el XBee está conectado. El valor predeterminado es / dev/ttyUSB0. En un TonidoPlug o BeagleBoard, que debe ser el puerto correcto.En un PC con Windows, el puerto tendrá un nombre totalmente diferente, como COM3 – comprobar el Administrador de dispositivos si usted no sabe cuál usar. Si está utilizando Windows, consulte la sección «Windows Weirdness» a continuación.

Si inicia el programa cuando se conecta a través de SSH, debe utilizar primero la GNU Screen utilidad para abrir un símbolo del sistema virtual, y ejecutar el programa desde allí. De lo contrario, el programa dejará de funcionar cuando se desconecta de SSH.

Para ejecutar la pantalla, sólo tiene que escribir «pantalla». Usted será llevado a un nuevo símbolo del sistema, en el que se ejecuta TimeServer.py que el anterior.

Cuando TimeRelay está en funcionamiento, puede desconectarse de la sesión de pantalla pulsando CTRL-A, a continuación, D. Esto deja el código Python funcionando en segundo plano. Para volver a conectar a la sesión de la pantalla, introduzca screen-r-d.

GNU Screen es muy útil para el funcionamiento de un proceso de fondo como éste, porque se puede volver a conectar en cualquier momento, desde cualquier lugar, y ejecutar screen-r-d para ver la salida de corriente del programa TimeServer.py. Esto es realmente útil para la depuración, y para reiniciar el código Python 

Al ejecutar el código Python en Windows presenta un par de otras complicaciones,

Si Python lanza una excepción «El sistema no puede encontrar el archivo especificado» cuando intenta abrir el puerto serie, puede que se han topado con el problema descrito en StackOverflow aquí . Trate de especificar el puerto COM como «\. COMxx» por ejemplo,

  Puertos \. COM10

Además, la apertura de un puerto serie a veces se traduce en un «acceso denegado» excepción en Windows si no lo cierre antes de abrirlo. Como he dicho, no me preguntes.Desde el cierre del puerto serie antes de abrirlo no parece causar ningún problema, he actualizado el código Python con esta revisión.

Ejecutar el código Netduino

Puede obtener el código Netduino en una de 2 maneras:

  1. Si está familiarizado con Subversion, usted utiliza cualquier cliente SVN (mi favorito es TortoiseSVN ) para obtener una copia de todos los archivos del proyecto. La URL SVN es https://gigamega-micro.googlecode.com/svn/trunk . Si desea que la versión anterior del código para que coincida con uno de los últimos artículos, obtener la revisión correspondiente. (Vea la lista de revisión aquí )
  2. O bien, descargue el buen viejo. Zip desde la sección de descargas del proyecto en Google Code. Aquí hay un enlace directo al código para este artículo .

Si el programa de Python está funcionando, entonces sabrá dentro de un minuto de encender el Netduino si todo funciona correctamente: la fecha y la hora se ajustarán automáticamente correctamente a través de la conexión y , eso no es todo: el LED conectado a la XBee recibira por pin se encenderá una vez por minuto.

 

Sobre el único otro cambio en el software Netduino esta vez es que finalmente he añadido un ajuste de horario de verano para el menú del Netduino: puede activar o desactivar el horario de verano en el menú «Fecha».

 Se utiliza en el cálculo de la «Sun Up» y tiempos «Sun Down», si usted está basando el temporizador de luz de la planta en aquellos tiempos. Los puristas señalarna que un Netduino conectado a Internet no debería tener que depender de un ajuste manual para saber cuando el horario de verano está en vigor, pero vamos a hacer caso omiso de esos puristas por ahora.

Se ha encontrado el XBee para ser un complemento muy fiable a la Netduino. Hecho, el autor escribió el código utilizado en este artículo y han estado funcionando continuamente desde entonces, y todavía tiene  algún caso donde la conexión XBee cae permanente o deja de responder. En suexperiencia, esto es una gran ventaja sobre el uso de una conexión Ethernet – cuando la conexión Ethernet del Netduino cae tiende a quedarse abajo.

Así que, si tan grande del Xbee, ¿por qué estoy usando sólo para ajustar el tiempo?  Si usted navega a través de la clase principal Program.cs en el código fuente, verá que hay un nuevo método llamado uploadSensorData, que no apuntal a un posible envios desde Netduino a  Nimbits.

Código en pyton

El código Python es ciertamente muy simple: todo lo mejor para aprender programación Python desde, ¿verdad?

Conexión de puerto serie del XBee se abre durante el inicio. Si la conexión no se puede abrir, el programa mostrará un mensaje de error y terminara llamando a la función sys.exit Python. Si tuviera algunos problemas para conseguir el puerto serie de trabajo antes, sin duda usted estará bien familiarizado con este mensaje de error.

1
2
3
4
5
6
7
try:
    ser = serial.Serial(SERIALPORT, BAUDRATE, timeout=TIMEOUT)
    ser.close() # workaround for known problem when running on Windows
    ser.open()
except:
    print "Unable to open serial port ", SERIALPORT, ". See ya."
    sys.exit(1)

 

Los principales controles de bucle si el tiempo ha cambiado (sólo el minuto, en realidad – lo dejaremos la Netduino manejar los segundos). Si es así, se llama a la función sendDateTime (). A continuación, tiene capacidad para un rato antes de repetir el ciclo.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def displayTime():
    lastMin = -1
    while 1==1:
        try:
            currTime = datetime.datetime.now()
            if DEBUG:
                print "in displayTime, currTime = " + currTime.strftime("%Y-%m-%d %H:%M:%S")
            currMin = currTime.minute
            if lastMin != currMin:
                lastMin = currMin
                sendDateTime()
            time.sleep(15);
        except Exception:
            LogMsg("Error in displayTime")
            print sys.exc_info()[0]

Tenga en cuenta que que el controlador de excepciones es diferente de la utilizada cuando se abre el puerto serie : se registra el error , muestra alguna información sobre el error en la consola ( usando la función de Python sys.exc_info ) , a continuación, con optimismo sigue adelante . Si no hay controlador de excepciones , ninguna excepción en este bucle , o en las funciones llamadas por este bucle, que causaría la aplicación termine.

Este enfoque de » iniciar y seguir adelante » es generalmente mal visto en el diseño de software, pero lo recomendaría para un programa tan simple como este que se ejecuta en segundo plano. Debes encontrar que este código de la aplicación , y Python que se comunica a través de XBee , en general , es muy poco mantenimiento : sólo puede iniciarlo, luego olvidarse de él . De vez en cuando se puede comprobar en el código usando GNU Screen o mirando el contenido del registro de errores controller.txt .

La función sendDateTime sólo convierte la fecha y la hora en el formato que el Netduino lo espera , entonces lo escribe en el puerto serie. Tenga en cuenta que el » ser.flush ()» función se utiliza para asegurarse de que los datos se envían de inmediato en lugar de ser amortiguada – esto es, literalmente, los datos sensibles al tiempo.

 

 

1
2
3
4
5
6
7
8
def sendCommand(strPrefix, strCommand):
    if ser:
        ser.write(strPrefix + ":" + strCommand + chr(0))
        ser.flush()
def sendDateTime():
    timeStr = time.strftime("%Y-%m-%d %H:%M")
    sendCommand("D", timeStr)

 

En el lado Netduino, se requiere muy poco código nuevo para hablar con el XBee. Estamos usando el XBee como un dispositivo de puerto serie, en lugar de hacer uso de la API de la XBee (una opción más versátil que podría explorar en un próximo artículo). Desde la perspectiva del Netduino, el XBee podría ser un tipo sentado en una terminal de serie, de vez en cuando escribiendo un comando «set time». Ya hemos implementado ese apoyo, de vuelta en el «Netduino: Tiempo y Clima» artículo.

 

La conexión XBee se abre durante el inicio, usando casi exactamente el mismo código que se utilizó para abrir una conexión serie a un terminal de PC:
1
2
3
// last parm should be true for UART terminal (to send
//   user confirmation), but false for UART XBee
uart = new clsUART(strUARTPort, 9600, 512, false);
El controlador de eventos es el mismo que se utilizó para el terminal de PC: el evento se produce cuando nuestra clase genérica de puerto serie, clsUART, recibe algunos datos. De hecho, si usted está utilizando el Kit LCD serie SparkFun, este controlador de eventos todavía se utiliza cuando el Netduino recibe datos desde el Arduino, como se explica en el «A Little ayuda de sus amigos» artículo.Compartir un controlador de eventos de comandos serie entre Arduino y el XBee funciona bien, y es fácil de implementar en. Net. El Netduino no lo sabe, o la necesidad de conocer, que ha de enviar el comando, y el. NET Micro Framework asegura que no hay ningún conflicto entre los 2 puertos serie.Lo único que ha cambiado es que el XBee envía la fecha y hora en el mismo comando:
D: 2011-07-25 18:01

Entonces,se puede  modificar   clsUART para comprobar para ver si la cadena está en este formato, y plantea tanto una «fecha fijada» y «Set Time» caso si lo es.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (strDateParts.Length == 5)
{
    intHours = Int32.Parse(strDateParts[3]);
    intMinutes = Int32.Parse(strDateParts[4]);
    intSeconds = 0;
    blnTimeSet = true;
}
...
// tell rest of application that the date has been set
raiseCommand(strCommand);
if (blnTimeSet)
{
    // raise the time event too
    raiseCommand("T:" + Program.Int_ToZeroPrefixedString(intHours, 2) + ":" + Program.Int_ToZeroPrefixedString(intMinutes, 2));
}

El controlador de eventos ya sabía cómo manejar los cambios de fecha y los cambios de tiempo, por lo que no se requería ningún cambio en el código allí.

El único otro cambio significativo fue modificando el menú para añadir un interruptor de «horario de verano». Dado que el código de menú ha sido diseñado para ser fácilmente extendida – como se explica en la Expulsión del artículo de menú – esto requiere sólo 1 nueva línea a la matriz strMenuItems:

1
2
3
"2-1", "Hour `HH`", "_UD-`HH`",
"2-1", "Min `mm`", "_UD-`mm`",
"2-1", "DST `DS`", "_DST", // NEW - Daylight Savings Time setting

El formato se ve bastante críptico, pero tendrá más sentido si usted lee el «Programador Show and Tell» de pedir a la carta.

El código en clsLCDMenu pasa el «DS` `» de palabras clave para su método de devolución de llamada para obtener el ajuste DST actual y pasa a la palabra clave «_DST» para el método de devolución de llamada para el manejo de un nuevo ajuste introducido por el usuario.

Por ejemplo, el código agrega al método de devolución de llamada setValueFromMenu () para la palabra clave «_DST» es:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
else if (menuCode == "_DST")
{
    // toggle DST
    blnUseDaylightSavingsTime = !blnUseDaylightSavingsTime;
    calculateSunriseAndSunset(DateTime.Now);
    if (blnUseDaylightSavingsTime)
    {
        SaveSettingToEEPROM(ADDR_DST, 2);
    }
    else
    {
        SaveSettingToEEPROM(ADDR_DST, 1);
    }
}

Esto vuelve a calcular la salida del sol y puesta del sol (y actualiza los temporizadores de luz la planta si se basan en estos tiempos), a continuación, pasa a la nueva configuración para el Arduino en el Kit LCD Sparkfun para guardarla en la memoria EEPROM.

 

 

 

 

 

Conexión de un XBee a un PC

La comunicación punto a punto no es ninguna diversión con un solo punto, por lo que tendrá que conectar un XBee tanto a la PC y el Netduino.

Al final PC, ya sea que use un BeagleBoard, TonidoPlug, o una PC completa, necesitará un adaptador USB para el XBee.

Hay muchas opciones que hay. El autor usa un adaptador XBee Adafruit y un cable USB TTL-232 . Sin embargo, a menos que le sucede que tiene un cable de repuesto se trata de una opción relativamente costosa, puesto que el adaptador cuesta $ 10 y el cable cuesta $ 20. Otras opciones son  $ 20 Adaptador XBee Parallax , y versátil $ 20 de Seeedstudio UartSBee .

Antes de conectar el XBee al Netduino, debe configurar los 2 XBees para que puedan hablar entre sí.

Por defecto, los adaptadores XBee están configurados como adaptador de 0 en PAN (ID de red) 3332, y van a enviar sus datos a otros 0s adaptador. Aunque esto funciona bien si uno XBee sólo envía, y el otro XBee sólo recibe, pronto tendremos la Netduino y PC charlando alegremente de distancia entre sí. Por lo tanto, usted debe asignar una de las XBees tener un adaptador de ID diferente (número 1 funciona bien), a continuación, establecer la dirección de destino del otro XBee ser el mismo ID.

Esta página en Adafruit cubre las 2 opciones para configurar un XBee: el sólo para Windows del programa X-CTU, y entrar los comandos AT desde una terminal serie.

Sea cual sea el método de configuración que utilice, es necesario cambiar la configuración de «MI» en la primera XBee a 1, y la del «DL» ajuste en el otro XBee a 1 Eso es:. Los demás valores predeterminados están bien.

Me gustaría recomendar el uso del programa X-CTU si estás empezando con XBees: es mucho más fácil de usar ya prueba de tontos que un terminal serie. Mientras que usted está allí, usted debe actualizar el firmware de los XBees, algo que no se puede hacer desde un terminal serie.

Si usted es incondicional sobre el uso de un TonidoPlug o BeagleBoard como un PC, o quiere evitar encontrarse con X-CTU por otras razones, de un terminal serie es el camino a seguir.

El autor ha utilizado minicom en un BeagleBoard y TonidoPlug para esto. Con el fin de hablar con el XBee tendrá que ejecutar minicom como root y cambiar algunos de los ajustes por defecto. Conecte un XBee en su adaptador al puerto USB, entonces:

  1. En la línea de comandos de Linux, escriba «minicom-s». Si va a guardar la configuración en un perfil (una buena idea), se debe ejecutar como root: «sudo minicom-s»
  2. Seleccione «Configuración del puerto serie»
  3. La configuración del puerto serie deben ser como se muestra en la siguiente imagen.Pulse el botón «E» para cambiar el BPS en 9600, y presione «F» para configurar hardware de control de flujo en «No». También puede ser que tenga que cambiar la configuración de dispositivos de serie: el general «/ dev/ttyUSB0», pero si hay otros dispositivos USB conectados: podría ser / dev/ttyUSB1 o / dev/ttyUSB2, etc
  4. Pulse Intro para volver al menú de configuración de Minicom, a continuación, seleccione «Pantalla y teclado»
  5. Pulse el botón «P» para activar la función de salto de línea Add, y pulse «Q» para activar el eco local.
  6. Pulse Intro para volver al menú de configuración de nuevo. Para guardar esta configuración, seleccione una de las opciones «Guardar configuración». Para mostrar la terminal serie, seleccione «Salir».
  7. El XBee está inicialmente preparado para recibir y enviar datos. Usted tendrá que ponerlo en modo de comandos. Para entrar en modo comando, presione la tecla «+» 3 veces (es decir, + + +), pero no pulse Intro. El XBee debe aparecer en Aceptar.

 

Valores de Minicom para la configuración XBee

Valores de Minicom para la configuración XBee

Los comandos de terminal correctas para la primera XBee son:

  + + +
 ATMY 1
 ATWR

Y por segunda XBee

  + + +
 ATDL 1
 ATWR

El XBee debería devolver «OK» después de cada comando.

Si usted no es capaz de ver lo que está escribiendo, intente encender de nuevo el eco local: pulse Ctrl-A continuación, Z para mostrar el menú, y luego presione E.

Tenga en cuenta que el XBee automáticamente (y silenciosamente) el modo de configuración de salida si usted espera demasiado tiempo entre los comandos, así que si usted no está recibiendo bien después de un comando AT, intente introducir + + + de nuevo.

Fuente aqui

Enviando datos a Nimbits con Netduino a traves de Xbee


Usted probablemente haya  leído hace poco de una tendencia al alza, el Internet de las Cosas   pues cada vez es más fácil de conectar dispositivos y sensores a la internet, donde se puede informar de su estado, recibir instrucciones, etc

La columna vertebral de este sistema es el repositorio de datos en línea, que registra los datos y le permite ver los resultados .Las dos principales plataformas  que permiten hacer esto con relativa facilidad son  Cosm.com ( antes pachube y un poco mas tarde Xivley)  y Nimbits .


En este artículo, se va a conectar el Netduino a Nimbits a través de un intermediario Python.
 El autor prefiere este enfoque de una alternativa común, que conecta la Netduino directamente a una conexión Ethernet. Si usted está interesado en probar un enfoque mas directoro utilizando Cosm.com    hay todo un libro que le muestra cómo , ya ademas en este blog se ha  tratado  aqui .

Tanto Cosm  (Pachube) como  Nimbits utilizan una API REST para recibir los datos de los sensores.

En  el artículo sobre el uso de Tweet-A-Watt con Nimbits se n cubre el proceso de creación de una cuenta en el servidor Nimbits, obtener una clave de API, y la creación de puntos de datos. Usted tendrá que hacer todas estas cosas con el fin de recibir datos del Netduino. Sus ajustes Nimbits se guardan en el archivo de configuración de Python, como se explica a continuación.

Configuración Netduino

El hardware y el software Netduino no se modifica de la etapa anterior del proyecto,Netduino Meets World . Usted tendrá que tener XBees configurados tanto en el Netduino y extremos de Python de la configuración – detalles están en Netduino Meets World .

Bueno, en realidad, no es necesario si el XBees Netduino se encuentra muy cerca de la PC que ejecuta Python.  Puesto que estamos utilizando los XBees como un dispositivo serie genérico, una conexión USB también funcionará sin cambios de software necesarios(el autor tiene un Netduino e conectados por USB a un BeagleBoard XM corriendo Python).

No se puede utilizar el puerto USB del Netduino para esto, pero se puede conectar las clavijas al adaptador-TTL a USB. Una opción es el cable 3.3V FTDI que describí allá por el Netduino: Tiempo y artículo de El Tiempo . Una opción un poco más barato es un tablero del desbloqueo de FTDI – Esta usando esta de Sparkfun y puede confirmar que funciona bien con el código que acompaña a este artículo.

Configuración de la interfaz de Python

El código Python, TimeRelay.py, se construye sobre la base del programa Python utilizado la última vez, TimeServer.py. Servidor de hora se configura con los interruptores de línea de comandos -, ya que hay muchos más ajustes ahora, he pasado a utilizar un archivo de configuración. Puede descargar el código de Python y el archivo de configuración de ejemplo de página de Google Code , aquí.

El archivo de configuración contiene los siguientes ajustes. Los que hay que rellenar están marcados en cursiva.

  # Archivo de configuración para TimeRelay.py
 # SERIALPORT = \ COMxx <-. Puerto COM de Windows se debe especificar en este formato
 SERIALPORT = / dev/ttyUSB0
 LOGFILENAME = TimeRelay.log
 DEBUG = True
 NIMBITS_SERVER = http://app.nimbits.com
 NIMBITS_USERID =
 NIMBITS_API_KEY =
 NIMBITS_UPDATE_INTERVAL = 300
 # ID de sensores - formato es <Netduino Sensor <ID = <Nimbits Punto de datos <ID [, Nimbits Intervalo de actualización en segundos]
 H1 = PlantRoomHumidity, 1800
 T1 = PlantRoomTemperature

Los 3 primeros ajustes se corresponden con los parámetros de línea de comandos en el predecesor del programa, que se enumeran en el artículo anterior:

  • SERIALPORT – Especifica el puerto serie que el XBee está conectado. Tenga en cuenta el tamaño inusual del nombre del puerto de serie para Windows PC – esto es requerido por el PySerial biblioteca.
  • LOGFILENAME – El archivo de registro tiene un papel más importante -, además de los mensajes de error, sino que también registra las lecturas de datos recibidos de la Netduino en un formato delimitado por comas. Puede desactivar la función de registro local, al dejar esta opción en blanco (es decir, la supresión de «TimeRelay.log» de esa línea).
  • DEBUG – Activa los mensajes de depuración por escrito a la consola. Esto está activada por defecto, ya que es muy útil para solucionar problemas.

Los ajustes Nimbits son tomados de su cuenta Nimbits:

  • NIMBITS_SERVER – La configuración predeterminada, app.nimbits.com, es el servidor Nimbits público. Si usted no quiere codearse con las masas sin lavar, usted puede configurar su propio servidor privado Nimbits en Google App Engine – usted entonces introducir el nombre del servidor GAE aquí (por ejemplo whatever.appspot.com). (Ambos Nimbits y GAE son libres cuando se utiliza para este propósito. Describí brevemente el proceso de configuración de un servidor Nimbits en el «Rolling Your Own» sección de mi artículo Nimbits )
  • NIMBITS_USERID – Este es el Gmail electrónico que utilizó al crear sus Nimbits representan.
  • NIMBITS_API_KEY – Esta tecla se envía por correo electrónico a usted al hacer clic en el botón de barra de herramientas de «clave secreta» en la consola del servidor Nimbits.
  • NIMBITS_UPDATE_INTERVAL – Especifica la frecuencia con Nimbits será actualizado con la última lectura del sensor. El valor predeterminado es 300 segundos (es decir, 5 minutos), pero se puede sustituir esto para sensores individuales en las líneas de los sensores en la parte inferior del archivo de configuración de HTE. Tenga en cuenta que la Netduino enviará una nueva medición cada 60 segundos, independientemente de lo que se configura aquí – la aplicación Python enviará Nimbits un promedio de todas las lecturas desde la última actualización.

Los ajustes del sensor se utilizan para vincular los identificadores de sensor no modificables en la aplicación Netduino con los nombres de los puntos de datos que creó en Nimbits. Las configuraciones por defecto asumen nombres de punto de datos de PlantRoomTemperature y PlantRoomHumidity – si utiliza otros nombres (como se podría si en realidad no tienen una habitación Planta), a continuación rellenarlos en estas líneas del archivo de configuración.

Tenga en cuenta que los ajustes que se muestran arriba le enviará una nueva lectura de la humedad Nimbits cada 30 minutos, mientras que la temperatura se enviará utilizando el intervalo predeterminado de 5 minutos. Siéntase libre de cambiar esta función de cómo meteorológicamente activo es su casa.

Activar Sensores

Después de que haya terminado la actualización TimeRelay.cfg, ejecute TimeRelay.Py y ver la consola.

El programa comenzará haciendo una lista de los ajustes que se han encontrado en el archivo de configuración, a continuación, se abrirá el puerto serie y esperar a que algo suceda.

Si un Netduino ejecutar el código desde el último artículo está encendido, y salió de la «depuración» configuración activada en el archivo TimeRelay.cfg, debería ver una temperatura y una lectura de humedad que se muestra dentro de un minuto. Un mensaje que muestra la llamada a la API REST que envía los datos a Nimbits debe mostrarse en 5 minutos (o cualquier intervalo que usted utilizó en el archivo TimeRelay.cfg).

Cambie a su página web Nimbits, haga doble clic en el punto de datos en el panel de la izquierda, y el panel de Canales de Datos debe actualizar con el nuevo valor recibido.

Hay un montón de funciones muy útiles que usted puede experimentar con en el cuadro de diálogo Puntos de datos. Yo uso el ajuste de alarma de inactividad para decirme cuando algo ha ido mal con la configuración Netduino / Python, y el Alto y Bajo alerta Valor para decirme cuando algo ha ido terriblemente mal en mi casa.

La página web Nimbits también tiene algo ingenioso incorporado en las capacidades gráficas. Estos han cambiado recientemente con el lanzamiento de Nimbits 3.2, y seguirán evolucionando, por lo que ver la página web Nimbits y Nimbits el blog para las últimas.

El proceso de carga se ejecuta en otro temporizador. Esto está codificado que se produzca cada 60 segundos – nada mágico en ese intervalo, y sin duda podría cambiar según sea necesario.

Puesto que estamos utilizando el XBee como una interfaz serial genérico, todo el Netduino tiene que hacer es escribir los datos en el puerto serie. El sensor de ID no es modificable, y cada lectura se terminó con un CR / LF – un formato de mensaje «cruda pero eficaz». No se ha notado ningún problema con ser ilegible o truncado de datos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// upload sensor readings once a minute
timerUploadSensors = new Timer(new TimerCallback(uploadSensorData),
 null, 60000, 60000);
. . .
private static void uploadSensorData(object data)
{
 string strReading = "";
 if (blnHumidityUpdated)
 {
  blnHumidityUpdated = false;
  // make copy of humidity reading, since it
  //    could be overwritten at any time
  strReading += "H1:" + strHumidity + "rn";
 }
 if (blnTempUpdated)
 {
  blnTempUpdated = false;
  // make copy of temperature reading, since it
  //    could be overwritten at any time
  strReading += "T1:" + strTempDHT11 + "rn";
 }
 uart.WriteToUART(strReading);
}

El código Python es un poco más interesante.

En primer lugar, se ha añadido una solución para un problema conocido con la biblioteca PySerial cuando se ejecuta en Windows. Cuando PySerial intenta abrir el puerto COM que piensa que su ya abierto – La solución es siempre cerrarla antes de abrirlo y  no causa problemas en otros sistemas operativos:

1
2
3
ser = serial.Serial(SERIALPORT, BAUDRATE, timeout=TIMEOUT)
ser.close() # workaround for known problem when running on Windows
ser.open()

El código que lee TimeRelay.cfg muestra algunas de potencia de archivos y la cadena de manipulación de Python. Cinco líneas de código es todo lo que se requiere para abrir un archivo, leer su contenido, analizar las líneas, y guárdelas en un diccionario.

1
2
3
4
5
6
7
8
9
10
11
12
13
def readConfigFile():
    #global config
    for line in open(CONFIGFILE):
        if line.strip()[0] != "#": # skip comment lines
            parts = line.split("="1)
            if len(parts) == 2:
                config[parts[0].strip()] = parts[1].strip()

Las lecturas del sensor recibidas de la Netduino se almacenan en un diccionario. La clave es la identificación del sensor (por ejemplo, «T1») y el valor es una lista con el formato:

  <# De lecturas desde la última carga>,
 <Total de lecturas desde el pasado update>,
 <date/time de última upload>

Diccionarios de Python son frías porque pueden almacenar cualquier objeto como su valor, y el tipo de objeto pueden ser diferentes para diferentes entradas en el mismo diccionario. Menos interesante es el hecho de que Python lanza una excepción si se intenta leer una clave del diccionario que aún no existe, así que asegúrese de comprobar para ver si una lectura anterior ya se ha almacenado allí.

 

1
2
3
4
5
6
7
8
9
10
11
 
# add this reading to the sensor's list
if sensor in sensorValues:
    sensorValues[sensor][0= sensorValues[sensor][0+ 1
    sensorValues[sensor][1= sensorValues[sensor][1+ float_value
    if DEBUG:
        print "found sensorValue", sensor, sensorValues[sensor]           
else:           
    sensorValues[sensor] = [1, float_value, datetime.datetime.now()]
    if DEBUG:
        print "adding new sensorValue", sensor, sensorValues[sensor] 

Tenga en cuenta que Python no es demasiado exigente con los tipos de variables, excepto cuando es. Si «sensorValues ​​[sensor] [1]» o «float_value» no eran tanto los valores de punto flotante, una excepción se produce cuando se suman.

El código que envía los datos a Nimbits utiliza la API REST CurrentValue . Esta API tiene un doble papel de escribir nuevos valores y leyendo el valor más reciente, pero sólo lo está utilizando para escribir datos aquí.

El código comienza con un hack, para redondear el valor a 3 posiciones decimales antes de enviarlo. Esto se hace por razones puramente estéticas, por lo que las lecturas que se muestran en la página web Nimbits ven bien y ordenado (parece mas bien o un truco porque redondear un número no debería requerir este grado de manipulación de cadenas).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
# HACK round to 3 decimal places and drop trailing zeros
#  - technically not needed, but makes Nimbits output nicer looking
stringValue = ("%.3f" % value).rstrip('0').rstrip('.'
try:
    LogMsg(dataPoint + "," + stringValue)
    url = (NIMBITS_SERVER + "/service/currentvalue?value=" +
        stringValue + "&point=" + dataPoint.replace(" ""+"+
   "&email=" + NIMBITS_USERID +
        "&secret=" + NIMBITS_API_KEY)
    urllib.urlopen(url)
    return True
except IOError:
    print 'Error sending to nimbits'
    print sys.exc_info()[0]

La llamada a la API de REST es un 2-liner, otro ejemplo del poder y la simplicidad de Python en comparación con. Net.El único truco es reemplazar espacios en el nombre de punto de datos con más signos, siendo esta una URL y todo.

Tenga en cuenta que no es necesario el envío de una marca de tiempo con los datos – la API CurrentValue asume el valor tiene una fecha y hora actual a menos que se especifique lo contrario. Lo bueno es que, desde que trabaja con las zonas horarias en Python puede ser una pesadilla.

Por desgracia, la API Nimbits CurrentValue no devuelve un valor para indicar si la llamada a la API se ha realizado correctamente, por lo que el código Python no escribirá un mensaje de error en la consola o el archivo de registro si algo sale mal. La primera señal de que algo anda mal es generalmente cuando «Alarma Idle» Nimbits ‘me envía un e-mail.

 

 

Fuente aqui

Instalacion del SDK de Google Cloud


 

Google App Engine es la versión PaaS(Plataform  as Service)    de  Google .Está diseñado para que los desarrolladores que quieran administrar la totalidad de su aplicación sobre los recursos de Google .La idea es que  los desarrolladores simplemente cargan su código Python ( o en  java,go o PHP ) en Google, lanzan la aplicación, y luego pueden supervisar el uso y otras cifras.Como punto muy interesante a medida que crezca tu proyecto o el tráfico de tus usuarios no se  necesitará ampliar ni re-acondicionar un servidor pues toda la infraestructura de TI esta en el Cloud de Google  .

 

Se compone de:

Servidores de aplicaciones Python/Java
Servicios de almacenamiento de datos
Base de datos BigTable.

Con este nuevo servicio podremos pasar de un sólo usuario a un millón, dado que posee una tecnología integrada con Bigtable (la que usa Google)  hace increíblemente más fácil y automático el reescalado de su infraestructura.

Google App Engine  se ofrece  de forma gratuita hasta determinadas cuotas, permitiendo  ejecutar aplicaciones sobre la infraestructura de Google. Si no se cuenta con un dominio propio, Google proporciona uno con la siguiente estructura, midominio.appspot.com. También permite implementar un dominio propio a través de Google Apps. Por el momento las cuentas gratuitas tienen un límite de 500 megabyte de almacenamiento permanente y la suficiente cantidad de ancho de banda y CPU para cinco millones de visitas mensuales, y si la aplicación supera estas cuotas, se pueden comprar cuotas adicionales.

 

Instalacion del SDK de GAE en Windows
  1. Si todavía no has realizado la instalación, descarga e instálate Python 2.7. Añade la ubicación de la instalaciónC:\Python27 (la variable de entorno del sistema PATH).

  2. Descarga el archivo del SDK de Cloud y descomprímelo.

    Mueve el directorio de google-cloud-sdk donde quieras conservar el SDK, como C:\google-cloud-sdk.

  3. Abre un símbolo del sistema (cmd.exe). Cambia el directorio actual a google-cloud-sdk:

    cd \google-cloud-sdk
  4. Ejecuta la secuencia de comandos install.bat:

    install.bat

    Sigue los mensajes de instalación para instalar el paquete de App Engine para Python y PHP.

  5. Cierra y vuelve a abrir el símbolo del sistema para ver los cambios del entorno.

  6. Inicia sesión en Google Cloud Platform utilizando este comando:

    gcloud auth login
  7.  Descarga el código de muestra del proyecto desde el editor en «3. Prueba el código de muestra haciendo clic en el botón Descargar tu código«. Si lo prefieres, puedes descargar el código de muestra de Flask.
  8. Descomprime el archivo zip para crear el directorio del proyecto.
  9. Ejecuta un servidor local mediante este comando:
  • dev_appserver.py appengine-try-python-flask
  • Puedes detener el servidor pulsando las teclas Ctrl y C en la ventana de comandos.
  1. Visita la aplicación que se ejecuta localmente en tu navegador: http://localhost:8080
  2. Ahora que ya has visto que tu aplicación se ejecuta en tu máquina local, estás listo para crear e implementar tu proyecto, Mi primer proyecto.

Fuente aqui