ลองเล่น LINE Beacon ด้วย Raspberry Pi

Phayao Boonon
4 min readDec 16, 2018

--

วันก่อนโชคดีได้สิทธิ์ไปร่วมงาน LINE Developer Meetup#3 เห็น LINE Expert คุณ Sitthi Thiammekha โชว์ LINE Beacon ที่ไม่ต้องใช้ LINE Beacon device โดยใช้ Mac เป็น Beacon device ผมก็เห็นผ่านๆ ว่าใช้ Raspberry Pi ได้ด้วย ก็เป็นเรื่องที่ดีสำหรับคนที่ไม่มี Mac แต่มี Raspberry Pi (ราคาถูกกว่ามาก 555) สามารถลองเล่น LINE Beacon ได้ ผมก็เลยเอา Raspberry Pi ที่มีอยู่มาลองเล่น LINE Beacon

สร้าง LINE Simple Beacon Hardware ID

ก่อนอื่นเราต้องสร้าง LINE Simple Beacon Hardware ID ก่อน เพราะว่าไม่มี Beacon device ของจริง คล้ายๆ กับ Hardware ID จำลองที่ใช้ได้ในระบบ LINE ด้วยการไปที่ LINE@ Manager register Beacon คลิ๊กที่ Issue LINE Simple Beacon Hardware ID แล้วเลือก LINE Bot Account ที่เรามีอยู่แล้ว (ถ้ายังไม่มี LINE Bot Account จะต้องไปสร้างก่อน) เพื่อเชื่อมโยงกับ LINE Beacon แล้วคลิ๊กที่ Issue Hardware ID เราก็จะได้ Hardware ID ที่จำลอง Beacon device สำหรับ LINE Simple Beacon Hardware ID (ตัวอย่างของผมเป็น 01204798fd)

ติดตั้ง LINE Simple Beacon

ในบทความนี้จะใช้ LINE Simple Beacon ทำงานบน Raspberry Pi 3 ซึ่งก็เหมือนกับที่ทำงานบนเครื่อง Macintosh โดยใช้ OS เป็น Raspbian Stretch Lite (Debian Stretch version สำหรับ Raspberry Pi) ซึ่งเป็น version Lite ที่ไม่รวม Desktop environment มาด้วย ทำให้ขนาดเล็กกว่าเยอะมาก เพราะเราจะใช้ PuTTY เพื่อรีโมทเข้าไปใช้งาน (วิธีติดตั้ง Raspbian สามารถทำตามขั้นตอนนี้) ซึ่งวิธีติดตั้ง LINE Simple Beacon สามารถตามวิธีใน README ได้เลย

ติดตั้ง Pre-require

เปิดใช้งาน Raspberry Pi โดยต้องเชื่อมต่อ Network เพราะเราจะรีโมทด้วย PuTTY แต่จะต้องเปิดใช้งาน SSH ของ Raspberry Pi ก่อน ตามวิธีนี้

Raspberry Pi 3
  • เปิด PuTTY แล้วใส่ IP ของ Raspberry Pi ใช้ Port 22 (เช่น 192.168.1.35:22)
  • ติดตั้ง bluetooth และ library ด้วยคำสั่ง
$ sudo apt-get install bluetooth bluez libbluetooth-dev libudev-dev
  • ติดตั้ง Node.js และ NPM สำหรับรัน Simple Beacon ด้วย Node.js ด้วยคำสั่ง

$ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
$ sudo apt-get install nodejs
$ sudo apt-get install npm
  • ติดตั้ง Git สำหรับ clone Simple Beacon repo ด้วยคำสั่ง
$ sudo apt-get install git

เป็นอันว่าเราติดตั้ง software ที่จำเป็นสำหรับรัน LINE Simple Beacon เรียบร้อยแล้ว

รัน LINE Simple Beacon

หลังจากที่เราได้เตรียม software ที่จะเป็นแล้วก็ clone LINE Simple Beacon มาไว้ใน Raspberry Pi ของเรา และ install dependencies ด้วย NPM

