Envio de datos desde Netduino 2+ a thinkspeak

Thingspeak es una plataforma de datos abierta para el Internet de las cosas, que permite la recogida de datos en tiempo real con una API abierta y sofisticadas capacidades de procesamiento de datos y análisis. Con plugins, visualizaciones de datos y la capacidad de integrar sus datos con una variedad de plataformas de terceros, sistemas y tecnologías, incluyendo otras plataformas líderes de la IO como ioBridge y Arduino, ThingSpeak es el complemento perfecto para un sistema empresarial existente para aprovechar el Internet de las Cosas

Las  Características principales de este servicio es de contar  con un  API abierta, integración con Raspberry Pi, Arduino, ioBridge / RealTime.io y Netduino Datos de localización geográfica, procesamiento de datos y visualizaciones, mensajes de estado del dispositivo,integración con redes sociales,integraciones con el análisis de datos y servicios de terceros y todo ello con un costo GRATIS.

 

Gracias al método  HttpWebRequest incluido en el  Micro  Framework 4.2 es posible conectar  con un servidor remoto desde Netduino 2+  de una forma bastante sencilla mediante el citado método :

WebRequest request = HttpWebRequest.Create(url);

Donde en la variable url  preferiblemente se incluirá  a ser posible el nombre del servicio en formato numerico (la direccion IP) en lugar del nombre completo para evitar problemas .Asimismo lo ideal es  acceder al servicio a través de HTTP en lugar de HTTPS pues no hay soporte para SSL en Netduino Plus 2 en el firmware actual.

Además, es posible que desee agregar una «verificación para asegurarse de que mi placa tiene una dirección de Internet» poco de código en la superior si se está utilizando DHCP … en caso de que se necesite unos segundos para obtener y resolver una dirección IP de su router.

Por cierto el código de ejemplo no sólo sirve para enviar información de sensores a la plataforma Think Speak ,pues modificando los valores de configuración del servidor, los valores de api_key y el valor del nombre del campo a enviar , es posible el envío a cualquier otra plataforma de IoT ( por ejemplo cosm.com)

Veamos un ejemplo de  programa que actualiza el estado del interruptor Netduino   Plus para Thingspeak :

/*This program updates the Netduino Plus switch state to Thingspeak*/
using System;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;
using System.Text;
using System.IO;


namespace LED__control_Thingspeak
{
    public class Program
    {
        public static void Main()
        {
            var SwitchPort = new InputPort(Pins.ONBOARD_BTN, false, Port.ResistorMode.
                Disabled);                                                           //Open the switchport

            bool onned = SwitchPort.Read();//Read the status of switchport

            if (onned)
            {
                update_thingspeak("30");
            }
            else
            {
                update_thingspeak("60");
            }

        }//Main ends

        static void update_thingspeak(string value)
        {
            //Create a http response object
                WebRequest request = HttpWebRequest.Create("http://api.thingspeak.com/update");
            //Setting the request method
                request.Method = "POST";
            //The data to be sent
                string data = "api_key=" + "T5Q1Y9QBY1TULCBG" + "&field1=" + value;
            //Creating the byte array
                byte[] bytearray = Encoding.UTF8.GetBytes(data);
            //Setting the MIME
                request.ContentType = "application/x-www-form-urlencoded";
                request.ContentLength = bytearray.Length;
            //Opening the datastream
                Stream datastream = request.GetRequestStream();
            //Writing to the datastream
                datastream.Write(bytearray, 0, bytearray.Length);
            //Closing the stream
                datastream.Close();
            

            //Obtaining a response
                WebResponse response = request.GetResponse();//Creating a response
                datastream = response.GetResponseStream();//Getting the response stream
                StreamReader reader = new StreamReader(datastream);// Read the content.
                string responseFromServer = reader.ReadToEnd();// Display the content.
                Debug.Print(responseFromServer);
            
        }//update_thingspeak ends
    }//class program ends
}//namespace ends




Fuente  aqui

Deja una respuesta