Servidor para Netduino+


NeonMika.Webserver es un servidor web preconfigurado  para Netduino+  yNetduino 2+   fácil de extender de modo que con un código mínimo (o incluso nulo), puede obtener excelentes resultados controlando todos  los puertos de  su Netduino +, accediendo y cargando archivos, creando servicios web ¡y algunas cosas  más!

El código  fuente esta disponible aun en codeplex en  :https://neonmikawebserver.codeplex.com/documentation  aunque hay  una version para Netduino 3+ en  Github .  A pesar de que el foro  de Netduino se ha mudado al sitio widernesslab.co  se mantiene  información  de NeonMika.Webserver  en el antiguo  foro de Netduino ( http://forums.netduino.com/index.php?/topic/2889-neonmikawebserver/)  asi que tiene más preguntas o desea  mas explicaciones  sobre el código le recomiendo que se dirija a ese sitio.

Si usa el esquema de la cafetera conectada  del que hablábamos  en un post anterior     únicamente puede   usar el pin digital  D2  como salida  y al que  conectaremos  una economica placa de un relé   compatible  con Arduino (5V)

 

Como se puede apreciar en el esquema del circuito , este no puede ser mas simple pues solo hay que alimentar el circuito del rele con la tensión  de 5V procedente de la placa Netduino, conectar el pin de datos  D2 a la entrada IN de la placa del  relé  y finalmente conectar la carga ( en este caso un cafetera)  a los contactos de salida del relé

 

Gracias  a neomikaserver podremos controlar fácilmente la cafetera   de una manera muy facil  y rapida pero ademas este servidor destaca por la siguientes  funcionalidades:

  • Acceso a la tarjeta microSD
  • Control de todos  lso puertos GPIO
  • Lectura de todos los puertos GPIO
  • Control   de  su Netduino+  usando métodos existentes como setPWM o setDigitalPinState
  • Permite agregar sus propios métodos similares al servicio web para que pueda expandir NeonMika.Webserver a sus propias necesidades para cada proyecto.

Hay dos directorios de interés para usted:

  • Framework :contiene el código de la biblioteca para un nuevo proyecto usando NeonMika.Webserver. Consulte esta carpeta si desea agregar NeonMika.Webserver a un proyecto existente.
  • Executeable:  contiene un pequeño proyecto creado usando NeonMika.Webserver. Consulte este si desea obtener una primera experiencia con el servidor. ¡Puede ejecutarlo sin escribir ninguna línea de código!

Para probar NeonMika.Webserver y tener algún código de muestra, simplemente siga estos pasos:

  • Simplemente descargue el código y vaya a “Executeables”.
  • Implemente el proyecto en su Netduino Plus. Debería comenzar a funcionar.
  • Este proyecto de ejemplo que utiliza NeonMika.Webserver tiene el siguiente método xml agregado al servidor web en tiempo de ejecución: netduinoplus / wave … Conecte los LEDs al Pin 0,1,4,5,8,9 y verá que su LED se enciende uno después el otro.

 

Setup

Como puede ver, solo necesita llamar al constructor para iniciar NeonMika.Webserver.

Server WebServer = new Server(PinManagement.OnboardLED, 80, false, "192.168.0.200", "255.255.255.0", "192.168.0.1", "NETDUINOPLUS");

Los parámetros necesarios son  autoexplicativos:

  • El puerto 
  • DHCP encendido / apagado
  • Dirección IP
  • Máscara de subred
  • Gateway
  • Nombre de red

¡No necesita nada más para ejecutarlo!

Métodos sopurtados?

