IoT con Netduino


Pachube  fue pionera en desarrollo de aplicaciones y servicios web para conectar personas y dispositivos en lo que se considera “el Internet de las Cosas” o IoT(Internet of things) , un concepto global en el que todo está conectado (casas, móviles, coches, lámparas, pcs…) nacido en 2008 y que en el momento actual es imparable.

Para quien no lo conozca, Pachube era un servicio web donde se  podía transmitir la información que generaban nuestros dispositivos mediante una conexión a Internet  (Wifi, ethernet, GPRS,etcC). Una ventaja que tenia es que mediante nuestro ordenador/móvil/tablet podiamos consultar los datos que nuestro dispositivo envíaba mediante la propia  web de Pachube de una forma gráfica, pudiendo  hacer que nuestros feeds fuesen públicos o privados, consultar el historial de datos  así como enviar alarmas y notificaciones a nuestros dispositivos.

Tenia limitaciones  en su version gratuita , como que no se podían hacer más de 100 peticiones por minuto, pero en la mayoría de los casos eran suficientes para cualquier aficionado.

 

El servicio de Pachube   fue adquirido hace varios años por una compañía llamada LogMeIn  de modo que incluso cambiaron el nombre del servicio a COSM.
Con ésta adquisición LogMeIn  entraba en un comercio en auge que se supone llegará a conectar más de 50.000 millones de dispositivos (muy variados entre si, como hemos comentado) en un futuro muy próximo pudiendo ayudar a mejorar la calidad de vida actual así como dar el último impulso a proyectos tan famosos como las viviendas inteligentes o ciudades “tecnológicas” enteras.

Al poco tiempo después, lo renombraron  como Xively, el cual solía existir en dos formas: Xively (Comercial) y Xively Personal.

Lamentablemente en enero de 2018 cerraron Xively Personal , de  modo que  es necesario “pasar por caja” si se quiere usar sus servicios, los mismo servicios  que antaño eran gratuitos.

Perfilándose como   alternativa de servicio de IoT  , hemos visto crecer  la plataforma gratuita Adafruit IO. Su API  es muy limpia y elegante  , y  permite ejecutar interaccionar correctamente en un Netduino 3 WiFi , pero muchos usuarios tienen problemas con  Netduino 2 Plus, lo cual no lo hace recomendable por el momento si se disponen de placas “antiguas”.

Muchas personas que han probado el Api de Adfruit   frente a  Xively Personal  afirman  que Adafruit IO.  es mucho más sencillo de usar  Xively   con la ventaja añadida  que es gratuita y tiene una gran comunidad de usuarios  entusiastas por detrás

 

 

Algunas alternativas posibles en ningún orden en particular (esta lista puede crecer) de plataformas de IoT para experimentar con una placa Netduino:

  • ThingSpeak – la plataforma abierta de IoT con analytics MATLAB, la cual sigue estando disponible para uso no comercial para aficionados  usando cualquier versión  de Netduino con conectividad ( Netduino+,Netduino2+ y Netduino 3)
  • AdaFruit.IO – el internet de las cosas para todos
  • Microsoft IoT Central – grado empresarial IoT SaaS
  • Blynk – democratización de la Internet de las cosas
  • Cayenne – simplificar el mundo conectado  y del que hemos hablado numerosas veces en este blog
  • Plataforma thinger.IO
  • SenseIoT – Internet de cosas datos Hosting plataforma
  • Temboo – herramientas para la transformación Digital
  • Carriots por Altair
  • Nearbus -un proyecto abierto de la IoT
  • ubidots – una aplicación Builder de Internet de las cosas
  • Microsoft IoT Central – empresa grado IoT SaaS
  • Nube de Kii
  • Artika – plataforma End-to-end IoT
  • goplusplatform – conectar tus cosas con ir +
  • ¿?

 

 

Espero que podamos compartir  ejemplos de uso de algunas de estas plataforma  en este humilde blog   como alternativas reales  al antiguo Pachube,   democratizando el uso de Iot  incluso para nuestra placa Netduino , la cual e resiste   a ser reemplazada por otras placas  destinadas a otros usos  y que poco están  quitándole el protagonismo que tubo antaño

Anuncios

Nueva plataforma IoT de código abierto


Existen numerosos protocolos y formatos de datos de IoT, ,algunos de ellos son más populares, como MQTT y JSON, y algunos otros  son   “bastante raros”. Normalmente la mayoría de las plataformas IoT brindan soporte para los protocolos y formatos de datos más populares desde el primer momento, pero es difícil respaldar a todos en una sola solución.

Con el crecimiento de la comunidad de código abierto de la plataforma Thingsboard, ha comenzado a recibir solicitudes sobre el soporte de protocolos IoT, como OPC-UA y algunos formatos de datos específicos, de modo que también han decidido implementar esta funcionalidad como un proyecto separado de código abierto que  permitirá unir la plataforma API a, literalmente, cualquier dispositivo.

El diagrama de flujo de datos es el siguiente

thingsboard

 

IoT Gateway está construido sobre Java, pero es diferente de proyectos similares que aprovechan la tecnología OSGi pues la idea es similar a una arquitectura de microservicios. Después de todo, hay otros lenguajes de programación (C, C ++, Python, Javascript, Go, etc.) que pueden ser más adecuados para el desarrollo de aplicaciones para dispositivos de IoT de destino, especialmente cuando hablamos de API de idiomas y bibliotecas existentes para trabajar con puertos serie , GPIO, I2C y nuevos módulos y sensores que se lanzan todos los días.

El Gateway proporciona API’s  de integración simples y encapsula tareas comunes relacionadas con el tablero de tareas: aprovisionamiento de dispositivos, persistencia y entrega de datos locales, conversores / adaptadores de mensajes, y más.

Como desarrollador de aplicaciones, puede elegir Python, Go, C / C ++ y otros idiomas y conectarse a la puerta de enlace de Thingsboard a través de un intermediario MQTT externo o un servidor OPC-UA. Los dispositivos que admiten otros protocolos se pueden conectar a la puerta de enlace implementando extensiones personalizadas.

La puerta de enlace IoT de Thingsboard ofrece las siguientes características:

  • Extensión OPC-UA para recopilar datos de dispositivos que están conectados a servidores OPC-UA.
  • Extensión MQTT para recopilar datos que se publican en intermediarios MQTT externos.
  • Persistencia de los datos recopilados para garantizar la entrega de datos en caso de fallas de red y hardware.
  • La reconexión automática a los grupos de tableros de cartón.
  • Mapeo simple pero poderoso de los datos y mensajes entrantes en un formato unificado.

