Revista 100% Verde

Servidor para Netduino+

Por Soloelectronicos @soloelectronico

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)

Servidor para Netduino+

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é

Servidor para Netduino+

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:

  • 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

Volver a la Portada de Logo Paperblog