You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Dec 29, 2022. It is now read-only.
Copy file name to clipboardExpand all lines: documentation/android_client_walkthrough.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,4 @@
1
-
##Physical Web Android Client Walkthrough
1
+
##Physical Web Android Client Walkthrough
2
2
An Introduction to the Physical Web Android Client
3
3
4
4
We start with a high level-description of the user flows and then dive into and detail the specifics of each screen.
@@ -41,18 +41,18 @@ So that’s it! Happy Physical Webbing!
41
41
Please note that this app has been targeting Android L release (21) and has been tested primarily on the Nexus 5.
42
42
43
43
44
-
##FCC Stuff
44
+
##FCC Stuff
45
45
46
-
###FCC Part 15.19
46
+
###FCC Part 15.19
47
47
This device complies with part 15 of the FCC Rules. Operation is subject to The following two conditions:
48
48
49
49
1. This device may not cause harmful interference, and
50
50
2. This device must accept any interference received, including interference that may cause undesired operation.
51
51
52
-
###FCC Part 15.21
52
+
###FCC Part 15.21
53
53
Any changes or modifications (including the antennas) made to this device that are not expressly approved by the manufacturer may void the user's authority to operate the equipment.
54
54
55
-
###FCC RF Radiation Exposure Statement
55
+
###FCC RF Radiation Exposure Statement
56
56
This transmitter must not be co-location or operating in conjunction with any other antenna or transmitter.
57
57
58
58
This equipment complies with FCC RF radiation exposure limits set forth for an uncontrolled environment.
If we believe in Moore's Law whatsoever, then small, cheap, connected devices will soon explode into our lives, filling our homes, workplaces, and public spaces. Today, most IoT devices require installing a dedicated app, which simply doesn't scale when you want to interact with a multitude of smart “things” around you every day. The web is a natural fit, offering interaction on demand without the friction and overhead of installation. The Physical Web is an approach to unleash the core superpower of the web, enabling interaction that’s just a tap away.
5
5
6
6
7
-
##Branding Guidelines
7
+
##Branding Guidelines
8
8
9
9
The following guidelines provide you with guidance for using the Physical Web name and the corresponding Physical Web logo. You can use the name and the logo on your website or in print without pre-approval, provided you follow these basic guidelines.
The Physical Web extends the web we know into the physical world around us. This involves creating an open ecosystem where smart devices can broadcast URLs into the area around them. Any nearby display such as a phone or tablet can then see these URLs and offer them up to the user. It mirrors the basic behavior we have today with a search engine:
3
3
4
4
* The user requests a list of what's nearby.
@@ -10,18 +10,18 @@ The Physical Web extends the web we know into the physical world around us. This
10
10
11
11
Even though this is a fairly simple idea, it immediately generates lots of questions:
12
12
13
-
##0. Wait, why are you an app?
13
+
##0. Wait, why are you an app?
14
14
This is an early prototype. We are trying to get people to experiment with this at an early stage. Of course, this should be built into all smartphones (and tablets and anything with a screen really). We are building an app for now that tries to not feel like an app. It works in the background so you don't need to use it actively. It just silently monitors beacons that you can browse when you're interested.
15
15
16
-
##1. Will you be pestering people with alarms?
16
+
##1. Will you be pestering people with alarms?
17
17
A core principle of this system is **no proactive notifications**. The user will only see a list of nearby devices when they ask. If your phone were to be buzzing constantly as you walked through the mall, it would be very frustrating. Push notifications in general are too easily abused. Of course, the user can opt-in to notifications, we are just saying that by default, the user must ask to see anything nearby.
18
18
19
19
In addition, we only scan when the screen is on: there is no scanning that goes on when the phone is in your pocket. This is consistent with our 'no interruptions' goal but it also has a large positive impact on power usage. Using this app should have very little impact on your phone's battery life.
20
20
21
-
##2. Isn't there going to be a big list to choose from?
21
+
##2. Isn't there going to be a big list to choose from?
22
22
At first, the nearby smart devices will be small but if we're successful, there will be many to choose from and that raises an important UX issue. This is where ranking comes in. Today, we are perfectly happy typing "tennis" into a search engine and getting millions of results back, we trust that the first 10 are the best ones. The same applies here. The phone agent can sort by both signal strength as well as personal preference and history, among many other possible factors. Clearly there is lots of work to be done here. We don't want to minimize this task, but we feel that this simple signal strength ranking can get us very far for the first few versions of this project.
23
23
24
-
##3. Is this secure/private?
24
+
##3. Is this secure/private?
25
25
URLs broadcast in the clear so anyone can see them. This is by design. That is why we're initially suggesting this to be used in public spaces. This does raise issues for home use where it would be possible for neighbors to intercept beacons. However, one of the big advantages of URLs is that there are so many ways they can be used to increase their security:
26
26
27
27
* The URL could be obfuscated (e.g. using a non-branded domain)
@@ -31,15 +31,15 @@ URLs broadcast in the clear so anyone can see them. This is by design. That is w
31
31
32
32
One of the big values of URLs is that they are so flexible and encourage this further evolution.
33
33
34
-
##4. What about SPAM?
34
+
##4. What about SPAM?
35
35
With any system, there will be people that try to exploit it. There will likely be many solutions around this problem but again, we can start with the web. Search engines today have this issue and are fairly effective and displaying the correct web sites in your search results. That same approach would apply here. Combine that with historical results of who clicks on what and it's possible to build a fairly robust ranking model and only show the proper devices. However, there is likely much more we can do here and we hope to encourage other ideas on how to solve this problem in a more robust way.
36
36
37
-
##5. Why URLs?
37
+
##5. Why URLs?
38
38
The value of a URL is that it is a known part of the web, very flexible, and most importantly, decentralized. URLs allow anyone to play and no central server to be the bottleneck. This is one of the core principles of the web and critical to keep alive.
39
39
40
40
That being said, we completely expect others to experiment with a url+ID model that goes through their server (e.g. safeurls.com/?id=12345). That is perfectly acceptable and to be encouraged. Systems like that are likely to provide much better security and vetting of sites. But that is the beauty of URLs, there can be as many of these as you'd like and the system still works seamlessly.
41
41
42
-
##5.5 Why the web?
42
+
##5.5 Why the web?
43
43
The Physical Web’s primary value is to enable a device to place at users’ fingertips anything from a tiny piece of location-based information to a full blown web app.
44
44
45
45
* A dog collar could let you call a service to find the owner.
@@ -51,20 +51,20 @@ The Physical Web’s primary value is to enable a device to place at users’ fi
51
51
52
52
Each of these examples, taken by itself, is modestly useful. Taken as a whole, however, they imply a vast “long tail” where anything can offer information and utility. Native apps are great for high frequency usage. The web enables people to walk up and use something once with hardly any friction.
53
53
54
-
##6. Which platforms will you support?
54
+
##6. Which platforms will you support?
55
55
This is meant to be an extension of the web so it should work on every platform. We expect that each platform will experiment with a different UX to show the nearby devices. For example, the current Android app uses notifications while the iOS app will use lock screen notifications. We hope to see lots of experimentation here on how various platforms choose to show and rank this information.
56
56
57
57
At this point, we have both an Android and iOS app that is open source. We hope this will be used and ported to other platforms.
58
58
59
-
##7. Can't the user be tracked?
59
+
##7. Can't the user be tracked?
60
60
Our current URL broadcast method involves a bluetooth broadcast from each beacon. The user's phone gathers this info without connecting to the beacon. This ensures the user is invisible to all beacons, meaning a user can't be tracked simply by walking past a broadcasting beacon. This was very much by design to keep users silent passage untrackable. However, once the user does click on a URL, they are then known to that website.
61
61
62
62
The search agent on the phone may keep track of which devices the user taps on so they can improve the ranking in the future. Of course, this too needs to be discussed and then possibly offered to the user as an option so they are in control of how this information is stored.
63
63
64
-
##8. Why Bluetooth Low Energy?
64
+
##8. Why Bluetooth Low Energy?
65
65
There are many possible ways to broadcast a URL. This initial version uses Bluetooth Low Energy (BLE) as it is so ubiquitous on mobile phones and tablets today. In addition, it is very energy efficient. There are tiny BLE devices that can broadcast for nearly 2 years on a single coin cell. We are using the standard BLE 'ad packet' to broadcast out this URL so every device that supports bluetooth can receive it.
66
66
67
67
However, we also support mDNS and uPnP over wifi. We are not limited to BLE, it is just the starter technology. We expect other ways of discovering URLs will be added over time.
68
68
69
-
##Next
69
+
##Next
70
70
The next suggested document to read would be the technical [overview](http://github.com/google/physical-web/blob/master/documentation/technical_overview.md) document
Copy file name to clipboardExpand all lines: documentation/technical_overview.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,30 +1,30 @@
1
-
##Technical Overview
1
+
##Technical Overview
2
2
This is a prototype system being used to understand and explore the issues involved in building the Physical Web.
3
3
4
-
###Broadcast
4
+
###Broadcast
5
5
The current design uses Bluetooth Low Energy (BLE) devices that broadcast the URL in the advertising packet. The sole job of the device is to broadcast the URL to the surrounding area. The reason is to accommodate potentially the worst-case scenario of a large number of devices in an area with many people. A broadcast only approach avoids an N-squared problem of every user connecting to every device. By making each device broadcast constantly, any number of devices can just pick up the information passively with little conflict.
6
6
7
7
This has another advantage in that it means that a user can walk through a space and leave no trace: the broadcasting devices have no idea who is listening.
8
8
9
9
The current prototype broadcasts once every second, striking a balance between user response time and battery life. There is nothing stopping a device from broadcasting faster if it wishes.
10
10
11
-
###BLE Format
11
+
###BLE Format
12
12
The URL is stored in the advertising packet of a BLE device. The packet identifies itself with a 16-bit Service UUID of 0xFEAA which indicates the beacon is an [Eddystone beacon](https://github.com/google/eddystone). Additionally, the packet sets the frame type field to 0x10 to specify that it is of the [Eddystone-URL](https://github.com/google/eddystone/tree/master/eddystone-url) format, which is designed to carry URLs.
13
13
14
14
This small size of the advertising packet does not leave a lot of room for the text of the URL. This is one of tradeoffs that comes from avoiding any connections to the beacon (to reduce tracking and avoid congestion). URLs are encoded so common patterns like 'http://www.' and '.com' can be compressed into a single character. This is very similar to NDEF compression in NFC. In addition, we expect initial testers will use either short domains or a URL shortener. Both the Android and iOS apps do this automatically when a URL is typed in that is too long to fit.
15
15
16
-
###Client
16
+
###Client
17
17
The current client is an application, rather than a system service or integrated part of the operating system, to prove out the technology. If you open the app, it lists the nearby beacons that it can see, sorted by signal strength. Note the signal strength is a very iffy metric as there many reasons why it can vary. However, if you are standing in front of device and the next device is more than five feet away, it tends to work out well in practice. This is the primary reason we include a TX_POWER byte in the advertising packet so it's possible to calculate signal loss and rank different strength beacons.
18
18
19
19
The client lists the meta information from the URL: TITLE, DESCRIPTION, URL, and FAVICON. These can be pulled at the time the URL is received. Alternately, there is a simple caching proxy server that speeds up this process.
20
20
21
-
###Server
21
+
###Server
22
22
The server receives a request from the client with all the URLs found and returns JSON listing the URLs' metadata. The current prototype collects no user data, only returning the cached information. However, alternative implementations could keep track of user choice and use that to help change the ranking within the client. The server isn't required as part of Physical Web, but it greatly simplifies the work on the client side and improves responsiveness and quality of results.
23
23
24
-
###Metadata
24
+
###Metadata
25
25
The system expects URLs to point to a web page, which offers up the metadata described above. This somewhat limits the URLs, as they must always point to a valid HTML page. This is likely a significant limitation to URLs that want to link to native applications. This is an important use case needing further discussion. Is there an alternative way to offer this metadata but not point to a web page?
26
26
27
-
###Ranking
27
+
###Ranking
28
28
As more devices are found, the importance of ranking the devices becomes more valuable. Sorting only by signal strength is a good start, but the server could do a much better job in two ways. The first would be to track which URLs are clicked as that implies value, so more frequently used URLs could be ranked higher. In addition, the server could track personal use, so if you tended to pick the same device at work, it might rank the device higher as well.
Copy file name to clipboardExpand all lines: documentation/techpack.md
+12-12Lines changed: 12 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,21 +1,21 @@
1
-
##The Physical Web Kit
1
+
##The Physical Web Kit
2
2
If you are reading this, you’ve received one of our tech packs with several bluetooth beacons (URIBeacons) and some Intel Edison boards. This page will help you get setup.
3
3
4
4
The reason for this project is to get people to try out the Physical Web, prototype something that represents a
5
5
real scenario and give us feedback. We’ve already received quite a bit of feedback on our github but we’re now trying to encourage more active projects. Please beat on it and let us know: either go to the issues page of our github or just send an email to [email protected].
6
6
7
-
##Setting up the URIBeacons
7
+
##Setting up the URIBeacons
8
8
In order to use the beacons, you need to have the Physical Web app installed on your phone. It currently works on Android 4.4 and iOS 8 devices. Just go to their app stores, search for “Physical Web” and download the app.
9
9
10
10
The beacons can be set to any URL. When you pull down the notifications tray in Android or the TodayView in iOS, you’ll see a list of nearby beacons. Picking any one will open that URL in Chrome.
11
11
12
12
To change the URL you need to first go to the “Change URL” section of the app and then push the button on the beacon. This will allow you to type in a new URL. Beacons like this are clearly not secure, these are ‘testing beacons’ that are meant to be easily set for prototyping purposes.
13
13
14
-
##Setting up the Edison boards
14
+
##Setting up the Edison boards
15
15
This document describes how to set up the Intel Edison Mini Breakout Kit and install a Physical Web HelloWorld app. The HelloWorld app, aka helloEdison will broadcast a url over Bluetooth Low Energy and mDNS. Additionally, helloEdison will connect via WebSocket to a remote server at the broadcasted url. That remote server also serves up an html client to mobile devices that navigate to the given url. The html client also connects via WebSocket to the remote server. This allows for communication to travel from helloEdison to the remote server to the html Client. The idea is that when you press the tiny white button on the Intel Edison, the helloEdison sends a message to the remote server, which then sends a message to the html client, which then indicates that the button has been pressed.
16
16
17
17
18
-
##Assemble your Intel Edison
18
+
##Assemble your Intel Edison
19
19
* Open your Intel Edison Mini Breakout Kit box.
20
20
* Remove the Intel Edison chip (it’s the smaller part and says “Intel Edison” on it).
21
21
* Remove the Mini-Breakout board.
@@ -25,22 +25,22 @@ This document describes how to set up the Intel Edison Mini Breakout Kit and ins
* Go to the appropriate link below depending on your computer’s operating system.
30
30
* For Mac https://communities.intel.com/docs/DOC-23193
31
31
* For Windows go to https://communities.intel.com/docs/DOC-23192
32
32
* For Linux go to https://communities.intel.com/docs/DOC-23200
33
33
* Follow the instructions to flash your Intel Edison.
34
34
Note: The instructions on the page show the Intel Edison Arduino kit, but the same instructions apply to the Intel Edison Mini-Breakout kit. Also, please ignore the micro-switch instruction as it applies only to the Arduino kit.
35
35
36
-
##Configure your Edison
36
+
##Configure your Edison
37
37
SSH into your Edison (using PuTTY for Windows, or terminal “screen /dev/...” command for Mac and Linux).
38
38
To setup login, password, and wifi connection, run (and follow the onscreen instructions):
39
39
40
40
configure_edison --setup
41
41
42
42
43
-
##Update your repositories
43
+
##Update your repositories
44
44
To add the above repositories to the configuration file, run (copy and paste the three lines at once into the terminal):
45
45
46
46
echo "src/gz all http://repo.opkg.net/edison/repo/all
@@ -56,7 +56,7 @@ To install the latest bluetooth stack, run:
56
56
opkg install bluez5-dev
57
57
58
58
59
-
##Install “helloEdison” project
59
+
##Install “helloEdison” project
60
60
Download and extract helloEdisonPackage.zip from the following url (by clicking "View Raw"):
@@ -87,21 +87,21 @@ To install the node dependencies for helloEdison, run:
87
87
88
88
npm install
89
89
90
-
##Prepare bluetooth
90
+
##Prepare bluetooth
91
91
To make bluetooth ready for helloEdison (note: you’ll have to do this every time you reboot the Edison), run:
92
92
93
93
rfkill unblock bluetooth
94
94
killall bluetoothd
95
95
hciconfig hci0 up
96
96
97
97
98
-
##Start up helloEdison
98
+
##Start up helloEdison
99
99
cd into the helloEdison project folder and run:
100
100
101
101
node main.js
102
102
103
103
104
-
##Install Physical Web on your mobile device
104
+
##Install Physical Web on your mobile device
105
105
106
106
* For iOS, download and install Physical Web from the App Store
107
107
* For Android, download and install Physical Web from the Play Store
@@ -114,6 +114,6 @@ cd into the helloEdison project folder and run:
114
114
* The page will contain a simple graphic of a button
115
115
116
116
117
-
##Press a button
117
+
##Press a button
118
118
Now press the tiny white button on the Intel Edison. As you do so, on your mobile device watch the page you just navigated to
119
119
Every time you press the tiny white button on the Intel Edison, the button on the page on your mobile device will indicate that the button has been pressed.
0 commit comments