
สารบัญ:
- ขั้นตอนที่ 1: เข้าสู่ระบบบัญชี AWS ของคุณ
- ขั้นตอนที่ 2: เริ่มต้นใช้งาน "สิ่งต่างๆ" ของ AWS IOT
- ขั้นตอนที่ 3: การลงทะเบียน "สิ่ง" ของ AWS IOT
- ขั้นตอนที่ 4: การเปิดใช้งานใบรับรอง
- ขั้นตอนที่ 5: การเพิ่มนโยบายในใบรับรองของคุณ
- ขั้นตอนที่ 6: การตั้งค่าเริ่มต้นสำหรับหัวข้อ AWS SNS
- ขั้นตอนที่ 7: การสร้างไฟล์ Iot-role.trust.json
- ขั้นตอนที่ 8: การสร้างไฟล์ Iot-policy.json
- ขั้นตอนที่ 9: สร้างหัวข้อ AWS SNS (ตอนที่ 1)
- ขั้นตอนที่ 10: สร้างหัวข้อ AWS SNS (ตอนที่ 2)
- ขั้นตอนที่ 11: สร้างหัวข้อ AWS SNS (ตอนที่ 3)
- ขั้นตอนที่ 12: สร้างบัคเก็ตบน Amazon S3
- ขั้นตอนที่ 13: สร้างนโยบาย AWS (ตอนที่ 1)
- ขั้นตอนที่ 14: สร้างนโยบาย AWS (ตอนที่ 2)
- ขั้นตอนที่ 15: การสร้างตารางสำหรับ DynamoDB
- ขั้นตอนที่ 16: Roomstatus.py
- ขั้นตอนที่ 17: Rfid.py
- ขั้นตอนที่ 18: Server.py
- ขั้นตอนที่ 19: Telegram.py
- ขั้นตอนที่ 20: สตรีมสด (camera_pi.py)
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-23 15:12

Seroma เป็นผู้จัดการห้องเซิร์ฟเวอร์แบบ all-in-one ที่อนุญาตให้ผู้ใช้ตรวจสอบสถานะของเซิร์ฟเวอร์ (อุณหภูมิและความชื้น) บันทึกการเข้าใช้ของห้องเซิร์ฟเวอร์ ตลอดจนตรวจสอบห้องเซิร์ฟเวอร์เพื่อหาการละเมิดความปลอดภัย
ขั้นตอนที่ 1: เข้าสู่ระบบบัญชี AWS ของคุณ




- สำหรับเรา เราเข้าสู่ระบบผ่านเกตเวย์นักเรียนของ AWS เนื่องจากมีบัญชี aws ของนักเรียน
- ตรงไปที่แท็บ "บัญชี AWS" บนเมนูการนำทางที่ด้านบนขวา
- คลิกที่ “ไปที่บัญชีเริ่มต้นของ AWS Educate”
- เปิดคอนโซลเพื่อเข้าถึง AWS Management Console ของคุณ
ขั้นตอนที่ 2: เริ่มต้นใช้งาน "สิ่งต่างๆ" ของ AWS IOT


- ค้นหา “AWS IoT” ในแถบค้นหาบริการของ AWS
- คลิกที่ "เริ่มต้นใช้งาน" เพื่อไปยังแดชบอร์ด AWS IoT Console ซึ่งคุณสามารถดูอุปกรณ์ IoT ทั้งหมดที่ลงทะเบียนในบัญชี AWS ของคุณ
ขั้นตอนที่ 3: การลงทะเบียน "สิ่ง" ของ AWS IOT



- ในแถบนำทาง ให้ไปที่จัดการ "สิ่งของ" IoT ของคุณ
- คลิกที่ "ลงทะเบียนสิ่งของ" หากคุณยังไม่มี (ถ้าคุณมีของอยู่แล้ว ให้คลิกที่ปุ่ม "สร้าง" ที่ด้านบนขวาของหน้าจอถัดจากแท็บค้นหา)
- คลิกที่ปุ่มแรกที่เรียกว่า "สร้างสิ่งเดียว"
- พิมพ์ “RaspberryPi” เป็นชื่อของสิ่งของ สำหรับขั้นตอนนี้ ไม่จำเป็นต้องป้อนข้อมูลอื่นนอกจาก "ชื่อ" หลังจากทำเช่นนั้น คลิกถัดไป
ขั้นตอนที่ 4: การเปิดใช้งานใบรับรอง