El objetivo de lanzamiento inicial de Gateway es llevar la función de recopilación de datos de Bagsboard a dispositivos compatibles con OPC-UA y MQTT. El proyecto Gateway se encuentra actualmente en la etapa de desarrollo activo, y debemos esperar  a los lanzamientos de características principales en los próximos  meses pero el objetivo es unir todas las demás características de Panel de pruebas y permitir configurar y administrar dispositivos de IoT a través de la puerta de enlace usando los widgets y paneles de control de Thingsboard.

 

En este post vamos  a ver como  recopilar y visualizar algunos datos del dispositivo IoT con ThingsBoard permitiendo :

  • Registrar  su dispositivo IoT
  • Administrar credenciales del dispositivo
  • Mandar  los datos del dispositivo a su instancia de ThingsBoard utilizando los protocolos MQTT, CoAP o HTTP
  • Crear un tablero para visualizar los datos

Configuración y requisitos

Si no tiene acceso a una instancia de ThingsBoard en ejecución, use Live Demo o la Guía de instalación para solucionar esto.

Todas las instalaciones de ThingsBoard están equipadas con una cuenta de demostración que simplifica la experiencia del primer usuario. Esta cuenta demo contiene varios dispositivos, cuadros de mando, reglas y complementos preaprovisionados instalados. Tenga en cuenta que puede eliminar esta cuenta en la implementación de producción.

También puede usar emuladores de dispositivo ThingsBoard para simular dispositivos de la vida real y jugar con las API del lado del servidor, la visualización de datos y la lógica de procesamiento.

En este  ejemplo  solo utilizaremos una cuenta de administrador de inquilino preaprovisionada y como hardware una Raspberry Pi 3.

Iniciar sesión como administrador de inquilinos

El primer paso es iniciar sesión en la interfaz de usuario web de administración.

Si está utilizando la instalación local de ThingsBoard, puede iniciar sesión en la interfaz de usuario web de administración utilizando la cuenta predeterminada:

Si usa Live Demo, puede iniciar sesión en el servidor Live Demo utilizando la cuenta de administrador del inquilino (la que creó durante el registro).

imagen

Abra el panel Dispositivos y haga clic en el botón “+” en la esquina inferior derecha de la página.

imagen

Rellene y guarde el nombre del dispositivo (por ejemplo, “SN-001”) aunque más adelante se le llamará $ DEVICE_NAME.

Como los nombres de dispositivo deben ser únicos, por lo general es una buena idea llamar al nombre del dispositivo según un número de serie único u otro identificador de dispositivo. Haga clic en el botón “Agregar” agregará la tarjeta del dispositivo correspondiente al panel.

imagen

Haga clic en la “tarjeta del dispositivo” que hemos creado en el paso anterior. Esta acción abrirá el panel de “detalles del dispositivo”.

Haga clic en el botón “administrar credenciales” en la parte superior del panel. Esta acción abrirá una ventana emergente con credenciales del dispositivo.

imagen

La ventana de credenciales del dispositivo mostrará el token de acceso al dispositivo generado automáticamente que puede cambiar. Guarde este token de dispositivo. Más tarde se lo llamará $ ACCESS_TOKEN .

imagen

¡Felicitaciones! ¡Acaba de aprovisionar su primer dispositivo! Ahora puede enviar algunos datos de este dispositivo a ThingsBoard para su visualización y análisis.

Envío de datos

Para simplificar   enviaremos datos utilizando el protocolo MQTT, CoAP o HTTP desde su PC local.Consulte otros  ejemplos para ejemplos avanzados de varias plataformas de hardware.

Ahora  que ya  tiene creado las credenciales  del   dispositivo ,iInstale el cliente preferido MQTT (Mosquitto o MQTT.js), CoAP (CoAP.js) o HTTP (cURL) con los siguientes comandos.

resources/node-mqtt.sh 
# Assuming you have Node.js and NPM installed on your Windows/Linux/MacOS machine npm install mqtt -g

Cree una carpeta para almacenar todos los archivos necesarios para este ejemplo y descargue a esta carpeta o cree los siguientes archivos de datos:

  • attributes-data.json – contiene dos valores de atributos del dispositivo: la versión del firmware y el número de serie.
  • telemetry-data.json – contiene tres valores de series temporales: temperatura, humedad y bandera activa.

Tenga en cuenta que los datos en estos archivos están básicamente en formato de clave-valor. Puede usar sus propias claves y valores. Consulte la referencia de protocolo MQTT , CoAP o HTTP para obtener más detalles.

resources/attributes-data.json 
{ "firmware_version" : "1.0.1" ,   "serial_number" : "SN-001" } 

Envio de  datos usando MQTT, CoAP o HTTP

Descargue los siguientes archivos a la carpeta creada previamente de acuerdo con el cliente preferido:

Si está utilizando un script de shell (* .sh), asegúrese de que sea ejecutable:

chmod +x * .sh

Antes de ejecutar el script, no olvide:

  • reemplace $ ACCESS_TOKEN por uno de la ventana Credenciales del dispositivo .
  • reemplace $ THINGSBOARD_HOST con 127.0.0.1 (en caso de instalación local) o demo.thingsboard.io (en caso de live-demo).

Finalmente, ejecute el script * .sh o * .bat correspondiente para enviar datos al servidor.

A continuación en estos enlaces  esta  el contenido de los scripts proporcionados.

resources/mqtt-js.sh 
#!/bin/sh # Set ThingsBoard host to "demo.thingsboard.io" or "localhost" export THINGSBOARD_HOST = demo.thingsboard.io # Replace YOUR_ACCESS_TOKEN with one from Device credentials window. export ACCESS_TOKEN = YOUR_ACCESS_TOKEN # Read serial number and firmware version attributes ATTRIBUTES = $( cat attributes-data.json ) export ATTRIBUTES # Read timeseries data as an object without timestamp (server-side timestamp will be used) TELEMETRY = $( cat telemetry-data.json ) export TELEMETRY # publish attributes and telemetry data via mqtt client node publish.js

Visualización de los datos del dispositivo en la interfaz de usuario web

Una vez que ejecute los comandos enumerados arriba, debería ver los atributos y los últimos datos de telemetría en las pestañas de detalles correspondientes del dispositivo.

imagen

