Slide 1

Slide 1 text

2019 DevDay Evolution of LINE Things and Inside of Released Products > Sho Tachibana > LINE Technical Evangelism Team Technical Evangelist

Slide 2

Slide 2 text

Sho Tachibana Technical Evangelist > Technical Support > Planning Support > Alliance Support > Biz Support Contact Me Anytime!

Slide 3

Slide 3 text

Nov 2018

Slide 4

Slide 4 text

Trial Products 1,800+

Slide 5

Slide 5 text

MAU In TOP 4 164,000,000

Slide 6

Slide 6 text

Install Signup Credit Card Unreachable User Useless Development NO

Slide 7

Slide 7 text

Install NO

Slide 8

Slide 8 text

Signup NO

Slide 9

Slide 9 text

Credit Card NO

Slide 10

Slide 10 text

Unreachable User NO

Slide 11

Slide 11 text

Useless Development NO

Slide 12

Slide 12 text

Agenda > Overview > New Feature: Automated BLE Communication > Service Prototypes by Developers > Products With LINE Things > Our Booth

Slide 13

Slide 13 text

Overview

Slide 14

Slide 14 text

Device link LIFF BLEʢLIFF SDK BLE pluginʣ New feature: Automated BLE communication LINE Things Features

Slide 15

Slide 15 text

LINE Things

Slide 16

Slide 16 text

LINE Things

Slide 17

Slide 17 text

LIFF - LINE Front-end Framework

Slide 18

Slide 18 text

Device Link & LIFF BLE

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

LIFF BLE Device Link

Slide 21

Slide 21 text

How Does LIFF BLE Work?

Slide 22

Slide 22 text

Implementation const device = await liff.bluetooth.requestDevice(); const gatt = await device.gatt.connect(); const service = await gatt.getPrimaryService( 'E625601E-9E55-4597-A598-76018A0D293D' ); const characteristic = await service.getCharacteristic( '26E2B12B-85F0-4F3F-9FDD-91D114270E6E' ); characteristic.addEventListener('characteristicvaluechanged', (e) => { console.log('value changed to:' + e.target.value); }); await characteristic.startNotifications();

Slide 23

Slide 23 text

const device = await liff.bluetooth.requestDevice(); const gatt = await device.gatt.connect(); const service = await gatt.getPrimaryService( 'E625601E-9E55-4597-A598-76018A0D293D' ); const characteristic = await service.getCharacteristic( '26E2B12B-85F0-4F3F-9FDD-91D114270E6E' ); const value = await characteristic.readValue(); Connection Process

Slide 24

Slide 24 text

Data Access LINE app Device Read LINE app Device Write LINE app Device Notify

Slide 25

Slide 25 text

Data Access const device = await liff.bluetooth.requestDevice(); const gatt = await device.gatt.connect(); const service = await gatt.getPrimaryService( 'E625601E-9E55-4597-A598-76018A0D293D' ); const characteristic = await service.getCharacteristic( '26E2B12B-85F0-4F3F-9FDD-91D114270E6E' ); const value = await characteristic.readValue();

Slide 26

Slide 26 text

Read const device = await liff.bluetooth.requestDevice(); const gatt = await device.gatt.connect(); const service = await gatt.getPrimaryService( 'E625601E-9E55-4597-A598-76018A0D293D' ); const characteristic = await service.getCharacteristic( '26E2B12B-85F0-4F3F-9FDD-91D114270E6E' ); const value = await characteristic.readValue();

Slide 27

Slide 27 text

Write const device = await liff.bluetooth.requestDevice(); const gatt = await device.gatt.connect(); const service = await gatt.getPrimaryService( 'E625601E-9E55-4597-A598-76018A0D293D' ); const characteristic = await service.getCharacteristic( '26E2B12B-85F0-4F3F-9FDD-91D114270E6E' ); await characteristic.writeValue( new TextEncoder(‘utf-8‘).encode(‘LIFF BLE’) );

