From 61e6594854584214ad426e5a017e0ed49458c410 Mon Sep 17 00:00:00 2001 From: Nick Hehr Date: Tue, 5 Jan 2016 17:26:56 -0500 Subject: [PATCH] splits ap tutorial into two pages, new webserver page --- _layouts/default.html | 20 ++-- ap.md | 244 ++++------------------------------------- blinky.md | 2 +- gpio.md | 2 +- images/Tessel-AP.png | Bin 156012 -> 126967 bytes images/router.png | Bin 199238 -> 178006 bytes tweet.md | 2 +- webserver.html | 9 ++ webserver.md | 250 ++++++++++++++++++++++++++++++++++++++++++ wifi.md | 2 +- 10 files changed, 300 insertions(+), 231 deletions(-) create mode 100644 webserver.html create mode 100644 webserver.md diff --git a/_layouts/default.html b/_layouts/default.html index fad56a5..fb53e91 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -79,6 +79,9 @@

wifi +
  • + access point +
  • blinky
  • @@ -89,7 +92,7 @@

    tweet
  • - access point + webserver
  • gpio @@ -113,10 +116,13 @@

    2. wifi

  • - 3. blinky + 3. access point +
  • +
  • + 4. blinky
  • - 4. modules + 5. modules diff --git a/ap.md b/ap.md index 7e830a5..d6c0c24 100644 --- a/ap.md +++ b/ap.md @@ -1,245 +1,49 @@ {::options parse_block_html="true" /}
    -
    -# Build Your Own Internet +
    +# Making Tessel An Access Point
    -
    +
    -As explained in [wifi tutorial](/wifi.html), Tessel 2 can easily connect to wifi networks using the command line tool. If we're using a device connected to the same network as the Tessel, then we can connect to it through our device's web browser. Like most network-connected devices, communication over the web depends on a shared router, or access point, to direct requests and responses between every device on the network or through the Internet. This is fine and dandy if we want to use Tessel in a place with an available network, but what happens when that's not possible? +A typical WiFi setup consists of a couple of devices: a modem, which is connected by wire to the internet, and a wireless access point (also called a WAP or router), wired to the modem, which directs requests and responses between every device on the network. + +As explained in [wifi tutorial](/wifi.html), Tessel 2 can easily connect to wifi networks using the command line tool. If your computer is connected to the same WAP as the Tessel, then the two devices can talk to each other. This is how we push code to Tessel over LAN (local area network). + +The connection setup looks about like this:
    -
    +
    ![router](./images/router.png)
    -
    -Instead of requiring a shared network through a standalone router, we can use the command line tool for configuring Tessel to emit a custom Wifi network and use it as an access point. Then, using Node, we can also start a web server for communicating with any connected device. Unfortunately, we won't be able to connect to the Internet but there is still a lot we can do without that. By the end of this article, we'll be able to control the Tessel LEDs through a web app served by the Tessel. +
    +This is fine and dandy if we want to use Tessel in a place where there's a modem and WAP already set up, but what happens when that's not possible? + +We can't access the Internet without a modem, but we can create a LAN connection between devices by turning Tessel 2 into a WAP. Devices on the network can all talk to each other, like this: +
    -
    +
    ![router](./images/Tessel-AP.png)
    +
    +This tutorial shows you to turn Tessel into a wireless access point, thus creating your own local network. +
    -
    +

    -In your command line, make a folder for your Tessel code, then initialize a Tessel project in that folder by running each of the following commands in the terminal: - -`mkdir tessel-router` - -`cd tessel-router` - -`t2 init` - -Rename the “index.js” file you’ve just created to “ap.js”, then copy and paste the below script over the existing text: - -{% highlight javascript %} -// Import the interface to Tessel hardware -var tessel = require('tessel'); -// Load the http module to create an http server. -var http = require('http'); - -// Configure our HTTP server to respond with "Hello from Tessel!" to all requests. -var server = http.createServer(function (request, response) { - response.writeHead(200, {"Content-Type": "text/plain"}); - response.end("Hello from Tessel!\n"); -}); - -// Listen on port 8080, IP defaults to 192.168.1.101. Also accessible through [tessel-name].local -server.listen(8080); - -// Put a friendly message on the terminal -console.log("Server running at http://192.168.1.101:8080/"); - -{% endhighlight %} Now that our server is in place, let's get our access point set up. In the terminal, run the following command: -`t2 ap -n TesselRouter` - -This will make an open, or password-less, wifi network called TesselRouter. If you open the wifi setting of your computer or a separate device like a smartphone or tablet, and scan for new devices, you should be able to see and connect to this new network. For info about making a secure network, take a look at [the cli docs](https://tessel.io/docs/cli#usage). After connecting to TesselRouter, run the following command in your terminal: - -`t2 run ap.js` - -
    -Once you see "Server running at http://192.168.1.101:8080/" in the terminal, we can connect to that URL (or http://tessel.local:8080/, replacing "tessel" with the name of your Tessel) in a web browser of the device connected to the TesselRouter network. -
    - -
    -![web app screenshot](./images/hello-tessel.png) -
    - -Now let's take it up a notch by adding some interactivity between the web page and the Tessel! - -
    - -Let's start this next part by building out the web page we want Tessel to send to your web browser. Create a file called `index.html` in your project directory and open it up in your preferred text editor to add the initial html for our web page: - -{% highlight html %} - - - - - Tessel Web App - - -

    Hello from Tessel!

    -

    Press a button to toggle an LED.

    -
      -
    • - - Status: -
    • -
    • - - Status: -
    • -
    - - -{% endhighlight %} - -
    -In that html, we have a heading, a line of instructions for the user, and a list of buttons for controlling a corresponding LED on the Tessel. Below that list of buttons we'll add some JavaScript for communicating with the Tessel: -
    - -
    -![web app screenshot](./images/ap-web-app-preview.png) -
    - -We will add the following JavaScript before `` tag: - -{% highlight html %} - -{% endhighlight %} - -Now let's check out `ap.js` again to finish up the project. First, we're going to make a few changes to our server setup: - -{% highlight javascript %} -// These two dependencies remain the same -var tessel = require('tessel'); -var http = require('http'); - -// Require two other core Node.js modules -var fs = require('fs'); -var url = require('url'); - -var server = http.createServer(function (request, response) { - // Here is the biggest change - var urlParts = url.parse(request.url, true); // Break up the url into easier-to-use parts - var ledRegex = /leds/; // Create a regular expression to match requests to toggle LEDs - - if (urlParts.pathname.match(ledRegex)) { - // If there is a request containing the string 'leds' call a function, toggleLED - toggleLED(urlParts.pathname, request, response); - } else { - // All other request will call a function, showIndex - showIndex(urlParts.pathname, request, response); - } -}); - -// Stays the same -server.listen(8080); +`t2 ap -n MyTessel` -// Stays the same -console.log('Server running at http://192.168.1.101:8080/'); -{% endhighlight %} - -Inside our `createServer` callback function, we've replaced the old plain text response with a basic router that catches requests to '/leds/:index' and defaults all other requests to a separate function. Let's add those functions below the `console.log`: - -{% highlight javascript %} -// Respond to the request with our index.html page -function showIndex (url, request, response) { - response.writeHead(200, {"Content-Type": "text/html"}); - // Use fs to read in index.html - fs.readFile(__dirname + '/index.html', function (err, content) { - if (err) { - throw err; - } - - // Serve the content of index.html read in by fs - response.end(content); - }); -} - -// Toggle the led specified in the url and respond with its state -function toggleLED (url, request, response) { - var indexRegex = /(\d)$/; // Create a regular expression to find the number at the end of the url - var result = indexRegex.exec(url); // Capture the number, returns an array - var index = +result[1]; // Grab the captured result from the array and make sure it's a Number - - var led = tessel.led[index]; // Use the index to refence the correct LED - - // Toggle the state of the led and call the callback after that's done - led.toggle(function (err) { - if (err) { - // Log the error and send back a 500 (internal server error) response to the client - console.log(err); - response.writeHead(500, {"Content-Type": "application/json"}); - response.end(JSON.stringify({error: err})); - } else { - // The led was successfully toggled, so respond with the state of the toggled led using led.isOn - response.writeHead(200, {"Content-Type": "application/json"}); - response.end(JSON.stringify({on: led.isOn})); - } - }); -} -{% endhighlight %} - -One last step is to create a `.tesselinclude` file in the project directory and add any files not required by `ap.js` that we want to deploy with it. For this project, that means adding one line: - -``` -index.html -``` - -Finally, let's fire up our server again by running: - -`t2 run ap.js` - -
    -Just like before, once you see the "Server running at http://192.168.1.101:8080/" message in your terminal, you should be able to connect to that url in the web browser of the device connected to the TesselRouter network. After connecting, you should see the index.html view we built earlier and, after clicking/tapping the buttons, see either the blue or green LEDs on the Tessel should be toggled on or off. -
    - -
    - -
    +This will make an open, or password-less, wifi network called MyTessel. If you open the wifi setting of your computer or a separate device like a smartphone or tablet, and scan for new devices, you should be able to see and connect to this new network. For info about making a secure network, take a look at [the cli docs](https://tessel.io/docs/cli#usage).
    -**Bonus:** Add a way to toggle the red LED as well. +**Bonus:** Create an network that requires a password.
    @@ -247,10 +51,10 @@ Just like before, once you see the "Server running at http://192.168.1.101:8080/ diff --git a/blinky.md b/blinky.md index 9d499cf..67da49b 100644 --- a/blinky.md +++ b/blinky.md @@ -107,7 +107,7 @@ Learn more `t2` commands by running `t2 -h` or looking at the [T2 CLI docs](http
    diff --git a/gpio.md b/gpio.md index a3cfd93..47675df 100644 --- a/gpio.md +++ b/gpio.md @@ -66,7 +66,7 @@ Share what you've made, and if you need help, [just ask](https://forums.tessel.i
    diff --git a/images/Tessel-AP.png b/images/Tessel-AP.png index dcec8fb56434077975516747d11f6010879df361..13ed35e0ced55baeee2724c4b4c21c4c3d9d57cf 100644 GIT binary patch literal 126967 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 literal 156012 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 G{J#L?(}F+% diff --git a/images/router.png b/images/router.png index 7b6bd215a42a445608345e5c4968532d68a4e887..4b6ec0b1d333b27754adee450463548a23ba47b3 100644 GIT binary patch literal 178006 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 CIkVpY literal 199238 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 H@C^Gu0E!BP diff --git a/tweet.md b/tweet.md index 6b005b2..0b7d442 100644 --- a/tweet.md +++ b/tweet.md @@ -93,7 +93,7 @@ _That `--slim` command is a new feature we're testing out which cleverly checks Modules
    diff --git a/webserver.html b/webserver.html new file mode 100644 index 0000000..c09cb52 --- /dev/null +++ b/webserver.html @@ -0,0 +1,9 @@ +--- +layout: default +--- + +{% capture include_install %} +{% include_relative webserver.md %} +{% endcapture %} +{{ include_install | markdownify }} + diff --git a/webserver.md b/webserver.md new file mode 100644 index 0000000..a12153b --- /dev/null +++ b/webserver.md @@ -0,0 +1,250 @@ +{::options parse_block_html="true" /} + +
    +
    +# Build Your Own Internet +
    +
    + +NEW INTRO NEEDED + +
    +
    +By the end of this article, we'll be able to control the Tessel LEDs through a web app served by the Tessel. +
    +
    + +
    +
    + +
    +In your command line, make a folder for your Tessel code, then initialize a Tessel project in that folder by running each of the following commands in the terminal: + +`mkdir tessel-router` + +`cd tessel-router` + +`t2 init` + +Rename the “index.js” file you’ve just created to “ap.js”, then copy and paste the below script over the existing text: + +{% highlight javascript %} +// Import the interface to Tessel hardware +var tessel = require('tessel'); +// Load the http module to create an http server. +var http = require('http'); + +// Configure our HTTP server to respond with "Hello from Tessel!" to all requests. +var server = http.createServer(function (request, response) { + response.writeHead(200, {"Content-Type": "text/plain"}); + response.end("Hello from Tessel!\n"); +}); + +// Listen on port 8080, IP defaults to 192.168.1.101. Also accessible through [tessel-name].local +server.listen(8080); + +// Put a friendly message on the terminal +console.log("Server running at http://192.168.1.101:8080/"); + +{% endhighlight %} + +Now that our server is in place, let's get our access point set up. In the terminal, run the following command: + +`t2 ap -n TesselRouter` + +If you haven't read about creating access points yet, check out the [access point tutorial](/ap.html). After connecting to TesselRouter, run the following command in your terminal: + +`t2 run ap.js` + +
    +Once you see "Server running at http://192.168.1.101:8080/" in the terminal, we can connect to that URL (or http://tessel.local:8080/, replacing "tessel" with the name of your Tessel) in a web browser of the device connected to the TesselRouter network. +
    + +
    +![web app screenshot](./images/hello-tessel.png) +
    + +Now let's take it up a notch by adding some interactivity between the web page and the Tessel! + +
    + +Let's start this next part by building out the web page we want Tessel to send to your web browser. Create a file called `index.html` in your project directory and open it up in your preferred text editor to add the initial html for our web page: + +{% highlight html %} + + + + + Tessel Web App + + +

    Hello from Tessel!

    +

    Press a button to toggle an LED.

    +
      +
    • + + Status: +
    • +
    • + + Status: +
    • +
    + + +{% endhighlight %} + +
    +In that html, we have a heading, a line of instructions for the user, and a list of buttons for controlling a corresponding LED on the Tessel. Below that list of buttons we'll add some JavaScript for communicating with the Tessel: +
    + +
    +![web app screenshot](./images/ap-web-app-preview.png) +
    + +We will add the following JavaScript before `` tag: + +{% highlight html %} + +{% endhighlight %} + +Now let's check out `ap.js` again to finish up the project. First, we're going to make a few changes to our server setup: + +{% highlight javascript %} +// These two dependencies remain the same +var tessel = require('tessel'); +var http = require('http'); + +// Require two other core Node.js modules +var fs = require('fs'); +var url = require('url'); + +var server = http.createServer(function (request, response) { + // Here is the biggest change + var urlParts = url.parse(request.url, true); // Break up the url into easier-to-use parts + var ledRegex = /leds/; // Create a regular expression to match requests to toggle LEDs + + if (urlParts.pathname.match(ledRegex)) { + // If there is a request containing the string 'leds' call a function, toggleLED + toggleLED(urlParts.pathname, request, response); + } else { + // All other request will call a function, showIndex + showIndex(urlParts.pathname, request, response); + } +}); + +// Stays the same +server.listen(8080); + +// Stays the same +console.log('Server running at http://192.168.1.101:8080/'); +{% endhighlight %} + +Inside our `createServer` callback function, we've replaced the old plain text response with a basic router that catches requests to '/leds/:index' and defaults all other requests to a separate function. Let's add those functions below the `console.log`: + +{% highlight javascript %} +// Respond to the request with our index.html page +function showIndex (url, request, response) { + response.writeHead(200, {"Content-Type": "text/html"}); + // Use fs to read in index.html + fs.readFile(__dirname + '/index.html', function (err, content) { + if (err) { + throw err; + } + + // Serve the content of index.html read in by fs + response.end(content); + }); +} + +// Toggle the led specified in the url and respond with its state +function toggleLED (url, request, response) { + var indexRegex = /(\d)$/; // Create a regular expression to find the number at the end of the url + var result = indexRegex.exec(url); // Capture the number, returns an array + var index = +result[1]; // Grab the captured result from the array and make sure it's a Number + + var led = tessel.led[index]; // Use the index to refence the correct LED + + // Toggle the state of the led and call the callback after that's done + led.toggle(function (err) { + if (err) { + // Log the error and send back a 500 (internal server error) response to the client + console.log(err); + response.writeHead(500, {"Content-Type": "application/json"}); + response.end(JSON.stringify({error: err})); + } else { + // The led was successfully toggled, so respond with the state of the toggled led using led.isOn + response.writeHead(200, {"Content-Type": "application/json"}); + response.end(JSON.stringify({on: led.isOn})); + } + }); +} +{% endhighlight %} + +One last step is to create a `.tesselinclude` file in the project directory and add any files not required by `ap.js` that we want to deploy with it. For this project, that means adding one line: + +``` +index.html +``` + +Finally, let's fire up our server again by running: + +`t2 run ap.js` + +
    +Just like before, once you see the "Server running at http://192.168.1.101:8080/" message in your terminal, you should be able to connect to that url in the web browser of the device connected to the TesselRouter network. After connecting, you should see the index.html view we built earlier and, after clicking/tapping the buttons, see either the blue or green LEDs on the Tessel should be toggled on or off. +
    + +
    + +
    + +
    + +**Bonus:** Add a way to toggle the red LED as well. +
    +
    + +
    + + diff --git a/wifi.md b/wifi.md index e4a8237..9b316c3 100644 --- a/wifi.md +++ b/wifi.md @@ -89,6 +89,6 @@ This command will check for a new version of the Tessel 2 firmware. If there is