Difference between revisions of "Install REST"

From xPL
Jump to: navigation, search
(Implement a webserver client)
(Replaced content with "Controlling the home from distance can be made via web access methods such as the [http://en.wikipedia.org/wiki/Representational_state_transfer#RESTful_web_APIs RESTful] A...")
Line 1: Line 1:
Controlling the home from distance is made via a web access.
+
Controlling the home from distance can be made via web access methods such as the [http://en.wikipedia.org/wiki/Representational_state_transfer#RESTful_web_APIs RESTful] API.
  
In this example, the server is <code>harmonia.local</code>: evidently, this has to be replaced by your local server name.
+
Before all, make sure you have installed an [[install xpl hub|xPL hub]].
  
 
= Install a web server =
 
= Install a web server =
 
Install the [http://www.lighttpd.net web server]:
 
su
 
apt-get update
 
apt-get install lighttpd
 
apt-get install php5-cgi
 
lighttpd-enable-mod fastcgi fastcgi-php
 
service lighttpd reload
 
service lighttpd status
 
 
Configure the base directory and modify the line with <code>server.document-root</code>:
 
WWW_ROOT=/mnt/storage/www/
 
nano /etc/lighttpd/lighttpd.conf
 
service lighttpd reload
 
cp /var/www/index.lighttpd.html $WWW_ROOT
 
 
Navigate to your server within a web browser.
 
You should discover the default [http://www.lighttpd.net lighttpd] placeholder page.
 
 
= Install the webSocket libraries =
 
 
== jQuery ==
 
 
Download the [http://jquery.com/download/ latest compressed, production jQuery version].
 
wget http://code.jquery.com/jquery-2.1.4.min.js
 
 
== XML::Simple ==
 
 
Check if the <code>XML::Simple</code> is already installed:
 
perl -MFile::Find=find -MFile::Spec::Functions -Tlw -e 'find { wanted => sub { print canonpath $_ if /\.pm\z/ }, no_chdir => 1 }, @INC' 2> /dev/null | grep -i 'XML/Simple.pm'
 
 
Install the library:
 
perl -MCPAN -e "install 'XML::Simple'"
 
 
Alternatively, on Ubuntu:
 
apt-get install libxml-simple-perl
 
 
== Net::WebSocket::Server ==
 
 
Check if the <code> XML::Simple</code> is already installed:
 
perl -MFile::Find=find -MFile::Spec::Functions -Tlw -e 'find { wanted => sub { print canonpath $_ if /\.pm\z/ }, no_chdir => 1 }, @INC' 2> /dev/null | grep -i 'WebSocket/Server.pm'
 
 
Install the library:
 
perl -MCPAN -e "install 'Net::WebSocket::Server'"
 
 
= Prepare a home control page =
 
 
Create the home control directory:
 
WWW_CONTROL=$WWW_ROOT/homeControl
 
mkdir -p $WWW_CONTROL
 
chmod -R 775 $WWW_CONTROL
 
chown -R control:users $WWW_CONTROL
 
cd $WWW_CONTROL
 
 
In this directory, create a <code>simple.html</code> control page:
 
<pre>
 
<html>
 
  <head>
 
    <script src="//code.jquery.com/jquery-1.11.0.min.js">
 
    </script>
 
  </head>
 
  <body>
 
    <!-- Light controls .................................................... -->
 
    <br />
 
    <table align="center" border='0px' cellpadding='12px' cellspacing='0px' bgcolor="#CCCCCC">
 
      <tr>
 
        <th width="240px">ceiling</th>
 
        <th width="240px">stand</th>
 
      </tr>
 
      <tr>
 
        <td align="center"><input id="ceiling" type="checkbox" /></td>
 
        <td align="center"><input id="stand" type="checkbox" /></td>
 
      </tr>
 
    </table>
 
 
    <!-- Websocket java script ............................................. -->
 
    <script>
 
      $().ready(function() {
 
        var ws = new WebSocket('ws://harmonia.local:8080/');
 
 
        ws.onopen = function() {
 
          console.log("Web socket started");
 
        }
 
                                                            // outgoing messages
 
        $('#ceiling').on('change', function() {
 
          ws.send('ceiling ' + $(this).is(':checked'));
 
        });
 
        $('#stand').on('change', function() {
 
          ws.send('stand ' + $(this).is(':checked'));
 
        });
 
                                                              // polling message
 
        window.setInterval(
 
          function() {
 
            ws.send('poll request');
 
          }
 
          , 100
 
        );
 
                                                            // incoming messages
 
        ws.onmessage = function(message) {
 
          console.log(message.data);
 
          var words = message.data.split(' ');
 
 
          if (words[0] === 'ceiling') {
 
              $('#ceiling').prop('checked', words[1] == 'true');
 
          }
 
          if (words[0] === 'stand') {
 
              $('#stand').prop('checked', words[1] == 'true');
 
          }
 
        }
 
      });
 
    </script>
 
 
  </body>
 
</html>
 
</pre>
 
Navigate to the control page: <code>http://harmonia.local/homeControl/simple.html</code>
 
 
= Implement a WebSocket server =
 
  
  
 
[[Category: all]] [[Category: install]] [[Category: web]]
 
[[Category: all]] [[Category: install]] [[Category: web]]

Revision as of 10:26, 3 June 2015

Controlling the home from distance can be made via web access methods such as the RESTful API.

Before all, make sure you have installed an xPL hub.

Install a web server