Skip to content

Commit

Permalink
Add initial doc for imperial (#7)
Browse files Browse the repository at this point in the history
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
  • Loading branch information
jesserockz and balloob committed Nov 10, 2021
1 parent 13ed785 commit 5c49cd8
Show file tree
Hide file tree
Showing 8 changed files with 253 additions and 46 deletions.
3 changes: 3 additions & 0 deletions public/_redirects
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# These redirects are handled by Netlify

/documentation /ble
10 changes: 7 additions & 3 deletions public/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,13 @@ h3 {
max-width: 100%;
overflow-y: scroll;
}
improv-wifi-launch-button[supported] {
display: block;
margin-top: 1em;
improv-wifi-launch-button,
improv-wifi-serial-launch-button {
display: inline-block;
}
improv-wifi-launch-button[supported],
improv-wifi-serial-launch-button[supported] {
margin-right: 1em;
}
.project {
display: flex;
Expand Down
2 changes: 1 addition & 1 deletion script/develop
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@ script/download_js_sdk
# Quit all background tasks when script exits
trap "kill 0" EXIT

npm exec -- serve dist &
npm exec -- serve -p 5005 dist &
npm exec -- eleventy --watch &
wait
8 changes: 5 additions & 3 deletions src/_includes/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@
menu:
- - /
- Home
- - /documentation/
- Documentation
- - /ble/
- BLE
- - /serial/
- Serial
- - /code/
- Code
---
Expand All @@ -15,7 +17,7 @@
{%- if title -%}
{{ title }} – Improv Wi-Fi
{%- else -%}
Improv Wi-Fi: Open standard for setting up Wi-Fi via Bluetooth LE
Improv Wi-Fi: Open standard for setting up Wi-Fi via Bluetooth LE and Serial
{%- endif -%}
{%- endcapture %}
{% comment %}
Expand Down
7 changes: 4 additions & 3 deletions src/documentation.md → src/ble.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
---
layout: base
title: Documentation
title: Improv via BLE
description: All the implementation details necessary to make your own client and service implementation.
---

The Improv Wi-Fi protocol has two actors: the Improv service running on the gadget and the Improv client.
This is the description of the Improv Wi-Fi protocol using Bluetooth Low Energy.

The protocol has two actors: the Improv service running on the gadget and the Improv client.

The Improv service will broadcast its presence via Bluetooth LE and receives Wi-Fi credentials from the client.

Expand Down Expand Up @@ -143,4 +145,3 @@ This characteristic is where the client can read results from the RPC service if
| X...Y | String 2 |
| ... | etc |
| last byte | Checksum - A simple sum checksum keeping only the LSB |

14 changes: 9 additions & 5 deletions src/code.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ This page contains software development kits (SDK) and code samples to help you

## Creating client applications to configure devices

These examples will help you create clients that can provision devices hosting the Improv BLE service.
These examples will help you create clients that can provision devices via Improv.

### SDK for JavaScript
### Bluetooth LE SDK for JavaScript

The SDK for JavaScript contains everything you need to offer Improv provisioning on your website. Simply get started by adding the following HTML snippet:
The Bluetooth LE SDK for JavaScript contains everything you need to offer Improv provisioning using Bluetooth LE on your website. Simply get started by adding the following HTML snippet:

```js
<script
Expand All @@ -29,7 +29,11 @@ The result will look like this:
See [the GitHub repository](https://github.com/improv-wifi/sdk-js) for the documentation, source code, customization examples and how to use it with JavaScript package managers.

### SDK for Android
### Serial SDK for JavaScript

The Serial SDK for JavaScript contains everything you need to offer Improv provisioning using Serial on your website. See [the GitHub repository](https://github.com/improv-wifi/sdk-serial-js) for the documentation, source code, customization examples and how to use it with JavaScript package managers.

### Bluetooth LE SDK for Android

The Android SDK contains all state management, constants and other helpers required to provision devices via Improv.

Expand All @@ -39,6 +43,6 @@ See [the GitHub repository](https://github.com/improv-wifi/sdk-android) for the

### SDK for C++

The C++ SDK contains constants and utility functions to help implementing the Improv service on your device.
The C++ SDK contains constants and utility functions to parse the packets and help with implementing the Improv service on your device.

See [the GitHub repository](https://github.com/improv-wifi/sdk-cpp) for the documentation and source code.
89 changes: 58 additions & 31 deletions src/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,39 +3,46 @@
description: Free and open standard with ready-made SDKs that offer a great user experience to configure Wi-Fi on devices.
---

<h2>Open standard for setting up Wi-Fi via Bluetooth LE</h2>
<h2>
Open standard for connecting devices to Wi-Fi using Bluetooth LE or Serial
</h2>

<p>
Improv is a free and open standard with ready-made SDKs that offer a great
user experience to configure Wi-Fi on devices.
</p>
<p>
With Improv creators can offer a better onboarding experience when they share
their creations with others:
user experience to configure Wi-Fi on devices:
</p>
<ol>
<li>Connect gadget to power</li>
<li>Power on device</li>
<li>
Client application uses Improv to send the Wi-Fi credentials to the gadget
</li>
<li>The gadget will connect to the wireless network and returns a URL</li>
<li>
Client application guides user to the URL to continue setting up the gadget
Client application uses Improv to send the Wi-Fi credentials to the device
</li>
<li>The device connects to Wi-Fi network and returns a URL</li>
<li>User visits URL to continue setting up the device</li>
</ol>
<p>
Improv provisioning also works in browsers that support WebBluetooth.

Improv protocol can be used over Bluetooth Low Energy or via the serial port.
Both protocols can also be used from a browser.
</p>
<div>
<improv-wifi-launch-button>
<span slot="unsupported">
Your browser is not supported. To try it out, visit this page with Google
Chrome or Microsoft Edge<span class="not-supported-i hidden">
(but not on your iOS device)</span
>.</span
>
>.
</span>
</improv-wifi-launch-button>
<improv-wifi-serial-launch-button>
<span slot="unsupported"></span>
</improv-wifi-serial-launch-button>
</div>
<p>
<i>
Need a device that runs Improv?
<a href="https://esphome.github.io/esp-web-tools/">Install this example</a>
on an ESP8266 or ESP32.
</i>
</p>

<h3>See it in action</h3>
<div class="videoWrapper">
<iframe
Expand All @@ -59,19 +66,38 @@ <h3>Adopted by the following projects</h3>
<h3>ESPHome</h3>
<p>Open source firmware for ESP8266/ESP32 devices that is easy to use.</p>
<p>
Allows configuring Wi-Fi credentials via Improv.
Allows being configured via Improv over
<a
href="https://www.esphome.io/components/esp32_improv.html"
target="_blank"
>Learn more</a
>Bluetooth LE</a
>
or
<a
href="https://www.esphome.io/components/improv_serial.html"
target="_blank"
>Serial</a
>.
</p>
<p>
<a href="https://www.esphome.io" target="_blank">Website</a>
</p>
</div>
</div>
<p class="center">
<div class="project">
<div class="logo"></div>
<div class="info">
<h3>ESP Web Tools</h3>
<p>Open source tools to allow managing ESP devices in the browser.</p>
<p>Allows configuring devices via Improv over Serial.</p>
<p>
<a href="https://esphome.github.io/esp-web-tools/" target="_blank"
>Website</a
>
</p>
</div>
</div>
<p>
ℹ️ Want to add Improv to your project?
<a href="/code/">Check out the SDKs.</a>
</p>
Expand All @@ -97,7 +123,7 @@ <h3>Home Assistant</h3>
-->
<h3>The problem we're solving</h3>

<p>Getting your Wi-Fi gadget connected is often a bad user experience.</p>
<p><b>Configuring a device to connect to your Wi-Fi network is a pain.</b></p>

<p>
A lot of devices require to be connected to the network to be controlled or
Expand All @@ -106,10 +132,10 @@ <h3>The problem we're solving</h3>
</p>

<p>
Configuring a device to connect to your Wi-Fi is a pain. The most common
approach is Soft Enabled Access Point. The device starts its own Wi-Fi access
point, the user connects to it with their phone/computer and then interacts
directly with the device via an app or a website served from the device.
The most common approach is Soft Enabled Access Point. The device starts its
own Wi-Fi access point, the user connects to it with their phone/computer and
then interacts directly with the device via an app or a website served from
the device.
</p>

<p>
Expand All @@ -119,19 +145,20 @@ <h3>The problem we're solving</h3>
that don’t provide internet access.
</p>

<h3>Improv Scope & Constraints</h3>
<h3>Scope & Constraints</h3>
<p>
The goal of the standard is to get the device connected to the Wi-Fi via
Bluetooth Low Energy (BLE). It is not the goal to offer a way for devices to
share data or control. The standard should work without requiring the device
to contain a screen.
The goal of the Improv standard is to get the device connected to the Wi-Fi
via Bluetooth Low Energy (BLE) or Serial (USB/UART). It is not the goal to
offer a way for devices to share data or control. The standard should work
without requiring the device to contain a screen.
</p>

<h3>More Reading</h3>

<ul>
<li>
Read <a href="/documentation/">the documentation</a> to see how it works
Read the <a href="/ble/">Bluetooth LE</a> or
<a href="/serial/">serial</a> documentation to see how it works
</li>
<li>Learn about <a href="/code/">the SDKs and code samples</a></li>
</ul>
Expand Down
Loading

0 comments on commit 5c49cd8

Please sign in to comment.