มาเริ่มต้นใช้งาน IoT Core กัน
เริ่มต้น
ในครั้งนี้เราก็จะมาทดลองการใช้งานเซอร์วิส IoT Core กันนะครับโดยทั่วไปเราก็จะมีการเชื่อมต่อกับอุปกรณ์ IoT ภายนอกต่างๆนะครับ แต่ในครั้งนี้ผมจะทำการจำลองอุปกรณ์โดยใช้ EC2 แทนครับผม ถ้าพร้อมแล้วมาเริ่มกันเลย ถ้าคุณต้องการที่จะศึกษาเกี่ยวกับ IoT Core สามารถอ่านบทความนี้เสริมก่อนได้ครับ
IoT Core
ขั้นตอนแรกให้เราไปที่หน้า IoT Core นะครับ และคลิ้กที่เมนู Setting มุมขวา เราก็จะเห็นว่ามี Endpoint แสดงอยู่ให้เรากดคัดลอกข้อมูลมาใส่ไว้ใน Notepad นะครับเพื่อที่จะนำมาใช้งานในส่วนถัดไปครับ
จากนั้นให้เราตั้งค่า Log โดยใช้งาน Role: IoTCore_role ในการใช้งานนะครับ ตามรูป
Policy
จากนั้นให้เราสร้าง Policy เพื่อใช้งานใน IoT Core กันครับ โดยให้เราไปที่หัวข้อ Security และเลือก Policies นะครับ ตามด้วยกดปุ่ม Create Policy ได้เลยครับ
อันดับต่อไปทำการกำหนดชื่อ Policy ที่เราต้องการโดยผมจะกำหนดข้อมูลต่างๆแบบนี้นะครับ
Policy name:chawish-[date]-policy
Policy effect:Allow
Policy action:*
Policy resource:*
จากนั้นก็กดปุ่ม Create ด้านล่างได้เลยครับ
Things
ต่อมาก็จะทำการสร้าง Things กันนะครับโดยจะเป็นส่วนที่ใช้ในการเชื่อมต่อกับอุปกรณ์ IoT ต่างๆนะครับ เช่น Raspberry Pi และ Arduino แต่ตัวอย่างการใช้งานครั้งนี้ผมจะใช้ EC2 แทนอุปกรณ์ที่ใช้งานปกติแทนนะครับ
ให้เราไปที่หัวข้อ All devices นะครับและเลือกเมนู Things เพื่อทำการสร้างครับ
และเลือกหัวข้อเป็น Create single thing นะครับ ตามด้วยกด Next ไปขั้นตอนถัดไปได้เลย
Step 1 Specific thing properties
พอมาถึงขั้นตอนนี้ให้เรากำหนดชื่อ Thing name ของเรานะครับโดยผมจะใช้เป็นรูปแบบ chawish-[date]
นะครับผมตามรูป
หลังจากกำหนดชื่อเรียบร้อยแล้วให้เราเลื่อนลงไปด้านล่างและเลือกหัวข้อ Unnamed shadow (classic) หลังจากนั้นก็กดปุ่ม Next ได้เลยครับ
Step 2 Configure device certificate
เมื่อถึงขั้นตอนนี้ให้เราเลือก Device certificate: Auto-generate a new certificate (recommended) นะครับเพื่อสร้างการรับรองใช้งานอัตโนมัติ และก็กดปุ่ม Next ได้เลย
Step 3 Attach policies to certificate
พอถึงขั้นตอนนี้ระบบจะให้เราเชื่อมต่อ Policy เพื่อใช้กับการทำ Certificate ให้เราเลือก policy ที่ได้สร้างไปก่อนหน้านี้มาใข้งานได้เลยครับ และกดปุ่ม Create thing เพื่อสร้าง Thing ให้เสร็จสมบูรณ์ครับ
เมื่อกดระบบจะสร้าง Certificate ขึ้นมาทั้งหมด 5 อย่างให้เรากด Download ไฟล์ certificate ทั้งหมด 5 ไฟล์มาใส่ในเครื่องได้เลย
หลังจากที่ Download ไฟล์ทั้ง 5 ไฟล์เสร็จให้กดปุ่ม Done เพื่อกลับหน้าหลักได้เลยครับ
เพียงเท่านี้เราก็จะได้ Things มาใช้งานแล้วตามภาพ
ต่อไปก็จะมาทำการ Launch Instance จาก EC2 ครับ
EC2
ทำการติดตั้ง EC2 Instance สำหรับใช้ในการเชื่อมต่อกับ IoT โดยทำตามลิงก์ด้านล่างนี้ครับ
โดยปกติแล้ว เราจะใช้งาน IoT ในรูปแบบของ RaspberryPI หรือ Arduino และอื่นๆ แต่ในครั้งนี้เราจะใช้งาน EC2 ในการทดสอบแทนครับ
! สำหรับผู้ใช้งานที่มีอยู่แล้ว ข้ามขั้นตอนนี้ไปได้เลยครับ
- ※ตัวอย่างตั้งค่าการสร้าง EC2 Instance ในบทความนี้
Create Key pairs
Key pairs:
chawish-[date]
Launch instances
Name and tags
Name:
chawish-[date]
Application and OS Images (Amazon Machine Image)
Amazon Machine Image (AMI):
Amazon Linux 2 AMI (HVM) - Kernel 5.10, SSD Volume Type
(Default)Instance type
Instance type:
t3a.nano
Key pair (login)
Key pair name - required:
chawish-[date]
Network settings
Firewall (security groups)
Security group name - required:
chawish-[date]
Description - required:chawish-[date]
Inbound security groups rules
Security group rule 1 (TCP, 22, 0.0.0.0/0)
Type:
ssh ▼
| Source type:My IP ▼
| Source:xxx.xxx.x.xxx/32 ✕
Configure storage
1x:
8
GiBgp2 ▼
Root volume (Default)
Putty & WinSCP
หลังจากที่เราสร้าง Instance เสร็จเรียบร้อยแล้วเราก็จะมาตั้งค่า Instance กันผ่านโปรแกรม Putty นะครับ สำหรับคนที่ไม่รู้วิธีการสามารถทำตามขั้นตอนในลิ้งค์ด้านล่างนี้เลยครับ
จากนั้นให้เรารันคำสั่ง python3 --version
เพื่อตรวจสอบว่ามีการติดตั้ง Python อยู่ในเซิร์ฟเวอร์หรือไม่
ตามด้วยคำสั่ง pip3 install --user awsiotsdk
นะครับ เป็นคำสั่งที่ใช้ติดตั้งเครื่องมือ sdk ของ iot เพื่อใช้งานคู่กับ AWS ครับ
และเมื่อเราติดตั้งเครื่องมือที่ใช้งาน IoT เสร็จแล้วเราก็จะดาวน์โหลดโค้ดโปรแกรมที่ผมเขียนไว้แล้วเข้ามาเปิดใช้งานครับ โดยใช้คำสั่งตามด้านล่างนี้ได้เลยครับ
wget https://raw.githubusercontent.com/classmethod-thailand/cmth_seminar/develop/iot_core_webinar/iot_dummy_device1.py
เมื่อโหลดเสร็จก็จะมีไฟล์ iot_dummy_device1.py อยู่ในเซิร์ฟเวอร์ของเราแล้วครับ
และในขั้นตอนถัดไปเราจะทำการ Upload ข้อมูล Certificate ของเราลงไปยังเซิร์ฟเวอร์ผ่านโปรแกรม WinSCP นะครับ
WinSCP
สำหรับผู้ที่ยังไม่มีโปรแกรม WinSCP สามารถดาวน์โหลดได้จากลิ้งค์ด้านล่างนี้เลยครับ
เมื่อเปิดโปรแกรมขึ้นมาได้แล้วให้เราทำการอัพโหลดไฟล์ลงไปยังเซิร์ฟเวอร์ได้เลยครับ
หลังจากนั้นเราก็แก้ไขโปรแกรมนิดหน่อยเพื่อเปลี่ยนข้อมูลในโปรแกรมให้ตรงกับชื่อ Certificate ของเราที่เพิ่งอัพโหลดไปนั้นเองครับ โดยใช้คำสั่ง
vi iot_dummy_device1.py
เมื่อเข้ามาดูในโปรแกรมแล้ว ให้เราเปลี่ยนแปลงข้อมูล 3 ส่วนที่อยู่ในไฟล์นี้นั้นก็คือ
ENDPOINT:Endpoint ของ IoT Core ที่เราคัดลอกช่วงต้น
CLIENT_ID:chawish-[date] (ชื่อ Things name ที่เราสร้างใน IoT service)
PATH_TO_CERTIFICATE:ชื่อไฟล์ Certificate ที่มีนามสกุลไฟล์ .pem.crt
PATH_TO_PRIVATE_KEY:ชื่อไฟล์ Private ที่มีนามสกุลไฟล์ .pem.key
เมื่อแก้ไขไฟล์เสร็จ เราก็จะรันคำสั่ง python3 iot_dummy_device1.py
เพื่อเชื่อมต่อ EC2 กับ IoT ครับ
ซึ่งถ้าสามารถเชื่อมต่อได้ระบบก็จะแสดงข้อความดังนี้
IoT Core: MQTT test client
ขั้นตอนต่อไปจะเป็นการใช้งาน MQTT test client เพื่อทดสอบการส่งข้อมูลของระบบกันครับ ให้เราเข้าไปที่หน้า AWS IoT และคลิ้กที่หัวข้อ MQTT test client ที่แถบเมนูด้านซ้ายบนครับ
เมื่อเราเข้ามาแล้วให้เราใส่ข้อมูล Topic filter ลงไปนะครับ โดยข้อมูลนี้จะต้องอยู่ในรูปแบบเดียวกันกับหัวข้อ TOPIC
จากนั้นให้เรากดปุ่ม Subscribe ได้เลยครับ
เมื่อ Subscribe เสร็จให้เราทดสอบระบบโดยการรันคำสั่ง python3 iot_dummy_device1.py
อีกรอยนะครับเพื่อส่งข้อมูลไปยังระบบ ถ้าเราำทตามขั้นตอบถูกต้องก็จะมีข้อมูลแสดงขึ้นมาในแทบ Subscriptions ของเราดังรูปครับ
หมายความว่าตอนนี้ IoT Core รับข้อมูลจาก หรือ EC2 ได้เป็นที่เรียบร้อยแล้ว
Amazon S3
ขั้นตอนต่อไปก็จะเป็นการสร้าง Bucket ใน Amazon S3 เพื่อเชื่อมต่อกับ Firehose และเก็บข้อมูลที่มีการส่งไประหว่าง IoT กับ EC2 ครับ โดยสามารถทำตามขั้นตอนได้ตามลิ้งค์ด้านล่างนี้เลยครับ<br>
S3 Bucket name: chawish-[date]
เมื่อเราสร้าง S3 Bucket เรียบร้อยแล้วอันดับต่อไปเราก็จะสร้างและใช้งาน Amazon Kinesis กันครับ
Kinesis Firehose
ในขั้นตอนนี้เราจะทำการสร้าง Kinesis Data Firehose เพื่อทำการเชื่อมต่อกับ S3 นะครับทำให้สามารถส่งข้อมูลไปเก็บไว้ที่ S3 ได้โดยขั้นตอนสามารถดูได้จากลิ้งค์ด้านล่างได้เช่นกันครับ
โดยผมจะกำหนดข้อมูลดังนี้
Source: Direct PUT
Destination: Amazon S3
Delivery stream name: chawish-[date]
S3 Bucket name: chawish-[date]
Buffer interval: 60 second
และเมื่อเราสร้าง Firehose และเชื่อมต่อกับ S3 ได้เรียบร้อยแล้ว ขั้นตอนต่อไปที่เราจะทำคือการสร้าง Rule ใน IoT Core ครับผม
IoT Core: Create Rule
การสร้าง Rule ใน IoT Core คือการเชื่อมต่อระบบระหว่าง IoT กับ Firehose เข้าด้วยกันสามารถทำให้มีการส่งผ่านข้อมูลได้นั้นเองครับ โดยขั้นตอนแรกให้เราเข้าไปที่หน้า IoT Core และเลื่อนดูในหัวข้อ Message Routing ของแถบเมนูด้านซ้าย จากนั้นคลิ้กที่หัวข้อ Rules ครับผม
Step 1: Specify rule properties
กำหนดชื่อของ Rule เข้าไปครับในตัวอย่างผมจะใช้เป็น
Rule name: chawish_[date]_firehose
เมื่อกำหนดเสร็จก็กด Next ไป Step ถัดไปได้เลยครับ
Step 2: Configure SQL statement
ให้เราเปลี่ยนแปลงข้อมูลดังนนี้นะครับตามรูปได้เลยครับ
SQL version: 2016-03-23
SQL Statement: SELECT * FROM 'test/chawish-20220815'(ส่วนนี้คือ TOPIC name นะครับ)
จากนั้นก็ ก็กด Next ไป Step ถัดไปได้เลยครับ
Step 3: Attach rule actions
ในส่วนนี้ให้เราเชื่อมต่อกับ Kinesis firehose
SQL Action: Kinesis Firehose stream
SQL Kinesis Firehose stream: chawish-20220815
SQL Seperator: \n
แล้วก็เลื่อนลงมาดูในส่วนของ IAM Role ให้เราคลิ้กปุ่ม Create new role ได้เลยครับ
จากนั้นก็ ก็กด Next ไป Step ถัดไปได้เลยครับ
Step 4: Review and Create
ในขั้นตอนนี้ก็จะเป็นการทวนข้อมูลที่เราตั้งค่าไปก่อนหน้านี้จากทั้ง 3 สเต็ปนะครับถ้าเราตรวจสอบเนื้อหาหมดแล้วก็กด Create ได้เลยครับ
หลังจากที่เราสร้าง Rule เรียบร้อยแล้วเพียงเท่าระบบทั้งหมดก็พร้อมใช้งานแล้ว ซึ่งเดียวเราจะมาทดสอบการใช้งานกัน
Test result
การทดสอบใช้งานของระบบ โดยมีกระบวนการคือ
Run python on EC2 → IoT Core → Firehose → Amazon S3
โดยเราจะทำการรันโปรแกรมลงใน EC2 เพื่อส่งข้อมูลไปยัง IoT Core และดูว่าข้อมูลจะส่งไปถึง Amazon S3 และมีการเก็บข้อมูลหรือไม่ ด้วยคำสั่ง
python3 iot_dummy_device1.py
เมื่อรันคำสั่งเสร็จให้รอสัก 3-5 วินาที และลองกลับไปตรวจสอบที่ Amazon S3 Bucket ของเราว่ามีข้อมูลเพิ่มขึ้นมาหรือไม่ ?
ถ้ามีข้อมูลปรากฎขึ้นมาแบบนี้ แสดงว่าระบบทำงานถูกต้องสมบูรณ์ครับ
และเมื่อเรา Download ข้อมูลออกมาเปิดดูจะเป็นเห็นเป็นข้อมูลที่เราส่งไปในรูปแบบนี้ครับ
การ Delete และ Terminate เมื่อเลิกใช้งาน
ในส่วนนี้ของ EC2 ให้ทำตามลิ้งค์ด้านล่างนี้ได้เลยครับ
และในส่วนของ Firehose กับ S3 Bucket สามารถดูขั้นตอนได้จากบล็อกของผมก่อนหน้านี้ได้เลยครับตามลิ้งค์ด้านล่าง
และสุดท้ายจะเป็นการลบการใช้งาน IoT Core นะครับ ขั้นตอนแรกให้เราทำการลบ Things ที่อยู่ใน IoT Core นะครับ โดยเลือกที่ชื่อ Things ของเราและกดปุ่ม Delete ด้านบนครับ
หลังจากนั้นระบบจะแสดงข้อความยืนยันอีกครั้งว่า ต้องการจะลบจริงหรือไม่ เพื่อยืนยันคำตอบให้เราพิมชื่อ Things ของเรานะครับเพื่อยืนยันและกดปุ่ม Delete ได้เลยครับ
ต่อไปก็จะเป็นการ Delete Rule นะครับเข้าไปที่ Message routing และหัวข้อ Rule ตามด้วยเลือกที่ชื่อ Things ของเราและกดปุ่ม Delete ด้านบนครับ
หลังจากนั้นระบบจะแสดงข้อความยืนยันอีกครั้งว่า ต้องการจะลบจริงหรือไม่ เพื่อยืนยันคำตอบให้เราพิม delete เพื่อยืนยันและกดปุ่ม Delete ได้เลยครับ
และในส่วนสุดท้ายที่เราจะทำการลบก็คือ Policy ครับให้เราไปที่ Security และเลือกหัวข้อ Policy ครับจากนั้นเลือกที่ชื่อ Policy ของเราและกดปุ่ม Delete ด้านบนครับ
หลังจากนั้นระบบจะแสดงข้อความยืนยันอีกครั้งว่า ต้องการจะลบจริงหรือไม่ เพื่อยืนยันคำตอบให้เราพิม delete เพื่อยืนยันและกดปุ่ม Delete ได้เลยครับ
เพียงเท่านี้เราก็ลบการใช้งานทุกอย่างออกหมดแล้วครับผม
สรุป
สำหรับในบล็อกนี้ก็เป็นเนื้อหาใหม่ที่ผมเคยใช้งานเหมือน เรียกได้ว่าใช้ระยะเวลาในการเขียนนานพอสมควรแต่ผมก็หวังว่าทุกคนที่เข้ามาอ่านบล็อกนี้จะได้ความรู้ และ วิธีการกลับไปหลังจากอ่านบล็อกนี้จบนะครับ ขอบคุณครับ