แล้วรัน script simplebeacon.js ด้วย --hwid ที่ได้จากการสร้าง Hardware ID ถ้ารันสำเร็จจะแสดง stateChange เป็น powerdOn และมี Buffer เป็น Hex number

$ git clone https://github.com/line/line-simple-beacon.git
$ cd line-simple-beacon/tools/line-simplebeacon-nodejs-sample/
$ npm install
$ sudo ./simplebeacon.js --hwid=01204798fd

เป็นอันว่าเราสามารถรัน Beacon device จำลองด้วย LINE Simple Beacon ได้แล้วต่อไปเราจะให้ LINE Bot ของเรารับ Beacon event แล้วตอบกลับอะไรง่ายๆ ไปหา User

สร้าง LINE Bot

ต่อไปเราจะสร้าง LINE Bot ง่ายๆ ด้วย Java/Spring เพื่อจัดการกับ Beacon event ที่ได้จาก LINE Simple Beacon ด้วยการเพิ่ม @EvenMapping ที่รับค่าเป็น BeaconEvent แล้วตอบกลับไปเป็น event string (information)

@EventMapping
public void handleBeaconEvent(BeaconEvent event) {
log.info(event.toString());
reply(event.getReplyToken(), event.toString());
}

สามารถ clone code ตัวอย่างได้จาก

เมื่อเรารัน LIEN Bot ด้วยคำสั่ง mvn spring-boot:run ก็จะรัน Bot ในเครื่องของเราเพื่อจัดการกับ Beacon event โดยจะใช้ ngrok เพื่อใน LINE Bot Server มองเห็น LINE Bot ในเครื่องของเรา

ทดลอง LINE Simple Beacon กับ LINE Bot

หลังจากที่รัน LINE Simple Beacon บน Raspberry Pi และ LINE Bot ที่จัดการกับ Beacon event ในเครื่องของเราแล้ว ก็มาทดสอบว่าทำงานได้ไหม ด้วยการเปิด LINE app ในมือถือของเรา โดยตั้งค่าในรับ Beacon ได้ด้วย Settings -> Privacy -> Privacy usage data แล้วเปิดใช้งาน LINE Beacon ยอมรับข้อตกลง Agree & start แล้วเราก็จะได้ข้อความจาก LINE Bot ที่เป็น Beacon event info ดังนี้ และใน console ของ LINE Bot ก็จะแสดงว่า Bot ได้รับ Beacon event และตอบกลับไป

ถ้า LINE Bot ไม่ตอบกลับและใน console ไม่แสดงว่ารับ Beacon event ให้ลองปิด-เปิด LINE app เพื่อลองดูว่า LINE Simple Beacon ได้ส่ง Beacon event มาหา LINE app หรือไม่ เพราะเท่าที่ผมทดลองจะสังเกตว่า LINE Simple Beacon จะส่ง Beacon event มาทุกครั้งที่มีการปิด-เปิด LINE app ใหม่

สรุป

จะเห็นได้ว่าการสร้าง LINE Simple Beacon ด้วย Raspberry Pi และ LINE Bot นั้นทำได้ไม่ยาก ไม่แตกต่างกันการใช้ Macintosh ในการทำให้เป็น Beacon device จำลองเลย ซึ่งมีราคาถูกว่าเป็นอย่างมาก และที่สำคัญเราสามารถใช้ Raspberry Pi รัน LINE Simple Beacon ไปประยุกต์ใช้งานได้สะดวกเพราะว่ามีขนาดเล็กกระทัดรัดสำหรับติดตั้งไว้ตามงานต่างๆ เพื่อส่ง Beacon event ไปหา User ที่เป็นเพื่อนของ LINE bot เรา

--

--

Phayao Boonon
Phayao Boonon

Written by Phayao Boonon

Software Engineer 👨🏻‍💻 Stay Hungry Stay Foolish

Responses (1)