Aquí hay una lista con todos los métodos web precodificados que puede usar en su navegador o en cualquier otra aplicación para comunicarse con su Netduino:

  • echo (devuelve el valor enviado) ,    ejemplo   netduinoplus / echo? value = [a-Z] , por ejemplo http://192.168.0.2/echo?value=markus devolveria “markus”
  • switchDigitalPin (Cambia el pin seleccionado de verdadero a falso y vis-a-vis) ,ejemplo : -> netduinoplus / switchDigitalPin? pin = [0-13]  es decir  por ejemplo para encender la cafetera seria http://192.168.0.2/setDigitalPin?pin=2&state=true y para apagarla http://192.168.0.2/setDigitalPin?pin=2&state=flase
  • setDigitalPin (Establece el pin digital seleccionado al estado seleccionado), ejemplo -> netduinoplus / setDigitalPin? pin = [0-13] & estado = [verdadero | falso]
  • pwm (establece el PWM del pin para el período y duración enviados, ejemplo -> netduinoplus / pwm? pin = [5 | 6 | 9 | 10] & period = [int] & duration = [int]
  • getAnalogPinValue (Devuelve el valor del pin analógico seleccionado),ejemplo-> netduinoplus / getAnalogPinValue? pin = [0-5]
  • getDigitalPinState (Devuelve el estado de su pin seleccionado (on / off)),ejemplo -> netduinoplus / getDigitalPinState? pin = [0-13]
  • getAllAnalogPinValues ​​(Devuelve el valor de cada pin analógico), ejemplo-> netduinoplus / getAllAnalogPinValues
  • getDigitalPinState (Devuelve el estado de cada pin digital).ejemplo-> netduinoplus / getAllDigitalPinStates
  • getAllPWMValues ​​(Devuelve los valores para todos los puertos PWM), ejemplo-> netduinoplus / getAllPWMValues
  • fileUpload (Carga un archivo en la ruta de la tarjeta SD mediante POST. Debe escribir los datos de archivo (bytes) en el cuerpo POST),ejemplo  -> netduinoplus / upload? path = [a-Z]
  • Respuesta de archivo y directorio: Simplemente escriba netduinoplus / [pathtomyfile] y podrá ver / descargar su archivo. Si la ruta dada es un directorio, se devolverá una vista de directorio

 

Más para fines de prueba, pero también como parte de NeonMika.Webserver:

  • xmlResponselist (le da una lista de todos los métodos XML) , ejemplo -> netduinoplus / xmlResponselist
  • jsonResponselist (Te da una lista de todos los métodos JSON),ejemplo -> netduinoplus / jsonResponselist
  • multipleXML (Ejemplo sobre cómo usar XML anidado), ejemplo -> netduinoplus / multixml

Algunos  ejemplos de uso

Como expandirlo con servicios XML

WebServer.AddResponse(new XMLResponse("wave", new XMLResponseMethod(WebserverXMLMethods.Wave)));

No se ve tan complicado? Eso porque no es complicado.

Este es un ejemplo de cómo escribir un XMLResponse

private void Echo(Request e,Hashtable results)
{
  if(e.Request.GetArguments.Contains("value") == true)
    results.Add("Echo",e.Request.GetArguments["value"]);
  else
    results.Add("ERROR", "No 'value'-parameter transmitted toserver");
}

Todas las XMLResponses deben tener este formato:

  • Valor de retorno:vacío
  • Parámetro: Solicitud (con esto puede acceder al parámetro escrito en la URL)
    Hashtable (aquí usted agrega la respuesta)
  • Si necesita XML apilado, eche un vistazo al método MultiXML en Server.cs

 

Cómo escribir una respuesta JSON:

 

private void ResponseListJSON(Request e, JsonArray j)
{
   JsonObject o;
   foreach(Object k in _Responses.Keys)
   {
     o = newJsonObject();
     o.Add("methodURL", k);
     o.Add("methodName", ((Response)_Responses[k]).Name);
     j.Add(o);
   }
}

Server setup:

Server WebServer = new Server(PinManagement.OnboardLED,80,false,"192.168.0.200","255.255.255.0","192.168.0.2","NETDUINOPLUS"); 
WebServer.AddResponse(newXMLResponse("echo", new XMLResponseMethod(Echo))); 
WebServer.AddResponse(newJSONResponse("jsonResponselist", new JSONResponseMethod(ResponseListJSON)));

 

Cómo acceder a los últimos datos POST:

PostFileReader post = new PostFileReader ();

byte [] postData = post.Read (bufferSize);

 

Mostrar el directorio de archivos:

http://192.168.0.2/SD

 

Archivo de acceso:

http://192.168.0.2/SD/folder/file.txt

 

 

 

Anuncios

Cafetera conectada con Netduino


Netduino es una plataforma electrónica de código abierto utilizando .NET Micro Framework   basada en  un microcontrolador de 32 bits y con un entorno de desarrollo muy rico destinada a ingenieros y aficionados por igual. Netduino Plus   ademas añade  Ethernet integrado (hay una pila de TCP/IP completa )y una ranura para tarjetas microSD para almacenar archivos .No menos importante esta el tema de las conexiones externas,pues   Netduino ofrece 20 GPIOs combinados con SPI, I2C, 2 UARTs (1 RTS/CTS), 4 canales PWM y 6 canales ADC. A gran diferencia con Arduino,   para desarrollo se puede usar tanto   para Windows   (  con Visual Studio,)  o con Xamarin Studio en Mac OS X , ambas  perfectas  para complilar ,depurar  y probar nuestra aplicaciones . Incluso se puede  utilizar el Netduino en equipo Linux y Mac con Mono en lugar de .NET de código abierto 

La familia Netduino se basa en el Cortex-M Micro procesador la v4.3 .NET Micro Framework (NETMF) que como comentabamos está repleto de IO; incluyendo 22 entrada/salida de propósito General (GPIO) puertos, de las cuales 6 apoyo generación de modulación de ancho de pulso (PWM) de hardware, 4 UARTs (comunicación serial), I2C y SPI (Serial Bus de interfaz periférico).

.NET micro Framework combina la facilidad de codificación de alto nivel y las características de los  microcontroladores  soportando  eventos programación multi-threading, depuracion  línea por línea, puntos de interrupción y mucho más en clara diferencia con Arduino.

Antes de continuar  debemos recordar que  Netduino también es pin compatible con Arduino shields  permitiendo  asi  usar algunos escudos  de Arduino  que ofrecen funcionalidades preconstruidas como localización GPS, servo control , etc .

 

Realmente la potencia de Netduino+  frente a otras placas de igual factor de forma es su conectividad integrada  en la propia placa al  no necesitar ningún escudo adicional,  lo cual le permite llegar a aplicaciones de una forma  muy sencilla  y de una forma muy rápida como vamos a ver

En este ejemplo   vamos demostrar lo fácil que resulta controlar una cafetera  ( o lo que quiera ) desde Internet  por medio de una placa  Netduino+   que esta conectado a  la red ethernet

Para este  proyecto únicamente se usara el pin digital  D2  que se configurara como salida  y al que  conectaremos  una economica placa de un relé   compatible  con Arduino (5V)

 

Aunque es fácilmente construible por nosotros mismso  usando un relé  ,un transistor  y sus componentes asociados  , debido al bajisimo precio (<2€)   de uno ya montado merece la pena adquirirlo  asi pues comunicante habrá que conectar a un pin de datos binario de Netduino , alimentarlo con 5v DC ( obtenidos del propio Netduino+)    y por ultimo usar los contactos del rele  para encender cualquier cosa que se nos ocurra.

Como se puede apreciar en el esquema del circuito , este no puede ser mas simple pues solo hay que alimentar el circuito del rele con la tensión  de 5V procedente de la placa Netduino, conectar el pin de datos  D2 a la entrada IN de la placa del  relé  y finalmente conectar la carga ( en este caso un cafetera)  a los contactos de salida del relé

Para  probar el funcionamiento del circuito , conecte el Netduino+  a su ordenador , inicie Visual Studio 2012  y cree una nueva aplicación .NET MicroFramework llamada Connected_Coffee_SimpleControl, y agregue referencias a los siguientes dlls:

  • Microsoft.SPOT.Hardware
  • System
  • SecretLabs.NETMF.Hardware.Netduino

A continuación, pegue el siguiente código en su archivo program.cs:

using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;
using System.Threading;

namespace Connected_Coffee_SimpleControl
{
    public class Program
    {
        public static void Main()
        {
            // create an output port (a port that can be written to) and 
            // connect it to Digital Pin 2
            OutputPort relay = new OutputPort(Pins.GPIO_PIN_D2, false);

            // run forever
            while (true)
            {
                relay.Write(true); // turn on the relay
                Thread.Sleep(5000); // Leave on for 5 seconds
                relay.Write(false); // turn off the relay
                Thread.Sleep(5000); // leave off for 5 seconds
            }
        }
    }
}
 Si observamos que la cafetera se enciende  por unos 5 segundos  y se apaga por 5 segundos en un bucle indefinido, el circuito funciona  perfectamente. así que con todo esto habremos ya  construido la base de la cafetera conectada mediante la creación de lo que era esencialmente una toma de corriente inteligente que podre controlar con un Netduino. Ademas después de montar el hardware, implantamos una  pequeña aplicación que controla el relé para activar la energía del hogar a la cafetera, efectivamente añadiendo un control muy simple.

Si bien esta aplicación es funcional , vamos a realizar un paso más y añadir una web API a la aplicación Netduino para que nosotros podemos controlar  la salida de forma remota.

Una vez tengamos la web API en su lugar, tenemos un punto final que puede ser aprovechado de una variedad de casos de uso. como por ejemplo  construyendo una aplicación móvil de Xamarin.Forms que use esa API para controlar la cafetera  conectado desde un dispositivo móvil

 

 

 

 

 

 

 

 

El código de ejemplo para el proyecto de la cafetera conectado todo se puede encontrar en el siguiente  repositorio de GitHubb:Netduino_Samples/Connected_CoffeeMaker  y el código que se ejecuta en el Netduino está en la carpeta de la aplicación de ApplianceHost  ( de hecho ese es el código que se va examinar aquí).

Introducción a Maple

Con el fin de exponer la web API para permitir el control remoto de nuestra cafetera, necesitamos un servidor web para acogerla,así que vamos a ver  un servidor web especialmente diseñado para Netduino, el  Servidor de maple.

Maple  es un servidor web en  código abierto, ultra ligero, habilitada  para JSON , soportando RESTful   construido específicamente para dispositivos Netduino  con capacidades de red. También se publica como un paquete nuget, por lo que es muy fácil de añadir  funcionalidades de red a sus proyectos. Este servidor esta diseñado específicamente para Netduino por lo que es increíblemente simple, rápido y super fácil de usar. Debe ejecutarse sin problemas en las placas  N3 Ethernet Wifi N3  y N2 +.

A continuación se muestran los comandos con las respectivas asignaciones en RequestHandler.cs:

  • GET http: // IPADDRESS / status – getStatus ()
  • POST http: // IPADDRESS / turnon – postTurnOn ()
  • POST http: // IPADDRESS / apagado – postTurnOff ()

 

¡Despliegue esto en su Netduino y acceda a estos puntos finales para verlo en acción!

 

Controladores de solicitudes

Criterios de valoración API web de Maple   se definen mediante la creación de clases personalizadas que heredan de la clase RequestHandlerBase.  Maple  utiliza la reflexión para crear direcciones URL basándose en los nombres de método en las clases personalizadas. Soporta tanto los metodos  get y post  asi como  los nombres de métodos que  deben tener el prefijo con cualquiera de esas cadenas para ser automáticamente en un extremo.

Por ejemplo, la siguiente clase expone tres URL endpoints   :/Status,  /TurnOn  y  TurnOff .

Como indican los nombres de los  métodos, las entradas el estado extremo acepta solicitudes get y los métodos de control de potencia (TurnOff y TurnOn) como se puede ver en el siguinte código: 

using System;
 using Microsoft.SPOT;
 using Maple;
 using System.Net;
 using System.Collections;
 
 namespace ApplianceHost
 {
     public class RequestHandler : RequestHandlerBase
     {
         private static bool _isPowerOn;
 
         public RequestHandler(HttpListenerContext context) : base(context)
         {
         }
 
         public void getStatus()
         {
             StatusResponse();
         }
 
         public void postTurnOn()
         {
             TogglePower(true);
             StatusResponse();
         }
 
         public void postTurnOff()
         {
             TogglePower(false);
             StatusResponse();
         }
 
         private void TogglePower(bool val)
         {
             _isPowerOn = val;
             Ports.ONBOARD_LED.Write(val);
             Ports.GPIO_PIN_D1.Write(val);
         }
 
         private void StatusResponse()
         {
             this.Context.Response.ContentType = "application/json";
             this.Context.Response.StatusCode = 200;
             Hashtable result = new Hashtable { 
                { "isPowerOn", _isPowerOn.ToString().ToLower() }
            };
             this.Send(result);
         }
     }
 }
 

Cuando se invoquen a esos extremos, se llama al método adecuado. En el caso de nuestro servidor de control; el método getStatus devuelve un mensaje con formato JSON que contiene el actual estado del relé de encendido/apagado, el método postTurnOnactiva el relé y el método postTurnOffdesactiva el relé. También mantiene el LED a bordo en sincronía con la energía al relé como indicador.

Ports se ha definido la clase ports.cs, que proporcionan accesos OutputPort directos a los objetos que representan el LED a bordo y el pin digital 1, que controla el relé:

using System;
 using Microsoft.SPOT;
 using Microsoft.SPOT.Hardware;
 using SecretLabs.NETMF.Hardware.Netduino;
 
 namespace ApplianceHost
 {
     static class Ports
     {
         static Ports()
         {
             ONBOARD_LED = new OutputPort(Pins.ONBOARD_LED, false);
             GPIO_PIN_D1 = new OutputPort(Pins.GPIO_PIN_D1, false);
         }
 
         public static OutputPort ONBOARD_LED;
         public static OutputPort GPIO_PIN_D1;
     }
 }

Uso de Maple, que es todo el código que se necesita para exponer una web moderna, RESTful API de un Netduino!

Inicialización de la red

A diferencia de aplicaciones tradicionales de escritorio o móvil en el que la interfaz de red durante mucho tiempo se ha inicializado cuando que se ejecuta una aplicación, usted debe inicializar la interfaz de red y espere a obtener su dirección IP, etc, antes de intentar hacer cualquier acceso a la red . Como tal, antes de iniciar el servidor de arce, estas tareas pero ser ejecutado y esperaron en.

La mayor parte del código en el principal program.cs hace justamente eso; Inicializa la red, espera a que una dirección IP y también hace una solicitud web para la validación. Mayoría del código está dedicado a la depuración y salida de información para ilustrar el proceso y proporcionar información para la instrucción y tiempo de desarrollo de exploración. Es bien documentado en la Guía Netduino Networking, y estamos trabajando en el envío de un paquete nuget que controlará todas esta cosas caja negra, en el futuro será aún más fácil de añadir a tus proyectos. Como tal, no voy a cubrir en detalle aquí, excepto to decir que si copia el código de inicialización de la red en su propia aplicación, debe llamar al método y comprobar que es el regreso (de éxito) antes de comenzar cualquier tratamiento que incluye acceso a la red :InitializeNetworktrue

if (InitializeNetwork())
 {
    // start the maple server
    // and start your application processing here 
}

Iniciar servidor de Maple

Una vez que la red se ha inicializado,   servidor Maple necesita ser instanciado y comenzar con método Start :

MapleServer server = new MapleServer();
 server.Start();

Para la mayoría de los casos, esto debe ir directamente después de la llamada de inicialización de red, sin embargo, dependiendo de sus necesidades de aplicación, puede iniciarlo cuando sea necesario.

Configuración de la red

El último paso necesario para configurar la muestra ApplicationHost es configurar la red. Algunas piezas de la red, tales como el nombre de red WiFi y la contraseña (si corresponde), necesita ser configurado en implementar tiempo. Si usted está desarrollando en una máquina Windows, puede utilizar MFDeploy, que se instala como parte del SDK .NET MicroFramework. Para desarrolladores de Mac, existe  MacDeploy, que proporciona la misma funcionalidad:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Si está usando el WiFi  con  Netduino 3, la autenticación y opciones de cifrado pueden ser un poco confusos, sin embargo, si se está conectando a una red WiFi moderna que requiere una contraseña, usted probablemente necesitará ajustar la autenticación para Compartido y la configuración de cifrado WPA. Además, el SSID se refiere al nombre de la red WiFi.

Probar el servidor de Control de aplicaciones API

Una vez que la red se configura y se implementa la aplicación, ya está listo para probar la funcionalidad  de Maple. Si todo va bien, la ventana de Salida de la aplicación en Visual Studio, debe tener algo similar a  lo siguiente:

Getting all the network interfaces.
Found 802.11 WiFi Interface
MAC Address: 60-D7-E3-A0-02-CB
DHCP enabled: True
Dynamic DNS enabled: False
IP Address: 0.0.0.0
Subnet Mask: 0.0.0.0
Gateway: 0.0.0.0
SSID:Cabin in the Woods
Found 802.11 WiFi Interface
No IP Address
DHCP is enabled, attempting to get an IP Address
Sleep while obtaining an IP
Sleep while obtaining an IP
Sleep while obtaining an IP
Got IP Address: 172.16.42.8

Necesitará la dirección IP para probar el punto final de la API. El extremo del estado es fácil de comprobar a través de un navegador; Asegúrese de que usted está en la misma red que el Netduino y abra una ventana del navegador y vaya a la  url. Debe mostrar una respuesta JSON. Sin embargo, recomiendo conseguir el   Postman para probar los extremos. Es gratuito y diseñado específicamente para probar interfaces RESTful. Le  permite publicar solicitudes además de obtener, así como una mirada de otras cosas útiles, incluyendo análisis automático de  respuestas JSON:http://%5BIP Address]/Status

 

 

 

Envío de datos de Iot en Raspberry Pi a la nube


Hoy vamos a  ver  lo fácil  que es conectar un sensor simple conectado a una Raspberry Pi a la nube de transmisión utilizando para ello  un sensor de temperatura digital, el popular DS18B20 y dos scripts de Python simples: uno para enviar los datos del sensor a la nube y el otro para recibirlo para su uso en alguna otra aplicación.
El código  para que pueda iniciarse esta disponible en un repositorio de GitHub .

CONEXIÓN DE UN SENSOR A SU RASPBERRY PI

Primero debe conectar el sensor a su Raspberry Pi. Debe conectar conectar al sensor una resistencia de Pull Uo  de 4,7 K entre  la linea de datos (que conectaremos al GPIO4 )  y la alimentacion de 3.3V

En la imagen se describe la sencilla conexión utilizando el bus 1wire con tres pines GPIO (alimentación, tierra y el pin de datos real).

Connection diagram for ds18b20 1-wire temperature sensor to Raspberry Pi GPIO

Después de hacer las conexiones  debe asegurarse de que el módulo kernel del dispositivo de comunicación 1wire esté cargado.

El procedimiento para hacerlo es ligeramente diferente entre las versiones de Raspberry Pi antes y después de enero de 2015, cuando kernel 3.18.8 se incluyó en Raspbian , la distribución de Linux más utilizada para Raspberry Pi. En las actualizaciones recientes debe modificar el archivo /boot/config.txt como se describe aquí:

# with a pre-3.18.8 kernel:
[email protected] ~ $ sudo modprobe w1-gpio &amp;&amp; sudo modprobe w1_therm

# else:
[email protected] ~ $ uname -a
Linux raspberrypi 3.18.11-v7+ #781 SMP PREEMPT Tue Apr 21 18:07:59 BST 2015 armv7l GNU/Linux
[email protected] $ sudo nano /boot/config.txt
# add this line at the bottom (and then reboot):
# dtoverlay=w1-gpio

Ahora puede buscar los dispositivos 1wire respectivos en su sistema de archivos. Cada sensor DS18B20 tiene una identificación única que aparece en este directorio de dispositivos, en nuestro caso 28-000004a365ef .

La siguiente sección muestra cómo leer los datos del sensor para que puedan publicarse en la nube.

LECTURA DE LOS DATOS DEL SENSOR

Una vez que conozca la identificación única de su DS18B20 , puede acceder a los datos del sensor de una manera más reutilizable con una función de Python como la de read_temp.py .
Al ejecutar este código también se ejecutará un ciclo corto para leer y visualizar la temperatura ambiente alrededor del sensor. Intente tocar el sensor con los dedos para ver cómo afecta las lecturas.
Ahora que el sensor está funcionando y entrega datos, es hora de enviar esos datos a la nube , la cual en esta ocasion sera ofrecida por el proveedor europeo relayr

relayr.png

Si no tiene una cuenta de desarrollador relayr , tendrá que crear una. Una vez que tenga una cuenta, puede crear un prototipo de sensor simplemente accediendo a la página de dispositivos de su dispositivo y moviendo el puntero del mouse sobre el botón con el signo más en la esquina inferior derecha.
Luego, desplácese hacia abajo y seleccione “Continuar sin un modelo” para crear el dispositivo. Ahora, cambie el lenguaje de programación a “Python” y copie el código de firmware generado, que será útil para la siguiente sección.

PUBLICACIÓN  DE SUS DATOS DE SENSOR EN LA NUBE DE RELAYR

Puede publicar sus datos usando MQTT (un protocolo para comunicar mensajes de máquina a máquina). Si aún no está instalado, tendrá que configurarlo en su Pi. El paquete paho-mqtt proporciona soporte MQTT para Python y se puede instalar fácilmente como un paquete Python con pip como este (instale pip primero si aún no lo tiene):

 pi @ raspberrypi ~ $ sudo apt-get install python-pip
 pi @ raspberrypi ~ $ sudo pip install paho-mqtt == 1.1

Sabrá si lo ha instalado con éxito si puede ejecutar esta declaración en Python sin ningún error: import paho .
A continuación, puede copiar el fragmento de muestra de Python de la página del prototipo del panel que haya visto al crear un prototipo. Para hacer esto, reemplace el ciclo while en la parte inferior del código con el de publish_temperature.py (disponible en el repositorio).

No olvide incluir la función read_temperature desde arriba y también agregar su identificación de sensor única al ciclo while (la que encontró al configurar el sensor). Alternativamente, puede usar el código en publish_data_mqtt.py , asegurándose de cambiar las credenciales (con las de su panel) y el device_id en la parte inferior de la página.
Esto le permitirá ejecutar un ciclo sin fin, leer los valores de temperatura y publicarlos uno por segundo a la nube de retransmisión.

CONSULTA DE SUS  DATOS

A medida que introduce sus datos en la nube de relayr, puede ver los valores en tiempo real a medida que cambian en el tablero de relayr.

Screen_Shot_2016-07-12_at_16.12.28.png

Ver sus datos en el tablero de instrumentos a medida que cambia es genial, pero en algún momento querrá extraer los datos para usarlos. Para ello, puede acceder a sus datos a través de MQTT de nuevo escribiendo un script simple como el Llamado fetch_data_mqtt.py en el repositorio de GitHub .

Si ejecuta esa secuencia de comandos, mostrará los mensajes MQTT en vivo que contienen los valores de datos tal como se recibieron.

Para ello, utilice el SDK de Relayr Python instalando primero los paquetes necesarios (ejecute las líneas a continuación en su pi):

sudo pip install git + https: //github.com/relayr/pythonsdk

sudo pip install relayr upgrade

Si tiene una Raspberry Pi nueva, asegúrese  de actualizar su lista de paquetes Debian e instalar algunos paquetes de desarrollador antes de instalar el paquete más nuevo de GitHub de la siguiente manera:

  pi @ raspberrypi ~ $ sudo apt-get update 
  pi @ raspberrypi ~ $ sudo apt-get install python-dev libffi-dev libssl-dev 
  pi @ raspberrypi ~ $ pip install git + https://github.com/relayr/python-sdk 

Ahora puede usar el código en receive_data.py para recibir datos de la nube. Asegúrese de cambiar la identificación de su dispositivo y el token de acceso (omitiendo la parte “Portador” del token).


En este ejemplo ha visto cómo puede conectar un sensor de temperatura simple a una Raspberry Pi y publicar sus datos en la nube de transmisión . Esto le permite ver los datos en vivo en el tablero, o exportarlos para usarlos en una aplicación. Puede usar MQTT para publicar y recibir los datos del sensor, o usar uno de los SDK de Relayr, como el SDK de Python , para acceder a los datos de manera más conveniente.

También puede usar sensores más emocionantes y publicar valores de datos más complejos que un solo flotante (es decir, una lista de tres flotantes que representan información geoespacial). Siempre que proporcione una lecturaconocida en el panel de control de relayr, mostrará sus datos en un buen widget. Y también puede publicar algo aún más complicado, como un objeto con niveles de anidación más profundos. En ese caso, el tablero mostrará un widget genérico. ¡Depende de usted y de lo que quiera hacer!

El código del ejemplo esta disponible ena GitHub repository.

Monitorización de consumo energético con Raspberry pi


Con el fin de intentar optimizar el uso  domestico que hacemos de la energía eléctrica  ,  un seguimiento estadístico del consumo energético nos puede ayudar a conocer nuestro consumo y con ello intentar optimizarlo,   ya que  existe un máxima que afirma que no se puede optimizar  algo que no se pueda medir . Para semejante objetivo  se  pueden utilizar contadores de energía para medir   el consumo del  cuadro  de distribución de corriente alterna de une vivienda   y enviar esta información  en tiempo real  a  un logger de datos basados en una Raspebrry pi 3 por medio del protocolo RS485 (sistema de bus diferencial multipunto, ideal para transmitir a altas velocidades sobre largas distancias y a través de canales ruidosos) permitiendo enviar la información  gracias a este protocolo ,  no solo de un watimetro sino de muchos  todos  operando sobre la misma linea .

El medio físico de transmisión  de  la salida de  dichos contadores  es un par trenzado , el cual admite 32, 128 o 256 estaciones en 1 solo par, con una longitud máxima de 1200 metros operando entre 300 y 19 200 bit/s y la comunicación half-duplex (semiduplex) dependiendo del consumo de cada driver  debido   a que la transmisión diferencial permite alcanzar mayor distancia con una notable inmunidad al ruido, siempre que el bus de comunicación conserve las características de bus balanceado (dando incluso la posibilidad de una configuración multipunto).

Gracias al  sistema de bus diferencial multipunto del protocolo  RS485  , se puede  transmitir únicamente con dos  hilos   a altas velocidades incluso sobre largas distancias (10 Mbit/s hasta 12 metros y 100 kbit/s en 1200 metros)  a través de canales ruidosos (es decir compartiendo las canalizaciones eléctricas  )  , ya que el par trenzado reduce los ruidos que se inducen en la línea de transmisión.

 

En cuanto al  software necesario  para procesar la información de los watimetros   se   pueden utilizar los  siguiente  componentes de código abierto:

  • Minimalmodbus -Leer los parámetros de los contadores de energía
  • InfluxDB -Tiempo base de datos de la serie para almacenar datos
  • Grafana -Herramienta de visualización de datos basada en web

Respecto al  hardware se pueden usan los siguientes elementos:

 

Escudo RS485 SparkFun Linksprite RS485/GPIO Shield

Este  escudo ,como puede adivinar,  es el elemento estrella de esta configuración pues precisamente permite  soportar el  protocolo RS485 en  la Raspberry Pi,  de modo que  podrá tener un puerto de comunicación para su bus de campo directamente conectado a su RPi.

Aunque el RS485 a veces se considera un protocolo “arcaico”, permitirá que hasta 32 dispositivos se comuniquen a través de la misma línea de datos a lo largo de una longitud de cable de hasta 1200 mt con una velocidad de datos máxima de 10Mbit / s.  (lo cual no son malos números)

Este escudo viene premontado, así que todo lo que tiene que hacer es ajustarlo directamente a tu Raspberry Pi y obtener la programación. El RS485 Shield V3 es compatible con Raspberry Pi B, B + y Raspberry Pi 2.

Nota: El escudo tiene una huella despoblada para un conector DB9. Verifique a continuación si necesita agregar el conector. De lo contrario, puede usar los terminales de tornillo.

Se ha verificado que funciona con una Raspberry Pi 3 con un escudo Linksprite RS485 y valores de lectura de un SDM120 y SDM630. Al cambiar el archivo [model].yml y crear un archivo .yml [modelo] correspondiente, debería ser posible usar otros modelos habilitados para modbus (agregar el conector). De lo contrario, puede usar los terminales de tornillo.

Cableado

Conecte un cable de par trenzado al escudo Linksprite RS485  , teniendo en cuenta que debe diferenciar el significado de cada hilo ( por ejemplo diferenciando con dos colores) y  teniendo en cuanta que cada  color que deberían ir   a la A y la B.

Conecte el otro extremo del cable al terminal de Modbus del metro de la energía. Asegúrese de que el mismo color va a la A como uno conectarse A en el escudo y lo mismo para B. Si más metros van a conectar, seguir conectando los medidores de la serie: A A, B a B. Un cable de encadenamiento puede ser útil.

 

Se recomienda utilizar resistencias de terminación al final de la cadena.  Para asegurar una conexión buena puede ser una buena idea para soldar un cable de encadenamiento para conectar todo A terminales en serie y todos los terminales B en serie.

Consulte esta documentación para obtener más información: https://www.maximintegrated.com/en/App-Notes/index.MVP/ID/763

Requisitos previos

Descargar tramo de Raspbian Lite y Flash en tarjeta SD, por ejemplo mediante el uso de grabador. Monte el protector de RS485 de cabecera de GPIO de la Raspberry Pi. Poder Rasberry Pi y contraseña de configuración (passwd) y SSH, localización, etc. utilizando la red:

$ sudo raspi-config

Con la configuración abierta  de   raspi-confi, ir a: Opciones de la interfaz 5 -> Serie P6 y Deshabilitar el shell de login serial y Habilitar hardware de puerto serie (es decir NO y luego sí)

Para poder utilizar el UART es necesario deshabilitar el Bluetooth incorporado ya que comparte el UART. Para ello, agregue las siguientes líneas a /boot/config.txt

# Disable built in Bluetooth 
dtoverlay=pi3-miniuart-bt

fuente

Para deshabilitar la consola serie, necesita editar la /boot/cmdline.txt archivo para parecerse a la siguiente línea:

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

fuente

Instalar Python Package Manager PIP si no ya instalado (no instalado en Raspbian Lite):

$ sudo apt-get install python-pip

Instalar Git si no ya instalado (no instalado en Raspbian Lite):

$ sudo apt-get install git

Instrucciones de instalación

Puede seguir las instrucciones de GitHub para instalar código fuente InfluxDB, Grafana y medidor registrador de energía, resumidamente son las siguintes:

Instalar InfluxDB *

Instrucciones paso a paso
  • Agregue el repositorio InfluxData
      $ curl -sL https://repos.influxdata.com/influxdb.key |  sudo apt-key add -
     $ source / etc / os-release
     $ test $ VERSION_ID = " 9 " && echo " deb https://repos.influxdata.com/debian stretch stable " |  sudo tee /etc/apt/sources.list.d/influxdb.list
  • Descargar e instalar
      $ sudo apt-get update && sudo apt-get install influxdb
  • Comience el servicio de influxdb
      $ sudo service influxdb start
  • Crea la base de datos
      $ afluencia
     CREAR BASE DE DATOS db_meters
     salida

*fuente

Instalar Grafana *

Instrucciones paso a paso
  • Añadir repositorio APT
      $ echo " deb https://dl.bintray.com/fg2it/deb-rpi-1b jessie main " |  sudo tee -a /etc/apt/sources.list.d/grafana.list
  • Añadir clave de Bintray
      $ curl https://bintray.com/user/downloadSubjectPublicKey ?  nombre de usuario = bintray |  sudo apt-key add -
  • Ahora instala
      $ sudo apt-get update && sudo apt-get install grafana
  • Comience el servicio usando systemd:
      $ sudo systemctl daemon-reload
     $ sudo systemctl start grafana-server
     $ systemctl status grafana-server
  • Habilite el servicio systemd para que Grafana comience al arrancar.
      $ sudo systemctl enable grafana-server.service
  • Vaya a http: // localhost: 3000 e inicie sesión usando admin / admin (recuerde cambiar la contraseña) * source

Instalar Energy Meter Logger:

  • Descargue e instale desde Github
      $ git clone https://github.com/samuelphy/energy-meter-logger
  • Ejecute el script de configuración (debe ejecutarse como root (sudo) si la aplicación necesita ser iniciada desde rc.local, ver abajo)
      $ cd energy-meter-logger
     $ sudo python setup.py install
  • Hacer que el archivo de script sea ejecutable
      $ chmod 777 read_energy_meter.py
  • Edite meters.yml para que coincida con su configuración
  • Pruebe la configuración ejecutando:
      ./read_energy_meter.py
     ./read_energy_meter.py --help # Muestra todos los parámetros disponibles
  • Para ejecutar el script python al inicio del sistema. Agregue a las siguientes líneas hasta el final de /etc/rc.local pero antes de salir:
      # Start Energy Meter Logger
     /home/pi/energy-meter-logger/read_energy_meter.py --interval 60 > /var/log/energy_meter.log &

    El registro con posibles errores se encuentra en /var/log/energy_meter.log

Configuración del medidor de energía

En este proyecto energía Modbus activado se utilizan wtimetros de la marca  Eastron. El autor ha usado dos modelos  :uno normales  de una sola  fase y otro de tres fases . Para capturar los datos muchos de los registros y los registros de interés se especifiquen en dos archivos de configuración: SDM120.yml y SDM630.yml. Los parámetros de estos registros se almacenan como 32 bits flotante  (tamaño de 2 registros) y deben ser leídos por código función 04, fuente : code = 4, 2 registers)

