Beaglebone Black Web Control Using WebPy

Introduction: Beaglebone Black Web Control Using WebPy

Ever wanted to create a way to control your garage door using your phone maybe collect data and view it from your laptop. There is a single board computer called the Beaglebone Black which is an extremely powerful device that allows you to control its GPIO pins in order to interact with real world items such as motors, LED's, Lamps, etc. The Beaglebone is just like a raspberry pi board but much more powerful. The Beaglebone community is not as huge as the raspberry pi's so be warned for the lack of tutorials.

As I was searching around the internet for a solution to control my Beaglebone Black from my laptop using a web page, many tutorials popped up using the Beaglebone's bonescript library and the socket.io library using the cloud 9 ide. As I followed tutorials and looked at peoples code I grew frustrated due to the fact that the cloud 9 ide kept crashing, my lack of understanding of javascript and also the lack of flexibility of each tutorial (every tutorial forced you to use a predefined amount of GPIO's). I was familiar with python and my friend introduced me to web.py which is a great web framework used to develop web apps. I also used Adafruit's Beaglebone Black GPIO library to control the individual pins of the Beaglebone Black.

What you will need:

A computer

SSH terminal such as PuTTY or use SSH on the terminal(For Mac's and Linux, Windows does not have built in SSH)

A Beaglebone Black connected to the computer via USB

An internet connection to the Beaglebone Black

(optional) A SFTP client

Step 1: Install the Required Python Libraries

We need to install two libraries that are not standard modules in python 2.7. The libraries are the Adafruit BBIO and WebPy libraries. We need to access the Beaglebone using SSH. I decided to use the PuTTy terminal and access it using the IP address of the beaglebone, mine is 192.168.7.2 yours can be found on the beaglebone start.html. If you are using Angstrom type in:

Step 3: Creating the Web Page

If you the python code I attached, you can see me talking about GET request. A GET request is basically a way for a webpage to communicate with a server. In order to add, delete and switch the outputs we are using Jquery to do some basic get requests. I have attached an html page that does just that and I have also commented the code for your convenience.

Due to downloading issues, please copy and paste the code from my github account

Step 4: Transferring the Python File to Your Beaglebone

You can transfer the main.py file via command line but to transfer files easily I am going to use WinSCP(you can use any sftp client) which you can download here. There is Cyberduck for mac users but since I am a PC user I do not know which one is the best so you have to google it. The process is simple just drag the main.py file in the Desktop or any other directory you choose.

Step 5: Running the Server

Running the server is easy just use SSH using PuTTY or your terminal and change your directory to the main.py directory. Type in:

python main.py 1234

Now what we just did is ask python to run the main.py file at port 1234

Step 6: You Have Control!

Now go to the control.html file and open with google chrome or any other browser you use, you will have a web page with 2 text boxes and 3 buttons. The pin number text box asks for the pin number like P8_10 or P8_29, etc. You need to have the name filled out in order to use the delete and switch buttons. Now that you have web control you can use this example in order to create a more advanced panel. Maybe use database capabilities to use your Beaglebone Black as a data logger or use it for home automation, the possibilities are endless. If you like this instructable then please vote for this project on the coded creations contest and also favourite this project. Thanks for reading this instructable and keep on hacking! :)

Comments

Hi, I think the instructables website treats the javascript code in the webpage as a security threat so the best way to get around it is to access my github ControlApps/JqueryControl.html. here is the github page https://github.com/vatdaell/Beaglebone-Home-Autom...