imagen

Crear un nuevo tablero para visualizar los datos

La forma más fácil de crear un nuevo tablero es seleccionar los atributos del dispositivo y mostrarlos en el widget

imagen

Una vez que haga clic en el botón “Mostrar en el widget”, verá un panel de “vista previa del widget” donde puede

  • Seleccionar paquete de widgets
  • Seleccione el widget preferido
  • Agregar widget al panel nuevo o existente

imagen

Agreguemos nuestro primer widget al nuevo tablero llamado “SN-001 Dashboard

imagen

Agreguemos  también un widget para visualizar la temperatura:

imagen

Haga clic en Mostrar en el widget y seleccione Paquete de indicadores digitales . Use el carrusel para seleccionar el widget del termómetro como se muestra a continuación.

imagen

Tenga en cuenta que en este caso, agregaremos un widget a un panel ya existente. También seleccionaremos la opción “Open dashboard” para ver los resultados de nuestro trabajo.

imagen

Finalmente, podemos ver nuestro nuevo tablero.

Ahora podemos editar el tablero para:

  • Configurar la configuración del tablero
  • Ajustar tamaños de widgets y diseño
  • Modificar la configuración avanzada del widget individual
  • Agregue nuevos widgets o elimine los existentes
  • Widgets de importación / exportación

imagen

Mas info en https://thingsboard.io/docs/getting-started-guides/helloworld/

Control de GPIO de Raspberry Pi sobre MQTT usando ThingsBoard


ThingsBoard es una plataforma de servidor de código abierto que le permite monitorear y controlar dispositivos IoT. Es gratuita tanto para uso personal como comercial y puede implementarlo en cualquier lugar.

ThingsBoard es pues  una plataforma de IoT de código abierto que permite el desarrollo rápido, la gestión y la ampliación de los proyectos de IoT  de modo  que  puede:

  • Crear dispositivos de provisión y control.
  • Recopilar y visualizad datos de dispositivos.
  • Analizea datos del dispositivo y disparae alarmas.
  • Entregar datos del dispositivo a otros sistemas.
  • Habilitar las funciones específicas de casos de uso usando reglas y complementos personalizables.
  • Proporcionar la nube IoT lista para usar o ser la solución en las instalaciones que habilitará la infraestructura del lado del servidor para sus aplicaciones de IoT.

ThingsBoard es escalable pues es una plataforma escalable horizontalmente y compilación utilizando tecnologías líderes de código abierto, tolerante a errores  pues  no hay punto único de fallo ya que  cada nodo en el clúster es idéntico,es personalizable pues permite agregar nueva funcionalidad es fácil con widgets personalizables, motor de reglas y sistema de complementos, es s duradero  y es robusto y eficiente  pues  el nodo de servidor único puede manejar decenas o incluso cientos de miles de dispositivos según el caso de uso (un cluster ThingsBoard puede manejar millones de dispositivos). Asimismo también puede conectar dispositivos existentes a la plataforma usando ThingsBoard Gateway .

 

ThingsBoard le permite enviar llamadas de procedimiento remoto (RPC) desde aplicaciones del servidor a dispositivos y viceversa. Básicamente, esta característica le permite enviar comandos a dispositivos y recibir resultados de ejecución de comandos. Similarmente, puede ejecutar la solicitud desde el dispositivo, aplicar algunos cálculos u otra lógica del lado del servidor en el back-end y enviar la respuesta de regreso al dispositivo. Esta guía cubre las capacidades de ThingsBoard RPC. Después de leer esta guía, se familiarizará con los siguientes temas:

  • Tipos de llamadas RPC
  • Casos de uso de RPC básicos
  • Las API RPC del lado del cliente y del lado del servidor
  • Widgets RPC

Tipos de llamadas RPC

La característica de RPC de Thinsboard se puede dividir en dos tipos según el originador: llamadas RPC originadas en el dispositivo y originadas en el servidor. Para utilizar nombres más conocidos, denominaremos llamadas RPC originadas en el dispositivo como llamadas RPC del lado del cliente y llamadas RPC originadas en el servidor como llamadas RPC del lado del servidor .

imagen

Las llamadas RPC del lado del servidor se pueden dividir en un solo sentido y bidireccional:

  • La solicitud RPC unidireccional se envía al dispositivo sin confirmación de entrega y, obviamente, no proporciona ninguna respuesta del dispositivo. La llamada RPC puede fallar solo si no hay una conexión activa con el dispositivo objetivo dentro de un período de tiempo de espera configurable.imagen
  • La solicitud de RPC bidireccional se envía al dispositivo y espera recibir una respuesta del dispositivo dentro del tiempo de espera determinado. La solicitud del lado del servidor está bloqueada hasta que el dispositivo de destino responda a la solicitud.imagen

Vamos  a  ver una  aplicación de ejemplo    que  permitirá controlar GPIO de su dispositivo Raspberry Pi utilizando la interfaz de usuario web de ThingsBoard y observaremos el control de GPIO utilizando  un Led conectado a uno de los pines. El propósito de esta aplicación es demostrar las capacidades de ThingsBoard RPC .

Dispositivo RPC API

ThingsBoard está diseñado para ejecutarse y utilizarse en la mayoría del hardware, desde Raspberry PI local hasta potentes servidores en la nube. Las formas de configurar un cluster de ThingsBoard soporta los  siguientes sistemas operativos:

  • Windows : instale el clúster Thingboard en cualquier máquina preexistente que ejecute Windows.
  • Linux (Ubuntu y CentOS) : instala el clúster Thingboard en cualquier máquina preexistente que ejecute Linux.
  • Raspberry Pi 3 Modelo B (Raspbian Jessie) : instala el servidor Cassandra y Thingboard en una Raspberry Pi 3 modelo B.
  • Docker (Linux o Mac OS) : instala un clúster ThingsBoard de un nodo en tu máquina Linux o Mac OS para su desarrollo y prueba.
  • Docker (Windows) : instala un clúster ThingsBoard de un nodo en tu máquina con Windows para su desarrollo y prueba.
  • Instalación de AWC EC2 utilizando AMI : instale un clúster ThingsBoard de nodo único con AWI AMI público.

Asimismo , sin instalar nada ,también si esta es su primera experiencia con la plataforma, puede usar una demostración en vivo para ahorrar tiempo en la instalación (vea la página de documentación de demostración en vivo para más detalles).Ejempl

 

Ejemplo  control de un  led