De la documentación Eastron obtenemos el siguiente mapa de registro para configurar nuestros archivos de configuración.

Si se utiliza un medidor de energía diferentes, simplemente deberá configurar  su propio archivo de configuración y añadir a meters.yml donde también se define la configuración modbus para cada metro.

meters: 
   - name : Meter Group 1 
     type : SDM120.yml 
     id : 1     # this is the slave address number 
     baudrate : 9600   # Baud 
     bytesize : 8 
     parity : even # none | odd | even 
     stopbits : 1 
     timeout  : 0.5   # seconds 

Grafana

Grafana abierto (e.g. http://raspberrypi.local:3000) y entrar con admin / admin.

Empezar por crear un origen de datos:

  • Nombre: Dar un nombre de su elección
  • Tipo: Seleccione InfluxDB
  • Acceso: proxy
  • Base de datos: db_meters
  • ¡Agregar!

Añadir un panel de control y haga clic en gráfico. Haga clic en “Panel de título” y edición. Haciendo clic en “seleccionar medición”, “+”, “valor de campo” etcetera puede seleccionar los parámetros que interesa analizar.

Una cosa vale la pena destacar es en “Opciones” donde debe ingresar el “intervalo de tiempo mínimo” que debe ser el mismo que el tiempo entre mediciones.

En la pestaña de “Ejes” puede la unidad para la medición.

NOTAS:

En caso  de  que no se registren las lecturas   en la Raspberry Pi  ,lo mejor es empezar por investigar el archivo de registro. El nivel de registro puede establecerse como parámetro cuando se ejecuta el script:

read_energy_meter.py --log DEBUG | INFO | WARNING | ERROR 

Al registro de configuración para depuración usted obtiene más información. Si usted ha de  escribir el registro en un archivo puede buscar en el registro de error usando este comando:--logfile

$ cat energy.log | grep -in 'error' | awk -F: '{print $2" - Line number : "$1}' 

Asimismo asegúrese de que todos sus medidores conectados en el mismo están configurados con la misma velocidad en baudios.  También es  muy   importante definir un tiempo de espera corto, aproximadamente 10 ms,(con entre parámetro así definido  se puede hacer que se tolere  si se produce errores de CRC al azar).

 

Mas información en  https://www.hackster.io/samuelphy/energy-meter-logger-6a3468

 

 

Interceptar Amazon Dash Button para otras aplicaciones


Amazon  lleva mas  un año enviando sus famosos  botones Dash , los cuales se pueden transformar en exactamente eso con sólo unos minutos, es   decir que un pequeño dispositivo permita con el simple hecho de darle un botón , desencadenar una  compra predefinida al famoso portal de compra…   pero, obviamente , estos botones  inteligentes están abiertos   a otras posibilidades  sin duda infinitas y que vamos a intentar explorar en este post

Los  famosos Amazon Dash  son  botones pequeños, de plástico  y de un coste ínfimo (  5€) ,pero ademas incluyen  una batería y una conexión WiFi en su interior . Amazon quiere que usted los pegue en el interior de sus puertas y los utilice  para  comprar productos de uso cotidiano  como pueden ser los pañales, té , café,  productos de limpieza   y un largo etcétera.

nescafe.jpg

Existe  una  manera   mas fácil   de darle otros usos a  cualquier botón  Amazon Dash si quiere usar SmartThings para  otras cosas útiles.

Ejemplos de usos:

  • Presionar el botón Dash y encender las luces. (Luces del dormitorio, luces de la sala de estar, todas las luces o lo que sea).
  • Presionar el botón Dash y encender el televisor, cambia a una entrada de TV y abrir Netflix.
  • Presionar el botón Dash y abrir la puerta de la puerta / garaje.
  • Presionar el botón Dash  y abrir una aplicación de cámara en el teléfono e incluso encender la TV y proyectar la cámara al televisor.
  • Presione el botón Dash y abrir una aplicación  en el ordenar que  realice alguna acción.
  • !En resumen: posibilidades ilimitadas!

Entender cómo funciona el registro del botón.

Nuestro objetivo es detectar cuando uno de estos botones Dash se   pulsa  y luego hacer algo más que ordenar  cosas en Amazon. El hack impresionante sería abrir el botón y re-programarlo  ( de hecho esto ya se puede hacer  reprogramando el STM32  que incluye )   pero  vamos a seguir  una  ruta muchísimo mas fácil:  sólo vamos a usar  un programa que rastrea nuestra red wifi para buscar  la evidencia de que el botón fue pulsado  , luego registrar un punto de datos cuando escucha estos y una vez detectado desencadenar una acción .

Resulta que Amazon nos dio una manera muy fácil de hacer esto porque estaban tan preocupados con el ahorro de energía , pues estos  botones  se desactivan la mayor parte del tiempo para conservar la batería dentro y sólo se encienden cuando son pulsados, lo cual significa que tienen que volver a conectarse a su red Wifi cada vez que son pulsados ( y eso  es fácil de detectar).

Los dispositivos de Internet no solo se conectan a una red Wifi y empiezan a hablar con Amazon: se presentan primero a la red local . Esta introducción se hace con algo llamado una sonda ARP , y es esencialmente una comprobación de seguridad para asegurarse de que la dirección MAC que el dispositivo va a utilizar como identificador ya no está siendo utilizada por otra persona.

Cada vez que pulsa un botón Dash, se vuelve a conectar a la red, causando una transmisión predecible  de llamada una sonda ARP que podemos detectar y actuar.

Eso es una gran noticia para nosotros: cada vez que se pulsa un botón Dash, se enciende su radio y transmite rápidamente el mensaje, “Hola! Mi nombre es [Dirección MAC]! “

Así, que conceptualmente, el problema esta resuelto pues sólo tenemos que:

  1. Evitar que el botón realice cualquier pedido
  2. Escuche las sondas ARP del botón Dash
  3. Traducir esas sondas a llamadas   cualquier cosa que se nos  ocurra

Paso 1: Configurar la red wifi en el botón

Para   usar el botón ,primero  debe registrar el Botón básicamente para configurar la red wifi a la que se conectará .  Lo que no queremos es asignar el botón para pedir algo , por lo en lugar de asignar algún producto , antes de finalizar la vinculación simplemente  no haremos nada  !pero el botón de tablero todavía seguirá registrado! , así  que lo sucede a continuación es que cuando presione el botón del tablero, recibirá una notificación  en las versiones antiguas  que dice “Su (inserte el nombre del botón del tablero) está casi listo para usar … bla, bla, bla”.

Pasos del botón Dash (Nuevo botón Dash):

  1. Abra la aplicación Amazon Shopping y vaya a su cuenta.
  2. Vaya a Configurar un nuevo botón de tablero y haga clic en Aceptar y comenzar para comenzar.
  3. Mantenga presionado el Botón de tablero por 6 segundos hasta que la luz destelle en azul y haga clic en Conectar. (Asegúrate de que Bluetooth esté habilitado)
  4. Haga clic en la red Wi-Fi a la que desea conectar el botón del tablero y haga clic en Continuar.
  5. El botón de tablero ahora está registrado. No haga nada todavía.
  6. Donde dice Elija un producto simplemente salga (no queremos pedir nada) haciendo clic en la X en la esquina superior derecha.
  7. Hemos terminado con la configuración del botón del tablero.

Pasos del botón de tablero (dispositivo antiguo):

  1. Abra la aplicación Amazon Shopping y vaya a su cuenta.
  2. Diríjase al botón del tablero con el que tiene programada la configuración y haga clic en Desactivar este botón del tablero. Aparecerá una ventana emergente preguntándole si está seguro. Decir que sí.
  3. Ahora vaya a Configurar un nuevo botón de tablero y haga clic en Aceptar y comenzar para comenzar.
  4. Mantenga presionado el Botón de tablero por 6 segundos hasta que la luz destelle en azul y haga clic en Conectar. (Asegúrate de que Bluetooth esté habilitado)
  5. Haga clic en la red Wi-Fi a la que desea conectar el botón del tablero y haga clic en Continuar.
  6. El botón de tablero ahora está registrado. No haga nada todavía.
  7. Donde dice Elija un producto simplemente salga (no queremos pedir nada) haciendo clic en la X en la esquina superior derecha.
  8. Hemos terminado con la configuración del botón del tablero.

Nota: Puede activar y desactivar la notificación de Amazon Shopping para cada dispositivo que desee habilitar o deshabilitar en caso de que se moleste. Esto se puede hacer abriendo la aplicación Amazon Shopping en cada dispositivo individual y deshabilitando o habilitando “Alexa Shopping & Dash Updates”. Habilite en el dispositivo que planea hacer esta guía de configuración. Deshabilite en todos los dispositivos en los que no planea usar esta configuración. Naranja = Activado.

Paso 2: Captura  de la IP del botón

Una forma fácil de encontrar su ID del botón de pantalla es usar Wireshark (https://www.wireshark.org/#download), que se puede  obtener  mediante una descarga gratuita para Mac / Win.

Una vez  descargada  e instalada la aplicación  podemos lanzar Wireshark, estableciendo el filtro para capturar paquetes en “arp“, seleccionando  el modo wifi para la red y haciendo clic en el icono de Blue Shark para habilitar el filtro al capturar paquetes.

wireshar.png

A continuación, verá una ventana como la siguiente: haga clic en el ícono de Green Shark para comenzar a capturar paquetes, presione el botón de Amazon Dash.

Verá una línea en el parte superior que tiene “AmazonTe …” en la fuente Colunm.

amazonte.png

Selecciónelo y en el panel a continuación, verá la dirección MAC del botón Amazon Dash en parantesis, junto a AmazonTe _… Src, como se muestra a continuación.

mac.png

Realmente la dirección MAC es importante  para algunas aplicaciones,   pero realmente lo que nos va a importar  para capturar la petición,   es la dirección ip  del botón obtenida en la pantalla  anterior   , ( en  nuestro caso : 192.168.1.32)

Alternativamente, puede seguir las instrucciones de node-dash-button para encontrar su id del botón de pantalla.

Nota :   Un pedido real se marca  controlando la luz en el botón Dash para que se vuelva verde. Actualmente se vuelve blanco cuando se transmite una solicitud DHCP o paquete ARP y luego se vuelve rojo cuando no recibe una respuesta de Amazon, así que  cuando usa un botón Dash de la manera normal, la luz se vuelve verde después de que Amazon haya realizado su pedido, pero si eso No es  lo que pretende,  todavía  puede ir a la app( o en la web)  para cancelar el pedido

Paso 3 :  Utilización  sobre windows

Existen scripts en python que pueden ejecutarse  en una raspberry Pi  para  escuchar las peticiones  en la red wifi  de modo que cuando detecten  la ip de nuestro botón desencadenen un acción.
Para  windows existe una  interesante  utilidad que busca cualquier llamada a la IP de nuestro botón  y desencadene la ejecución de un comando o aplicación.

Descargue el sw de aquí: https://github.com/fiveseven808/AmazonDashButtonHack

Una vez descomprimido  tendremos al menos dos ejecutables:

amanzonbut

En versiones  antiguas del botón era posible el auto-descubrimiento  de la ip del botón ( es decir obviar el paso comentado  nº 2),   por  lo que  los pasos  serian los siguientes :

  • Ejecutar  “AmazonButton_Discovery_160715 _ ****. Exe” para comenzar a buscar botones.
  • Pulsamos clic en “Aceptar” en el aviso y comenzariamos  a presionar el botón que desea emparejar repetidamente.
  • Si no se encuentran dispositivos de Amazon, intente de nuevo, pero comience a presionar el botón tan pronto como haga doble clic en el archivo EXE.
  • Si se encuentran más de un dispositivo de Amazon, tendrá que ir y averiguar qué IP corresponde con su botón por su cuenta.
  • Finalmente elija un programa que desea ejecutar cuando se presiona el botón
  • Ingrese un comentario para el daemon, lo cual  identificará el daemon particular que corresponde con el botón en particular.

 

Como el proceso anterior  no es mas eficaz , si ya conoce la IP de su botón( descrito en el paso 2 )  siga los siguientes  pasos:

  • Haga doble clic en AmazonButton_v4.0.exe .
  • Ingrese la IP conocida / reservada de su botón Dash ( en nuestro caso 192.168.1.36)
  • Elija un programa que desea ejecutar cuando se presiona el botón . Por ejemplo puede asociar un fichero mp3  de modo que cuando pulsemos el botón  comience  a reproducirse el tema
  • Ingrese un comentario para el daemon, lo cual identificará el daemon particular que corresponde con el botón en particular.

También permite argumentos vía  parámetros   por  línea de comando por ejemplo para automatizar el arranque de este proceso en el inicio del ordenador :

AmazonButton_v4.0.exe [IP del botón] [Programa para iniciar] “[Comentario opcional]”

Es interesante saber   que incluso se puede repetir  estas llamadas según sea necesario para cualquier otro botón.

NOTA :  Hay informes de que el nuevo botón JK29LP pierde su configuración de Wifi si la desasocia con su cuenta de Amazon. La “solución alternativa” actual es utilizar una cuenta ficticia de Amazon para configurar su botón con su teléfono y luego volver a iniciar sesión en su propia cuenta para que pueda seguir usando la aplicación.

Pequeña mejora para minialtavoz


Como muchos lectores habrán apreciado han proliferado,  a un coste ínfimo ,  pequeños altavoces  con batería  y reproductor de mp3 incorporados  incluso soportando  la mayoría bluetooth   y   radio FM

Estos  altavoces son  de  tamaño compacto   y portátiles de aspecto metálico en un tamaño mini, ofreciendo sonido de audio de buena calidad  con graves profundos   gracias sobre todo  a los  chip de audio  ( en su mayoría  usan el chip Avera AC4603)

Entre sus cualidades destacan  su conectividad universal pues  suelen  equiparase  con la tecnología Bluetooth 3.0 + EDR superior a 33 pies, compatible con la mayoría de los dispositivos habilitados para Bluetooth, como teléfonos, tabletas, MP3, vídeo y computadora, soportando  casi todos multi-función ,  es decir   ayuda inteligente    basada en  voz   ( eso  si en perfecto ingles)

Al arsenal de bondades de estos dispositivos  hay que añadir   soporte de micro-sd   e incluso usb  nativo  (en algunos modelos) , lo que  quiere  decir  que podemos añadir nuestra música en archivos mp3    en la   TF o en una  unidad  USB extraible  para poderlos  reproducir  directamente desde el propio  mini-alatavoz   , Por   ultimo adema de la función de reproducción  de mp3, se añade   la función de radio estéreo via AUX FM , la entrada  auxiliar    y por micrófono incorporado   para el teléfono de manos libres que llama.

Asimimo mucho presumen de Long Playtime, es decir sólo necesitan  2 horas para cargar completamente, pero puede proporcionar hasta 4 horas de tiempo de juego, diviértete con su familia y amigos

Estos altavoces, por su bajo precio ,son propensos  a diferentes mejoras:

  • Aprovechamiento de las leds indicadoras de estado ( suelen ir ocultos tras la batería)
  • Salida de audio ( usando las conexiones de los dos altavoces
  • Mejora batería  ( cambiando la batería   por una de mayor capacidad)
  • Cambio ubicación batería ( para eliminar tapa)
  • Mejora altavoces ( por ejemplo conectando otros altavoces fuera de la carcasa)
  • Aprovechamiento parte reproductor mp3
  • etc

 

En esta ocasión   vamos  a proceder reubicar la batería   y  proceder  al  aprovechamiento de las leds indicadoras de estado  pues en la mayoría  de los modelos  suelen ir ocultos tras la batería: el led de power ( rojo ) y el de reproducción (azul)

Para llevar  la tarea lo primero es desmontar la tapa de la batería:

 

IMG_20171125_173530[1].jpg

Debemos usar las conexiones de alimentación  hacia la tapa para soldarlas directamente sobre la batería  con cuidado de no equivocarnos

Habrá que eliminar un poco los contactos para que pegue la soldadura:

IMG_20171125_173807[1].jpg

Ahora se trataría  de probar el funcionamiento normal  con la batería cambiada de ubicación

IMG_20171125_173712[1].jpg

Probado  el  dispositivo, pegaremos cinta de doble cara sobre la bateria

IMG_20171125_174103[1].jpg

Ya solo queda colocar la batería , los altavoces   y cerrar la tapa que ahora quedara sin conexiones.

IMG_20171125_173822[1].jpg

Por ultimo  cerrado el conjunto   queda ya solo queda  probar el funcionamiento  donde como se puede apreciar los dos leds quedan completamente visibles;

Consiga su Raspberry Pi 3 por 34€ con la carcasa gratis


Con  más de ocho millones de unidades vendidas , incluyendo tres millones de unidades de Raspberry  Pi 2 , nadie duda  que Raspberry es una plataforma  muy exitosa ,  tanto que de hecho la Fundación Raspberry Pi ha crecido de unos pocos  voluntarios a llegar a más de sesenta empleados a tiempo completo, ! e incluso  han enviado una Raspberry Pi a la Estación Espacial Internacional !

Destaca de la familia  Raspberry pi la ultima  Raspberry Pi 3 Modelo B   ,la última placa de la familia de Raspberry Pi  ,una placa 10 veces más potente que la original (es decir la primera versión) ,  donde   lo mas destacable  es que se ha añadido   conectividad inalámbrica integrada, tanto por wifi (soportando los estándares  802.11 b/g/n) ,  como  por  Bluetooth ( versión 4.1).

El precio  normalmente de esta versátil   placa con gastos de envíos,  ronda  los 50€  ,pero ahora de forma puntual  su precio es de 34.20 €  en Amazon

Hablando de conectividad ,la nueva placa  incorpora el chip de Broadcom BCM2837 junto el chip inalámbrico “combo” BCM43438 . Gracias  a esta combinación de CI,  ha permitido  adaptar la funcionalidad inalámbrica en casi el mismo factor de forma de los modelos anteriores como  Raspberry Pi Modelo B + 1 y Raspberry Pi 2 Modelo B. De  hecho ,  el único cambio es que la posición de los LEDs los  han trasladado al otro lado de la ranura de la tarjeta SD para hacer espacio para la antena. Respecto al nuevo SoC, el  BCM2837, este   conserva la misma arquitectura básica que sus predecesores BCM2835 y BCM2836, por lo que todos los proyectos y tutoriales que se basan en este  hardware de la Raspberry  Pi continuarán funcionando.

broadcom 

Esta nueva placa  a diferencia de todas la anteriores  usa un procesador   de  64  bits : un  ARM Cortex-A53  de  cuatro núcleos  a una velocidad de reloj  de 1,2 GHz  en lugar de un  Quad-Core Cortex A7 de 32 bits  a 900 MHz de su antecesor ( Raspberry Pi  2 modelo B), por lo  que vemos que el cambio de procesador  ha sido espectacular no solo por la velocidad de reloj superior (de 900 Mhz  a   1,2 GHz) ,  sino básicamente  por el cambio de arquitectura también ARM ,pero  de 64 bits en lugar de la antigua de 32 bits .

La combinación final   de un aumento del 33% en la velocidad de reloj con varias mejoras en la arquitectura,  permitiendo  proporcionar un aumento del 50-60% en el rendimiento en el modo de 32 bits frente a la Raspberry Pi 2, o aproximadamente un factor de diez sobre la original Raspberry Pi.

Sobre la memoria  RAM cuenta  con 1GB LPDDR2 ( la versión anterior también contaba con 1GB)  y a nivel de gráficos también han mejorado   pues cuenta con  un Dual Core VideoCore IV ® Multimedia Co-procesador.

Sobre los conexiones disponibles, sin embargo ,  no ha cambiado sustancialmente  , contando  como en la versión anterior  con las siguientes posibilidades:

  • 4 Puertos  USB 2.0
  • Puerto de  GPIO de 40  pin,
  • Salida HDMI rev 1.3 y 1.4
  • Toma  Ethernet
  • Jack de audio de 2  1/2″ ,
  •  Interfaz de cámara (CSI)
  • Interfaz de Pantalla (DSI)
  • Lector  micro SD

 

Todos los conectores anteriores  están en el mismo lugar y tienen  la misma funcionalidad, y para alimentar la placa  todavía se puede usar un  adaptador de alimentación de 5V micro-USB, pero en esta ocasión, están recomendando un adaptador 2.5A por si desea conectar dispositivos USB que consuman mucha energía  de la Raspberry Pi.

Caja

Una  de las ventajas  de la Raspberry Pi es que es fácilmente  personalizable, no solo por dentro gracias a  las múltiples distribuciones  compatibles ( incluso W10) , sino también por fuera, por ejemplo  con la carcasa , que esta abierta   completamente a nuestra  creatividad.

Si dispone de una impresora  3D  una de la las mejores opciones   gratuitas     es  el diseño con soporte VESA   de  0110-M-P   compatible con los siguientes modelos de Raspberry Pi: Raspberry Pi 3 ,Raspberry Pi 2,Raspberry Pi Modelo B +,  Además, para facilitar la impresión  cuenta con dos mitades para ajustar facilmente  uy  que ademas  se puede ajustar el diseño para su propio uso.

Esta esta nueva carcasa para la Rasperry Pi 3 presenta:

  • Ranura de acceso para la cámara Pi
  • El diseño es atornillable  por dentro (la pcb )  y por   fuera
  • Atornille el montaje de Raspberry Pi al estuche usando agujeros en PCB
  • Construido en pestañas de montaje VESA de 75 mm
  • Diseño de ventilación del motor rotatorio (triángulo reuleaux)
  • Malla STL de alta resolución

Este es el aspecto de como queda  la pcb atornillada    a la base inferior del diseño , donde se puede apreciar claramente el radiador  pasivo, el cual   aunque no es obligatorio , si lo es de forma muy   recomendable para evitar calentamientos excesivos  a la placa  y así alargaremos la vida de esta versatil  placa

Y este es el aspecto de como queda ya montada y cerrada :

 Usos  Y Aplicaciones

Usted necesitará una imagen reciente NOOBS o de Raspbian  que puede descargar desde la pagina  de  descargas . En la pagina de descargas  esta  disponible  la versión de 32 bits Raspbian usada en otros dispositivos Raspberry Pi, pero se suponen que próximamente   deberían crear  una nueva imagen con soporte al modo de 64 bits.

La forma de instalar el sw en la sd no puede ser mas sencillo ,pues una vez descargada la  ISO de  la distribución que nos  interese   , solo necesitamos la utilidad Win32DiskImager d( se puede descargar desde la página del proyecto en SourceForge como un archivo zip),seleccionar el archivo de imagen que ha extraído anteriormente de Raspbian, seleccionar la letra de la unidad de la tarjeta SD en la caja del dispositivo . hacer  clic en Escribir y esperar a que la escritura se complete.(mas detalles  aqui )

 

La nueva placa no es solo un dispositivo estupendo para programar sino que también es   ideal para jugar  usando directamente la distribución de Raspbian citada  o  bien por medio de la distribución RetroPie

Especialmente interesante  para experimentar  para sus futuros proyectos de IoT  tal y como hemos visto  en este blog , es e usar la Raspberry Pi    a través de la plataforma Cayenne

Asimismo en este blog también hemos hablado de las posibilidades de la Raspberry Pi para emular el sistema Ambilight de Philips gracias a la distribución LightBerry

 

Hay infinitas posibilidades  muchas de las cuales hemos intentado  hablar en este blog   de modo que seria  pretencioso intentar condensarlas todas en un único post, sin duda el limite solo esta  en nuestra imaginacion

 

Por cierto, no sabemos  hasta cuando se mantendrá el precio , pero  si le   interesa este modelo   por unos  de 34€  con gastos de envío incluido ,  no se lo piense pues puede conseguirlo  todavia en Amazon facilmente