- ในขั้นตอนต่อไป ให้คลิกที่ปุ่ม "สร้างใบรับรอง"
- ดาวน์โหลดและจัดเก็บลิงก์ดาวน์โหลด 4 ลิงก์ในหน้าถัดไปลงในไดเร็กทอรีหรือโฟลเดอร์ที่ทำงาน หากต้องการบันทึกไฟล์ root CA ให้คลิกขวาและบันทึกเป็น
- คลิกที่ "เปิดใช้งาน" และข้อความแสดงความสำเร็จจะปรากฏขึ้น
- ใช้ชื่อที่จำง่ายสำหรับไฟล์โดยลบตัวเลขที่อยู่ด้านหน้าชื่อไฟล์แต่ละชื่อ และเปลี่ยนชื่อไฟล์ root CA เป็น "rootca.pem"
- คลิกที่ "แนบนโยบาย" เพื่อดำเนินการต่อ
ขั้นตอนที่ 5: การเพิ่มนโยบายในใบรับรองของคุณ



- ในหน้าถัดไป หากคุณไม่มีนโยบาย พวกเขาจะแจ้งให้คุณสร้างนโยบายบนปุ่ม "สร้างนโยบาย"
- หากคุณมีนโยบายอยู่แล้ว ให้คลิกที่ปุ่ม "สร้างนโยบายใหม่" ด้านล่าง
-
แทรกข้อมูลต่อไปนี้ลงในแบบฟอร์มการสร้างนโยบาย
ชื่อ: RaspberryPiSecurityPolicy
การกระทำ: iot:*
ARN ทรัพยากร: *
ผล: อนุญาต
- นโยบายของคุณควรปรากฏในแท็บ "นโยบาย" ใต้ "ความปลอดภัย"
- จากนั้นไปที่แท็บ "ใบรับรอง" ที่อยู่ภายใต้ "ความปลอดภัย" และแนบนโยบายของคุณกับใบรับรองที่คุณสร้างไว้ก่อนหน้านี้
- ในหน้าถัดไป ให้คลิกนโยบายของคุณแล้วคลิก "แนบ"
- ในหน้ารายละเอียดของสิ่งที่คุณสร้าง ใต้แท็บ "โต้ตอบ" จะมีตำแหน่งข้อมูล REST API ที่ควรคัดลอกและบันทึก
- ตอนนี้ AWS ควรมีสิ่งที่แนบมากับนโยบายและมีใบรับรอง
ขั้นตอนที่ 6: การตั้งค่าเริ่มต้นสำหรับหัวข้อ AWS SNS


SSH ใน Raspberry Pi และติดตั้ง AWS CLI โดยใช้คำสั่ง pip ต่อไปนี้:
sudo pip ติดตั้ง awscli
AWS CLI มีคุณสมบัติการเติมคำสั่งให้สมบูรณ์ แต่ไม่ได้ติดตั้งไว้ตามค่าเริ่มต้น ใช้คำสั่งต่อไปนี้เพื่อติดตั้งคุณสมบัติการเติมคำสั่งบนอินเทอร์เฟซ CLI ของ Raspberry Pi:
สมบูรณ์ -C aws_completer aws
กำหนดค่า AWS CLI ด้วย Access Key ID, Secret Access Key, ชื่อภูมิภาค AWS และรูปแบบเอาต์พุตคำสั่งโดยใช้คำสั่งต่อไปนี้:
aws กำหนดค่า
คอนโซลจะแจ้งให้คุณกรอกข้อมูลต่อไปนี้:
pi@raspberrypi:~ $ aws configuration
AWS Access Key ID [ไม่มี]: "ใส่รหัสการเข้าถึงของผู้ใช้ของคุณที่นี่" AWS Secret Access Key [ไม่มี]: "ใส่รหัสการเข้าถึงความลับของผู้ใช้ที่นี่" ชื่อภูมิภาคเริ่มต้น [ไม่มี]: eu-central-1 รูปแบบเอาต์พุตเริ่มต้น [ไม่มี]: json pi@raspberrypi:~ $
ขั้นตอนที่ 7: การสร้างไฟล์ Iot-role.trust.json


- สร้างไฟล์ JSON ด้วยนโยบาย IAM ด้านบนโดยใช้ชื่อไฟล์ iot-role.trust.json
- สร้างบทบาทโดยใช้ AWS CLI โดยใช้คำสั่งต่อไปนี้
aws iam create-role --role-name my-iot-role --assume-role-policy-document file://iot-role-trust.json
ขั้นตอนที่ 8: การสร้างไฟล์ Iot-policy.json


