Revista Tecnología

Servidor web para Netduino -Parte1

Publicado el 10 abril 2014 por Soloelectronicos @soloelectronico

En este post   nos vamos a centrar en  una sencilla aplicación llamada NeonMika.Webserver que usando la  comunicación por Internet  permita manejar  la placa  Netduino (leer el ADC, leer y escribir puertos IO, etc) lo cual es perfecto para cualquier persona que  esté desarrollando.

Al ver las soluciones de mercado se puede dibujar sobre la base de los pequeños dispositivos que utilizan un pequeño servidor interno para permitir la configuración del dispositivo, que es una solución muy interesante, ya que no requiere la adición de más puertos de puertos de Ethernet y que ya está disponible en el caso de Netduino

Además, hay 3 formas facilitadas (fácil, ya que no requiere hardware externo) para realizar la configuración:

  • A través de un archivo en la tarjeta microSD (se requiere retirar la tarjeta);
  • A través del puerto USB (requiere disponibles la puerta y hacer un ” miguer “);
  • A través de un servidor web;

Podría decirse que el servidor web es más interesante que las otras soluciones para no razones manera tan evidentes. Puedo destacar el hábito como un fuerte aliado para seleccionar, configurar los dispositivos en la red que ya está familiarizado con el proceso para la página interna del dispositivo (un facilitador) y, además, no es necesario poner a disposición de un puerto USB para alguien que trata de poner un cable en él y finalmente, detener la ejecución del código y dejar tan poco para tarjetas microSD disponible para ser retirado (no es necesario para el tratamiento de la eliminación accidental de la tarjeta).

Finalmente, hago hincapié también que a través del servidor web en el tablero se puede hacer un poco de depuración de código y los datos de la tarjeta microSD, más tarde tengo la intención de detallar una manera para que sea transparente, escribir un archivo de registro de eventos en la tarjeta microSD y luego presentarlo a través del servidor de la página HTML interno.

Otra de las ventajas que pueden ser resaltado es la facilidad de acceso y la configuración remota del tablero. Si la aplicación se coloca en un lugar de difícil acceso se hace más rápido que lo configure a través de Ethernet. Por todas estas razones, no tienen porque se utiliza un servidor web en el Netduino Plus y ahora puede entrar directamente NeonMika.WebServer y usarla.

Primero descargue la última versión deNeonMika.Webserver , si se utiliza. NET MF 4.2, la primera actualización para el proyecto de la solución. NET MF 4.2, a continuación, actualice la otra en secuencia.

NeonMika.Webserver es una pre-configuración y fácil de extender servidor web. Con una mínima (o ninguna) de código que puede lograr grandes resultados para controlar su Netduino +, el acceso y la carga de archivos y mucho más!

Funcionalidades:

  •  Acceso a la tarjeta SD
  •  El control de su Netduino utilizando métodos existentes como setPWM o setDigitalPinState (ver la lista completa a continuación)
  •  La adición de sus propios métodos de servicio web como para que pueda ampliar NeonMika.Webserver a sus propias necesidades de cada proyecto.

¿Es fácil?

WebServer servidor =newServidorPinManagementOnboardLED,80,false,“192.168.0.200″,“255.255.255.0″,“192.168.0.1″,“NETDUINOPLUS”);

El parámetro de configuración son los siguientes: El OnboardLED, Puerto, DHCPenable, ipAdress, subnetMask, puerta de entrada, el nombre.
Usted no necesita nada más para ejecutarlo!

En http://neonmikawebse…m/documentation se puede encontrar una documentación completa sobre cómo configurar el servidor y cómo expandirla.

¿Qué métodos ya se implementan?

