Browse Source

Modified HTML to call lua script via javascript. Also embedded an image just for stress testing the server

Marcos Kirsch 9 years ago
parent
commit
65538efc1b
2 changed files with 59 additions and 11 deletions
  1. 48 2
      http/garage_door_opener.html
  2. 11 9
      http/garage_door_opener.lua

+ 48 - 2
http/garage_door_opener.html

@@ -6,14 +6,60 @@
       <meta charset="UTF-8">
       <title>Garage Remote</title>
    </head>
+   <script>
+      var xmlHttp = null;
+
+      function pushTheButton(door)
+      {
+         var url = "/garage_door_opener.lua?door=" + door;
+
+         xmlHttp = new XMLHttpRequest();
+         xmlHttp.onreadystatechange = processRequest;
+         xmlHttp.open("GET", url, true);
+         xmlHttp.send( null );
+      }
+
+      function processRequest()
+      {
+         if(xmlHttp.readyState == 0)
+         {
+            document.getElementById('label').innerHTML = 'Initalizing...';
+         }
+         else if(xmlHttp.readyState == 1)
+         {
+            document.getElementById('label').innerHTML = 'Server connection established.';
+         }
+         else if(xmlHttp.readyState == 2)
+         {
+            document.getElementById('label').innerHTML = 'Request received.';
+         }
+         else if(xmlHttp.readyState == 3)
+         {
+            document.getElementById('label').innerHTML = 'Processing request.';
+         }
+         else if(xmlHttp.readyState == 4)
+         {
+            if(xmlHttp.status == 200)
+            {
+               document.getElementById('label').innerHTML = xmlHttp.responseText;
+            }
+            else if(xmlHttp.status == 400)
+            {
+               document.getElementById('label').innerHTML = 'Bad request.';
+            }
+         }
+      }
+   </script>
    <body bgcolor="#777777">
       <link href='http://fonts.googleapis.com/css?family=Khand:700' rel='stylesheet' type='text/css'>
-      <a href="garage_door_opener.lua?door=1" class="button">
+      <a href="#" onclick="pushTheButton(1); " class="button"">
           <span>Door 1</span>
       </a>
-      <a href="garage_door_opener.lua?door=2" class="button">
+      <a href="#" onclick="pushTheButton(2); " class="button"">
           <span>Door 2</span>
       </a>
+      <div id="label">Text goes here</div>
+      <img src="delorean.jpg">
    </body>
 </html>
 

+ 11 - 9
http/garage_door_opener.lua

@@ -4,10 +4,6 @@
 
 local function pushTheButton(connection, pin)
 
-   -- Redirect the user back to the static page where the garage door opener buttons are.
-   connection:send("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\Cache-Control: private, no-store\r\n\r\n")
-   connection:send('<script type="text/javascript">window.location.replace("/garage_door_opener.html");</script>')
-
    -- push the button!
    -- Note that the relays connected to the garage door opener are wired
    -- to close when the GPIO pin is low. This way they don't activate when
@@ -19,12 +15,18 @@ local function pushTheButton(connection, pin)
    gpio.write(pin, gpio.HIGH)
    gpio.mode(pin, gpio.INPUT)
 
+   -- Send back JSON response.
+   connection:send("HTTP/1.0 200 OK\r\nContent-Type: application/json\r\Cache-Control: private, no-store\r\n\r\n")
+   connection:send('{"error":0, "message":"OK"}')
+
 end
 
 return function (connection, args)
-   print('Garage door button was pressed!')
-   print('Door', args.door)
-   if args.door == "1" then pushTheButton(connection, 3)             -- GPIO0
-   elseif args.door == "2" then pushTheButton(connection, 4)         -- GPIO2
-   else dofile("httpserver-error.lc")(connection, {code = 400}) end  -- Bad Request
+   print('Garage door button was pressed!', args.door)
+   if     args.door == "1" then pushTheButton(connection, 3)   -- GPIO0
+   elseif args.door == "2" then pushTheButton(connection, 4)   -- GPIO2
+   else
+      connection:send("HTTP/1.0 400 OK\r\nContent-Type: application/json\r\Cache-Control: private, no-store\r\n\r\n")
+      connection:send('{"error":-1, "message":"Bad door"}')
+   end
 end