- สร้างไฟล์ JSON ด้วยนโยบายด้านบนโดยใช้ชื่อไฟล์ iot-policy.json
- สร้างนโยบายบทบาทโดยใช้ AWS CLI โดยใช้คำสั่งต่อไปนี้:
aws iam put-role-policy --role-name IoTRole --policy-name iot-policy --policy-document file://iot-policy.json
ขั้นตอนที่ 9: สร้างหัวข้อ AWS SNS (ตอนที่ 1)



- ในแถบค้นหาบริการของ AWS ค้นหาบริการ “SNS” หรือไปที่
- เนื่องจากคุณไม่มีหัวข้อในขณะนี้ ให้คลิก "สร้างหัวข้อใหม่" เพื่อสร้างหัวข้อ
- พิมพ์ชื่อหัวข้อและชื่อที่แสดง แล้วคลิก "สร้างหัวข้อ" จากนั้นหัวข้อใหม่จะปรากฏขึ้นเมื่อทำตามขั้นตอนทั้งหมดสำเร็จ
- คลิกที่ปุ่มแบบเลื่อนลง "การดำเนินการ" และ "แก้ไขนโยบายหัวข้อ"
ขั้นตอนที่ 10: สร้างหัวข้อ AWS SNS (ตอนที่ 2)



- กำหนดนโยบายเพื่ออนุญาตให้ทุกคนเผยแพร่และสมัครใช้งาน เนื่องจากเป็นข้อจำกัดของบัญชี AWSEducate
- สมัครรับข้อมูลหัวข้อนี้เพื่อรับการอัปเดตที่เผยแพร่ในหัวข้อนี้
-
เปลี่ยนโปรโตคอลเป็น "อีเมล" และป้อนอีเมลของคุณที่จุดสิ้นสุด
- ไปที่อีเมลที่คุณพิมพ์ปลายทาง คลิกลิงก์ยืนยันเพื่อยืนยันการสมัครรับอีเมลเพื่อสมัครรับหัวข้อ
- ไปที่บริการ “AWS IoT” บนเมนูนำทางทางด้านซ้าย ให้คลิกที่ “Act” หน้านี้เป็นที่ที่กฎของคุณจะแสดงและให้คุณดูและแก้ไขได้ ปัจจุบันไม่มีกฎเกณฑ์สำหรับสิ่ง IoT ของคุณ คลิกที่ "สร้างกฎ"
ขั้นตอนที่ 11: สร้างหัวข้อ AWS SNS (ตอนที่ 3)



- พิมพ์ชื่อในช่องชื่อสำหรับกฎของคุณ ในฟิลด์ คำอธิบาย ให้พิมพ์คำอธิบายสำหรับกฎของคุณ ไปที่ส่วนแหล่งที่มาของข้อความ เราจะเลือกเวอร์ชัน SQL ที่อัปเดตล่าสุดในส่วน "การใช้เวอร์ชัน SQL" พิมพ์ * ในแอตทริบิวต์เพื่อเลือกข้อความ MQTT ทั้งหมดจากหัวข้อ ในกรณีของเราคือ "TempHumid"
- จากนั้นเพิ่มการดำเนินการแจ้งเตือน "SNS" สำหรับกฎของคุณ จากนั้นคลิก "กำหนดค่าการดำเนินการ"
- ในหน้า "กำหนดค่าการดำเนินการ" เลือกหัวข้อ SNS ที่คุณเพิ่งสร้างขึ้นและรูปแบบข้อความเป็น RAW หลังจากนั้น เลือกบทบาทที่คุณเพิ่งสร้างโดยใช้ AWS CLI แล้วคลิก “เพิ่มการดำเนินการ”
- การกระทำของคุณจะได้รับการกำหนดค่าและกลับไปที่ "สร้างกฎ"
- คลิกแก้ไข หากคุณต้องการแก้ไขกฎ
ขั้นตอนที่ 12: สร้างบัคเก็ตบน Amazon S3