Slide 28

Slide 28 text

Notify const device = await liff.bluetooth.requestDevice(); const gatt = await device.gatt.connect(); const service = await gatt.getPrimaryService( 'E625601E-9E55-4597-A598-76018A0D293D' ); const characteristic = await service.getCharacteristic( '26E2B12B-85F0-4F3F-9FDD-91D114270E6E' ); characteristic.addEventListener('characteristicvaluechanged', (e) => { console.log('value changed to:' + e.target.value); }); await characteristic.startNotifications();

Slide 29

Slide 29 text

Automated BLE Communication

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

How Does Automated BLE Communication Work?

Slide 32

Slide 32 text

Scenario { "autoClose": false, "suppressionInterval": 0, "scenarios": [ { "trigger": { "type": "BLE_NOTIFICATION", "serviceUuid": "4812a0a6-10af-4afb-91f0-b4434e55763b", "characteristicUuid": "91a6fb1d-d365-4229-9d41-4358a96388e3" }, "actions": [ { "type": "GATT_WRITE", "serviceUuid": "4812a0a6-10af-4afb-91f0-b4434e55763b", "characteristicUuid": "91a6fb1d-d365-4229-9d41-4358a96388e3", "data": "Zm9vCg==" } ] } ] }

Slide 33

Slide 33 text

{ "autoClose": false, "suppressionInterval": 0, "scenarios": [ { "trigger": { "type": "BLE_NOTIFICATION", "serviceUuid": "4812a0a6-10af-4afb-91f0-b4434e55763b", "characteristicUuid": "91a6fb1d-d365-4229-9d41-4358a96388e3" }, "actions": [ { "type": "GATT_WRITE", "serviceUuid": "4812a0a6-10af-4afb-91f0-b4434e55763b", "characteristicUuid": "91a6fb1d-d365-4229-9d41-4358a96388e3", "data": "Zm9vCg==" } ] } ] } Scenario

Slide 34

Slide 34 text

{ "autoClose": false, "suppressionInterval": 0, "scenarios": [ { "trigger": { "type": "BLE_NOTIFICATION", "serviceUuid": "4812a0a6-10af-4afb-91f0-b4434e55763b", "characteristicUuid": "91a6fb1d-d365-4229-9d41-4358a96388e3" }, "actions": [ { "type": "GATT_WRITE", "serviceUuid": "4812a0a6-10af-4afb-91f0-b4434e55763b", "characteristicUuid": "91a6fb1d-d365-4229-9d41-4358a96388e3", "data": "Zm9vCg==" } ] } ] } Scenario

Slide 35

Slide 35 text

{ "autoClose": false, "suppressionInterval": 0, "scenarios": [ { "trigger": { "type": "BLE_NOTIFICATION", "serviceUuid": "4812a0a6-10af-4afb-91f0-b4434e55763b", "characteristicUuid": "91a6fb1d-d365-4229-9d41-4358a96388e3" }, "actions": [ { "type": "GATT_WRITE", "serviceUuid": "4812a0a6-10af-4afb-91f0-b4434e55763b", "characteristicUuid": "91a6fb1d-d365-4229-9d41-4358a96388e3", "data": "Zm9vCg==" } ] } ] } Scenario

Slide 36

Slide 36 text

Scenario { "autoClose": false, "suppressionInterval": 0, "scenarios": [ { "trigger": { "type": "BLE_NOTIFICATION", "serviceUuid": "4812a0a6-10af-4afb-91f0-b4434e55763b", "characteristicUuid": "91a6fb1d-d365-4229-9d41-4358a96388e3" }, "actions": [ { "type": "GATT_WRITE", "serviceUuid": "4812a0a6-10af-4afb-91f0-b4434e55763b", "characteristicUuid": "91a6fb1d-d365-4229-9d41-4358a96388e3", "data": "Zm9vCg==" } ] } ] }

Slide 37