En  este ejemplo  “hello world”   orientado a controlar un led usaremos  una   Raspberry Pi con una aplicación simple escrita en Python , que se conectará al servidor ThingsBoard a través de MQTT y escuchará los comandos RPC.

El estado GPIO actual y el widget de control GPIO se visualizaran utilizando el panel de control incorporado personalizable.

Por tanto tendrá que tener el servidor ThingsBoard en funcionamiento. Use Live Demo o la Guía de instalación para instalar ThingsBoard.

Lista de hardware y pinouts

  • Raspberry Pi : utilizaremos Raspberry Pi 3 Model B pero puede usar cualquier otro modelo.
  • Led y resistencia correspondiente
  • 2 cables de puente hembra a macho

Dado que nuestra aplicación permitirá controlar el estado de todos los pines GPIO disponibles, recomendamos conectar algunos LED a esos pines para mayor visibilidad. Puede usar culquier  instrucción básica u otra para cablear algunos LED.

Instalación de la biblioteca MQTT

El siguiente comando instalará la biblioteca MQTT Python:

sudo pip install paho-mqtt

La aplicación consiste en un único script python que está bien documentado. Tendrá que modificar la constante THINGSBOARD_HOST para que coincida con su dirección IP de instalación del servidor ThingsBoard o nombre de host. Utilice “demo.thingsboard.io” si está utilizando el servidor de demostración en vivo .

El valor de la constante ACCESS_TOKEN corresponde al dispositivo Raspberry Pi de muestra en datos de demostración preaprovisionados . Si está utilizando un servidor de demostración en vivo , obtenga el token de acceso para el “Dispositivo de demostración Raspberry Pi preaprovisionado”.

 

resources/gpio.py 
import paho.mqtt.client as mqtt
import RPi.GPIO as GPIO
import json

THINGSBOARD_HOST = 'YOUR_THINGSBOARD_IP_OR_HOSTNAME'
ACCESS_TOKEN = 'RASPBERRY_PI_DEMO_TOKEN'

# We assume that all GPIOs are LOW
gpio_state = {7: False, 11: False, 12: False, 13: False, 15: False, 16: False, 18: False, 22: False, 29: False,
              31: False, 32: False, 33: False, 35: False, 36: False, 37: False, 38: False, 40: False}


# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, rc, *extra_params):
    print('Connected with result code ' + str(rc))
    # Subscribing to receive RPC requests
    client.subscribe('v1/devices/me/rpc/request/+')
    # Sending current GPIO status
    client.publish('v1/devices/me/attributes', get_gpio_status(), 1)


# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
    print 'Topic: ' + msg.topic + '\nMessage: ' + str(msg.payload)
    # Decode JSON request
    data = json.loads(msg.payload)
    # Check request method
    if data['method'] == 'getGpioStatus':
        # Reply with GPIO status
        client.publish(msg.topic.replace('request', 'response'), get_gpio_status(), 1)
    elif data['method'] == 'setGpioStatus':
        # Update GPIO status and reply
        set_gpio_status(data['params']['pin'], data['params']['enabled'])
        client.publish(msg.topic.replace('request', 'response'), get_gpio_status(), 1)
        client.publish('v1/devices/me/attributes', get_gpio_status(), 1)


def get_gpio_status():
    # Encode GPIOs state to json
    return json.dumps(gpio_state)


def set_gpio_status(pin, status):
    # Output GPIOs state
    GPIO.output(pin, GPIO.HIGH if status else GPIO.LOW)
    # Update GPIOs state
    gpio_state[pin] = status


# Using board GPIO layout
GPIO.setmode(GPIO.BOARD)
for pin in gpio_state:
    # Set output mode for all GPIO pins
    GPIO.setup(pin, GPIO.OUT)

client = mqtt.Client()
# Register connect callback
client.on_connect = on_connect
# Registed publish message callback
client.on_message = on_message
# Set access token
client.username_pw_set(ACCESS_TOKEN)
# Connect to ThingsBoard using default MQTT port and 60 seconds keepalive interval
client.connect(THINGSBOARD_HOST, 1883, 60)

try:
    client.loop_forever()
except KeyboardInterrupt:
    GPIO.cleanup()

Este simple comando lanzará la aplicación:   python gpio.py

Visualización de datos

Para simplificar esta guía, en  “Raspberry PI GPIO Demo Dashboard” vemos los datos de demostración que están disponibles en cada instalación Thingboard. Aún puede modificar este panel: sintonizar, agregar, eliminar widgets, etc. Puede acceder a este panel iniciando sesión como administrador de inquilinos.

Utilizar en caso de instalación local de ThingsBoard.

 

Una vez que haya iniciado sesión, abra la página Dashboards-> Raspberry PI GPIO Demo Dashboard . Debe observar el tablero de demostración con el panel de control y estado de GPIO para su dispositivo. Ahora puede cambiar el estado de los GPIO usando el panel de control. Como resultado, verá que el estado de los LED cambia en el dispositivo y en el panel de estado.

A continuación se muestra la captura de pantalla del “Tablero Demo de Raspberry PI GPIO”.

imagen

 

 

El vídeo a continuación  resume  todo el proceso  citado llegando  hasta el resultado final :.

Detector de movimiento inteligente


En este ejemplo    volveremos a  usar  un economico NodeMCU ,junto con un  sensor de movimiento PIR  y la plataforma de IoT  Carriots para  construir, usando el IDE de Arduino, un  detector de movimiento inteligente para comerciales y hogar.

El tema  gira en torno a la seguridad de un edificio o casa o una zona restringida detectando cualquier movimiento dentro de un rango específico con un sensor PIR . Gracias al  IoT, además de detectar objetos en movimientos podemos hacer  muchas más cosas como por ejemplo:

  • Encender un dispositivo mediante un relé (en el ejemplo es una luz durante unos 30 segundos).
  •  Al mismo tiempo enviar un correo electrónico al usuario, utilizando la IOT – plataforma Carriots sobre WIFI.
  • El relé se puede conectar a cualquier luz del dispositivo, alarma, cámara, sistema de seguridad…
  • Incluso el disparo puede ser SMS, llamar a las autoridades, llamando a otros servicios…

Node MCU es una plataforma para el desarrollo de proyectos IoT que integra el famoso chip ESP8266, el cual se ha extendido enormemente debido a su facilidad para desarrollar proyectos open source  a los que indudablemente se une su bajisimo precio comparado con otras opciones.
De este componente destaca  integra capacidades de comunicación via WiFi , conteniendo en su interior  microprocesador que puede ser programado fácilmente usando en conocido lenguaje de programación Lua o vía Arduino IDE.

