ทดสอบ AWS IoT Greengrass ด้วย Raspberry Pi พาร์ท 2/2 : การ Deploy Custom Component

Deploy Custom Component หรือ My component หรือ component ที่เราสร้างขึ้นเองยังไง บทความนี้มีคำตอบ
2024.05.27

เกริ่นนำ

สวัสดีครับ ต้าครับ

บทความทดลองใช้งาน AWS IoT Greengrass นี้เป็นพาร์ท 2/2 หากใครยังไม่เคยอ่าน หรือทำตามพาร์ท 1/2 สามารถเข้าไปอ่านได้ที่บทความต่อไปนี้ครับ

<<<<<<<<<<<<<>>>>>>>>>>>>>>>>

โดยในพาร์ท 2/2 นี้จะเราจะทำการต่อ Raspberry Pi เข้ากับ breadboard แล้วทำการสร้าง Custom Component หรือ My component หรือ component ที่เราสร้างขึ้นเอง สำหรับเปิดไฟแล้ว Deploy เข้าไปผ่าน Greengrass core กันครับ

ขั้นตอนโดยรวม

ขั้นตอนคร่าวๆ ที่จะเขียนในบทความนี้จะมีประมาณนี้ครับ

  1. ต่อแผงวงจร
  2. สร้างไฟล์ Python
  3. สร้าง และ Deploy component
  4. ตรวจสอบผลลัพท์

ต่อแผงวงจร

ผมจะทำการต่อวงจรตามภาพที่แสดงให้เห็นครับ (#18, GND)

สร้างไฟล์ Python

ในขั้นตอนนี้เราจะมาสร้างไฟล์ python ใน Edge Computer (Raspberry Pi) ที่มีคำสั่งให้ไฟในแผงวงจรที่สร้างขึ้นกระพริบกันครับ
แล้วหลังจากนี้เราจะสร้าง component ขึ้นมาเรียกใช้ไฟล์ python นี้กันครับ
โดยในการทำงานจริงแล้วนอกจากที่เราจะเก็บไฟล์คำสั่งไว้ใน Edge Computer เพื่อเรียกใช้แล้ว เรายังสามารถเก็บไฟล์คำสั่ง (python) ไว้ใน S3 แล้วทำการเรียกจาก S3 ใช้ได้ด้วย
แต่ในบทความนี้เพื่อความง่ายเราจะเก็บไฟล์ไว้ใน Raspberry Pi กันครับ

โดยการสร้างไฟล์คำสั่ง Python ในงานจริงๆนั้นเราสามารถเข้าไปใน Raspberry Pi แล้วใช้เมาส์คลิก GUI กดสร้างเหมือนแบบ Windows ก็ได้(มีหลายวิธีที่ทำได้)
แต่เพื่อลดความผิดพลาดในการสร้าง ในบททความนี้ผมจึงจะใช้วิธี SSH แล้วสร้างไฟล์ขึ้นจาก command line ครับ

โดยก่อนอื่นให้เราเชื่อม SSH ไปยัง Raspberry Pi กันก่อนครับ

แล้วใช้คำสั่งต่อไปนี้เป็นการสร้างไฟล์แล้วเขาไปแก้ข้อความ
หมายเหตุ: ถ้า ชื่อ username ของคุณเป็นอย่างอื่นนอกจาก pi ให้แก้ชื่อ pi เป็นชื่อ username ของคุณ

cd /
mkdir -p /home/pi/components/artifacts/com.example.flashing/1.0.0
touch /home/pi/components/artifacts/com.example.flashing/1.0.0/flashing.py
nano /home/pi/components/artifacts/com.example.flashing/1.0.0/flashing.py

หลังจากนั้นก๊อปปี้วางข้อความต่อไปนี้ไปแปะ

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(18,GPIO.OUT)

while(True):
    GPIO.output(18,GPIO.HIGH)
    print("LED ON")
    time.sleep(1)
    GPIO.output(18,GPIO.LOW)
    print("LED OFF")
    time.sleep(1)

ทำการ save file แล้วออก โดยกด Ctrl + o แล้วกด Enter แล้วกด Ctrl + x

พอเสร็จแล้วเราจะได้ไฟล์และโฟล์เดอร์ประมาณแบบนี้

สร้าง component

คราวนี้ให้กลับไปที่ AWS Managament console ไปที่หัวข้อ Components ของ Greengrass Devices ทางลิ้งค์ต่อไปนี้ Greengrass components
แล้วทำการกด Create component

เลือก Component source เป็น YAML
Copy ข้อความด้านล่านนี้ไปแปะ
โดยคำสั่งของ component นี้จะดูได้จากในหัวข้อ Run ซึ่งเมื่อดูแล้วเราจะเห็นว่า เป็นกาเรียกใช้ python3 กับ ไฟล์ python ที่เราสร้างเมื่อกี้นี้นี่เอง
"script": "python3 -u /home/pi/components/artifacts/com.example.flashing/1.0.0/flashing.py '{configuration:/Message}'" หมายเหตุ: ถ้า ชื่อ username ของคุณเป็นอย่างอื่นนอกจาก pi ให้แก้ชื่อ pi เป็นชื่อ username ของคุณ

{
    "RecipeFormatVersion": "2020-01-25",
    "ComponentName": "com.example.flashing",
    "ComponentVersion": "1.0.0",
    "ComponentDescription": "My flashing component.",
    "ComponentPublisher": "Me",
    "ComponentConfiguration": {
        "DefaultConfiguration": {
            "Message": "variable to pass"
        }
    },
    "Manifests": [
        {
            "Platform": {
                "os": "linux"
            },
            "Lifecycle": {
                "Run": {
                    "RequiresPrivilege": true,
                    "script": "python3 -u /home/pi/components/artifacts/com.example.flashing/1.0.0/flashing.py '{configuration:/Message}'"
                }
            }
        }
    ]
}


แล้วเลื่อนลงมาด้านล่าง กด Create component

กด Deploy

เลือก Deployment ที่เราต้องการ แล้วกด Next

กด Next ไปเรื่อยๆครับ (ภาพนี้แสดงให้เห็นเฉยๆว่า มี component ที่เราสร้างแสดงอยู่)

กด Deploy

ถือว่าเสร็จขั้นตอนการสร้าง และ Deploy component แล้วครับ

ตรวจสอบผลลัพท์


ถ้าเราได้ไฟกระพริบเหมือนในรูปนี้ หมายความว่าเราทำสำเร็จแล้วครับ

เราสามารถเข้าไปตรวจสอบที่ Console หรือ CLI แล้วจะเห็นได้ว่า มี componentที่เราสร้างแสดงอยู่

คำสั่ง:

$ sudo /greengrass/v2/bin/greengrass-cli component list


สำหรับบทความนี้ก็มีเพียงเท่านี้ครับ ใน Service Greengrass นั้นยังมีหลายฟีเจอร์ที่น่าสนใจที่ผมยังไม่ได้นำเสนอ ซึ่งใครสนใจสามารถลองค้นได้ด้วยตนเองได้เลยครับ แล้วเจอกันในบทความต่อไปครับ

บทความอ้างอิง

AWS IoT Greengrass คืออะไร? การแนะนำฟังก์ชันของ AWS IoT ในปี 2023 | DevelopersIO
AWS IoT Core คืออะไร? การแนะนำฟังก์ชันล่าสุดของ AWS | DevelopersIO