secon'2016. Кардава Звиад, Концепция physical web. eddystone format....
TRANSCRIPT
Google’s Beacon platform
Physical Web
Маячки (от англ. beacon)
How it works?
Beacons
iBeacon by Apple
AltBeacon by RadiusNetworks
1. Транслирует только 1 advertising packet
2. Нужно ставить стороннее приложение (КАЖДЫЙ РАЗ!)
3. Назойливость
4. Безопасность
Disadvantages
https://github.com/google/eddystone
Eddystone
Eddystone-UID Eddystone-URL Eddystone-TLM Eddystone-EID
Eddystone-ETLM
1 byte frame type = 0x001 byte Tx power at 0 m
10 byte - Namespace ID6 byte - Instance ID
2 bytes reserved
1 byte frame type = 0x011 byte Tx power at 0 m
18 byte only 1 byte - URL prefix:
0x00 - http://www0x01 - https://www0x02 - http://0х03 - https://
1 byte TLM version = 0x00
16 bit random salt16-bit integrity check tag
1 byte frame type = 0x201 byte TLM version = 0x00
Battery voltageBeacon temperatureAdvertising PDU countTime since power-on
1 byte frame type = 0x201 byte TLM version = 0x00
8-byte Ephemeral Identifier
Eddystone Configuration GATT Service● Интероперабельность ● Single connection● Characteristics:
7. Unlock
8. Public ECDH Key
9. EID Identity Key
10. ADV Slot Data
11. (Advanced) Factory reset
12. (Advanced) Remain Connectable
1. Capabilities
2. Active Slot
3. Advertising Interval
4. Radio Tx Power
5. (Advanced) Advertised Tx Power
6. Lock State
https://github.com/google/eddystone/tree/master/configuration-service
Physical Web
https://google.github.io/physical-web/
Internet of Things
Interaction today
Smart Things
Smart Things
URL
URL
URL
Physical Web Service
1. Classic Web
2. Cloud Passtrough
JavaScript
3. Web Bluetooth
Web Bluetooth
Web
Web
Web
Web
Super Power of WEB
Physical Web
What you need?
Physical Web
Beacons Configuration
● Простая идея● Просто реализуется● Работает● Уважение к пользователю● Открытый проект● Улучшается вместе с Web
The Physical Web
Google’s beacon platform
Google’s Beacon Platform
Google Cloud Platform
Proximity beacon API
Proximity API
Proximity API
● Advertised ID должен быть корректным Eddystone-UID
● (16 байт, содержащих 10 байт namespaceId и 6 байт instance Id).
● Значение Advertised ID должно быть base64 представлением данных.
● Маячки представлены в виде ресурса beacon и могут быть зарегистрированы
вызовом метода beacons.register.
● Маячок может быть зарегистрирован одновременно только в одном проекте в
Google Developers Console
● Как только маячок зарегистрирован, его поле AdvertisedID не может быть
изменено.
Advertised ID
● Advertised ID (обязательно)
● Текущий статус — активный, не активный, выведенный из эксплуатации.
● Стабильность — выражает ожидаемую стабильность размещения. (Стабильный,
редко перемещаемый, часто перемещаемый, постоянно перемещающийся)
● Широта и долгота — пара double представляющих значение в градусах. Должны
соответствовать представлению WGS84, если не указано иное. Значения должны
быть в пределах нормализованных диапазонов.
● Уровень внутри здания — человеко читаемая строка, что бы указать на каком
этаже расположен маячок.
● Google Places API Place ID
● Текстовое описание
● Произвольные свойства, такие как пара ключ/значение
Metadata
К маячкам можно привязывать произвольные данные(Attachments). Они представляют и себя блобы, хранимые в Google’s scalable cloud.
При создании вложения вам нужно заполнить два поля:● namespacedType — строка состоящая из идентификатора пространства
имён, косой черты и типа данных. Напирмер: surreptitious-banjo-145/string
● data — base64 представление типа данных определенного в поле namespacedType. Например: aGVsbG8gd29ybGQh
Что бы выяснить какие пространства имён связанны с вашим проектом можно вызвать namespaces.list
Вложения могут быть длиной до 1024 байт.
Register a beacon
Маячок не может быть просто удален из Google Beacons Registry. Есть два варианта как можно перевести маячок в режим офлайн:
● beacons.deactivate для того что бы временно удалить маячок. После
деактивации, API не будет возвращать ни привязанные данные, ни
информацию по маячку. Для того что вернуть маяк в рабочее состояние
нужно вызвать beacons.activate
● beacons.decommission что бы навсегда деактивировать beacon ID. Вы
больше не сможете использовать ID с которым он был ранее
зарегистрирован. Но вы можете легко назначить маячку новый ID и
перерегистрировать маячок с новым ID
Unregister a beacon
Nearby messages API
1. Google Play services ≥ 7.8.0
2. Подписка на сообщения: ● В активном режиме ● В фоновом режиме
3. Запрос разрешения у пользователя:● Присоединить result callback к вызовам publish() and subscribe().● Использовать Nearby.Messages.getPermissionStatus() что бы проверить
статус разрешения непосредственно перед вызовом publish() или subscribe()
4. Стратегии сканирования
Nearby messages on Android
1. $ sudo gem install cocoapodssource 'https://github.com/CocoaPods/Specs.git'platform :ios, '7.0'pod 'NearbyMessages
$ pod install
2. Подписка на сообщения: ● Только в активном режиме
3. Стратегии сканирования
Nearby messages on iOS
Links
● https://google.github.io/physical-web/● https://developers.google.com/beacons/● https://github.com/google/eddystone● https://developers.google.com/beacons/proximity/guides● https://developers.google.com/nearby/messages/overview
● https://habrahabr.ru/post/279381/○ моя статья на хабре про proximity api
● https://habrahabr.ru/post/279379/○ моя статья на хабре про nearby messages api
● https://habrahabr.ru/post/281877/○ моя статья на хабре про Eddystone-EID
Tahnk you!
Google Developer Expert:Internet of Things
email: [email protected] google+: zviadkardava twitter: zviadkardava