¿Se pregunta cómo controlar  su económico ESP8266 de forma remota desde cualquier lugar del mundo?

En este post repasaremos precisamente el proceso, paso a paso, de cómo escribir código en el IDE de Arduino y programar su ESP8266 permitiendo  que el código  escrito para  el ESP8266 se comunique con la plataforma  de Iot   Carrriots,  la cual  nos va  permitir monitorear  y controlar el ESP8266.

Los pasos  a seguir   para conectar un ESP8266   a  Carriots   son los siguientes:

  •  Instalación del IDE de Arduino .Si aun no lo tiene instalado ,se puede hacer  desde aqui
  • Instalación  del paquete de la placa ESP8266 en Arduino IDE  siguiendo las instrucciones del sitio : https://github.com/esp8266/Arduino

esp

  • Instalación de los controladores USB

Es necesario instalar el controlador USB requerido en su ordenador  para que pueda programar el ESP8266.  Independientemente de la opción de firmware que elijamos, primero necesitamos comunicarnos con la placa de desarrollo ESP-12E utilizando la interfaz USB de la computadora.

El módulo USB a Serial UART incluido en la placa es Silicon Labs ‘CP2012, para lo cual generalmente necesitamos instalar los controladores de puerto COM virtual (VCP) fácilmente disponibles para su sistema operativo específico.Una vez instalado, debemos verificar que el CP2102 sea reconocido por su ordenador

Una vez que el controlador está instalado, podemos conectar el cable USB al puerto USB de la computadora y la placa. Después de hacerlo, deberíamos ver el mensaje: software del controlador del dispositivo instalado correctamente.

Además, podemos verificar manualmente que todo funcione correctamente siguiendo estos pasos:

Abra el Administrador de dispositivos (disponible a través del Panel de control → Sistema y seguridad → Administrador de dispositivos en la sección Sistema)
Debajo de la entrada Puertos (COM & LPT), debe haber un puerto abierto llamado USB-SERIAL CP2102 (COM) donde hay un número típicamente mayor o igual a 3.

Carriots es una Plataforma como Servicio (PaaS en sus siglas en inglés) diseñada para proyectos del Internet de las Cosas (IoT) y de Máquina a Máquina (M2M)

carriots

Carriots es una plataforma IoT creada en España  que  permite crear potentes productos y servicios IoT  haciendo posible conectar fácilmente “sus cosas” al Internet de las Cosas.

Se  pueden construya sus apps inteligentes con Carriots en pocos pasos.

  1. Conectar Dispositivos
  2. Recopilar Datos
  3. Gestionar Dispositivos y Datos
  4. Construir APPs

Principales ventajas

  • Listo para empezar a desarrollar.
  • Minimizar tiempo de desarrollo.
  • Gestión simplificada de múltiples proyectos: Arquitectura de 7 niveles
  • Amplia variedad de APIs y potente SDK: REST API y SDK
  • Escalabilidad inmediata
  • Inicio gratuito y pago por uso.
  • Alojamiento simplificado: Oferta PaaS para escalabilidad fiable.

Hardware

Ahora preparado el entorno , necesitamos el hw  que lo permita , el cual  como vamos a ver,  es muy simple reduciendose a la placa o NodeMCUuna placa de relé, el sensor PIR  y una fuente de 5V DC

Sensor PIR

El sensor PIR usado , es del tipo HC-SR501, de bajo coste   el cual es ampliamente utilizado en diversos equipos eléctricos de detección automática, productos para el control automático especialmente a batería.Tiene alta sensibilidad, alta fiabilidad, bajo consumo de energía, el modo de operación de bajo voltaje.

Especificaciones:

  •  Dimensiones: Cerca de 3,2 x 2,4 cm (L x W).
  •  Rango de tensión: 5V-20V DC.
  •  Corriente estática: < 50uA
  •  Voltaje de salida: 3,3 V (alto) / 0V (bajo)
  •  Modo del disparador: L (no se puede gatillo repetida), H gatillo repetida (Repetición predeterminado de disparo)
  •  El Tiempo de retardo: 0,3 seg 18 seg (ajustable)
  •  Temperatura De funcionamiento: -15 C a 70

 Placa de rele

Por  precio  es mucho mas asequible optar por una placa    de  2 reles    con salida de relé máxima: DC 30V / 10A, AC 250V / 10A. Es  importanet   que el interfaz de tarjeta de relé sea de 5v . En nuestro caso es de 2 canales y cada canal necesita 15-20mA actual controlador

Este tipo de placas es de fácil instalación por el microcontrolador como Arduino, 8051, AVR, PIC, DSP, BRAZO, MSP430, PLC, lógica TTL pues solo ha que conectar la alimentacion  y dos cables de datos en caso de necesitar los dos canales 

Resumiendo , estos son los componentes  necesarias:

  • Placa de desarrollo de NodeMcu Lua WIFI Internet de las cosas basado en ESP8266 – 1 (capacidad de MCU y WIFI)
  • Sensor PIR ( hemos hablado  en este blog )
  • 1 módulo de relé con opto aislamiento de  5V1
  • Fuente de alimentación conmutada  220V/5v ( nos sirve cuaqluier cargador de movil  con salida microusb)
  • Placa Protoboard

Diagrama del circuito:

El circuito   no incluye dificultad alguna ,pues se reduce a conectar el sensor PIR a +5V  y la salida binaria al pin D2, el módulo de rele a +5v   y al pin D2    y por  supuesto la alimentación del circuito que puede ser bien a baterías  o  bien por medio del  propio micro-usb   usado para programar el  NodeMcu

Resumiendo las conexiones con las siguientes:

  • NodeMCU (ESP8266 Dev Kit) D1—> INI del relé
  • NodeMCU (ESP8266 Dev Kit) D2—> Digital sensor PIR
  • NodeMCU (ESP8266 Dev Kit) VCC—> VCC (+) de la batería
  • NodeMCU (ESP8266 Dev Kit) GND—> GND (-) de la batería
  • Relé de VCC—> VCC (+) de la batería
  • Relé de tierra—> GND (-) de la batería
  • PIR Sensor VCC—> VCC (+) de la batería
  • PIR Sensor de tierra—> GND (-) de la batería

Software

