.
Vamos a ver cómo aprovecharnos del pequeño httpd server que trae el router para nuestras propias páginas web. (Este server es el utilizado para alojar las páginas de configuración del router).
Las rutas para guardar las páginas web dentro de nuestro router són:
- Estáticas => /tmp/www/
- Dinámicas => /tmp/www/cgi-bin/
PARA PODER USAR CGI SCRIPTS, DEBES TENER UNA VERSIÓN DE DD-WRT ANTERIOR A DD-WRT V24 pre SP2 (svn 12533+), YA QUE HA SIDO INHABILITADO POR MOTIVO DE FALLO DE VULNERABILIDAD. TEN CUIDADO SI VAS A DAR CONECTIVIDAD AL EXTERIOR.
He subido las versiones de firmware que he utilizado:
- DD-WRT v23 mini => PULSA AQUI
- DD-WRT v23 SP2 std => PULSA AQUI
Recuerda que si no tienes una versión DD-WRT en el router, primero se debe enviar el firmware de la versión mini y posteriormente cualquiera de las versiones mayores.
Linksys dispone de la siguiente utilidad soft para flashear el equipo LINKSYS TFTP
Todas las páginas alojadas en /tmp/ se encuentrar en la SDRAM , por lo que se perderán ante un reboot ó perdida de corriente del router. Para tenerlo de forma permanente, tendrás que tener el mod de SD ó tener un router con USB.
El CGI (Common Gateway Interface) define una manera para que un servidor web pueda delegar la generación de páginas web a una aplicación de consola. Es el método más simple de disponer contenido dinámico en un sitio web. Es decir, si ingresamos la URL http://ip_router/user/cgi-bin/test.sh, el servidor de nuestro router intentará ejecutar el archivo /tmp/www/cgi-bin/test.sh y retornará la salida de dicho script.
Veamos un ejemplo sencillo que muestra Hola Mundo!! y la fecha (obtenida del router). Creamos nuesto script en /tmp/www/cgi-bin/test.sh
Veamos un ejemplo sencillo que muestra Hola Mundo!! y la fecha (obtenida del router). Creamos nuesto script en /tmp/www/cgi-bin/test.sh
#!/bin/sh echo "<html><head><title>Test CGI" echo "</title></head><body>" echo "<h1>Hola Mundo</h1>" echo "Hoy es $(date)" echo "</body></html>"
Otorgamos permiso de ejecución /tmp/www/cgi-bin # chmod +x test.sh
Abrimos nuestro Navegador http://ip_router/user/cgi-bin/test.sh
(Lo más rápido y sencillo es trabajar con WinSCP)
Ahora, veamos el ejemplo que siempre ponemos de encender/apagar un led, ya visto anteriormente aqui.
1) Crearemos una página web (html)
Código
<html> <head> </head> <body link=red vlink=red alink=red> <div style="text-align:center;"> <img src="/user/logo.jpg"> </div> <br/> <div style="text-align:center;"> <span style="font-size:x-large;"> <a href="/user/cgi-bin/led_on.sh">LED ON</a> <a href="/user/cgi-bin/led_off.sh">LED OFF</a> </span> </div> <br/><br/><br/><br/> <div style="color:blue;text-align:center;"> <span style="font-size:x-large;"> http://real2electronics.blogspot.com </span></div> </body> </html>
Contiene una foto del logo y un par de links que apuntan a los scripts led_on.sh y led_off.sh
2) Crear el script: led_on.sh
#!/bin/sh echo "S1F" > /dev/cua/1 echo "<HTML>" echo "<HEAD>" echo "<META HTTP-EQUIV=Refresh CONTENT=0;URL=/user/control.html>" echo "</HEAD><BODY>" echo "</BODY></HTML>"
El script envia la orden de encender por el puerto serie y redirecciona a la página principal (control.html).
3) Crear el script: led_off.sh
#!/bin/sh echo "S0F" > /dev/cua/1 echo "<HTML>" echo "<HEAD>" echo "<META HTTP-EQUIV=Refresh CONTENT=0;URL=/user/control.html>" echo "</HEAD><BODY>" echo "</BODY></HTML>"
El script envia la orden de apagar por el puerto serie y redirecciona a la página principal (control.html).
4) Otorgamos permisos de ejecución a dichos scripts.
5) Deberíamos tener una estructura asi:
Veamos el resultado final con un video:
Ahora ya sólo imaginación.... ¿qué tal subir/bajar la puerta del garage mediante Wifi y un móvil? Ya he probado a conectarme con mi nokia n85 y va perfecto!! ...je,je,je
.
Para flashear el router, Linksys dispone de la siguiente utilidad TFTP software:
ResponderEliminarhttp://cid-d2ee689f353f15bc.photos.live.com/self.aspx/P%c3%bablico/Tftp^J0.exe
HOlaa! que buen proyecto, disculpa tendras el codigo del arduino para este ejemplo?
ResponderEliminarevil.7.tools@gmail.com
Hola tendras el codigo del arduino de este ejemplo
ResponderEliminarHola Evil,
ResponderEliminarEs el usado en http://real2electronics.blogspot.com/2009/10/linksys-arduino.html
Saludos!
Igor
hola igor , estube mirando este codigo y lo compile junto al codigo que tienes para ard y no encuentro la forma de comunicacion del html al serial, espero tu respuesta y gracias por estos aportes! Saludos!
ResponderEliminarSi te fijas, en el html, cuando pulsas el icono llama a las scripts led_on.sh y led_off.sh. Ejemplo: LED ON
ResponderEliminarEn dichos scripts, es donde mandas la orden a Arduino, por ejemplo => echo "S1F" > /dev/cua/1
Saludos
Me ha cogido el html en mi post...je,je,je
ResponderEliminarA ver si me deja ahora:
< a href= "/user/cgi-bin/led_on.sh " > LED ON < /a >
Hello,
ResponderEliminarI'm french and only speak English.
So i have a problem
i create in my wrt54G :
/tmp/www/
/tmp/www/cgi-bin/
and copy the file test.sh
when i log in
http://192.168.1.1/user/cgi-bin/test.sh
nothing appear.
When i reboot all the file in tmp/www disapear.
Any idea.
Daniel
Strasbourg
Yes,it's normal. I added the SD hack to the router to have permanently all the files.
ResponderEliminarCheck http://www.dd-wrt.com/wiki/index.php/JFFS
Regards,
Igor
y porque no utlisas un html para enviar la orden?? tb se puede no en vez de usar un .sh
ResponderEliminarbuenas amigo en que parte y como se guarda, el programa hecho de control? se que si no queremos que se borre es en la mmc, pero en dado caso si es un programa pequeño en que parte y como se guardaria? gracias
ResponderEliminarHola amigo puedes usar http://winscp.net/eng/download.php para windows o bien si trabajas con linux puedes usar scp
Eliminarscp [[usuario@]máquina:]ruta ... [[usuario@]máquina:]ruta
por ejemplo:
sudo scp /home/kyokorn/ejemplo.sh root@192.168.1.1;/opt/share/www/cgibin
Salu2
kyokorn
buenas, se podria realizar para un tp-link mr3020?. saludos
ResponderEliminar