- ค้นหา S3 ในแถบค้นหาของ AWS
- ในหน้า Amazon S3 ให้คลิกที่ปุ่ม "สร้างที่เก็บข้อมูล" เพื่อเริ่มต้น
-
กรอกแบบฟอร์มป๊อปอัปที่ปรากฏขึ้นพร้อมข้อมูลต่อไปนี้:
- ชื่อบัคเก็ต: seroma-bucket (ต้องไม่ซ้ำกันในบัคเก็ต Amazon S3 ที่มีอยู่ทั้งหมด)
- ภูมิภาค: สหรัฐอเมริกาฝั่งตะวันตก (ออริกอน)
- การตั้งค่าการคัดลอก: (ละเว้น)
- สำหรับขั้นตอนที่ 2 ถึง 3 ให้ข้ามไปโดยคลิก "ถัดไป" เนื่องจากจะไม่มีอะไรเปลี่ยนแปลง ในขั้นตอนที่ 4 คลิก "สร้างที่เก็บข้อมูล"
- หลังจากสร้างแล้ว คุณควรเห็นที่เก็บข้อมูลของคุณในหน้าแรก
ขั้นตอนที่ 13: สร้างนโยบาย AWS (ตอนที่ 1)



- คลิกที่ถังที่คุณสร้างขึ้นเพื่อเข้าสู่หน้าด้านบน จากนั้นไปที่ "นโยบายที่เก็บข้อมูล" ใต้แท็บ "สิทธิ์"
- ถัดไป คลิกลิงก์ "ตัวสร้างนโยบาย" ที่ด้านล่างของหน้าเพื่อสร้างนโยบาย AWS ของคุณ
-
ในแบบฟอร์ม ให้ป้อนค่าต่อไปนี้:
- ประเภทของนโยบาย: นโยบายบัคเก็ต S3
- ผล: อนุญาต
- อาจารย์ใหญ่: *
- บริการ AWS: Amazon S3
- การดำเนินการ: GetObject
- ชื่อทรัพยากร Amazon (ARN): arn:aws:s3:::seroma-bucket
- หลังจากกรอกข้อมูลแล้ว ให้คลิกที่ Add Statement
- คลิกที่ปุ่ม "สร้างนโยบาย"
ขั้นตอนที่ 14: สร้างนโยบาย AWS (ตอนที่ 2)