Una vez el hardware  montado nos toca escribir el código  el código utilizando el IDE de Arduino para hacer que NodeMCU trabaje con un relé, sensor de movimiento PIR y utilizar IOT plataforma carriots sobre WIFI

El autor se  encontró con  algunos puntos problemas  en el diseño del programa  para ejecutar en la placa NodeMcu;

  • Compruebe que los pines de NodeMcu  están dando la entrada o salida correcta como se están asumiendo, por ejemplo, asegurándose  que usted no está tomando el pin 4 (GPIO) como un pin de entrada asi que por defecto que este pin debe leer…
  • Utilizar un método directo de get y post HTTP en lugar de utilizar una función de visualización por BLYNK o Thinger.io.
  • Observe  que el PIR da salida permanentemenet alta durante un par de envíos pero se necesita traer retraso para evitar el envío de múltiples correos electrónicos. Con algunos servicios como BLYNK este retraso causa un problema  asi que  es mejro a llamar a esa función una vez despues  de 6 o 7 seg.
  • Una vez satisfecha la condición de if loop, llamar a una función, en lugar de escribir todo con el bucle. Esto aporta claridad del código y ayuda en la resolución de problemas.
  • Se  puede  ajustar la sensibilidad del PIR para reducir el tiempo que permanece alta.

A continuación veamos el codigo completo del sw  que habrá que subir  a la placa desde el entorno  de Arduino:

#include “ESP8266WiFi.h”

const char * ssid = “NETGXXXXX”;   //red wifi a la que se conectara

const char * clave = “XXXXXXXXX”;  //clave red wifi para coenctarse

const char * servidor = “api.carriots.com”;

const String APIKEY = XXXXXXXXXX”; //Sustituir con su apikey de Carriots

 const  String DEVICE = “[email protected]”; //Reemplazar por el id_developer del dispositivo de  carriots

int ledpin = 4;

pirpin INT = 12;

int pirstate = LOW;

int val = 0;

void setup() {

Serial.Begin(115200);

Delay(10);

pinMode(ledpin,OUTPUT);

pinMode(pirpin,INPUT);

Serial.println(“calibrando”);

for (int i = 0; i < 20; i ++) {

Serial.Print(“.”);

Delay(1000);

}

//iniciar wifi

Serial.println();

Serial.println();

Serial.Print (“conectarse”);

Serial.println(SSID);

WiFi.begin (ssid, clave);

while  (WiFi.status()! = WL_CONNECTED) {

Delay(500);

Serial.Print(“.”);

}

Serial.println(“”);

Serial.println (“Wi-Fi conectado”);

Serial.println (“dirección IP:”);

Serial.println(WiFi.localIP());

}

//función para hablar con la plataforma Carriot

void sendStream()

{

String txt = “”; //Texto para enviar

if (pirstate == HIGH)

{/ / alarma

txt = “Detecta movimiento;”

} else {/ / alarma en

txt = “Algo mal”;

}

 

Serial.println(txt);

Serial.println(Val); / / para fines de depuración

Client WiFiClient;

const int httpPort = 80;

if  (client.connect (servidor, 80)) {/ / si hay una conexión exitosa

Serial.println(F(“Conectedo”));

//Construir el campo de datos

String json = “{\”protocol\”:\”v2\”,\”device\”:\””+DEVICE+”\”,\”at\”:\”now\”,\”data\”:{\”light\”:\””+txt+”\ “}}”;

//Realizar una solicitud HTTP

Client.println (“POST /streams HTTP/1.1”);

Client.println (“Host: api.carriots.com”);

Client.println (“Accept: aplicación/json”);

Client.println (“User-Agent: Arduino-Carriots”);

Client.println (“Content-Type: aplicación/json”);

Client.Print (“carriots.apikey:”);

Client.println(APIKEY);

Client.Print (“Content-Length:”);

int thisLength = json.length();

Client.println(thisLength);

Client.println (“conexión: cerrar”);

Client.println();

Client.println(JSON);

}

Else {}

//Si no tiene una conexión con el servidor:

Serial.println (F (“Conexión fallida”));

}

}

 

void loop() {}

Val = digitalRead(pirpin);

Serial.println(Val);

if(Val == HIGH) {}

digitalWrite(ledpin,HIGH);

if  (pirstate == LOW) {

Serial.println (“movimiento detectado”);

pirstate = HIGH;

Serial.println (F (“secuencia de enviar”));

sendStream();

Delay(30000);

}

/ * {while(client.available())}

String linea = client.readStringUntil(‘\r’);

Serial.Print(line);

Delay(30000);

} */

}

Else {}

digitalWrite(ledpin,LOW);

if(pirstate == HIGH) {}

Serial.println (“movimiento detectado correo enviado”);

pirstate = LOW;

}

}

}

Programación de disparadores de Carriots enviar Email:

Una vez   que  tenga desplegado el  sw en su  placa NodeMcu  ,la capacidad de activar un correo debe ser  programado o configurado en la plataforma de Internet para este producto que está utilizando (la plataforma Carriots IOT) . Si no sabe como hacerlo en el siguiente video podemso  ver  como  familiarizarse con las funciones y cómo utilizarlas:

 

Obviamente esto podría programarse para llamada, o un texto o una alarma a la policía o quien sea. !Como podemos adivinar   las posibilidades  son infinitas!.

Fuente 

Primeros pasos con ESP8266


Node MCU es una plataforma para el desarrollo de proyectos IoT que integra el famoso chip ESP8266, el cual se ha extendido enormemente debido a su facilidad para desarrollar proyectos open source  que pueden ademas  pueden   involucrar el IoT  .

Esta placa  destaca  porque integra capacidades de comunicación via WiFi , conteniendo en su interior  un microprocesador que puede ser programado fácilmente usando el  conocido lenguaje de programación Lua o bien vía Arduino IDE.

Obviamente ante todo no podemos perder de vista su bajisimo precio ( menos de 10€  ) comparados con otras opciones , pues no debemos olvidar  que incluye  el modulo wifi integrado  y un bus GPIO para conectar dispositivos de E/S.
Node MCU es una plataforma de desarrollo permite un prototipado rápido, para una vez satisfechos con el resultado, portar el desarrollo a un sistema final con un chip ESP8266 como pieza central.

A la hora de programar nuevas funciones, si optamos por utilizar Lua, dispondremos de un sistema simple con buena comunidad de usuarios. En cambio programar con el sistema Arduino nos aporta un fantástico IDE y un sinfin de manuales y ejemplos de desarrollo.

