Coder Social home page Coder Social logo

dhhagan / softap-setup-page Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mebrunet/softap-setup-page

0.0 2.0 0.0 71 KB

Builds a softap setup page for the Particle Photon

Home Page: http://mebrunet.github.io/softap-setup-page/src

License: MIT License

Python 5.79% HTML 4.02% JavaScript 85.90% CSS 4.29%

softap-setup-page's Introduction

Tools to build a SoftAP Setup page for the Photon

Updates

  • 2017/02/02 - I've added the ability to set the claim code. Simply navigate to the page with query parameter claim_code.
  • 2016/09/30 - I've found some time to bring this project up to date with the new method for implementing SoftAP on the Photon. See the demo. More updates comming soon!

Description

This repository gives you the tools to build a SoftAP page for the Photon (i.e. setup up the wifi with only a browser, no app required). It shares the build tools I put together in hopes that others will improve what I've done. Which shouldn't be hard... they are very simple.

The basic idea is to edit the style and wording of the html / js, then either:

  • Serve the SoftAP pages from static file server you control.

AND/OR

  • Use the included compression tools to minimize the files into something you can embed into the Photon's firmware so it can be served by the device itself when in Listening Mode.

What's in the box

  1. The browser friendly RSA tools you need to encrypt your WiFi password. (Thank you Tom Wu !)
  2. A basic html and javascript file that takes the user through the connection process. (And has slightly different instructions when serving externally vs. from the Photon.)
  3. A simple python script to serve these files locally as you make changes.
  4. A compression tool that takes your source code and turns it into a bunch of C++ character arrays for easy injection into the firmware.

Usage

Getting Started

You'll need:

  • Python 2.7, pip.
  • A modern browser (I'm on chrome v53),
  • A Photon running firmaware 0.5.0 or above.
  • You should probably also read the SoftAP section of Particle's firmware reference.

Then install everything on your machine with:

git clone https://github.com/mebrunet/softap-setup-page
cd softap-setup-page
pip install -r requirements.txt

Serving SoftAP pages externally (eg. from an amazon S3 bucket)

The idea here is to:

  1. Point your client to a web url where your SoftAP setup page is hosted.
  2. Let their browser download everything (scripts... etc.)
  3. Have them follow the instructions on that page (temporarily loosing internet connection in order to connect to the Photon's hotspot) and pass the local WiFi credentials to the Photon so it can get online.

Running:

python server.py

Will serve the contents of the src folder at http://localhost:8000. So you can experiment with the process, edit the code/style util you're happy, then host it on your own servers somewhere.

Serving the SoftAP pages from the Photon

Use

python compress.py

to minify and mangle your pages into something you can embed in the firmware.

A more detailed explaination + examples coming soon!

Setting the Claim Code

If you want to set the claim code on the device, simply navigate to the page with query parameter claim_code set. For example hitting

http://domain_where_softap_pages_served?claim_code=abcd1234

Will set the claim code to abcd1234 as you go through the setup process.

Notes

  • If you renamed or added files you'll need to change the configuration settings. For now this is done by editing compress.py directly. It's pretty self explanatory, but feel free to open an issue if you have questions.
  • For now you're limited to using single quotes in your source code... alternatively you can be less lazy than me and modify the compression script to escape double quotes.
  • Because I convert an entire file into a single C-string (char array), there is a limit to the size of any given file (I'm not sure what it is exactly, but it's not a lot). Break bigger files down into parts like I did to src/rsa-utils/jsbn_1.js and jsbn_2.js.
  • That's about it. See examples/ for what the output should look like.

Helpful Tricks

Connecting to both the Internet and your Photon's SoftAP

One of the issues in playing around with the Photon in SoftAP mode is that you lose your WiFi connection. I've found two ways to avoid this.

  1. Connect your machine via ethernet to you local network, and connect your WiFi to the Photon's app (just make sure your router isn't also at 192.168.0.1).

  2. If you don't have an ethernet port, use an Android Phone's USB tethering instead. i.e. connect your Android phone to the local WiFi, then connect it via usb to your laptop, then in the Hotspot menu select "usb tether" and it simulates an ethernet conection with your machine over usb.

In both cases you now have access to both the Photon and the Internet.

Postman

If you want to toy with the HTTP API from your browser, a great tool is Postman. (Note I found POST requests required setting Content-Type headers to "multipart/form-data".)

Credit

Again, thank you Tom Wu! for the great RSA libraries. Wifi Icon (favicon) courtesy of iconarchive.com

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.