LED from web page

Hardware

Connect LED between GND and GPIO9 (CTS) pins.

Prepare firmware

Don't install LUCI (or set different server port number in lighthttpd.conf)

Languages
  PHP
    php5
    php5-fastcgi
    php5-mod-json 
    php5-mod-sockets        
Network
  Web Servers/Proxies
    lighttpd
      lighttpd-mod-cgi
      lighttpd-mod-fastcgi
      lighttpd-mod-simple-vhost

On Carambola

Firewall

Edit wan zone, to allow incoming connections.

vi /etc/config/firewall
config zone
      option name             wan
      option network          'wan'
      option input            ACCEPT
      option output           ACCEPT
      option forward          REJECT
      option masq             1
      option mtu_fix          1
/etc/init.d/firewall restart

lighttpd.conf

vi /etc/lighttpd/lighttpd.conf
server.modules = (
        "mod_cgi"
        )

server.network-backend = "write"
server.document-root = "/www/"
server.errorlog = "/var/log/lighttpd/error.log"
index-file.names = ( "index.html", "default.html", "index.htm", "default.htm" )

## mimetype mapping
mimetype.assign = (
                ".jpg"   => "image/jpeg",
                ".jpeg"  => "image/jpeg",
                ".png"   => "image/png",
                ".css"   => "text/css",
                ".html"  => "text/html",
                ".htm"   => "text/html",
                ".js"    => "text/javascript"
)

$HTTP["url"] =~ "\.pdf$" {
       server.range-requests = "disable"
       }

static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
server.pid-file = "/var/run/lighttpd.pid"
server.upload-dirs = ( "/tmp" )
cgi.assign = ( ".sh"  => "/bin/sh", ".php" => "/usr/bin/php-cgi")

lighthttp stuff

Reload liththttp server.

/etc/init.d/lighttpd reload

View error log.

cat /var/log/lighttpd/error.log 

/www/leds.php

<?php

if ($_POST['initialized']!=1) {
    echo "Initializing port<br>";
    exec("echo 9 > /sys/class/gpio/export", $output, $return);
    exec("echo out > /sys/devices/virtual/gpio/gpio9/direction", $output, $return);
}

if ($_POST['led']==2) {
    echo "Led ON";
    exec("echo 1 > /sys/devices/virtual/gpio/gpio9/value", $output, $return);

}

if ($_POST['led']==1) {
    echo "Led OFF";
    exec("echo 0 > /sys/devices/virtual/gpio/gpio9/value", $output, $return);
}

?>


<form method="post">
<input type="hidden" name="led" value="2">
<input type="hidden" name="initialized" value="1">
<input type="submit" name="submit" value="Led ON"><br>
</form>

<form method="post">
<input type="hidden" name="led" value="1">
<input type="hidden" name="initialized" value="1">
<input type="submit" name="submit" value="Led OFF"><br>
</form>

HTTP testing

After you open this web page for the first time, it initializes GPIO.

After you press button it informs what's the status of the LED.