Este modulo es Ideal como una solución independiente en lugar de Arduino además de Wi-Fi  integrado siendo fácil de programar a través del IDE de Arduino (como vamos a ver ) , al igual que un Arduino.
Todos los periféricos con bus I2C puede unirse,por ejemplo Pantallas OLED, pantallas LCD, temperatura, presión, sensores de humedad pueden ser conectados en paralelo. También se puede conectar múltiples DS18B20

Sin embargo, sólo hay una entrada analógica y salida y las pantallas táctiles no se pueden conectar con ella.

 

¿Se pregunta cómo empezar a  desarrollar código  con  su económico ESP8266 ?

Los pasos  a seguir   para conectar un ESP8266     son los siguientes:

  •  Instalación del IDE de Arduino .Si aun no lo tiene instalado ,se puede hacer  desde aqui
  • Instalación  del paquete de la placa ESP8266 en Arduino IDE  siguiendo las instrucciones del sitio : https://github.com/esp8266/Arduino

esp

  • Instalación de los controladores USB

Es necesario instalar el controlador USB requerido en su ordenador  para que pueda programar el ESP8266.  Independientemente de la opción de firmware que elijamos, primero necesitamos comunicarnos con la placa de desarrollo ESP-12E utilizando la interfaz USB de la computadora.

El módulo USB a Serial UART incluido en la placa es Silicon Labs ‘CP2012, para lo cual generalmente necesitamos instalar los controladores de puerto COM virtual (VCP) fácilmente disponibles para su sistema operativo específico.Una vez instalado, debemos verificar que el CP2102 sea reconocido por su ordenador

Una vez que el controlador está instalado, podemos conectar el cable USB al puerto USB de la computadora y la placa. Después de hacerlo, deberíamos ver el mensaje: software del controlador del dispositivo instalado correctamente.

Además, podemos verificar manualmente que todo funcione correctamente siguiendo estos pasos:

Abra el Administrador de dispositivos (disponible a través del Panel de control → Sistema y seguridad → Administrador de dispositivos en la sección Sistema)
Debajo de la entrada Puertos (COM & LPT), debe haber un puerto abierto llamado USB-SERIAL CP2102 (COM) donde hay un número típicamente mayor o igual a 3.

Ahora que estamos listos para comunicarnos con nuestro ESP8266 a través del CP2102, podemos explorar algunas de las diferentes opciones de firmware disponibles.

node.png

  • En el IDE de Arduino, vaya al menú de herramientas, seleccionada su placa y elija el  puerto al que está conectado su ESP8266.En el ejemplo  es el COM11

 

puerto.png

  • Ahora  copie el siguiente código  para probar que puede subir y ejecutar código código  en la placa :

 

/*
ESP8266 Led Parapadeante
*/

void setup(){

pinMode(LED_BUILTIN, OUTPUT);// Initializa el  pin de  LED_BUILTIN como salida

}

void loop() {       // la función de bucle se repite una y otra vez para siempre

digitalWrite(LED_BUILTIN, LOW);// encienda el LED 

delay(1000); //Espera de 1 segundo

digitalWrite(LED_BUILTIN, HIGH);//  Apague el LED haciendo que el voltaje sea ALTO

delay(2000); // Espere dos segundos  para dejar apagado  LED 

}

 

El LED azul en el módulo ESP – 01 está conectado a GPIO 1, (que también es el pin TXD, por lo que no podemos usar Serial.print () al mismo tiempo)

Tenga en cuenta que el nivel de voltaje es BAJO  pero en realidad el LED está encendido, porque es bajo en el ESP – 01

En este código se usa  LED_BUILTIN para encontrar el pin con el LED interno  de modo

Como puede apreciar , el código ejecuta un bucle infinito en el que pone el estado bajo  un segundo (encendiendo el led)    para posteriormente forzar a nivel alto  dos segundos(apagando el led  )  y así   indefinidamente gracias al bucle  que se repite indefinidamente

 

Envio de datos a la nube de Cayenne

  • Agregue la biblioteca de Cayenne MQTT a Arduino IDE  desde aqui como un fuchero zip
  • Instale la biblioteca zip descargada en el paso anterior desde Programa -> Incluir biblioteca -> Añadir libreria ZIP. y seleccionar ahora el fichero descargado con anterioridad  Cayenne-MQTT-ESP-master.zip
  • Ya puede crear una cuenta Starter en cayenne ( si aun no la tiene  ya creada)
  • Una vez ya validado vaya a la esquina  superior  izquierda  y pulse sobre el botón verde  add new
addnew.png
  • Ahora seleccione Generic ESP8266  como la placa y  tome nota  ahora  de los siguintes paraetros ofrecidos por la  pagina:
    •  MQTT USERNAME:
    • MQTT PASSWORD:
    • CLIENT ID:
    • MQTT SERVER:
    • MQTT PORT:
    • NAME YOUR DEVICE (optional):
  • Abra el boceto de ejemplo incluido desde Archivo -> Ejemplos -> Cayenne-MQTT-ESP. Modifique el boceto incluido con su información de red y la información de autenticación de Cayenne que recibió al agregar su dispositivo.

Primeros pasos con ESP8266 y Cayenne


Node MCU es una plataforma para el desarrollo de proyectos IoT que integra el famoso chip ESP8266, el cual se ha extendido enormemente debido a su facilidad para desarrollar proyectos open source  a los que indudablemente se une su bajisimo precio comparado con otras opciones.
De este componente destaca  integra capacidades de comunicación via WiFi , conteniendo en su interior  microprocesador que puede ser programado fácilmente usando en conocido lenguaje de programación Lua o vía Arduino IDE.

¿Se pregunta cómo controlar  su económico ESP8266 de forma remota desde cualquier lugar del mundo?