Slide 37 text

Scenario { "autoClose": true, "suppressionInterval": 600000, "scenarios": [ { "trigger": { "type": "IMMEDIATE", }, "actions": [ { "type": "GATT_READ", "serviceUuid": "4812a0a6-10af-4afb-91f0-b4434e55763b", "characteristicUuid": "91a6fb1d-d365-4229-9d41-4358a96388e3" } ] } ] }

Slide 38

Slide 38 text

Webhook { "events": [ { "type": "things", ... "things": { "type": "scenarioResult", "deviceId": "tXXX", "result": { "scenarioId": "XXX", "revision": 2, "startTime": 1547817845950, "endTime": 1547817845952, "resultCode": "success", "bleNotificationPayload": "AQ==", "actionResults": [ { "type": "binary", "data": "/w==" } ......

Slide 39

Slide 39 text

{ "events": [ { "type": "things", ... "things": { "type": "scenarioResult", "deviceId": "tXXX", "result": { "scenarioId": "XXX", "revision": 2, "startTime": 1547817845950, "endTime": 1547817845952, "resultCode": "success", "bleNotificationPayload": "AQ==", "actionResults": [ { "type": "binary", "data": "/w==" } ...... Webhook

Slide 40

Slide 40 text

> Background communication works(with a few expetions) > Sleep action must be less than 5 seconds > autoClose = true with just BLE_NOTIFICATION trigger does not works Important Notes Regarding Automated BLE Communication > Background Behavior of BLE depends on OS

Slide 41

Slide 41 text

> Background communication works(with a few expetions) > Sleep action must be less than 5 seconds > autoClose = true with just BLE_NOTIFICATION trigger does not works Important Notes Regarding Automated BLE Communication > Background Behavior of BLE depends on OS

Slide 42

Slide 42 text

> Background communication works(with a few expetions) > Sleep action must be less than 5 seconds > autoClose = true with just BLE_NOTIFICATION trigger does not works Important Notes Regarding Automated BLE Communication > Background Behavior of BLE depends on OS

Slide 43

Slide 43 text

> Background communication works(with a few expetions) > Sleep action must be less than 5 seconds > autoClose = true with just BLE_NOTIFICATION trigger does not works Important Notes Regarding Automated BLE Communication > Background Behavior of BLE depends on OS

Slide 44

Slide 44 text

> Background communication works.(with a few expetions) > Sleep action must be less than 5 seconds > autoClose = true with just BLE_NOTIFICATION trigger does not works Important Notes Regarding Automated BLE Communication > Background Behavior of BLE depends on OS

Slide 45

Slide 45 text

Service Prototypes By Developers

Slide 46

Slide 46 text

Car Battery Checker LIFF BLE Automated

Slide 47

Slide 47 text

LINE Things Drink Bar LIFF BLE Messaging API

Slide 48

Slide 48 text

LINE Beacon Bacon LIFF BLE Automated

Slide 49

Slide 49 text

Mirai Gomibako LINE Pay API

Slide 50

Slide 50 text

Quiz Buzzer LIFF BLE LIFF

Slide 51

Slide 51 text

Products With LINE Things

Slide 52

Slide 52 text

No content

Slide 53

Slide 53 text

Smart Pen

Slide 54

Slide 54 text

Our Booth

Slide 55

Slide 55 text

No content

Slide 56

Slide 56 text

No content

Slide 57

Slide 57 text

No content

Slide 58

Slide 58 text

> Will be charged from the second year, but calculated based on the number of users > Push message of LINE Messaging API will be charged, and we plan to monetize by them > Free for the first year after submission for the production plan Price of LINE Things Platform > The campaign will go on for a limited time

Slide 59

Slide 59 text

Last but at Least

Slide 60

Slide 60 text

LINE Things WebApp Messanger Payment Social

Slide 61

Slide 61 text

Life on LINE

Slide 62

Slide 62 text

Thank You