มาเริ่มต้นใช้งาน IoT Core กัน

มาทดลองการใช้งานเซอร์วิส IoT Core กัน โดยทั่วไปเราก็จะมีการเชื่อมต่อกับอุปกรณ์ IoT ภายนอกต่างๆนะครับ แต่ในครั้งนี้ผมจะทำการจำลองอุปกรณ์โดยใช้ EC2 แทนครับผม ถ้าพร้อมแล้วมาเริ่มกันเลย
2022.08.22

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

เริ่มต้น

ในครั้งนี้เราก็จะมาทดลองการใช้งานเซอร์วิส IoT Core กันนะครับโดยทั่วไปเราก็จะมีการเชื่อมต่อกับอุปกรณ์ IoT ภายนอกต่างๆนะครับ แต่ในครั้งนี้ผมจะทำการจำลองอุปกรณ์โดยใช้ EC2 แทนครับผม ถ้าพร้อมแล้วมาเริ่มกันเลย ถ้าคุณต้องการที่จะศึกษาเกี่ยวกับ IoT Core สามารถอ่านบทความนี้เสริมก่อนได้ครับ

  • AWS IoT Core คืออะไร? การแนะนำฟังก์ชันล่าสุดของ AWS ในปี 2022
  • 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:8GiBgp2 ▼Root volume (Default)

    Putty & WinSCP

    หลังจากที่เราสร้าง Instance เสร็จเรียบร้อยแล้วเราก็จะมาตั้งค่า Instance กันผ่านโปรแกรม Putty นะครับ สำหรับคนที่ไม่รู้วิธีการสามารถทำตามขั้นตอนในลิ้งค์ด้านล่างนี้เลยครับ

  • การ Connect to EC2 by 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 สามารถดาวน์โหลดได้จากลิ้งค์ด้านล่างนี้เลยครับ

  • Download WinSCP
  • วิธีการ Deploy
  • เมื่อเปิดโปรแกรมขึ้นมาได้แล้วให้เราทำการอัพโหลดไฟล์ลงไปยังเซิร์ฟเวอร์ได้เลยครับ

    หลังจากนั้นเราก็แก้ไขโปรแกรมนิดหน่อยเพื่อเปลี่ยนข้อมูลในโปรแกรมให้ตรงกับชื่อ 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 โดยในตัวอย่างผมจะใส่ข้อมูลดังนี้

    S3 Bucket name: chawish-[date]

    เมื่อเราสร้าง S3 Bucket เรียบร้อยแล้วอันดับต่อไปเราก็จะสร้างและใช้งาน Amazon Kinesis กันครับ

    Kinesis Firehose

    ในขั้นตอนนี้เราจะทำการสร้าง Kinesis Data Firehose เพื่อทำการเชื่อมต่อกับ S3 นะครับทำให้สามารถส่งข้อมูลไปเก็บไว้ที่ S3 ได้โดยขั้นตอนสามารถดูได้จากลิ้งค์ด้านล่างได้เช่นกันครับ

  • การสร้าง Kinesis Data Firehose
  • โดยผมจะกำหนดข้อมูลดังนี้

    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 ให้ทำตามลิ้งค์ด้านล่างนี้ได้เลยครับ

  • การ Terminate Instance, ลบ Key Pair และลบ Security Group ใน EC2
  • และในส่วนของ Firehose กับ S3 Bucket สามารถดูขั้นตอนได้จากบล็อกของผมก่อนหน้านี้ได้เลยครับตามลิ้งค์ด้านล่าง

  • การหยุดใช้งาน S3 และ Firehose
  • และสุดท้ายจะเป็นการลบการใช้งาน 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 ได้เลยครับ

    เพียงเท่านี้เราก็ลบการใช้งานทุกอย่างออกหมดแล้วครับผม

    สรุป

    สำหรับในบล็อกนี้ก็เป็นเนื้อหาใหม่ที่ผมเคยใช้งานเหมือน เรียกได้ว่าใช้ระยะเวลาในการเขียนนานพอสมควรแต่ผมก็หวังว่าทุกคนที่เข้ามาอ่านบล็อกนี้จะได้ความรู้ และ วิธีการกลับไปหลังจากอ่านบล็อกนี้จบนะครับ ขอบคุณครับ

    บทความที่เกี่ยวข้อง

  • AWS IoT Core คืออะไร? การแนะนำฟังก์ชันล่าสุดของ AWS ในปี 2022
  • การส่งข้อมูลจาก EC2 ไปยัง Firehose
  • การใช้งาน S3 ควบคู่กับ Amazon Kinesis Data Firehose
  • 【Update】วิธีติดตั้ง Amazon Linux 2 บน EC2 และเชื่อมต่อเซิร์ฟเวอร์ด้วยโปรแกรม PuTTY
  • การสร้าง S3 BUCKET