Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
LINE Things - Connecting the Unconnectable
Search
LINE Developers
June 04, 2019
Technology
230
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
LINE Things - Connecting the Unconnectable
LINE Thailand Developer Conference 2019
https://www.facebook.com/events/410021356453349/
LINE Developers
June 04, 2019
More Decks by LINE Developers
See All by LINE Developers
LINEスタンプのSREing事例集:大きなスパイクアクセスを捌くためのSREing
line_developers
3
2.6k
Java 21 Overview
line_developers
6
1.3k
Code Review Challenge: An example of a solution
line_developers
1
1.7k
KARTEのAPIサーバ化
line_developers
1
640
著作権とは何か?〜初歩的概念から権利利用法、侵害要件まで
line_developers
5
2.4k
生成AIと著作権 〜生成AIによって生じる著作権関連の課題と対処
line_developers
3
2.5k
マイクロサービスにおけるBFFアーキテクチャでのモジュラモノリスの導入
line_developers
9
4k
A/B Testing at LINE NEWS
line_developers
3
1.2k
LINEのサポートバージョンの考え方
line_developers
2
1.6k
Other Decks in Technology
See All in Technology
Agent 時代の Kaggle 展望 / kaggle-in-the-agentic-era
upura
1
700
Bill One 開発エンジニア 紹介資料
sansan33
PRO
7
19k
20260804_Q4AzureUpdateBite_FabricDataAgentの精度を高める設計.pdf
matayuuu
1
130
制約理論(ToC)入門 2026版
recruitengineers
PRO
8
2.2k
ラジオの科学
frievea
0
300
『三匹の子ぶた』から学ぶネットワークセキュリティの昔と今 / Network Security: Then and Now Through the Lens of The Three Little Pigs
nttcom
1
1.8k
強化学習「理論」入門
enakai00
3
3.6k
トヨタ⽣産⽅式(TPS)⼊⾨
recruitengineers
PRO
3
720
SO-101×VLAによる3色キューブのピック&プレース
abeja
0
190
TypeScript入門 2026
recruitengineers
PRO
3
550
日本語を汚染するAI
route250
1
120
Webアクセシビリティ入門 2026
recruitengineers
PRO
3
530
Featured
See All Featured
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
570
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
45k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
410
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
430
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
470
Designing for humans not robots
tammielis
254
26k
Mobile First: as difficult as doing things right
swwweet
225
10k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.2k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.3k
Transcript
UKRIT PONGSATHAPORN Lead Hardware Engineer LINE THAILAND LINE THINGS CONNECTING
THE UNCONNECTABLE
A brief look at previous IoT solutions What you can
do right now Something New ? LINE THINGS History Developer Trial ???
HISTORY
Messaging API
LINE Messaging API IoT Use Case IoT device LINE server
Device directly connects with a third party web Messaging API Your server
LINE BEACON
LINE Beacon LINE LINE server Your server LINE BEACON Messaging
API
FEATURES Relative location of the user to the beacon Segment
and specify only users that are near your designated area Provide a more relevant and useful service Location Segmentation Relation
GOING FURTHER Two-way communication Data can be sent and received
Support for almost all BLE devices Seamless integration for users. Out of sight, out of mind. Bi-directional Full Support Seamless
A universal platform for IoT devices
None
WHAT IS LINE THINGS ? A n I o T
p l atfo r m w i t h i n L I N E ’s ecosystem, open to everyone A bridge to connect users, devices, and services Universal hub for your IoT devices and online services Open IoT Platform Bridge to Connect Universal Hub
LINE THINGS LINE LINE server Device Messaging API LIFF BLE
Your server LIFF app
CONNECTION PROCESS Device Scanning Connect Advertising
DEVICE LINK LIFF BLE
HOW DOES LIFF BLE WORK ? LINE LIFF SDK (BLE
plugin) BLE native component Device LIFF app
function initializeApp() { liff.init(() => initializeLiff(), error => uiStatusError(makeErrorMsg(error), false));
} function initializeLiff() { liff.initPlugins(['bluetooth']).then(() => { liffCheckAvailabilityAndDo(() => liffRequestDevice()); }).catch(error => { uiStatusError(makeErrorMsg(error), false); }) } IMPLEMENTATION
function initializeApp() { liff.init(() => initializeLiff(), error => uiStatusError(makeErrorMsg(error), false));
} function initializeLiff() { liff.initPlugins(['bluetooth']).then(() => { liffCheckAvailabilityAndDo(() => liffRequestDevice()); }).catch(error => { uiStatusError(makeErrorMsg(error), false); }) } 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(); 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' ); const value = await characteristic.readValue(); CONNECTION PROCESS
Characteristic: Read Characteristic: Read Characteristic: Write Characteristic: Notify Characteristic: Read
Characteristic: Write Characteristic: Notify BLUETOOTH STACK Service:LINE Things Trial Service:Custom1 Service:Custom2
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(); DATA ACCESS
Device Read Device Write Device Notify DATA ACCESS LINE app
LINE app LINE app
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(); 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' ); await characteristic.writeValue( new TextEncoder('utf-8').encode('LIFF BLE') ) 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' ); characteristic.addEventListener('characteristicvaluechanged', (e) => { console.log('value changed to:' + e.target.value); }); await characteristic.startNotifications(); NOTIFY
LINE THINGS DEVELOPER TRIAL
REQUIREMENTS Create a LINE Things-compatible device Add LIFF app to
your channel Create a Channel Create a LIFF app for LINE Things Create a Provider Register a Product 1 2 3 4 5 6
REGISTER YOUR PRODUCT curl -X POST https://api.line.me/things/v1/trial/products \ -H 'Authorization:
Bearer {channel access token}' \ -H 'Content-Type:application/json' \ -d '{ "name": "{trial product name}", "liffId": "{LIFF APP ID}" }'
{ "id": {productId}, "name": "{trial product name}", "type": "BLE", "channelId":
{channelId}, "actionUri": "{LIFF APP URL}", "serviceUuid": "{serviceUuid}", "psdiServiceUuid": "{psdiServiceUuid}", "psdiCharacteristicUuid": "{psdiCharacteristicUuid}" }
LINE THINGS STARTER DEMONSTRATION
AUTOMATIC COMMUNICATION ???
Seamless experience of LINE Things, does not require user interaction
Devices with great services all connected through LINE Setting up is as easy as 1-2-3 Seamless Intuitive Super Simple FEATURES
LINE THINGS LINE LINE server LINE Things Device Messaging API
Returns execution results Your server Executes a scenario set
REGISTERING A SCENARIO SET { "autoClose": false, "suppressionInterval": 0, "scenarios":
[ { "trigger": { "type": "BLE_NOTIFICATION", "serviceUuid": "<YOUR SERVICE UUID>", "characteristicUuid": "62FBD229-6EDD-4D1A-B554- 5C4E1BB29169" }, "actions": [] } ] }
{ "autoClose": false, "suppressionInterval": 0, "scenarios": [ { "trigger": {
"type": "BLE_NOTIFICATION", "serviceUuid": "<YOUR SERVICE UUID>", "characteristicUuid": "62FBD229-6EDD-4D1A-B554- 5C4E1BB29169" }, "actions": [] } ] } SCENARIO SET
{ "autoClose": false, "suppressionInterval": 0, "scenarios": [ { "trigger": {
"type": "BLE_NOTIFICATION", "serviceUuid": "<YOUR SERVICE UUID>", "characteristicUuid": "62FBD229-6EDD-4D1A-B554- 5C4E1BB29169" }, "actions": [] } ] } SCENARIO SET
{ "autoClose": false, "suppressionInterval": 0, "scenarios": [ { "trigger": {
"type": "BLE_NOTIFICATION", "serviceUuid": "<YOUR SERVICE UUID>", "characteristicUuid": "62FBD229-6EDD-4D1A-B554- 5C4E1BB29169" }, "actions": [] } ] } SCENARIO SET
{ "autoClose": false, "suppressionInterval": 0, "scenarios": [ { "trigger": {
"type": "BLE_NOTIFICATION", "serviceUuid": "<YOUR SERVICE UUID>", "characteristicUuid": "62FBD229-6EDD-4D1A-B554- 5C4E1BB29169" }, "actions": [] } ] } SCENARIO SET
{ "autoClose": false, "suppressionInterval": 0, "scenarios": [ { "trigger": {
"type": "BLE_NOTIFICATION", "serviceUuid": "<YOUR SERVICE UUID>", "characteristicUuid": "62FBD229-6EDD-4D1A-B554- 5C4E1BB29169" }, "actions": [] } ] } SCENARIO SET
{ "events": [ { "type": "things", "replyToken": "7219516709304f028ddf1540d6953518", "source": {
"userId": "u11111111111111111111111111111111", "type": "user" }, "timestamp": 1558610209312, "things": { "deviceId": "t016ae2ae6b5d3fabed4cd0700cf16612", "result": { "scenarioId": "01DBG55W4AQX75G66X83QX46ZY", "revision": 2, "startTime": 1558610206362, Webhook Event
AUTOMATIC COMMUNICATION DEMONSTRATION
HANDS-ON-ATHON LINE THAILAND LINE Developers Thailand ONE MORE THING...
THANK_YOU