Aquí hay una lista con todos los webMethods pre-codificados que se pueden utilizar dentro de tu navegador o cualquier otra aplicación para comunicarse con su Netduino:

  • echo (Devuelve el valor enviado) -> Netduinoplus valor / echo = [az]
  • switchDigitalPin (Cambia el pin seleccionado de verdadero a falso y vis-a-vis)-> Netduinoplus / switchDigitalPin pin = [0-13]
  • setDigitalPin (Ponga el pin digital seleccionado para el estado seleccionado)? -> Netduinoplus / setDigitalPin pin = [0-13] y Estado = [true | false]
  • pwm (Ajuste el PWM del pasador para el período y la duración presentado? -> Netduinoplus / PWM pin = [5 | 6 | 9 | 10] y periodo = [int] y duración = [int]
  • getAnalogPinValue (Devuelve el valor del pin analógico seleccionado)-> Netduinoplus / getAnalogPinValue pin = [0-5]
  • getDigitalPinState (Devuelve el estado de su pin seleccionado (on / off))-> Netduinoplus / getDigitalPinState pin = [0-13]
  • getAllAnalogPinValues ​​(Devuelve el valor de cada pin analógico)-> Netduinoplus / getAllAnalogPinValues
  • getDigitalPinState (Devuelve el estado de cada pin digital)-> Netduinoplus / getAllDigitalPinStates
  • getAllPWMValues ​​(Devuelve los valores para todos los puertos PWM)-> Netduinoplus / getAllPWMValues
  • fileUpload (Carga un archivo en la ruta de acceso de la tarjeta SD a través de POST. Tienes que escribir los datos del archivo (bytes) en el cuerpo POST)-> Netduinoplus / upload path = [az]

Y POR CIERTO:
Archivo y directorio respuesta
Sólo tienes que escribir en netduinoplus / [pathtomyfile] y usted puede ver / descargar el archivo.Si la ruta especificada es un directorio, se devolverá una vista de directorio

Algunos ejemplos:

Comandos de ejemplo (puede ser ejecutado con el navegador):

  • http://192.168.0.2/echo?value=markus
  • http://192.168.0.2/s…in=1&state=true

Mostrar directorio de archivos:

  • http://192.168.0.2/SD

Archivo de Access:

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

Descarga y Documentación:

http://neonmikawebserver.codeplex.com/

http://neonmikawebse…m/documentation

Proyecto y Videos

El control de su Netduino + con el teléfono Android

Gracias a skarphedinnos para este gran video sobre el control de clavijas y PWM con NeonMika.Webserver y Android!

http://www.youtube.c…h?v=Q5T7TQsOf-w

Inicio cervecería

Gracias a la codificación Smackdown para el uso de NeonMika.Webserver en su Proyecto increíble mezcla de la cerveza!

http://diybrewery.com/

N controlador 2 acuario

Gracias a H07R0D !

http://forums.netdui…roller/?p=34544

Cambios en el código de Neomilka werb Server

Para encontrar la IP que se lanzó en la ventana de salida, ha escrito algo así como: “servidor web se ejecuta en 192.168 .5.100 / / / DHCP: Falso “.

. De todos modos,  lleva  buscar dónde colocar la IP que teóricamente se fija, entonces es intersante el código de parición constructor servidor en Server.cs. pero no hay lugar para poner IP fija! Así que el autor hizo  un pequeño cambio en la función, y se veía así:

:

///
/// Creates an instance running in a seperate thread
///
/// OutputPort to indentify
/// The port to listen
///
/// IP
/// Mask
/// GateWay
public Server(OutputPort ledPort, int portNumber = 80, bool DhcpEnable = false,
string ipAddress = “”, string subnetMask = “”, string gatewayAddress = “”)
{
var interf = NetworkInterface.GetAllNetworkInterfaces()[0];

if (DhcpEnable)
{
interf.EnableDhcp();
interf.RenewDhcpLease();
}
else
{
//New to fix
interf.EnableStaticIP(ipAddress, subnetMask , gatewayAddress );

}

Debug.Print(“Webserver is running on ” + interf.IPAddress.ToString() + ” /// DHCP: ” + interf.IsDhcpEnabled.ToString());

this._PortNumber = portNumber;
_OnboardLed = ledPort;
ResponseListInitialize();

_ListeningSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
_ListeningSocket.Bind(new IPEndPoint(IPAddress.Any, portNumber));
_ListeningSocket.Listen(4);

var webserverThread = new Thread(WaitingForRequest);
webserverThread.Start();
}

Y, por supuesto, usted tendrá la opción de declarar una IP fija en Program.cs :

bserver = nuevo Server (PinManagement.OnboardLED, 80, falsos , “192.168.1.41″ , “255.255.255.0″ , “192.168.1.1″ );

Continuando con el código como el  interés principal era usar la tarjeta microSD a pesar de que los métodos eran los correctos, el camino tuvo problemas con las barras “\” y “/”. Así que el autor modifico la funcion  SendResponse para que haga la inversión de la barra de direcciones y buscar en el interior de la tarjeta de la ubicación correcta.

///
/// Sends a 404 Not Found response
///
protected void Send404_NotFound(Socket Client, String Message = null)
{

Debug.GC(true);
if (Client != null)
{
string header = null;

if (Message != null)
{
header = “\n\n\n
HTTP/1.1 404 Not Found
\n” + Message + “
\n\n\n”;
}
else
{
header = “\n\n\n
HTTP/1.1 404 Not Found
\nNeonMika.Webserver is sorry…
\n\n\n”;
}

Client.Send(Encoding.UTF8.GetBytes(header), header.Length, SocketFlags.None );
}
}

Con esto ha llevado a la utilización NeonMika.WebServer y poner una página en la tarjeta SD para probar. Con el fin de probar el autor busco en Internet  un sitio de plantilla qcon fotos y todo y subpáginas y logró tener un buen grado de éxito, aunque las imágenes no se han subido aún …

Para descargar el código con los cambios NeonMika clic aquí .
Para descargar la página para probar la tarjeta MicroSD clic aquí .

Fuente aqui


Servidor web para Netduino -Parte1

Volver a la Portada de Logo Paperblog