Cómo descargar fácilmente videos de youtube


Aunque estamos en la era de la hiperconectividad   de  modo que  servicios como youtube normalmente están siempre activos puede  haber circunstancias que nos hagan necesaria la descarga  para ver dicho contenido offline porque precisamente no siempre se dispone de esa conectividad.

Para estos casos , pues se hace necesario la descarga del video  desde la plataforma de video ( por ejemplo youtube )   hacia un fichero para disponer  de este de forma desconectada  o con mala conectividad  y poder reproducirlo sin problemas.

Existen  muchas  formas de poder descargar un video de youtube sobre todo  usando programas específicos  o  incluso con complementos (addsons) para la mayoría de los navegadores.

Hoy vamos  a ver un servicio   web cuyo uso es bastante intuitivo

Vamos  a tomar el  video de demostración del uso de la aplicación  Segurisca  como ejemplo  . La url directa del video es   «https://www.youtube.com/watch?v=orr7hFKGTcA»

Ahora   bien invocamos al servicio  en «https://es.savefrom.net/»   o  creamos una nueva url   eliminando  la cabecera  «https://www.»     y sustituyendo simplemente  la cadena anterior por «ss»   , es decir   la url   anteior      quedaria  en:

«ssyoutube.com/watch?v=orr7hFKGTcA» ( es decir sin el https)

Esta url la copiaremos  en la barra del navegador  y  nos abrirá ya automáticamente el servicio savefrom  con precisamente la url del video a descargar

pantalla1.PNG

Obviamente la idea del servicio es que compramos la aplicación  pero nos hacen una demo de como funciona precisamente   usando este servicio web

Para  poder hacer uso del servicio simplemente  pulsaremos en  el signo «v» a la izquierda de la barra de direcciones:pantalla2.PNG

Ahora  nuevamente nos ofrece la   aplicación aconsejando su descarga  aludiendo a  problemas con velocidades de descarga más lentas y limitaciones en los formatos de archivo ,pero si queremos usar el servicio web,  nos vamos un poco más abajo  y veremos el botón de descarga   seleccionado por defecto en  formato MP4  con resolución  360 mfs

pantalla3

Si tiene instalado vlc   y accesible desde navegador  se verá  en una ventana nueva  ,reproduciendo directamente con el vlc dentro del navegador:

pantalla4.PNG

Para tener el fichero en nuestro ordenador , ya basta pulsar el botón derecho sobre el video y elegir «Guardar video como »

pantalla5.png

 

En el caso de que no tenga  el VLC instalador  directamente empezara a descargarse en la carpeta por defecto que tenga configurado el navegador desde donde hace la petición

En el caso de Chrome  en la página de Opciones, hacemos clic en «Avanzadas» y en el panel de la derecha descendemos hasta «Descargas«. Allí aparece la carpeta donde Google Chrome guarda las descargas por defecto. Para cambiarla hacemos clic en el botón «Cambiar» y seleccionamos la nueva carpeta de destino.

Anuncio publicitario

Enviar correos desde Linux: el método definitivo


Mutt es un cliente de correo electrónico basado en línea de comandos. Es una herramienta muy útil y poderosa para enviar y leer correos electrónicos desde la línea de comandos en sistemas basados en Unix.

Mutt también admite protocolos POP e IMAP para recibir correos. Se abre con una interfaz coloreada para enviar correos electrónicos que hacen que sea fácil de usar para enviar correos electrónicos desde la línea de comandos.

Algunas  características importantes de Mutt son las siguientes:

  • Es muy fácil de instalar y configurar.
  • Nos permite enviar correos electrónicos con archivos adjuntos desde la línea de comandos.
  • También tiene las características para agregar BCC (copia ciega ) y CC (copia ) al enviar correos.
  • Permite el enhebrado de mensajes.
  • Nos proporciona la facilidad de listas de correo.
  • También es compatible con muchos formatos de buzón de correo como maildir, mbox, MH y MMDF.
  • Admite al menos 20 idiomas.
  • También es compatible con DSN (notificación de estado de entrega).

Por si alguna vez ha necesitado enviar correos completos con anexos desde una maquina Unix con Shell scripting siempre que esté configurado el servidor de correo , por ejemplo para enviar estos desde un script, de este modo funciona perfectamente:

#envió de correo ok
cat $BODY | mutt -s «$asunto» -a $Fichero $destinos

Donde las variables significan lo siguiente:

  • $BODY : es un fichero cuyo texto contiene el texto del cuerpo .Atención: con el comando cat sí se respetan los retornos de carro del fichero original pues con el comando echo los elimina concatenando todas las líneas quitando los saltos de línea
  • “$asunto” : es el asunto que hay que poner las comillas para que nos interprete los espacios como otros parámetros pues de no hacerlo corta el texto que queremos poner en el asunto interpretando las palabras tras el segundo espacio como destinatarios de correo
  • $ Fichero : es la ruta directa del fichero a adjuntar
  • $destinos: todos los destinatarios de correos separados por espacios

 

Entramos en  modo interactivo   cuando solo  especificamos el destinatario:

mutt -s "Test correo" [email protected]

Cuando ingresa el comando anterior en el terminal, se abre con una interfaz y confirma la dirección del destinatario y el asunto del correo y abre la interfaz. En este momento  puede realizar cambios en la dirección de correo del destinatario:

  • Cambiar la dirección de correo electrónico del destinatario presionando t.
  • Cambiar la dirección de Cc con c.
  • Adjunte archivos como archivos adjuntos con a.
  • Salir de la interfaz con q.
  • Enviar ese correo electrónico presionando y.

Podemos agregar Cc y Bcc con el comando mutt a nuestro correo electrónico con la opciones  «-c» y «-b». Asimismo podemos enviar correos electrónicos desde la línea de comandos con archivos adjuntos utilizando la opción «-a» con el comando mutt.


Si queremos cambiar el nombre y el correo electrónico de los remitentes, entonces necesitamos crear un archivo en el directorio de inicio de ese usuario en particular.

# cat .muttrc

Agregue las siguientes líneas a él. Guárdelo y cierrelo.

set from = «[email protected]» set realname = «Realname of the user»

AYUDA

Para imprimir el menú de ayuda de «mutt», necesitamos especificar la opción «-h» con él , es decir

# mutt -h

Y esta es la salida:

Mutt 1.4.2.2i (2006-07-14)
usage: mutt [ -nRyzZ ] [ -e ] [ -F ] [ -m ] [ -f ]
mutt [ -nx ] [ -e <cmd> ] [ -a <file> ] [ -F <file> ] [ -H <file> ] [ -i <file> ] [ -s <subj> ] [ -b <addr> ] [ -c <addr> ] <addr> [ … ]
mutt [ -n ] [ -e <cmd> ] [ -F <file> ] -p
mutt -v[v]