En este post repasaremos precisamente el proceso, paso a paso, de cómo escribir código en el IDE de Arduino y programar su ESP8266 permitiendo  que el código  escrito para  el ESP8266 se comunique con la plataforma myDevices Cayenne (https://cayenne.mydevices.com) la cual nos va  permitir monitorear y controlar el ESP8266 a través de un tablero muy intuitivo.

 

De  Cayenne hemos hablado  en este humilde blog, en muchisimas  ocasiones pero resumidamente es una solución innovadora   para la construcción de aplicaciones IoT  basada en la mayoría de las  plataformas conocidas como son ArduinoRaspberry piESP8266 y dispositivos  SerialesWifi y dispositivos Lora

Ademas   también  incluye una API Mqtt para conectar cualquier cliente MQTT la cual utilizaremos en este caso

Después de configurar una cuenta en Cayenne, utilizamos el Tablero para configurar un cualquier puerto del GPIO al que conectemos una entrada o una salida  . La comunicación entre el ESP8266 y Cayenne se realiza utilizando un protocolo muy ligero llamado MQTT (http://mqtt.org/).

Una vez que todo esté hecho, podemos monitorear y controlar el ESP8266 desde cualquier parte del mundo simplemente accediendo a Cayenne.

Los pasos  a seguir   para conectar un ESP8266   a  la nube de Cayenne  son los siguientes:

  •  Instalación del IDE de Arduino .Si aun no lo tiene instalado ,se puede hacer  desde aqui
  • Instalación  del paquete de la placa ESP8266 en Arduino IDE  siguiendo las instrucciones del sitio : https://github.com/esp8266/Arduino

esp

  • Instalación de los controladores USB

Es necesario instalar el controlador USB requerido en su ordenador  para que pueda programar el ESP8266.  Independientemente de la opción de firmware que elijamos, primero necesitamos comunicarnos con la placa de desarrollo ESP-12E utilizando la interfaz USB de la computadora.

El módulo USB a Serial UART incluido en la placa es Silicon Labs ‘CP2012, para lo cual generalmente necesitamos instalar los controladores de puerto COM virtual (VCP) fácilmente disponibles para su sistema operativo específico.Una vez instalado, debemos verificar que el CP2102 sea reconocido por su ordenador

Una vez que el controlador está instalado, podemos conectar el cable USB al puerto USB de la computadora y la placa. Después de hacerlo, deberíamos ver el mensaje: software del controlador del dispositivo instalado correctamente.

Además, podemos verificar manualmente que todo funcione correctamente siguiendo estos pasos:

Abra el Administrador de dispositivos (disponible a través del Panel de control → Sistema y seguridad → Administrador de dispositivos en la sección Sistema)
Debajo de la entrada Puertos (COM & LPT), debe haber un puerto abierto llamado USB-SERIAL CP2102 (COM) donde hay un número típicamente mayor o igual a 3.

Ahora que estamos listos para comunicarnos con nuestro ESP8266 a través del CP2102, podemos explorar algunas de las diferentes opciones de firmware disponibles.

  • Agregue la biblioteca de Cayenne MQTT a Arduino IDE  desde aqui como un fuchero zip
  • Instale la biblioteca zip descargada en el paso anterior desde Programa -> Incluir biblioteca -> Añadi libreria ZIP. y selecionar ahorael fichero descargado con anterioridad  Cayenne-MQTT-ESP-master.zip
  • Conecte el ESP8266 a su PC / Mac a través de un cable USB con capacidad de datos.
  • En el IDE de Arduino, vaya al menú de herramientas, seleccione su placa y el puerto al que está conectado su ESP8266.
  • Ya puede crear una cuenta Starter en cayenne ( si aun no la tiene  ya creada)
  • Una vez ya validado vaya a la esquina  superior  izquierda  y pulse sobre el botón verde  add new
addnew.png
  • Ahora seleccione Generic ESP8266  como la placa y  tome nota  ahora  de los siguintes paraetros ofrecidos por la  pagina:
    •  MQTT USERNAME:
    • MQTT PASSWORD:
    • CLIENT ID:
    • MQTT SERVER:
    • MQTT PORT:
    • NAME YOUR DEVICE (optional):
  • Abra el boceto de ejemplo incluido desde Archivo -> Ejemplos -> Cayenne-MQTT-ESP. Modifique el boceto incluido con su información de red y la información de autenticación de Cayenne que recibió al agregar su dispositivo.
.// This example shows how to connect to Cayenne using an ESP8266 and send/receive sample data
.// Make sure you install the ESP8266 Board Package via the Arduino IDE Board Manager and select the correct ESP8266 board before compiling.
//#define CAYENNE_DEBUG
#define CAYENNE_PRINT Serial
#include <CayenneMQTTESP8266.h>
// WiFi network info.
char ssid[] = “ssid”;
char wifiPassword[] = “wifiPassword”;
// Cayenne authentication info. This should be obtained from the Cayenne Dashboard
char username[] = “MQTT_USERNAME”;
char password[] = “MQTT_PASSWORD”;
char clientID[] = “CLIENT_ID”;
unsigned long lastMillis = 0;
void setup()
{ serial.begin(9600);
Cayenne.begin(username, password, clientID, ssid, wifiPassword);
}
void loop()
{
Cayenne.loop();
//Publish data every 10 seconds (10000 milliseconds). Change this value to publish at a different interval.
if (millis() – lastMillis > 10000)
{ lastMillis = millis();
//Write data to Cayenne here. This example just sends the current uptime in milliseconds.
Cayenne.virtualWrite(0, lastMillis);
//Some examples of other functions you can use to send data.
//Cayenne.celsiusWrite(1, 22.0);
//Cayenne.luxWrite(2, 700);
//Cayenne.virtualWrite(3, 50, TYPE_PROXIMITY, UNIT_CENTIMETER);
}
}
//Default function for processing actuator commands from the Cayenne Dashboard.
//You can also use functions for specific channels, e.g CAYENNE_IN(1) for channel 1 commands.
CAYENNE_IN_DEFAULT()
{ CAYENNE_LOG(“CAYENNE_IN_DEFAULT(%u) – %s, %s”, request.channel, getValue.getId(), getValue.asString());
//Process message here. If there is an error set an error message using getValue.setError(), e.g getValue.setError(“Error message”);
}
  • Compile y sube el programa  a su dispositivo. La carga puede requerir configurar el dispositivo en modo de carga de arranque. Para el módulo Adafruit HUZZAH ESP8266, esto se hace siguiendo los siguientes pasos:
    • Mantenga presionado el botón GPIO0.
    • Haga clic en el botón Restablecer.
    • Suelta el botón GPIO0.
    • El LED rojo debería encenderse, lo que indica que el dispositivo está listo para cargar.
    • Cargue su boceto.
    • Compruebe el tablero de Cayenne para asegurarse de que está recibiendo datos de muestra de su dispositivo.

 

Hay mas ejemplos desde el  interfaz de Arduino   en  File → Examples → Cayenne-MQTT-ESP8266 → ESP8266

 

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.