- คัดลอกรหัสที่สร้างและคลิกปิด
- กลับไปที่ตัวแก้ไขนโยบายบัคเก็ต Amazon S3 ของคุณแล้ววางโค้ดที่คัดลอกไว้ก่อนหน้านี้
- เพิ่ม “/*” ลงในโค้ดที่อยู่ด้านหลังรหัสทรัพยากร เช่นเดียวกับในภาพด้านบน จากนั้นคลิกบันทึก
- หลังจากทำเช่นนั้น ที่เก็บข้อมูลของคุณจะตั้งค่าสำเร็จและพร้อมใช้งาน
ขั้นตอนที่ 15: การสร้างตารางสำหรับ DynamoDB


- ค้นหา DynamoDB ในแถบค้นหาของ AWS Services
-
คลิกที่ "สร้างตาราง" และสร้าง 3 ตารางที่มีข้อมูลด้านล่าง: (เฉพาะ "ชื่อตาราง" และ "คีย์หลัก" เท่านั้นที่จะถูกเปลี่ยน)
- accesslog, pk datetimevalue
- สถานะห้อง pk datetimevalue
- ข้อมูลพนักงาน pk username
ขั้นตอนที่ 16: Roomstatus.py




ส่วนนี้ประกอบด้วยรหัสสำหรับ roomstatus.py ซึ่งเขียนข้อมูลทั้งหมดเกี่ยวกับห้องเซิร์ฟเวอร์เองทุกนาที ซึ่งรวมถึงอุณหภูมิ ความชื้น การเคลื่อนไหว (รูปภาพและวิดีโอหากเป็นจริง) และบันทึกการเข้าถึง นอกจากนี้ยังเขียนข้อมูลไปยัง Google Spreadsheet, ข้อมูลไปยัง DynamoDB, รูปภาพและวิดีโอ (ถ้ามี) ไปยัง S3, แสดงข้อมูลบนหน้าจอ LCD, ส่ง SMS และอีเมลเมื่อสงสัยว่ามีการฝ่าฝืน หรือเมื่ออุณหภูมิหรือความชื้นไม่สม่ำเสมอ.
ในการเรียกใช้ไฟล์ python ให้เปลี่ยนไดเร็กทอรีไปยังตำแหน่งของไฟล์และพิมพ์ในคอนโซล: "sudo python"
รูปที่ 2: ฟังก์ชันที่ประกาศให้อนุญาตการแจ้งเตือนทาง SMS และอีเมล และอัปโหลดไปยัง S3
Pic 3: ตัวแปรที่ประกาศสำหรับฟังก์ชันและ RPi ให้ทำงาน
รูปที่ 4: จุดเริ่มต้นของลูปที่ได้รับค่าอุณหภูมิและความชื้นจาก RPi นอกจากนี้ยังเขียนข้อมูลลงใน Google สเปรดชีต
Pic 5: ส่วนความปลอดภัยของลูป จะเปิดใช้งานตั้งแต่เวลา 19.00 น. ถึง 07.00 น. (นอกเวลาทำการ) เท่านั้น มันจะตรวจสอบการเคลื่อนไหวในช่วงหนึ่งนาที หากตรวจพบการเคลื่อนไหว ระบบจะถ่ายภาพและวิดีโอแล้วอัปโหลดไปยัง S3 พร้อมเขียนข้อมูลไปยัง DynamoDB เพื่อใช้อ้างอิงในภายหลัง หลังจากนั้นจะส่ง SMS และอีเมลหากมีสิ่งผิดปกติ
รูปที่ 6: จุดสิ้นสุดของลูป นอกจากนี้ยังเขียนข้อมูลไปยัง DynamoDB และส่งการแจ้งเตือนตามนั้น บรรทัดสุดท้ายของลูปจะทำให้สคริปต์อยู่ในโหมดสลีปจนกว่าจะถึงนาทีถัดไป
ขั้นตอนที่ 17: Rfid.py




ส่วนนี้ประกอบด้วยรหัสสำหรับ rfid.py ซึ่งเพิ่มฟังก์ชันการทำงานเพื่อติดตามเมื่อพนักงานเข้าถึงห้องเซิร์ฟเวอร์ นอกจากนี้ยังเป็นส่วนหนึ่งของด้านความปลอดภัยของ Seroma ซึ่งพนักงานไม่ได้รับอนุญาตให้เข้าถึงห้องเซิร์ฟเวอร์หลังเวลาทำการ เพื่อป้องกันการละเมิดข้อมูล นอกจากนี้ยังส่งอีเมลและ SMSs พนักงานทุกคนหากสงสัยว่ามีการละเมิด
รูปที่ 2: จุดเริ่มต้นของลอจิกเครื่องอ่าน RFID เมื่อใดก็ตามที่มีการสแกนการ์ดกับเครื่องอ่าน ระบบจะใช้รหัสเฉพาะ (uid) ของการ์ด หลังจากนั้นเราลองหาค่า uid ของการ์ดในตาราง staffdata เพื่อดูว่าการ์ดนั้นเป็นของพนักงานคนใด ภาพที่ 3: หากมี uid ของการ์ดในฐานข้อมูล มันจะตรวจสอบว่าเป็นระหว่าง office หรือไม่ นอกเวลาทำการ หากเป็นเช่นนั้น ระบบจะแจ้งเตือนพนักงานที่เหลือผ่านทาง SMS และอีเมลถึงที่อยู่อีเมลที่สมัครไว้ หากยังคงอยู่ในช่วงเวลาทำการ มันจะเขียนแถวไปยังตารางบันทึกการเข้าใช้งานในฐานข้อมูลพร้อมข้อมูลที่เกี่ยวข้อง นอกจากนี้ยังจะแสดงข้อความต้อนรับบนจอ LCD
ขั้นตอนที่ 18: Server.py



นี่คือไฟล์ server.py เราจะใช้เฟรมเวิร์ก Flask สำหรับเว็บพอร์ทัล ไฟล์ HTML ที่จะใส่ใน / templates ก็แนบมาด้วย
Pic 1: เส้นทางแรกสำหรับ Flask ที่กำหนดไว้ มันจะเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าเข้าสู่ระบบหากพวกเขาไม่ได้เข้าสู่ระบบ และหน้าแดชบอร์ดหากพวกเขาอยู่ ยังกำหนดฟังก์ชั่นที่จะใช้ในคุณสมบัติสตรีมสด
รูปที่ 2, 3, 4: เส้นทางสำหรับขวด รับข้อมูลจากตาราง DynamoDB แล้วส่งคืนไปยังไฟล์ HTML เพื่อให้สามารถใช้งานได้
รูปที่ 5: 2 เส้นทางสุดท้ายสำหรับ Flask มันจัดการฟังก์ชั่นออกจากระบบและฟังก์ชั่นสตรีมสด นอกจากนี้ยังระบุพอร์ตที่เว็บไซต์จะทำงานด้วย
ขั้นตอนที่ 19: Telegram.py



ส่วนนี้ประกอบด้วยรหัสสำหรับบอทโทรเลขของ Seroma ใช้ไลบรารี telepot เพื่อแตะที่ Bot API ของ Telegram ทำงานโดยยอมรับคำค้นหาที่ได้รับและแสดงข้อมูลที่เกี่ยวข้องต่อผู้ใช้ ผู้ใช้สามารถพิมพ์ 'help' เพื่อดูรายการคำสั่งทั้งหมดได้
Pic 1, 2: ในการตั้งค่าบอทโทรเลข คุณต้องใช้ BotFather เพียงทำตามคำแนะนำเพื่อรับ HTTP API ที่เราต้องการในโค้ดของเรา
รูปที่ 4: ตัวอย่างฟังก์ชันที่รับข้อมูลจำนวนหนึ่งจากฐานข้อมูลตามคำขอของผู้ใช้
Pic 5: วิธีที่เราใช้อินพุตของผู้ใช้และตัดสินใจว่าจะเรียกใช้อะไรตามนั้น
ขั้นตอนที่ 20: สตรีมสด (camera_pi.py)



เราได้ใช้คุณลักษณะใหม่สำหรับระบบตรวจสอบห้องเซิร์ฟเวอร์ของเรา ซึ่งเป็นสตรีมสดของสิ่งที่เกิดขึ้นในห้องเซิร์ฟเวอร์ ซึ่งสามารถเข้าถึงได้ทุกที่ทุกเวลา วิธีการทำงานของสตรีมแบบสด: เป็นคุณลักษณะที่ทำใน Flask ร่วมกับ Pi Camera เฟรมวิดีโอจะถูกดาวน์โหลดตามที่เกิดขึ้นในชีวิตจริง ดังนั้นคุณจะเห็นได้ว่ามีการหน่วงเวลาเล็กน้อย (1-2 วินาที) เนื่องจากเฟรมวิดีโอถูกดาวน์โหลดและประกอบเข้าด้วยกัน ไม่สามารถทำได้หากไม่มีเธรด เนื่องจากเธรดพื้นหลังจะอ่านเฟรมจากกล้องและจัดเก็บเฟรมปัจจุบัน การรวมเฟรมทั้งหมดเข้าด้วยกันจะเป็นการส่งสตรีมแบบสด
Pic 2: นี่เป็นไฟล์แยกต่างหากสำหรับเก็บเฟรมวิดีโอทั้งหมด และอย่างที่คุณเห็น เรากำลังใช้โมดูล picamera เพื่อเข้าถึงกล้องราสเบอร์รี่ pi ของเรา ซึ่งเป็นสิ่งที่เราคุ้นเคยมากที่สุด เรามีกล้องระดับคลาส เพื่อให้เราสามารถนำเข้าฟังก์ชันราวกับว่าเป็นสตรีมแบบสดและไม่มีรูปภาพหลายภาพมารวมกัน ดังนั้นในไฟล์แอปพลิเคชันหลักจะถือเป็นสตรีมแบบสดโดยไม่ต้องกังวลว่าเบื้องหลังจะเกิดอะไรขึ้น
Pic 3: นี่เป็นส่วนหนึ่งของไฟล์ server.py ของเราที่มีการเข้ารหัสส่วนสตรีมสด คลาสหลักที่เรานำเข้าสำหรับสิ่งนี้คือ Camera จากไฟล์ camera_pi.py ของเราที่ด้านบนสุดของไฟล์ server.py เรากำหนดฟังก์ชันที่ไดเร็กทอรีรากของเรา gen อย่างไรก็ตาม ฟังก์ชันนี้จะใช้ได้เฉพาะเมื่อเราไปที่ /video_feed ซึ่งเป็นที่ที่สตรีมแบบสดของเราอยู่ ซึ่งจะวนซ้ำผ่านฟังก์ชันนี้และส่งคืนสตรีมแบบสดบนหน้าเว็บ
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน

การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน

การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน

วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน

การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
เครื่อง Rube Goldberg 11 ขั้นตอน: 8 ขั้นตอน

เครื่อง 11 Step Rube Goldberg: โครงการนี้เป็นเครื่อง 11 Step Rube Goldberg ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง