Coder Social home page Coder Social logo

haiku-wifi's Introduction

haiku wifi

haiku wifi is a neighborhood bulletin board, hosted on a router, living in the wireless cloud.

look for wireless networks to see the current haiku. connect to the haiku network to write a new haiku.

screenshot

More screenshots and people writing poetry

credits

haiku wifi was created by jonathan dahan and toby schachman at art hack day 2012 at 319 scholes.

special thanks to sean mcintyre for lending us a router and tons of assistance with configuration. thanks also to jonathan kiritharan for assistance and josh keay for design ideas.

how it works

The commodity wifi router (we used a Netgear N600) runs the Open-WRT firmware, a linux distribution for embedded devices (like wireless routers). Essentially this gives us an open linux box with wifi routing capabilities.

With Open-WRT, you can create as many SSIDs as you want by simply changing the config file /etc/confic/wireless (the preferred way of doing this on Open-WRT is to use the included uci utility). We made 3 placeholder SSIDs (named -1 ..., -2 ..., -3 ...) and 1 SSID which doesn't change named -4 --- ☁ haiku wifi ☁ ---. The 3 placeholder SSIDs will be renamed by the users.

We installed Python and Flask on our router. This gives us a little web server to serve the web page form to change the haiku. Our Python web app makes command line calls to reconfigure our wireless config file and restart the wifi.

Finally, we changed the default admin interface to run on port 81 (instead of 80). We made an init script to run our Python web app on startup (on port 80). And we configured dnsmasq to forward all domains to 192.168.1.1, so that when a user went to any website they would see the haiku page.

installation

  1. Install Open-WRT on your router.

  2. Install Python on your router.

     opkg install python
    
  3. Install setuptools.

  4. Install Flask.

  5. Configure your wireless interfaces to create 3 placeholders (the Python web server will be changing these) and (optionally) one that won't change. You can use uci or edit /etc/config/wireless directly. You'll want your wifi-ifaces to be like the following:

     config 'wifi-iface'
       option 'device' 'radio0'
       option 'mode' 'ap'
       option 'encryption' 'none'
       option 'network' 'lan'
       option 'ssid' '-1 ...'
    
     config 'wifi-iface'
       option 'device' 'radio0'
       option 'mode' 'ap'
       option 'encryption' 'none'
       option 'network' 'lan'
       option 'ssid' '-2 ...'
    
     config 'wifi-iface'
       option 'device' 'radio0'
       option 'mode' 'ap'
       option 'encryption' 'none'
       option 'network' 'lan'
       option 'ssid' '-3 ...'
    
     config 'wifi-iface'
       option 'device' 'radio0'
       option 'mode' 'ap'
       option 'encryption' 'none'
       option 'network' 'lan'
       option 'ssid' '-4 --- ☁ haiku wifi ☁ ---'
    

    Note that the web app is expecting to reconfigure wifi-iface 0-2, so if you don't have these placeholders as the first wifi-ifaces, change the radio_offset variable in the web app.

  6. Make LuCI (the default web admin tool for Open-WRT) start up on port 81. In /etc/config/uhttpd, change this line

     list listen_http	0.0.0.0:80
    

    to

     list listen_http	0.0.0.0:81
    
  7. Put the web app--this repository--on your router in /root/arthackday. (git clone it and then scp it to the router.)

  8. Install the initscript to run the python web app when the router starts up:

     cp init.d/haiku /etc/init.d/haiku
    

    and enable it by running

     /etc/init.d/haiku-wifi enable
    
  9. Configure dnsmasq to point all domains at 192.168.1.1. Append these lines to /etc/dnsmasq.conf:

     address=/apple.com/0.0.0.0
     address=/#/192.168.1.1
    
  10. All set! Power cycle the router.

haiku-wifi's People

Contributors

electronicwhisper avatar

Watchers

James Cloos avatar VER007 avatar

Forkers

dm2333

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.