options:
-a <file> attach a file to the message
-b <address> specify a blind carbon-copy (BCC) address
-c <address> specify a carbon-copy (CC) address
-e <command> specify a command to be executed after initialization
-f <file> specify which mailbox to read
-F <file> specify an alternate muttrc file
-H <file> specify a draft file to read header from
-i <file> specify a file which Mutt should include in the reply
-m <type> specify a default mailbox type
-n causes Mutt not to read the system Muttrc
-p recall a postponed message
-R open mailbox in read-only mode
-s <subj> specify a subject (must be in quotes if it has spaces)
-v show version and compile-time definitions
-x simulate the mailx send mode
-y select a mailbox specified in your `mailboxes’ list
-z exit immediately if there are no messages in the mailbox
-Z open the first folder with new message, exit immediately if none
-h this help message
$

Display inteligente para Netduino


La biblioteca TextDisplayMenu  es un marco extensible para rápidamente crear menús jerárquicos, editables que pueden mostrar en un display lcd de caracteres de verias lineas (típicamente compatible con hd44780)    controlándose mediante un IRotaryEncoder o una intrface  IButton . Los drivers para pantallas LCD Serie comparten una interfaz común que lo hacen fácil de conectar e integrar con el  TextDisplayMenu

Por tanto gracias a esta biblioteca podemos movernos en menús mostrados en displays lcd de varias lineas con un solo botón giratorio de un modo muy potente  y eficiente.

En este vídeo podemos ver un ejemplo de funcionamiento:

El menú se puede crear mediante programación o cargadolos desde un fichero en formato JSON y tiene un número de tipos de elementos de menú integrado de pantalla y edición entrada como tiempo, temperatura y otros.

Además se pueden crear fácilmente menús personalizados contipos de elementos que permiten a los usuarios editar su valor a través de las entradas

Utilización

Para utilizar el menú, necesitará un LCD compatible con ITextDisplay u otro display, así como alguna combinación de botones y codificador rotatorio que permita la funcionalidad de avanzar a siguiente, anterior y seleccionar . Por ejemplo, puedes usar; tres entradas IButton discretas para la siguiente / previa / selección, un codificador rotatorio para siguiente / anterior y un IButton para selección, o un RotaryEncoderWithPushButton para manejar las tres entradas.
El esquema siguiente muestra una configuración típica de integral para manejar el menú e incluye una pantalla de cuatro líneas LCD común controlado directamente por pernos GPIO digitales de Netduino, así como un encoder rotativo con pulsador:

Como se puede apreciar se usa un display copatible con hd44780  usando interfaz de 4 bits  con dos señales de control  y luego aparte el encoder que usa tres señales de control

El display  ademas de alimentación de 5v DC , tomada directamente de la placa ,usa pues   6 conexiones binarias de Netduino :d8,d9,d10,d11,d12 y d24 , forzando algunas lineas del diplay a  vcc o gnd y el encoder las tres anteriores :d7,d5 y d5;

Resumiendo estas son las conexiones del display lcd:

  1. VSS – Ground
  2. VCC – (+5V)
  3. VE – Contrast adjustment –>a gnd
  4. RS – Register Select–>pind13
  5. RW – Read/Write– >a gnd
  6. EN – Clock (Enable)–>pind12
  7. D0 – Data Bit 0–>pin d11
  8. D1 – Data Bit 1–>pin d10
  9. D2 – Data Bit 2–>pin d9
  10. D3 – Data Bit 3–>pin d8
  11. D4 – Data Bit 4
  12. D5 – Data Bit 5
  13. D6 – Data Bit 6
  14. D7 – Data Bit 7
  15. BLA – Backlight Anode (+)–>gnd
  16. BLK – Backlight Cathode (-)–>a 5v (ojo algunos dislplay necesitan una resistencia  limitadora no alimentándose directamente a 5v dc)

La caja para contener el encoder  y el display  los del Wilderness Labs han  diseñado específicamente en 3D  conun acabado fantastico:

Código de ejemplo

El código siguiente ilustra cómo crear una nueva, por eso carga su contenido de JSON:TextDisplayMenuRotaryEncoderWithButton

using System;
using System.Collections;
using System.Threading;
using Microsoft.SPOT;
using H = Microsoft.SPOT.Hardware;
using N = SecretLabs.NETMF.Hardware.Netduino;
using Netduino.Foundation.Sensors.Rotary;
using Netduino.Foundation.Displays;
using System.IO;
using TextDisplayMenu_Sample.Properties;
using Netduino.Foundation.Displays.TextDisplayMenu;

namespace TextDisplayMenu_Sample
{
    public class Program
    {
        public static void Main()
        {
            RotaryEncoderWithButton encoder = new RotaryEncoderWithButton(
                N.Pins.GPIO_PIN_D2, N.Pins.GPIO_PIN_D3, N.Pins.GPIO_PIN_D4,
                Netduino.Foundation.CircuitTerminationType.CommonGround);
                
            ITextDisplay display = new SerialLCD(new TextDisplayConfig() { 
                Height = 4, 
                Width = 20 }) as ITextDisplay;

            display.SetBrightness();

            Menu menu = new Menu(_display, _encoder, Resources.GetBytes(Resources.BinaryResources.menu), true);
            menu.Enable();

            Thread.Sleep(Timeout.Infinite);
        }
    }
}

El código  completo se puede encontrar aquí.

Para crear un menú con otras entradas, como botones o un codificador giratorio opcional, puede usar los otros constructores:

// Rotary encoder and select button
public Menu(ITextDisplay display, IRotaryEncoder encoder, IButton buttonSelect, byte[] menuResource, bool showBackOnRoot = false)

// Buttons for next, previous, and select
public Menu(ITextDisplay display, IButton buttonNext, IButton buttonPrevious, IButton buttonSelect, byte[] menuResource, bool showBackOnRoot = false)

Carga un menú desde JSON

Para crear el menú de JSON, en primer lugar definir el contenido del menú en un archivo JSON y luego agregarlo como un recurso.
Definición de muestra
El nodo raíz debe ser una matriz de elementos de menú. La tabla siguiente enumera las propiedades y uso asociado:

Property Usage
text Mostrar texto en el renderizado. Incluye {value} para mostrar el valor actual del tipo
command Nombre del comando para distinguir los eventos de selección de menú. Si se establece el comando, tiene prioridad sobre el elemento de menú editable.
id Identificador único para el tipo. Necesario para un elemento de menú editable..
type Tipo de entrada, por ejemplo: Edad, Tiempo. Necesario para un elemento de menú editable.
sub Array de items de sumenus .

Por ejemplo, el siguiente código json define un menú jerárquico dispuesto en los artículos y páginas de menú.

{
  "menu": [
    {
      "text": "My Age: {value}",
      "id": "age",
      "type": "Age",
      "value": 12
    },
    {
      "text": "My Command",
      "command": "DoSomething"
    },
    {
      "text": "Parent",
      "sub": [
        {
          "text": "Sub Item A"
        },
        {
          "text": "Sub Item B"
        },
        {
          "text": "Sub Item C",
          "sub": [
            {
              "text": "Sub Item D"
            },
            {
              "text": "Sub Item E"
            },
            {
              "text": "Sub Item F"
            }
          ]
        }
      ]
    }
  ]
}

Agregar el menú JSON como un recurso

Para agregar el archivo JSON al proyecto como un recurso:

  1. Haga clic derecho en el proyecto y seleccione Propiedades
  2. Haga clic en el panel izquierdo Recursos
  3. Haga clic y elija el archivo apropiado. Agregar recurso

Ahora, se puede acceder a este recurso por Resources.GetBytes(Resources.BinaryResources.[ResourceName]).

Soporte de eventos

El menú genera eventos cuando se selecciona un comando, se edita el elemento del menú y se sale del menú.

En cuanto a la selección de eventos ,para recibir una notificación cuando se selecciona un elemento de menú con un comando asignado, asigne un controlador al evento Seleccionado:

menu.Selected += (s, e) =>
{
    Debug.Print("menu selected: " + e.Command);
};

Respecto a la salida de eventos si el menú no es la pantalla de inicio de la aplicación deseada, entonces el menú puede ser cargado o descargado programáticamente usando Enable () o Disable (), respectivamente. Además, hay un parámetro opcional al crear un nuevo menú, showBackOnRoot, y cuando se establece en verdadero, »

menu.Exited += (s, e) =>
{
    Debug.Print("menu exited");
    menu.Disable();
};

Para editar eventos para obtener una notificación cuando cambia un valor de elemento de menú Editar, asignar a un controlador al evento:ValueChanged

menu.ValueChanged += (s, e) =>
{
    Debug.Print(e.ItemID + " changed with value: " + e.Value);
}

Construcción de  tipos

La siguiente tabla enumera los tipos de elementos de menú integrados y sus usos y valores asociados:

Type Description
Boolean Un tipo de lista como true y false.
Age Un integer entre 0 y 100.
Temperature Un valor entre -10 y 100 con una escala de 2.
Time 24 hora militar con HH:MM
TimeDetailed 24 hora militar con HH:MM:SS
TimeShort 24 hora militar con MM:SS

Creación de tipos de elementos de menú personalizado

Hay dos formas de crear elementos de menú personalizado. El más fácil y más común es heredar de y modificar, los tipos de base integrados. Sin embargo, también puede crear menús totalmente personalizada tipos de elementos.
Personalización de tipos Base incorporados
TextDisplayMenu incluye una serie de tipos base integrados que manejan tipos comunes y puede ser modificado para requisitos particulares para adaptarse:

Base Type Description
NumericBase Proporciona una pantalla y entrada numérica genérica. El mínimo / máximo y el número de decimales se pueden modificar.
TimeBase Proporciona una máscara de entrada de XX: XX: XX o XX: XX según el modo.
ListBase Proporciona una lista seleccionable de elementos.

Ejemplo de NumericBase personalizado

El siguiente código se extrae del tipo de menú Edad, e ilustra cómo heredar de NumericBase y especificar el piso, el techo y la escala de la entrada deseada.

using System;
using Microsoft.SPOT;

namespace Netduino.Foundation.Displays.TextDisplayMenu.InputTypes
{
    public class Age : NumericBase
    {
        public Age(): base(0, 100, 0) { }
    }
}

En resumen como vemos el equipo de Wilderness Labs a través de la fundación de Netduino ha hecho un trabajo fantástico que espero podemos usar en nuestros futuros proyectos

Mas información en http://netduino.foundation/Library/Displays/TextDisplayMenu/

Nuevos aires para Netduino


Sin duda corren nuevos aires para la plataforma Netduino tras la retirada de Secrets Labs por parte de su creador Chris Walker y ahora wilderness labb es la plataforma que oficialmente  esta soportando Netduino tanto es así que el sitio oficial anterior se ha redirigido a la plataforma wildernesslabs.co

 Wildeerness Lab  es una comunidad de desarrolladores .NET dispuesta a construir experiencias de hardware de próxima generación. Se  consideran  los «pastores» de Netduino; una plataforma de desarrollo de hardware abierto de código abierto y los creadores de Netduino.Foundation  un marco que simplifica enormemente la construcción de cosas conectadas con Netduino.

Tras unos años reestructurando el nuevo sitio se ha asociado con Hackster.io y desafió a cualquier entusiasta de Netduino para poner en marcha la revolución de hardware mediante la creación de soluciones innovadoras que utilicen IO Netduino y .NET Micro Framework

 

 

 

 

Hoy en dia   los teléfonos móviles   superan  a los dispositivos conectados móviles  en relacion 4 a 1 pero en apenas unos años, los dispositivos conectadas a Internet superaran a los teléfonos móviles en una proporcion de 10 a 1 lo que supondra  75 billones dispositivos conectados  predichos en 2025 gracias al uso de   microcontroladores y  los avances de hardware , lo cual  desembocaran con la revolucion del mundo va móvil, en pocos años, a conectar casi todos los nuevos productos.

Esta progreso del hardware es toda una revolución , y Wildeerness Lab lo sabe  permitiendo a los desarrolladores de hoy ser parte de él, pues ellos son conscientes de hecho que la revolución depende de piratas informáticos, creadores y manitas para crear  con la tecnología de las experiencias del mañana

Veamos en primer lugar las placas disponibles  pra luego meternos mas en detalle del concurso

Plataforma Netduino plus

Netduino es una plataforma abierta  basada en  Microsoft.NET Micro Framework. La versión  Plus ademas  es un poderoso Netduino junto con Ethernet integrado, así como el apoyo de una ranura para microSD en la misma tarjeta  . Ademas existe una version avanzada con adaptador wifi integrado

Cuenta con un  potente microcontrolador de 32 bits integrado con un entorno de desarrollo estándar que está disponible gratuitamente a través de Microsoft (Visual Studio 2010).

La familia Netduino se basa en el Microprocesador Cortex-M que ejecuta .NET Micro Framework (NETMF) v4.3.

El desarrollo se puede hacer tanto en Windows, con Visual Studio, o con Xamarin Studio en Mac OS X.

 

La plataforma permite una fácil interconexión con switches, sensores, LEDs, dispositivos de serie, y mucho más. El Netduino combina 20 GPIO con SPI, I2C, UART 2 (1 RTS / CTS), 4 y 6canales de PWM ADC.

Microsoft. NET Micro Framework combina la facilidad de un lenguaje de programación de alto nivel (C #) con las características de los microcontroladores permitiendo la depuración de programación basada en eventos, multi-threading, línea por línea,puntos de interrupción y mucho más.   Ademas ..,se pueden añadir  mas accesorios ofreciendo funcionalidades extra ( por ejemplo la ubicación GPS, el control de servos ,displays  de todo tipo).

También son compatibles con pin / puerto con los escudos Arduino, abriendo posibilidades en el mundo.

Características de la placa original , mantenida en las siguientes versiones Netduino 2 y Netduino 3 (esta ultima  con interfaz wifi) :

● all 20 digital and analog pins: GPIO
● digital pins 0-1: UART 1 RX, TX
● digital pins 2-3: UART 2 RX, TX
● digital pins 5-6: PWM, PWM
● digital pins 7-8: UART 2 RTS, CTS
● digital pins 9-10: PWM, PWM
● digital pins 11-13: SPI MOSI, MISO, SPCK
● analog pins 4-5: I2C SDA, SCL

● ethernet: 100 mbps (solo versiones con ethernet en v1, v2, v3) con  network stack via  lwIP

● micro sd (up to 2 GB)
● auto card detect

Netduino 3

Es la ultima evolución de esta placa. Cuenta con procesador  168Mhz Cortex-M4 (STM32F4) con o 1,408 KB of almacenamiento para código  y  164 KB de RAM.

Existe comercialmente en tres variantes:

N3

384 KB Code Flash Storage

SIn ethenert  ni wif

N3 Ethernet

1,408 KB Code Flash Storage
10/100 Mbps Ethernet
Micro SD Slot (up to 2GB)

Con ethernet

N3 WiFi

1,408 KB Code Flash Storage
802.11b/g/n WiFi
Micro SD Slot (up to 2GB)

Con adaptador WiFI

Netduino 2

Es la version mas antigua basada en Cortez M2   y M4. Existen unicaemnte dos  versiones

N2

Cortex-M3 @ 120Mhz
192 KB Code Flash Storage
60KB Ram

SIn ethenert  ni wif

N2 Plus

Cortex-M4 @ 168Mhz
384 KB Code Flash Storage
100 KB RAM
10 Mbps Ethernet
Micro SD Slot (up to 2GB)

Con intrefaz Ethernet

 

 

Netduino Foundation

Wildeerness Lab    ha creado  Netduino.Foundation,, una plataforma que toma gran parte de la complejidad del desarrollo de hardware y permite una experiencia de desarrollo lista donde se pueden crear soluciones de hardware sofisticado utilizando C#. Usando  Xamarin,se pueden crear aplicaciones móviles que hablan y controlan cosas conectadas aso como escribir soluciones de extremo a extremo en. net,

 

IoT real va a ser construido por los desarrolladores reales de hacking de IoT  como nunca  nunca podríamos imaginar:es ahi  donde usted entramos los entusiastas de netduino por lo nos proponen  unirnos a ellos  en la construcción de soluciones creativas con Netduino y el .NET Microframework.

Por cierto si no tiene un Netduino no hay problema, pues  estan regalando un total de 40 Netduino 3 WiFi o Ethernet de 3 Netduino  personas que están pensado proyectar aplicaciones( asi qeu  desee prisa, si usted necesita un tablero,pues  el plazo de propuesta de proyecto patrocinado es el 1 de julio.)
Y para endulzar el acuerdo, todos los ganadores del concurso recibirán acceso temprano de beta a Prado; el sucesor de Netduino que ejecuta .net completo estándar 2 aplicaciones en un microcontrolador.

Si no recibe un Netduino  o quieren conseguir uno  cuanto antes, use HCONTEST para recibir una 15% de descuento en cualquiera de nuestros productos de Netduino vendidos en Amazon. Este código es válido hasta el 30 de julio de 2018..

 

Hackster_Contest_Description_Banner.png

Concurso Netduino

 

Presentaciones del proyecto

Presentación debe incluir:

  • Descripción detallada de su proyecto. ¿Qué es, ¿qué hacer, cómo funciona?
  • Imágenes de calidad y videos
  • Historia con instrucciones claras
  • BOM (Bill del material)
  • Código fuente y esquemas si está disponible
  • Compruebe hacia fuera estos proyectos Netduino Hackster ejemplos de buenas presentaciones:

Línea de tiempo

  • Presentación proyecto abre -13 de junio de 2018
  • Fecha límite para aplicar gratis Netduino -01 de julio de 2018
  • Presentación de proyecto cerrado -31 de julio de 2018
  • Anunciados los ganadores del -03 de agosto de 2018

 

 

Estos serán los premios a este concurso;

  • Mejor presentación general – 1er lugar

El mejor autor de presentación general de proyectos recibirán un kit de hack de prototipos de hardware que incluye una impresora 3D, osciloscopio y acceso beta temprano a Prado; Plataforma de hardware de vNext desierto Labs que trae .net completo estándar a un microcontrolador.
También recibirá un paquete de cuidado secreto artesanal del desierto Labs Director Ejecutivo y cofundador, Bryan Costanich.

  • Presentacion honorable

Hasta diez otros envíos grandes, también recibirá un paquete de atención secreta y acceso temprano al Prado.

  • Acceso de la Beta Meadow

Meadow  es el sucesor a Netduino. Ejecuta aplicaciones .net estándar 2 completo en un microcontrolador a través de Mono. Es seguro desde el hardware hacia arriba y es manejable a través de la nube. Esperan ofrecer acceso beta privada al final de ganadores del verano.

 

  • ¿Listo para comenzar?

Crear una cuenta en wildernesslabs.co si no lo has hecho ya.

Registro para el concurso en esta página https://www.hackster.io/contests/netduino

Presentar su idea de proyecto el 1 de julio para tener la oportunidad de ganar un Netduino gratis para su proyecto.

Diseñar, construir y presentar su proyecto antes de 31 de julio.

 

 

Mas informacion en https://www.hackster.io/contests/netduino

 

 

 

¿Que es Moteino?


Moteino es una plataforma de desarrollo totalmente compatible con Arduino por lo que podremos utilizar una gran variedad de librerías disponibles . Es inalámbrica de baja potencia basada en el popular chip ATmega328p utilizado en el Arduino-UNO, lo que lo hace 100% compatible con el IDE de Arduino (entorno de programación).Es del tamaño de una tarjeta de memoria y permite establecer una conexión inalámbrica bidireccional de una forma muy fácil y sencilla.

Respecto al nombre no es mágico , lo cierto es que viene del funky correspondiendo a la suma  de Mote+ ino

Para la programación, se necesita un adaptador FTDI externo para cargar los sketchs, con las ventajas de un menor costo y un tamaño más pequeño.Como vamos a  ver la variante MoteinoUSB incluye el convertidor de serie USB.

Los Moteinos son compatibles y se pueden comunicar con cualquier otra plataforma Arduino o de desarrollo que utilice los populares transceptores HopeRF RFM69 o LoRa. Moteino también viene con un chip de memoria flash SPI opcional para programación inalámbrica o registro de datos.

 

El modelo principal, el Moteino R4, se basa en un microcontrolador ATmega328 junto con un transmisor RFM69 que emite en el rango de los 915Mhz.

 

Moteino fue diseñado para ser una plataforma de desarrollo compacta, altamente personalizable y asequible, adecuada para IoT, domótica y proyectos inalámbricos de largo alcance. Estas son algunas de las características que distinguen a Moteino:

  • Diseño modular pequeño y ligero que se adapta a recintos minúsculos
  • Las configuraciones flexibles permiten el uso de varios transceptores inalámbricos
  • Verdadera potencia ultrabaja : con solo ~ 2uA alcanzable en el modo de suspensión profunda, AVR Moteinos permite que los proyectos con batería, como los sensores inalámbricos de movimiento / entorno, funcionen durante años. El modo de suspensión de Watchdog está en ~ 6uA (activación periódica). El nuevo 8Mhz Moteino permite el modo de sueño 100nA más bajo posible. ¡El nuevo MoteinoM0 basado en SAMD21 Cortex M0 + duerme a solo ~ 8uA!
  • Las radios sub-Ghz y LoRa producen un rango mucho más largo que las bandas de 2.4Ghz
  • Programable de forma inalámbrica(OTA) : puede volver a flashearlo sin cables, cuando se implementa en ubicaciones difíciles (solo con radios RFM69)
  • Fácil de usar desde el familiar IDE Arduino, muchos ejemplos de código brindados para ayudarlo a comenzar
  • asequible: las antenas monopolo de cable de costo cero producen un excelente rango de RF para proyectos inalámbricos completos. Con los pads del conector u.FL / IPEX y SMA puede conectar cualquier otra antena externa con mayor ganancia
  • Visite el foro de proyectos de usuario para ver cómo las personas están usando Moteinos
  • Consulte la plataforma de automatización doméstica de LowPowerLab : proyecto Moteino IoT Gateway

 

Este es el Pinout:

 

 

 MoteinoUSB

Moteino-USB incluye el chip USB-serial FTDI. Técnicamente, un MoteinoUSB es la combinación de un adaptador FTDI y un Moteino regular. Se puede programar y alimentar a través del conector USB, pero también se puede ejecutar desde una batería (pin VIN ) igual de bien:

 

 

 

 

MoteinoMEGA

 

El MoteinoMEGA utiliza el microcontrolador Atmega1284p. Aún funciona a 3.3V / 16Mhz pero tiene 128KB de flash interno (frente a 32KB en Atmega328p), 16KB de RAM (vs 2KB), 4KB EEPROM (vs 1KB), 2x puertos serie de hardware, 8x patillas PWM y muchas más patillas GPIO. Todavía es un tablero pequeño de apenas 1.0 × 2.0 «y amigable para el tablero. Viene con el mismo cargador dearranque DualOptiboot, por lo que es capaz de programación inalámbrica «OTA», y puede tomar hasta 16V de entrada en los pines VIN (regulados por MCP1703).

Para cargar bocetos en MoteinoMEGA, primero deberá instalar el Moteino Core . Esto define el mapa de pines y otras definiciones de núcleo importantes que permiten programar el MEGA desde el IDE de Arduino. Una vez hecho esto, debe tener un nuevo objetivo de placa en Herramientas> Tarjetas llamadas MoteinoMEGA

Moteino MEGA, que es el hermano pequeño del clásico Arduino MEGA, ofreciendo muchos más pines para conectar otros dispositivos. Este sistema está pensado para aplicaciones de bajo consumo y también permite crear varias redes de sensores y nodos interconectados. Con el módulo transmisor RFM69 se puede llegar a cubrir distancias de hasta 300 metros en campo abierto.

Moteino con antena de rastreo (868-915Mhz)

También hay dos variantes especiales de Moteino con antenas de PCB integradas, disponibles para Moteino y MoteinoMEGA . Las antenas PCB están sintonizadas para las bandas 868-915mhz y tienen un rendimiento excelente dado su tamaño compacto. Además de la antena de PCB, son idénticos y funcionan igual que los Moteinos normales.

 

Transceivers

Los transceiver soportados por Moteino son los siguintes :

Aqui  podemos   sus  Datasheets

 

IMPORTANTE: Los módulos RFM69 no son LoRa y no son compatibles con los módulos RFM95/RFM96. Además los módulos RFM95/RFM96 necesitan de una librería de terceros.

 

Demostración en video  de soldadura de los  pines y de los cables de la antena:

 

 

 

.

Web Moteino: https://lowpowerlab.com/guide/moteino/

Adios Pebble !Bienvenido Rebble!


Como comentamos en este post anterior , Fitbit anunció que a finales de este mes de junio de 2018  dejará de dar soporte  técnico a los relojes inteligentes Pebble después de que el gigante de los cuantificadores comprara esta  startup en 2016 ,así que en teoría los Pebble dejarán de ser útiles a partir de esa fecha ,  tal y como muestra su pagina oficial justo lo indica en la cabecera del home.

pebble2.PNG

Pero ¿que podemos hacer los usuarios de un Pebble?, pues la alternativa se llama Rebble   , los cuales ya  han lanzado su propio sitio https://auth.rebble.io/,de hecho , el propio  fundador de Pebble ha recomendado, o más bien implorado a los usuarios de Pebble, que migren sus cuentas a Rebble.io.

 

 

No hay muchos detalles sobre el proyecto, pero lo primero que debemos hacer es migrar nuestros datos antes de que eliminen estos los de Fitbit, asi   que para evitar perder nuestros datos,  solo tenemos que seguir 4 sencillos pasos:

rebble

  • Paso 2:Como son dos sitios  bien diferentes , lo primero que tenemos que hacer es logarnos  creando una nueva cuenta en Rebble ofreciéndonos para ello  4 opciones: facebook, twitter, google + o github .Obviamente tenemos que tener cuanta en alguna de ellas  y tenemos que estar logados en la que elijamos  en otra ventana de un navegador o introducir y validar con sus credenciales de alguan de esas opciones
  • Paso 3:Entonces se le pedirá  vincular la nueva cuenta con la antigua de Pebble pues necesitan  utilizar esto para importar información desde los servidores de Pebble antes de que cierren con el fin de ayudar a hacer la transición más suave.Bien , una vez que hayamos elegido y validado o cualquiera de las cuatro alternativas  para entrar en Rebble , lo siguiente es introducir las credenciales  vigentes de nuestra cuenta de Pebble

pebblelogin.PNG

  • Paso 4.Si las credenciales son correctas, eso sera todo,  de modo que  durante las próximas semanas nos irán detallando los siguientes pasos a seguir para recuperar el control de nuestros relojes desde la nueva plataforma.

yoset.PNG

Si nos atenemos a lo que dicen en Rebble, el acceso a las funciones básicas de Pebble parece completamente asegurado y a Fitbit no le importa que se haya creado esta plataforma( incluso apoyando en cierta manera su transición ), lo cual también da cierta confianza en que la nueva plataforma no desaparecerá de la noche a la mañana a golpe de demanda.

 

El estado de los servicios Web Rebble

Los creadores de Rebble están trabajando a marcha forzada  para traer los servicios desde Pebble  a Rebble tan pronto como sea posible, tanto es asi que de hecho ya tienen algunos servicios de back-end, como auth, cohortes y arranque,  activo y trabajando  la appstore asi como los servicios relacionados. Sin embargo, Pebble es un sistema complicado, y necesitan más  tiempo del que esperaban, aun asi todavía esperan que  podran  tener  ya algunos servicios  levantados  y corriendo  para el corte e incluso  más actualizaciones antes del final del mes. Incluso después de cerrar servicios de Pebble , seguirán trabajando para traer los servicios restantes, llegando finalmente a la colección de la mayoría de sus servicios

No obstante muchas  funcionalidades del Pebble seguirán trabajando independientemente de  que el equipo de Rebble  logren migrar todos los servicios de Pebble . Por ejemplo la mayoría de las aplicaciones instaladas en el Pebble seguirán enviando  notificaciones todavía. Asimismo  Pebble salud seguirá siendo totalmente funcional. Otras aplicaciones de Pebble y watchfaces todavía funcionaran bien,  salvo los que crean en timeline pins.

Sobre la pregunta de qué tenemos que hacer para empezar a utilizar los servicios Web de Rebble  la intención del equipo de Rebble es que cuando este la ista deberia  ser muy fácil pues debería  bastar  tocar un enlace desde el sitio de Rebble en su teléfono y con ello  ya podriamos  migrar nuestros servicios alojados en Pebble a los nuevos servicios a Rebble.

Los Servicios de Web Rebble  funcionaran  con las apps  iOS existentes y aplicaciones para Android, por lo que no tendremos que descargar o instalar nada ,pero eso si recomiendan tener  nuestro Peble con el firmware actualizado  pues eso incluye algunas correcciones de errores y cambios hacia la miracion de Rebble específicos , pero que se instalarán automáticamente si fuese necesario.

Pebbling después de Fitbit: introducción de los servicios de Web Rebble

Los servicios originales de Pebble lo forman bastante  código donde algunas funciones  están enteramente entre el teléfono y el reloj, pero una buena parte de la experiencia de Pebble vive en la nube.

La app store, por ejemplo, funciona en servidores de Pebble pero algunos tipos de notificaciones de la línea de tiempo  pasan por servidores de Pebble como  por ejemplo  la información meteorológica que está incorporada en el reloj desde los servidores de Pebble no procediendo  desde su teléfono como fuente de tiempo, asi que con la migracion habra cambios.Vamos  a  ver  lo que va a cambiar  según los creadores de rebble y su  impacto:

Aplicaciones y firmware :

Los usuarios solo tendrán que cambiar manualmente a los nuevos servicios Web de Rebble. Continuaremos utilizando las mismas aplicaciones móviles  últimas de Pebble asi como el  firmware. Todos los servicios de Web Rebble trabajarán con estos; sólo deberá crear una cuenta de Rebble y pulsar un botón para cambiar.

Cuentas

Los usuarios tendrán que crear una nueva cuenta Rebble, pero gran parte de sus datos de su antigua cuenta de Pebble  se preservará.
Una vez Fitbit apague los servicios de Pebble   ya no podrá conectarse a estos pero van a reemplazar sus inicios de sesión de Pebble con el nuevo Rebble logins.

Como nadie quiere tener más cuentas en internet, los de Rebble apoyan la validacion a traves cuentas de  Google, Facebook, Twitter  o GitHub.

Los usuarios de KiezelPay: una vez que se cambian a utilizando una ceunta de Rebble , si no realizan una importación de su antigua cuenta Pebble, tienen  que volver a reclamar sus aplicaciones utilizando la dirección de correo electrónico que  originalmente  usaron para comprar la aplicación. Esto debe sólo es necesario una vez, después de lo cual sus aplicaciones deberían seguir trabajando como lo hicieron antes asi que sus usuarios no tendrian que comprarlos otra vez.

AppStore

Los usuarios automáticamente obtendrán la tienda Rebble como reemplazo de la de Pebble. Como el eqipo de Rebble mencionó en anteriores actualizaciones de la comunidad, ellos  trabajan en el reemplazo del Pebble Appstore casi tan pronto como Pebble anunció que iba a  cesar las operaciones. La tienda Rebble debería estar lista para cuando  apaguen la appstore original de Pebble, con toda la funcionalidad original. Incluso se  debería poder importar la lista de aplicaciones que haya instalado!

Línea de tiempo

La  mayoría de las aplicaciones seguirán en funcionamiento con  línea de tiempo, pero algunas aplicaciones necesitan actualizaciones de los desarrolladores. Incluso sin Rebble, todavía podría esperar  ver las entradas de calendario en la línea de tiempo.

Con Rebble, sera más complicado: puede esperar más, pero no todo:la línea de tiempo funciona como una web API, donde otros servidores empujan al timeline actualizaciones a los servidores de Pebble, que luego envían las actualizaciones de su reloj.

Es  voluntad del equipo de rebble reconstruir los servidores que pasan versiones de línea de tiempo a lo largo de su reloj. Automáticamente también alterarán aplicaciones que omitan el servidor y sólo empujen directamente a la línea de tiempo  para que llegan a los  servidores de Rebble  en lugar de lso de Pebble.

Lo que no puede hacer, sin embargo, es modificar servidores de los desarrolladores de aplicaciones para que nos  desplieguen  en los de Pebble. Los de rebble  proporcionarán nuevas terminales  antes de que llegue el momento y esperan conseguiractualizar.

Finalmente, las actualizaciones de la línea de tiempo serán más lentas Mientras que la línea de tiempo a veces es  capaz de actualizar inmediatamente después de que un servicio le envía un pin o una notificación, por razones técnicas es imposible para cualquier entidad que no sea de Fitbit  proporcionar ese servicio. Utilizar el servicio de línea de tiempo Rebble, permitirá  conseguir actualizaciones cada quince minutos.

Tiempo

Las funciones de tiempo incorporada debe ser de bajo coste, pero pagado .Pebble  utiliza el tiempo en un par de lugares: en la aplicación de tiempo oficial, y en los pines de salida y puesta del sol en la línea de tiempo.

Hoy en día, Pebble obtiene esta información de The Weather Channel. Reemplazará con la información de otro tiempo API. Por desgracia, estas API cuestan   dinero para acceder , por lo que solo se proporcionará acceso de tiempo como parte de un paquete basado en la donación (véase abajo). Si usted decide pagar por ella, le  permite la funcionalidad de tiempo completo y ayudara a apoyar el servicio para todos. Si no dona, no apareceran los pasadores de sistema del tiempo en  la aplicación y en la línea de tiempo  pero todos watchfaces de terceros seguirán mostrando el tiempo sin interrupción para mientras las API  empiezan a funcionar.

Dictado

El  dictado será de bajo coste, pero pagado, Por desgracia, dictado ya no funcionara al usar iPhones con iOS 11 + con 2 . Al parecer no hay nada que pueda  hacer el equipode Rebble para solucionarlo. Para los usuarios de Android, así como los usuarios de iOS con Pebble steel y otras versiones anterioeres ,lamentablemente, al igual que el tiempo, esto  va a costar algo de dinero cada vez que la use. Por lo tanto, para poder ejecutar esta forma sostenible,  también será una función de pagada. Si decide que no quiere usar la función de  dictado, todo lo demás seguirá trabajando, pero su Pebble mostrará un error al intentar hablar con él.

iOS SMS y correo electrónico de respuestas o acciones

Las respuestas  con acciones SMS y correo electrónico no funcionaran en iOS. Pebble tenía acuerdos con varias compañías y proveedores de servicios para proporcionar la capacidad de responder a los mensajes de texto en iOS. Pebble también proporcionaba acciones de correo electrónico de solicitar acceso a su cuenta de correo electrónico. Desafortunadamente, no hay manera que razonablemente puedan proporcionar este servicio: las implicaciones de privacidad y seguridad para contar con este acceso son mayore sque los de Rebble  estan dispuestos a tolerar. Como tal, no se proporcionan acciones por  SMS o correo electrónico  para iOS.

CloudPebble

CloudPebble deberia  poder transicionar a servicios de Web Rebble y tendrá la opción de importar sus viejos proyectos de CloudPebble  (si migra antes de cerrar los servidores del Pebble).
CloudPebble como  entorno de desarrollo, es el único entre estos servicios que el código fuente original está disponible . Se debe llevar la propia versión de CloudPebble pronto y trabajando con Fitbit pues ya permiten a los desarrolladoresa migrar de la versión antigua de pebble  a la  nueva versión. Los proyectos no exportados o emigrados despues de que Fitbit cierre servicios se perderán para siempre, así que es importante para los desarrolladores que utilizen CloudPebble actuar pronto. Los de rebble ejecutarán una versión inicial, limitada de los servicios de Rebble para estos desarrolladores. Seguirean trabajando con appstore existente de Pebbles, línea de tiempo, etc. pero apoyarán el Rebble CloudPebble, así como servicios Rebble para la conexión de programador de CloudPebble.

Financiación

Estos servicios va a costar  potencialmente mucho dinero. Más allá de simplemente sel coste básico de funcionamiento  de cualquier vieja clase del servicio web (los servicios de dictado y el tiempo) estos   dependen de cada carga por  petición.

El equipo de Rebble sabe  del dolor de tener los servicios en  nuestros amados relojes cerrados, por lo que les  gustaría construir una estructura para  que los servicios Web de Rebble sean sostenibles durante bastante tiempo ,y para ello sugieren    donar para mantener los servicios que funcionen.

Quieren que la experiencia básica de Rebble sea gratis para todos, pero si se dona  par aservicios mas avanzados esto   ayudara a sufragar el coste global de funcionamiento Rebble.Por ahora, el equipo de Rbble  tiene un par de opciones:

  • La primera opción, como ya he mencionado, es no pagar nada en absoluto: Si no lo hace, todavía tendrá acceso a su cuenta de Rebble, la app store, línea de tiempo y CloudPebble.
  • Por otra parte, mientras que los números exactos se conozcan, esperan que alrededor de dos dólares por mes no sólo ayudará mantener Rebble vivo para todo el mundo, también conseguirá todo lo que Rebble puede  proporcionar – tiempo, dictado y el resto de los  servicios Rebble.

Un instante de amor Fitbit

Cuando se  habla de dinero, es fácil enfadarse en el Fitbit. Puede sentirse como si fueran los responsables para que nuestros relojes no vuelvan a funcionar como hasat ahora cerrando los servidores.

En realidad, el equipo de Rebble están muy agradecidos por el  apoyo de Fitbit pues han estado manteniendo servidores incluso más tiempo del originalmente se habían anunciado, dando algún tiempo adicional necesario para llegar a una solución para usted.

No obstante si Fitbit no hubiese comprado Pebble, es probable que los servidores de Pebble habría cerrado sin previo aviso . Y, si todo lo que no fue suficiente, el equipo de Fitbit ha sido muy cooperativo en trabajar con Rebble para elaborar un plan de transición de su reloj a los nuevos servicios de Web de Rebble – algo no tenían ninguna obligación de hacerlo en todos,
Así que por todo ello, el equipo de Rebble esta agradecido por la manera de que Fitbit ha manejado esta transición – y esperan  que al comunidad de usuarios de Pabble  tras la transición también lo estará!

Firmware

Contribuyendo

¿Sabe lo simple que es construir el firmware y ejecutarlo en un emulador? Si es un desarrollador de Pebble con todas las herramientas estándar ya instaladas, compilar y ejecutar el firmware en un emulador es tan simple como:

Esto lanzará QEMU y verá algo como esto (que es el firmware actual de RebbleOS ejecutándose en su máquina):

RebbleOS QEMU

 

Contribuir a un sistema operativo puede parecer intimidante, ¡pero los desarrolladores de todos los niveles pueden hacer contribuciones significativas a RebbleOS! Si no es desarrollador, puedes ayudar probar e informando sobre problemas , creando recursos gráficos o ayudando con la documentación o el wiki .

Superficies reales y funcionales de trabajo y watchapps

Anteriormente, las líneas de visualización que veíamos estaban integradas en el firmware , todo tenían que compilarse con el sistema operativo. Han agregado soporte preliminar para leer el sistema de archivos Pebble, para que pueda ver las aplicaciones que PebbleOS instaló en el reloj; y, algunos de ellos incluso corren! Estan trabajando para agregar más funciones y más compatibilidad API todos los días.

Soporte inicial de chalk (Pebble Time Round)

RebbleOS fue diseñado para soportar múltiples tipos diferentes de relojes, y ahora se construye con chalk en el mismo árbol que nuestro querido snowy. Si está interesado en que RebbleOS trabaje con tintin , también nos gustaría tener su ayuda.

Rebble logo splash screen!

Rebble logo splash

Eche un vistazo a las relaciones públicas cerradas y comente el historial en GitHub para obtener más detalles …

Tenga en cuenta: este es el firmware alfa y, aunque todo esto puede parecer genial, ¡hasta el punto en que lo va a llevar puesto en la muñeca todos los días! (por ejemplo, ¡la batería no durará tanto hasta que analicemos seriamente la administración de energía!)

Un desafío fundamental al trabajar con Pebble ha sido la comunicación por Bluetooth, que es fundamental para una operación significativa, ya que la mayoría de las funciones de Pebble requieren que el dispositivo pueda hablar con su teléfono.

 

 

 

 

Ante todo, coo hemos visto   es muy importante que los usuarios de Pebble que quieran seguir disfrutando de ellos sus servicios se registren en la página web de Rebble antes del 30 de junio si quieren conservar sus datos.

 

Mas información en  http://rebble.io/2018/01/22/rebble-community-update-4.html

Migración urgente para Pebble


Pebble ha sido el proyecto mas exitoso  financiado por crowdfunding en Kickstarter,  quizás por la originalidad de su propuesta : ser el primer smartwatch  con contar con una pantalla de tinta electrónica (e-ink) lo cual se traduce en una gran duración de la batería comparada con sus homólogos  basadas en pantallas TFT, lo cual  ha quedado demostrado ser una de  las mejores opciones para un reloj inteligente a pesar de sus limitaciones en cuanto a resolución.

Respecto a todo lo demás,como cualquier smartwatch se conecta a un smartphone Android o Ios  a través de Bluetooth para proporcionar notificaciones personalizadas y aplicaciones descargables pudiéndose  personaliza  con watchfaces y aplicaciones para adaptarlo al estilo e intereses personales.

Una  de las posibilidades que ofrece todavía  es controlar sus aplicaciones musicales favoritos, incluyendo iTunes, Spotify y Pandora de su Pebble mientras realiza deporte y por supuesto , como cualquier  reloj inteligente saber quien nos llama colgando o descolgando desde el propio Pebble. Respcto a las notificaciones,se  puede obtener actualizaciones discretos sobre la información que es más importante. Además de identificador de llamadas, correo electrónico, mensaje de texto y alertas de calendario,se puede elegir recibir notificaciones de Facebook, Twitter, Instagram y mil cosas mas,   todo ello  con un precio muy contenido  pues cuesta aun en Amazon aun menos de 50€.

Pero tras el gran éxito  comercial durante años  dominando el mercado de los smartwatches  ( incluso  innovando incluyendo pantallas  e-ink en color) , finalmente Fitbit,  el gigante de los cuantificadores  a finales de 2016  compró Pebble,

 

Recientemente Fitbit anunció que a finales de este mes de junio de 2018  dejará de dar soporte  técnico a los relojes Pebble después de que el gigante de los cuantificadores comprara esta  startup ,así que en teoría los Pebble dejarán de ser útiles a partir de esa fecha  tal y como muestra su pagina oficial justo en la cabecera del home.

pebble2.PNG

 

Pero ¿que podemos hacer los usuarios de un Pebble?, pues la alternativa se llama Rebble   , los cuales ya  han lanzado su propio sitio https://auth.rebble.io/

De hecho , el propio  fundador de Pebble ha recomendado, o más bien implorado a los usuarios de Pebble, que migren sus cuentas a Rebble.io,

Rebble es pues  el proyecto de un grupo de desarrolladores independientes que  se supone  continuarán dando soporte a la plataforma Pebble  mediante un cambio en el firmware de los relojes inteligentes  y gracias a  su nueva  propia plataforma de actualizaciones con tienda de aplicaciones e incluso  soporte técnico  reemplazando todas las funciones actuales de los Pebble.

La aspiración es que la plataforma sea gratuita  pues  de momento Rebble se financia mediante Patreon, pero es posible que en el futuro decidan cobrar una pequeña cantidad por algunos de sus servicios.

No hay muchos detalles sobre el proyecto, pero lo primero que debemos hacer es migrar nuestros datos antes de que eliminen estos los de Fitbit, asi   para hacer esto es vital que sigamos los siguientes  pasos:

Paso1 

El sistema de cuenta Rebble está funcionando asi que ahora es el momento para que podemos crear nuestra nuevas cuentas en Rebble , por lo que debemos dírigirnos a Rebble Auth e iniciar sesión utilizando su nuevo sitio https://auth.rebble.io/

 

rebble

 

Paso 2

Como son dos sitios  bien diferentes , lo primero que tenemos que hacer es logarnos  creando una nueva cuenta en Rebble ofreciéndonos para ello  4 opciones: facebook, twitter, google + o github .

Obviamente tenemos que tener cuanta en alguna de ellas  y tenemos que estar logados en la que elijamos  en otra ventana de un navegador o introducir y validar con sus credenciales de alguan de esas opciones

Paso 3

Entonces se le pedirá  vincular la nueva cuenta con la antigua de Pebble pues necesitan  utilizar esto para importar información desde los servidores de Pebble antes de que cierren con el fin de ayudar a hacer la transición más suave.

Es especialmente importante para los desarrolladores enlazar sus cuentas de Pebble ahora. Una vez que los servicios de Pebble se cierre a finales de este mes, ya no seran capaces de identificar a los desarrolladores que no hayan  vinculado sus cuentas, y así no podran permitirles actualizar o modificar de cualquier manera sus aplicaciones.
También nos comentan  que van a utilizar el número de cuentas creadas para ayudarles a determinar la utilización de los servicios y tratar de validar sus s suposiciones sobre el número de usuarios que esperan  ve en la nueva plataforma.

Bien , una vez que hayamos elegido y validado o cualquiera de las cuatro alternativas  para entrar en Rebble , lo siguiente es introducir las credenciales  vigentes de nuestra cuenta de Pebble

pebblelogin.PNG

Paso 4

Si las credenciales son correctas, eso sera todo,  de modo que  durante las próximas semanas nos irán detallando los siguientes pasos a seguir para recuperar el control de nuestros relojes desde la nueva plataforma.

yoset.PNG

 

Eso es todo hay que hacer ahora mismo: no hay ninguna app para instalar, y de hecho reconocen sus creadores  no están aun listos para que los usuarios cambien a los servicios de Rebble  pero prometen hacerlo cuanto antes

De momento registrarse no cuesta nada y es la única manera de conservar sus datos y seguir usando el reloj. Si nos atenemos a lo que dicen en Rebble, el acceso a las funciones básicas de Pebble parece completamente asegurado y a Fitbit no le importa que se haya creado esta plataforma, lo cual también da cierta confianza en que la plataforma no desaparecerá de la noche a la mañana a golpe de demanda.

Como vemos es muy importante que los usuarios de estos relojes que quieran seguir disfrutando de ellos se registren en la página web de Rebble antes del 30 de junio si quieren conservar sus datos.

 

 

 

 

Como enviar correos con adjuntos desde Linux desde linea de comandos


Es frecuente   en el manejo de maquinas Linux  usar muchos scripts en bash o c-shell para automatizar tareas  de una forma sencilla, dado  que al contrario de lo que muchas personas piensan,   shell script (o c-shell)  son  bastantes potentes  a la hora de manipular información .

Ante la cuestión de cómo enviar un correo electrónico desde linea de comandos  o desde un script , incluso  con archivos adjuntos desde una máquina Linux ,    lo primero   que pensamos es usar  la utilidad  mailx la cual mejora en muchos aspectos a la utilidad mail de viejos sistemas

La sintaxis básica para enviar correos electrónicos desde una máquina Linux mediante el comando mailx se muestra a continuación:

mailx -vvv -s   $asunto -r   $from  -S   $smtp     $destino

Como vemos , podemos   observar  varios parámetros en la  línea  anterior;

  • -vvv = Verbosity.
  • -s = especifica el asunto (subject).
  • -r = especificar el origen del Email.
  • -S = especifica el  smtp server.

Y lo ideal es usar variables:

  • $asunto: almacenamos el asunto ( subject ) del correo
  • $from : almacenamos el usuario que envía el correo
  • $smtp : almacenamos el servidor de correo
  • $destino : almacenamos  la dirección de correo destinatario  ( pueden poner sucesivas separando con espacios estas)

El comando anterior se puede complementar añadiendo   un cuerpo al contenido del correo  gracias al comando echo redirigiendo con el pipe (|)  hacia mailx

 echo  $cuerpo  | mailx -vvv -s   $asunto -r   $from  -S   $smtp     $destino

Dónde  $cuerpo  es  una variable que almacena el cuerpo del  email

person using macbook pro on brown wooden desk
Photo by rawpixel.com on Pexels.com

Es importante destacar que podemos obviar el servidor  stmp server si está configurado en la máquina así  como el origen del correo obvio , quedando su uso habitual tal como sigue:

 echo  $cuerpo  | mailx  -s   $asunto  -S     $destino1  $destino2  $destino3

Como se aprecia,   se  añade   un cuerpo al contenido del correo  gracias al comando echo redirigiendo con el pipe (|)  hacia mailx y se usan varias variables:

  • $cuerpo  es  una variable que almacena el cuerpo del  email
  • $asunto: almacenamos el asunto ( subject ) del correo
  • $smtp : almacenamos el servidor de correo
  • $destino1 : almacenamos  la dirección de correo destinatario
  • $destino2 : almacenamos  la dirección de correo destinatario
  • $destino3 : almacenamos  la dirección de correo destinatario

Anexando  adjuntos

Si   la versión de mailx que esta usando está por encima  de 12.x,e puede usar el nuevo interruptor adjunto (-a) en mailx para enviar archivos adjuntos con el correo ,  lo cual es una opción más simple  que el comando uuencode.

Como ejemplo mandar un fichero  a un destinatario, es muy sencillo usando el siguiente comando:

mailx -a $file  -s  $asunto  $destino1

En l comando anterior  se usan estas variables :

  • $asunto: almacenamos el asunto ( subject ) del correo
  • $destino1 : almacenamos  la dirección de correo destinatario
  • $file: ruta directa cal fichero a  anexar

El comando anterior imprimirá una nueva línea en blanco en el cuerpo del mensaje  aunque puede escribir el cuerpo del mensaje  presionar [ctrl] + [d] para enviar, lo cual  adjuntará el archivo al correo electrónico saliente correctamente con el Content-Type y encabezados  apropiados.

Para hacer esto más «scriptable», puede enviar el mensaje sin un cuerpo con el siguiente comando:

mailx -a $file  -s  $asunto  $destino1< /dev/null

Para enviar correos con un cuerpo de mensaje, reemplace / dev / null en el comando anterior con su archivo de cuerpo de mensaje.

mailx -a $file  -s  $asunto  $destino1<   $cuerpo

Donde $cuerpo  es  una variable que almacena el cuerpo del  email

En esta  versión de mailx, los encabezados que se usan en el correo electrónico saliente cambian de:

From:
Date:
To:
Subject:

A la forma siguiente:

From:
Date:
To:
Subject:
User-Agent:
MIME-Version:
Content-Type:
Content-Transfer-Encoding:

Si la versión de mailx está por debajo de 12.x, puede usarse el comando uuencode para enviar correos con archivos adjuntos.

El comando uuencode  se utiliza para codificar un archivo binario.De forma predeterminada, uuencode tiene entrada desde la entrada estándar y escribe en la salida estándar como se muestra a continuación ( esa es la razón por la que se repite el nombre del fichero) utilizando  por defecto el formato de codificación estándar de UU.

 uuencode  $fichero $fichero | mailx -s $asunto  $destino

Usando el formato anterior ,como se aprecia, se  añade   un cuerpo al contenido del correo  gracias al comando echo redirigiendo con el pipe (|)  hacia mailx  , de forma similar a añadir un cuerpo al  correo ,  pero esta vez estamos anexamos un fichero previamente codificado con uuencode

Las variables usadas:

  • $asunto: almacenamos el asunto ( subject ) del correo
  • $destino : almacenamos  la dirección de correo destinatario
  • $fichero : almacenamos  la ruta completa del fichero a adjuntar
  •  $fichero : almacenamos  la misma  ruta completa del fichero a adjuntar ( en efecto se repite y no es un error)

Por cierto, en caso de necesitar adjuntar varios ficheros, puede usar esta receta:

uuencode $fichero1 $fichero1  >/tmp/out.mail

uuencode $fichero2 $fichero2  >/tmp/out.mail

cat email-body.txt >>/tmp/out.mail

Y ahora ya si podemos  enviar el correo:

mailx -s $asunto  $destino </tmp/out.mail

high angle view of paper against white background
Photo by Pixabay on Pexels.com

Correos con anexos y cuerpo

La sintaxis  para enviar correos electrónicos desde una máquina Linux mediante el comando mailx  puede tener problemas a la hora de incluir  además de anexo un cuerpo  en el mensaje, por lo que podemos usar en su lugar el comando mutt usando la siguiente sintaxis:

echo $body | mutt -s $asunto -a $fichero  $destino1  $destino2 $destino3

Como vemos , podemos   observar  varios parámetros en la  línea  anterior;

  • -s = especifica el asunto (subject).
  • -a = especifica el nombre del fichero con la ruta completa

Y como en  los ejemplos anteriores , lo ideal es usar variables:

  • $asunto: almacenamos el asunto ( subject ) del correo
  • $destino1 : almacenamos  la dirección de correo destinatario
  • $destino2 : almacenamos  la dirección de correo destinatario
  • $destino3 : almacenamos  la dirección de correo destinatario
  • $body : almacenamos el cuerpo del correo

Monitor de pulso online usando NodeMCU y Cayenne


El fondo de este proyecto es la  monitorización cardíaca mediante un sensor de pulso del cuerpo humano mostrando en una  pantalla OLED  la forma de onda   y   enviando una alerta al  correo electrónico cuando el pulso del corazón supere la condición normal (en este caso 200).

La esencia de estos detectores  es un sensor integrado de circuito de amplificación óptica y con un circuito de eliminación de ruido de la frecuencia cardíaca  todo ello alimentado  con una tensión de alimentación: 3.3V ~ 5 V

Lo ideal  para medir el pulso  es  poner  el sensor de pulso en el dedo o lóbulo de la oreja, directamente  o bien  mediante algún sistema mecánico que lo deje fijo como por ejemplo   alguno de los sistemas que mostramos a continuación:

 

soportes sensores.PNG

 

Estos sensores cuentan con una salida analógica   que se puede conectar  a una entrada analógica de un  Arduino, para probar la frecuencia cardíaca y de ahi que se pueda usar este sensor con un NodeMcu  junto con un pequeña pantalla OLED  para mostrar la fecuencia cardiaca en tiempo real

 

Los elementoshw y sw  necesarias para hacer este proyecto son las siguientes.

Hardware necesario:

1. NodeMCU ESP-12E

2. Sensor de pulso

3. SSD1306 0,96 pulgadas pantalla OLED

4. Cablezillos  de puente

Software necesario:

1. Arduino IDE

2. Cayenne para iOS/Android/Web Browser

3. Sensor de pulso modificado para ESP

4. biblioteca de Adafruit SSD1306 para Arduino    P

El sensor de pulso

El sensor de pulso cardiaco es esencialmente un fotopletismógrafo, que es un dispositivo médico conocido que se usa para controlar la frecuencia cardíaca de forma no invasiva. Asimismo  los fotopletismógrafos miden los niveles de oxígeno en la sangre (SpO2) pero no siempre lo soportan.

La señal de pulso cardíaco que sale de un fotopletismograma es una fluctuación analógica de voltaje, y tiene una forma de onda predecible, tal como estamos acostumbrados a ver ( la representación de la onda de pulso se denomina fotopletismograma o PPG).

El Sensor de pulso  amplifica la señal bruta del Sensor de pulso anterior y normaliza la onda de pulso alrededor de V / 2 (punto medio en voltaje) respondiendo a los cambios relativos en la intensidad de la luz

Tal y como esta construido ,veremos que  la luz  interna del LED verde del sensor  se refleja de nuevo en el sensor cambiando durante cada impulso, ocurriendo las siguintes casuiticas:.

  • Si la cantidad de luz incidente en el sensor permanece constante, el valor de la señal permanecerá en (o cerca de) 512 (punto medio del rango de ADC).
  •  Más luz y la señal aumentará.
  • Menos luz, todo lo contrario: el valor de la señal analógica dismuniira

El objetivo es encontrar momentos sucesivos de latido instantáneo del corazón y medir el tiempo transcurrido entre ellos, llamado intervalo Inter Beat (IBI)  pues al seguir la forma y el patrón predecibles de la onda PPG, podemos hacer exactamente eso.

Cuando el corazón bombea sangre por el cuerpo, con cada latido hay una onda de pulso (una especie de onda de choque) que viaja a lo largo de todas las arterias hasta las mismas extremidades del tejido capilar donde está conectado el sensor de pulso. La sangre real circula en el cuerpo mucho más lentamente de lo que viaja la onda de pulso.

 

Figura 1

 

Sigamos los eventos a medida que progresan desde el punto ‘T’ en el PPG a continuación. Se produce un aumento rápido en el valor de la señal a medida que la onda de pulso pasa por debajo del sensor, luego la señal vuelve a descender hacia el punto normal. A veces, la muesca dicroica (pico descendente) es más pronunciada que otras, pero, en general, la señal se establece en el ruido de fondo antes de que la siguiente onda de pulso se filtre. 

Como la onda se repite y es predecible, podríamos elegir casi cualquier característica reconocible como punto de referencia, por ejemplo, el pico, y medir la frecuencia cardíaca haciendo cálculos matemáticos sobre el tiempo entre cada pico,pero sin embargo, esto puede dar lugar a lecturas falsas desde la muesca dicroica, si está presente, y puede también ser susceptible a la imprecisión con respecto al ruido de línea base.

Existen otras buenas razones para no basar el algoritmo de detección de latidos en fenómenos de onda arbitrarios. Idealmente, queremos encontrar el momento instantáneo del latido del corazón. Esto es importante para el cálculo preciso de BPM, la variabilidad del ritmo cardíaco ( y mida la frecuencia cardíaca haciendo cálculos en el tiempo entre cada pico.

Sin embargo, esto puede dar lugar a lecturas falsas desde la muesca dicroica, si está presente, y puede también ser susceptible a la imprecisión con respecto al ruido de línea base.

.

 

Algunos investigadores del corazón dicen que es cuando la señal alcanza el 25% de la amplitud, algunos dicen que es el 50% de la amplitud, y algunos dicen que es el momento en que la pendiente es más pronunciada durante el evento ascendente.

 

 

El sensor de pulsos cardíacos  se conecta a la alimentación de +5V  entre el hilo rojo(+5v)   y el naranja (GND)   y del  hilo marrón obtenemos la salida analógica que conectaremos a la primera entrada analogica (A0) de cualquier placa que  soporte entradas analogicas como pueden ser Arduino o Netduino

Si usa un  ESP8266 ( no NodeMCU) no trate de conectarse directa señal de sensor A0. Debe agregar 2.2 KOhm entre señal y A0 y 10KOhm entre A0 a GND.  

arduino.PNG

Para complementar el circuito se conecta un pequeña pantalla OLED  de  2,4cm (128×64)  que ira a los pines digitales  D2 (salida SDA de la pantalla ) y  el pin D1(salida SCL de la pantalla)   ,asi como obviamente la alimentación Vcc( pin 5v) y Gnd

 

 

Software

Se necesita importar biblioteca de paso dos para hacer que funcione este código.

Asimismo debemos abrir ESP_OLED, modificar su contraseña de token, SSID, y el apikey de Cayenne y luego conecte su NodeMCU con el Cable USB al ordenador y suba el código a NodeMCU.

Ahora su OLED debe mostrar algo, esta es la señal si su proyecto trabajado. Y ahora su NodeMCU está conectado al Cayenne, pero pequeño paso otra vez para configurar panel de Cayena que mostrará su BPM y dar un alerta if BPM a alta.

 Configuración de Cayenne

Suponiendo qeu ya tenga  cuenta en Cayenne (es gratuita) ,siga estos pasos

  • Acceda al tablero de Cayena
  • Añadir widget personalizado gráfico de salpicadero de cayena y seleccione Virtual 13 Pin que contienen el valor de BPM de NodeMCU.
  • Agregar desencadenadores y si widget valor por encima del valor que necesites (por ejemplo puese ser 00, pero s160 es suficiente para darnos la alerta) y Cayena enviará alerta al correo electrónico.

Picture of Setting Up Cayenne

 

 

En el siguinte  video podemos ver el funcionamiento del circuito:

 

 

Fuente  aqui

Estación meteorológica conectada


Hay algunas otras estaciones meteorológicas basadas en NodeMcu o ESP8266 publicadas en la web, pero sin embargo,casi ninguna incluyen algunos sensores  de los que vamos a ver , y sobre todo,   se programan en un lenguaje más difícil: LUA.
En este proyecto de Ingenerare, los datos recuperados  por varios sensores , se envían a través de  wifi a la plataforma  Thingspeak, para posteriormente poder  visualizar su valores en el canal de Thingspeak o en un sitio web personal.

Este canal transmitirá los siguientes datos a un canal Thingspeak:

  • Temperatura  gracias a  un DHT11 / 22.
  • Temperatura por medio de un BMP180.
  • La humedad  gracias a un DHT11 / 22.
  • La presión atmosférica   por medio de un BMP180.
  • Temperatura del punto de rocío DHT11 / 22.
  • Altitud por medio de un BMP180.
  • La intensidad de la luz gracias  a un LDR.
  • El valor lluvia.

Los componentes  usados en este  proyecto son los siguientes:

caja.PNG

El corazón del sistema es una  placa  NodeMcu , la cual de hecho, es un Arduino  conmenos puertos analogicos  pero con un escudo wifi el cualpuede reconocerse por la placa de metal en la parte superior de la misma.  Este escudo puede ser comprado y utilizado como una controladora individual para su uso con un  Arduino para darle conectividad (de hecho incluso existe una versión conocida como la V1 esp8266 que sólo tiene 2 pines digitales,pero en versiones posteriores disponemos de mas pines digitales).

La gran ventaja de la placa  NodeMcu es que la placa  se puede programar en el entorno Arduino (el IDE  normal de Arduino). Además, la placa  incluye un convertidor de 5 voltios y así se puede conectar de forma segura mediante USB al ordenador sin tener que comprar un módulo conversor Dv-DC  de 3,3 voltios.

Si usted necesita  comprar una placa  NodeMcu se puede comprar la versión 0.9 o la versión 1.0: la única diferencia que sé es que la versión 0.9 es más ancha que la versión 1.0. ( de hecho no puede utilizar la versión 0.9 en una placa de prototipos standard  ).

Hay  gran cantidad de tutoriales en Internet donde explican como  programar esta placa  junta con el software de LUA, pero al ser  básicamente un Arduino con un escudo  wifi, también se puede usar el software Arduino IDE siguiendo estos pasos:

  • Ir   a «Archivo»
  • Haga clic en «Oreferencias»
  • Agregue el siguiente enlace en el campo «URL de la placa adicional ‘:http: //arduino.esp8266.com/stable/package_esp8266c 
  • Después de esto puede reiniciar el software y debe ser capaz de seleccionar la junta en el gestor de tabla (V1.0 o v0.9).

ThingSpeak

En esta ocasión se va a enviar   nuestros medidas a la veterana  plataforma Thingspeak  que ofrece varias opciones para la interacción con sus datos como Thingtweet, Thinghttp etc.

Lo primero que tenemos que hacer es crearnos una cuenta en thingspeak , para ello  simplemente vaya a thingspeak.com y cree  una cuenta ,donde  solo será necesario rellenar en al menos la primera y segunda en la configuración de campo.

Si se conecta un sensor de temperatura y humedad, como se describe mas adelante, rellenar «temperatura» en el campo 1, ‘humedad’ en el campo 2 y el «punto de rocío» en el campo 3. Si desea conectar otros sensores tales como el sensor de BMP, sensor de lluvia, LDR, sólo tiene que hacer lo mismo para el resto de los campos.

En este formulario puede encontrar  una clave API key  que habrá que mencionar en su código para  Arduino bajo la ‘clave de API’  , pues esta clave es necesaria para conectar el Arduino al canal Thingspeak recién creado.

thingspeak.PNG

Sensor DHTXX

DHT11 y  DHT22 son dos modelos de una misma familia de sensores, que permiten realizar la medición simultánea de temperatura y humedad usando ademas un único  hilo para comunicar los datos vía serie, para lo cual  ambos  disponen de un procesador interno que realiza el proceso de medición, proporcionando la medición mediante una señal digital, por lo que resulta muy sencillo obtener la medición desde un microprocesador como Arduino o ESP8266.

Ambos son similares ( DHT11 presenta una carcasa azul  , mientras que el sensor DHT22  es blanco)  compartiendo además los mismos pines  disponiendo de  4 patillas, de las cuales usaremos sólo 3: Vcc, Output y GND.  Como peculiaridad ,la  salida la conectaremos a una entrada digital  , pero necesitaremos poner una resistencia de 10K entre Vcc y el Pin Output.

El  DHT11  puede medir temperaturas entre 0 a 50, con una precisión de 2ºC, humedad entre 20 a 80%, con precisión del 5% y con una a frecuencia de muestreo de 1 muestras por segundo (1 Hz)

En clara superioridad  con el dHT11 , el modelo DHT22 tiene unas características mucho más profesionales.
  • Medición de temperatura entre -40 a 125, con una precisión de 0.5ºC
  • Medición de humedad entre 0 a 100%, con precisión del 2-5%.
  • Frecuencia de muestreo de 2 muestras por segundo (2 Hz)

Destacar que este tipo de  sensores de temperatura  ( y, aún más, los sensores de humedad) , son sensores con elevada inercia y tiempos de respuesta elevados. Es decir, al “lentos” para reflejar los cambios en la medición.

Conectar el DHT11   o el DHT22  a  un Arduino o ESP82366  es sencillo, simplemente alimentamos desde Arduino al sensor a través de los pines GND y Vcc del mismo. Por otro lado, conectamos la salida Output a una entrada digital de Arduino como por ejemplo el pin D4   (No necesitaremos poner una resistencia de 10K entre Vcc y el Pin Output al llevarla ya  integrada la placa ).

El sensor de BMP

El sensor de BMP180  mide la de la temperatura y la presión del aire. Sí, ya tenemos un sensor de temperatura añadido en el paso anterior, pero no un sensor de presión de aire. Conectar la clavija de alimentación a la línea de 3,2 voltios de la NodeMCU y el conector de tierra en el pin GND de la NodeMCU. El SCL tiene que estar conectado a D1 y la SDA a D2.

Sensor de lluvia y sensor de luz

El sensor utiliza materiales de doble cara FR-04 de alta calidad, donde el área extensa es de 5.0 * 4.0CM, y la superficie niquelada, eficaz contra la oxidación, la conductividad, el funcionamiento superior y las áreas de la vida.

El sensor de lluvia no requiere ninguna  otra placa cuando queremos leer el valor analógico.Si queremos leer valores  binarios  en cambio podemos utilizar la placa adicional  que ofrece  una  conexión a los pines digitales . Gracias a un potenciómetro   que contiene  esta placa , se puede establecer el valor  de umbral con que se dispara pues el  formato de salida  puede ser  de conmutación digital (0 y 1) gracias a  un comparador de amplio voltaje LM393 (y salida de tensión analógica AO).

También en este proyecto se ha añadido un LDR , por lo que podemos  tener dos lecturas analógicas. Esta es una parte difícil pues el NodeMCU sólo tiene un pin analógico , pero podemos resolver este problema mediante la multiplexación de los pines analógicos de modo que con la ayuda de dos diodos y dos pines GPIO , podemos suministrar energía a ambos sensores en secuencia para tomar la lectura de ambos ( eso sí tendrá que controlar esta secuencia desde el  propio programa)

canlaes.PNG

Como se puede ver el sensor de lluvia está activada por el pin D7  (GPIO13)  yel LDR es alimentado por el   pin D8  (GPIO15).

Este es el trozo de código que permite la lectura de ambas señales analógicas:

int sensorPin = A0; // selecciona  el pi, t the input pin for the potentiometer
int enable1 = 10; // activar lectura  sensor A
int enable2 = 11; // acvtivar lectura sensor B

int sensorValue1 = 0; // variable to store the value coming from sensor A
int sensorValue2 = 0; // variable to store the value coming from sensor B

void setup() {
Serial.begin(9600);
// declare the enable and ledPin as an OUTPUT:
pinMode(enable1, OUTPUT);
pinMode(enable2, OUTPUT);
}

void loop() {
// read the value from sensor A:
digitalWrite(enable1, HIGH);
sensorValue1 = analogRead(sensorPin);
Serial.println(sensorValue1);
digitalWrite(enable1, LOW);

delay(100);

// read the value from sensor A:
digitalWrite(enable2, HIGH);
sensorValue2 = analogRead(sensorPin);
Serial.println(sensorValue2);
digitalWrite(enable2, LOW);
Serial.println(«—————————————-«);
delay(1000);
}

Las conexión  de todos los sensores  queda pues como en la figura siguiente:

esquema

Finalmente una vez montado el circuito  solo nos queda  programar el ESP por ejemplo usando el código de más abajo.

No debemos olvidar  de cambiar el apikey con el de su cuenta de thingspeak, pues si no se hace NO  se podrán enviar datos a su canal

Es asimismo importante añadir el nombre SSID  de su red Wi-FI (esto es simplemente el nombre que aparece cuando se hace clic en la esquina derecha de Bottum a filtrar) así como añadir la contraseña de esta red wifi.

Si ha cargado el boceto se puede comprobar en el monitor serie cómo funciona. Basta con abrir el monitor pulsando CNTR + M.

*
This sketch is a combination of two other sketches:
1.
Plot DTH11 data on thingspeak.com using an ESP8266
April 11 2015
Author: Jeroen Beemster
Website: http://www.arduinesp.com
2.
Example sketch: adafruit BMP 085
Sensor api BMP180
*/
//library DHT22
#include

//library esp
#include

//library bmp180
#include
#include
#include

// replace with your channel’s thingspeak API key,
String apiKey = «»; //fill in the api key from thingspeak
const char* ssid = «»; //fill in your wifi name
const char* password = «»; //fill in your wifi password

const char* server = «api.thingspeak.com»;
#define DHTPIN 2 // what pin we’re connected to

DHT dht(DHTPIN, DHT22,15);
WiFiClient client;

int sensorPin = A0; // input for LDR and rain sensor
int enable1 = 15; // enable reading LDR
int enable2 = 13; // enable reading Rain sensor
int sensorValue1 = 0; // variable to store the value coming from sensor LDR
int sensorValue2 = 0; // variable to store the value coming from sensor Rain sensor
//————————–setup————————-
void setup() {

// declare the enable and ledPin as an OUTPUT:
pinMode(enable1, OUTPUT);
pinMode(enable2, OUTPUT);
Serial.begin(115200);
delay(10);

dht.begin();

WiFi.begin(ssid, password);

Serial.println();
Serial.println();
Serial.print(«Connecting to «);
Serial.println(ssid);
Serial.print(«……….»);
Serial.println();
WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(500);

}
Serial.println(«WiFi connected»);
Serial.println();

}
void loop() {
//————————–DHT22/DHT11————————-

float h = dht.readHumidity();
float t = dht.readTemperature();

if (isnan(h) || isnan(t)) {
Serial.println(«Failed to read from DHT sensor!»);
return;
}
Serial.print(«Temperature: «);
Serial.print(t);
Serial.print(» degrees Celcius «);
Serial.println();

Serial.print(«Humidity: «);
Serial.print(h);
Serial.print(«%»);
Serial.println();

//— extra—- you can measure dew point with the temperature and the humidity

double gamma = log(h/100) + ((17.62t) / (243.5+t));
double dp = 243.5
gamma / (17.62-gamma);

Serial.print(«Dew point: «);
Serial.print(dp);
Serial.print(» degrees Celcius «);
Serial.println();

//————————–BMP180————————

if(!bmp.begin()) {
Serial.print(«Failed to read from BMP sensor!!»);
while(1);
}

sensors_event_t event;
bmp.getEvent(&event);

Serial.print(«Pressure: «);
Serial.print(event.pressure);
Serial.println(» hPa»);

float temperature;
bmp.getTemperature(&temperature);
Serial.print(«Temperature: «);
Serial.print(temperature);
Serial.println(» degrees Celcius «);

//— extra—-you can measure the altitude with the temperature and the air pressure

float seaLevelPressure = 1015;
Serial.print(«Altitude: «);
Serial.print(bmp.pressureToAltitude(seaLevelPressure,event.pressure));
Serial.println(» m»);

//————————–LDR————————-

digitalWrite(enable1, HIGH);
sensorValue1 = analogRead(sensorPin);
sensorValue1 = constrain(sensorValue1, 300, 850);
sensorValue1 = map(sensorValue1, 300, 850, 0, 1023);
Serial.print(«Light intensity: «);
Serial.println(sensorValue1);
digitalWrite(enable1, LOW);
delay(100);

//————————–Rain Sensor————————-

digitalWrite(enable2, HIGH);

delay(500);
sensorValue2 = analogRead(sensorPin);
sensorValue2 = constrain(sensorValue2, 150, 440);
sensorValue2 = map(sensorValue2, 150, 440, 1023, 0);

Serial.print(«Rain value: «);
Serial.println(sensorValue2);
Serial.println();
delay(100);

digitalWrite(enable2, LOW);

//————————–thingspeak————————-

if (client.connect(server,80)) { // «184.106.153.149» or api.thingspeak.com
String postStr = apiKey;
postStr +=»&field1=»;
postStr += String(t);
postStr +=»&field2=»;
postStr += String(h);
postStr +=»&field3=»;
postStr += String(dp);
postStr +=»&field4=»;
postStr += String(event.pressure);
postStr +=»&field5=»;
postStr += String(temperature);
postStr +=»&field6=»;
postStr += String(sensorValue1);
postStr +=»&field7=»;
postStr += String(sensorValue2);
postStr +=»&field8=»;
postStr += String(bmp.pressureToAltitude(seaLevelPressure,event.pressure));
postStr += «\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n»;

client.print(«POST /update HTTP/1.1\n»);
client.print(«Host: api.thingspeak.com\n»);
client.print(«Connection: close\n»);
client.print(«X-THINGSPEAKAPIKEY: «+apiKey+»\n»);
client.print(«Content-Type: application/x-www-form-urlencoded\n»);
client.print(«Content-Length: «);
client.print(postStr.length());
client.print(«\n\n\n\n\n\n\n\n»);
client.print(postStr);

}
client.stop();
// thingspeak needs minimum 15 sec delay between updates
delay(20000);
}

Weather_station_for_instructables.inoWeather_station_for_instructables.ino

Todo el conjunto se puede meter en un pequeña caja .  El sensor de DHT y el sensor de BMP pueden posicionarse en el lado de la caja cubriendo los dos sensores con un poco de múltiplex para que la lluvia no pudo influir en las lecturas
Asimimos Thingspeak tiene un montón de opciones de plugin. Uno de ellos es que es posible hacer que los medidores  los publique en su página web de thingspeak   en la pestaña ‘vista privada’ de Thingspeak. Se pueden  vincular los medidores de su sitio web privado  mediante el uso de un iframe que tiene que estar conectado a Thingspeak para poder ver los medidores.

Fuente   aqui