สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
โปรเจ็กต์นี้มีไว้สำหรับทุกคนที่มีโปรเจ็กต์ Raspberry Pi ที่ใช้ Python ที่ต้องการเพิ่มการควบคุมด้วยเสียงผ่านอุปกรณ์ Amazon Echo ที่มีอยู่ คุณไม่จำเป็นต้องเป็นโปรแกรมเมอร์ที่มีประสบการณ์ แต่คุณควรจะสบายใจกับการใช้บรรทัดคำสั่งและปรับโค้ดที่มีอยู่ให้เหมาะกับความต้องการของคุณ
ตอนแรกฉันเริ่มโครงการเพื่อให้ Raspberry Pi ของฉันควบคุมด้วยเสียงด้วย Alexa เพื่อให้น้ำร้อนในกาต้มน้ำมีอุณหภูมิที่กำหนด แม้ว่าการโต้ตอบที่ฉันต้องการจะค่อนข้างง่าย (ส่งผ่านหนึ่งหมายเลขจาก Alexa ไปยัง Raspberry Pi) แต่ต้องใช้เวลาทำงานมากในการเข้าสู่สถานะนั้นจากบทช่วยสอนที่มีอยู่ ฉันหวังว่าบทช่วยสอนนี้จะทำให้กระบวนการนั้นรวดเร็วที่สุดสำหรับผู้อื่น
ในตัวอย่างของฉัน ฉันเริ่มต้นด้วย Raspberry Pi Zero W กับ Raspbian ฉันมีโปรแกรม Python3 บน Pi ที่สามารถเขียนข้อความไปยังจอแสดงผล SPI และฉันมีเครื่องวัดอุณหภูมิที่สามารถอ่านได้ สำหรับคุณ โปรแกรมนี้อาจเป็นอะไรก็ได้ แต่แนวคิดก็คือ คุณอาจมีอุปกรณ์อินพุตบางตัวที่คุณต้องการอ่านผ่าน Alexa และ/หรืออุปกรณ์ส่งออกบางอย่างที่คุณต้องการควบคุมโดยใช้ Alexa
เป้าหมายคือเปลี่ยนจากโปรแกรมพื้นฐานเช่นโปรแกรมที่อธิบายไว้ข้างต้นไปยังอุปกรณ์ที่คุณสามารถควบคุมด้วย Echo ของฉันได้อย่างง่ายดาย สมมติว่าคุณมีฮาร์ดแวร์นี้อยู่แล้ว โปรเจ็กต์นี้ไม่ควรทำให้คุณเสียเงิน ในท้ายที่สุด คุณจะมาถึงจุดที่คุณสามารถพูดสิ่งต่างๆ เช่น:
ฉัน: "Alexa ขอให้อุปกรณ์ของฉันตรวจสอบอุณหภูมิบนเซ็นเซอร์ 1"
การตอบสนองของ Alexa: "โพรบอ่าน 72.31 องศา"
หรือ
ฉัน: "Alexa บอกแกดเจ็ตของฉันให้เขียน George Washington"
การตอบสนอง: จอแสดงผลที่เชื่อมต่อกับ Raspberry Pi ของฉันตอนนี้อ่านว่า "George Washington"
ในส่วนถัดไป ฉันจะอธิบายสิ่งที่ต้องเกิดขึ้นเบื้องหลังเพื่อให้งานนี้สำเร็จ หากคุณต้องการให้มันทำงานในโครงการของคุณและไม่สนใจว่ามันทำงานอย่างไร อย่าลังเลที่จะข้ามมันไป (แม้ว่ามันอาจจะทำให้ยากขึ้นหากมีสิ่งผิดปกติเกิดขึ้น)
ขั้นตอนที่ 1: พื้นหลัง
ในภาพนี้ (เครดิต: https://developer.amazon.com/en-US/docs/alexa/alex… เราจะเห็นสถาปัตยกรรมทั่วไปของ Alexa Gadgets
เมื่อคุณพูดอะไรบางอย่างกับอุปกรณ์ Echo ของคุณ เสียงนั้นจะส่งไปยัง Alexa Cloud ซึ่งจะถูกประมวลผลและที่ซึ่งการตอบสนองจะถูกสร้างขึ้นเพื่อตอบสนองต่อคุณ เมื่อคุณถามว่าสภาพอากาศเป็นอย่างไร มันเป็นเพียงสองสิ่งนี้ในการสื่อสาร ตอนนี้ สมมติว่าคุณต้องการเพิ่มการควบคุมด้วยเสียงให้กับหนึ่งในโปรเจ็กต์เล็กๆ ของคุณบน Raspberry Pi การประมวลผลทุกอย่างบนเครื่องจะต้องใช้ฮาร์ดแวร์ที่สำคัญและฐานรหัสที่ซับซ้อนมากเพื่อให้สิ่งต่างๆ ดำเนินไป ทางออกที่ดีกว่าคือการใช้ประโยชน์จาก Alexa Cloud ซึ่งมีความซับซ้อนมากและสามารถจัดการกับรูปแบบคำพูดที่ซับซ้อนได้เป็นอย่างดี Alexa Gadgets เป็นวิธีที่ดีสำหรับคุณในการทำเช่นนี้
Alexa Gadget สื่อสารกับอุปกรณ์ Echo โดยใช้บลูทูธ เมื่อสร้างการเชื่อมต่อนี้แล้ว ทั้งสองจะส่งข้อความถึงกันโดยใช้การเข้ารหัส UTF-8 เมื่อเสียงสะท้อนส่งผ่านบางสิ่งไปยังแกดเจ็ต จะเรียกว่าคำสั่ง ทิศทางอื่นเรียกว่าเหตุการณ์ ก่อนที่จะเข้าสู่ขั้นตอนที่แน่นอนของสิ่งเหล่านี้ เราควรแนะนำองค์ประกอบสำคัญอื่น: ทักษะของ Alexa แบบกำหนดเอง
Alexa ช่วยให้นักพัฒนาสามารถสร้างทักษะที่กำหนดเองได้ ซึ่งช่วยให้พวกเขาสามารถออกแบบการโต้ตอบและพฤติกรรมของตนเองเพื่อใช้กับอุปกรณ์ Echo ทั้งหมด ตัวอย่างเช่น นักพัฒนาซอฟต์แวร์สามารถสร้างทักษะที่กำหนดเองเพื่อบอกคุณถึงระยะห่างระหว่างสนามบินสองแห่งในสหรัฐอเมริกา ผู้ใช้จะพูดว่า: "Alexa ถามเครื่องคำนวณระยะทางที่กำหนดเองของฉันว่าระยะห่างระหว่าง LAX และ JFK คืออะไร" และมันสามารถตอบสนองได้ด้วย "2475 ไมล์" มันทำอย่างนี้ได้อย่างไร? เมื่อนักพัฒนาสร้างทักษะที่กำหนดเอง พวกเขากำหนดสิ่งที่เรียกว่า "ความตั้งใจที่กำหนดเอง" ด้วย "คำพูดตัวอย่าง" ที่มี "ช่อง" ตัวอย่างเช่น ในทักษะนี้ ฉันอาจมีเจตนา "calc_dist" เพื่อคำนวณระยะห่างระหว่างจุดสองจุด ตัวอย่างคำพูดจะเป็น "ระยะห่างระหว่าง {slot1} และ {slot2}" หรือ "ระยะห่างระหว่าง {slot1} และ {slot2} เป็นอย่างไร สล็อตที่แสดงในวงเล็บมีประเภทเฉพาะ ในกรณีนี้ประเภทเหล่านั้นจะเป็นรหัสสนามบิน เช่น LAX, JFK, BOS, ATL เมื่อผู้ใช้ขอทักษะที่กำหนดเอง Alexa Cloud จะพยายามจับคู่สิ่งที่ผู้ใช้พูดกับความตั้งใจที่กำหนดเองโดยใช้ตัวอย่างคำพูดที่ให้มาและพยายามค้นหาค่าช่องที่ถูกต้องสำหรับคำขอนั้น ในตัวอย่างนี้ จะพบว่าผู้ใช้ต้องการความตั้งใจ "calc_dist" และ slot1 นั้นคือ LAX และ slot2 คือ JFK ณ จุดนี้ Alexa Cloud ส่งต่องานไปยังโค้ดของผู้พัฒนาเอง โดยพื้นฐานแล้วมันจะบอกนักพัฒนาโค้ดว่าได้รับเจตนาอะไรและค่าสล็อตทั้งหมดคืออะไร ท่ามกลางรายละเอียดอื่นๆ
นักพัฒนาจะต้องตัดสินใจว่าโค้ดของพวกเขาจะอยู่ที่ใด แต่ตัวเลือกยอดนิยมคือการใช้ฟังก์ชัน AWS Lambda หากคุณไม่รู้ว่ามันคืออะไร มันเป็นบริการที่ให้คุณอัปโหลดโค้ดที่สามารถเรียกใช้ได้ตลอดเวลา จากนั้นจะเรียกเก็บเงินจากคุณตามระยะเวลาที่โค้ดของคุณทำงานเท่านั้น หากเราดำเนินการต่อด้วยตัวอย่างของเรา โค้ดของนักพัฒนาซอฟต์แวร์อาจเป็นฟังก์ชัน Python ที่รับรหัสสนามบินสองรหัส ค้นหาที่ตั้ง คำนวณระยะทาง แล้วส่งการตอบกลับกลับไปยัง Alexa Cloud เพื่อพูดบางสิ่งกับผู้ใช้ Alexa Cloud จะส่งข้อมูลคำพูดนั้นกลับไปที่อุปกรณ์ของผู้ใช้และจะได้รับคำตอบ
ตอนนี้เรากลับไปที่แกดเจ็ตได้แล้ว เราสามารถสร้างทักษะแบบกำหนดเองที่ออกแบบมาเพื่อทำงานกับแกดเจ็ตโดยเฉพาะ นักพัฒนาสามารถเขียนทักษะที่ส่งคำสั่งไปยังอุปกรณ์ที่เชื่อมต่อ คำสั่งนั้นมีเพย์โหลดที่สามารถใช้ได้ อย่างไรก็ตาม แกดเจ็ตนั้นจำเป็น ทักษะนั้นยังสามารถส่งคำสั่งแล้วฟังเหตุการณ์จากแกดเจ็ตเพื่อให้รหัสทักษะสามารถเข้าถึงข้อมูลที่ส่งจากแกดเจ็ตได้
การสร้างโฟลว์นี้ทำให้เกิดเครื่องมือที่ทรงพลังมาก เนื่องจากอุปกรณ์ราคาถูกสามารถสื่อสารกับโค้ดในคลาวด์และตอบสนองต่อคำสั่งเสียงโดยใช้การจดจำเสียงที่ดีที่สุดที่มีอยู่
ควรสังเกตว่าทักษะส่วนใหญ่อนุญาตให้มีปฏิสัมพันธ์กับพวกเขาได้หลากหลายวิธี ตัวอย่างเช่น ผู้ใช้อาจกระโจนตรงไปยังเจตนาโดยพูดว่า "Alexa ถามเครื่องคำนวณระยะทางที่กำหนดเองของฉันว่าระยะห่างระหว่าง LAX กับ JFK อยู่ที่เท่าไร" (เรียกว่าการเรียกนัดเดียว) หรืออาจใช้เพียงแค่ความตั้งใจในการเปิดตัว: "Alexa, เปิดเครื่องคำนวณระยะทางที่กำหนดเองของฉัน" ตัวอย่างสุดท้ายนี้มักจะตามมาด้วย Alexa ที่ตอบกลับพร้อมรับข้อมูลเพิ่มเติม บทช่วยสอนนี้จงใจละเว้นการสนับสนุนสำหรับหลัง โดยเฉพาะอย่างยิ่ง โดยไม่ต้องแก้ไขฟังก์ชัน Lambda คุณสามารถเรียกใช้ทักษะได้โดยใช้คำสั่งแบบครั้งเดียวเท่านั้น ตัวเลือกการออกแบบนี้ช่วยให้โมเดลดูเรียบง่ายขึ้น (ไม่จำเป็นต้องรองรับความตั้งใจในการเปิดหรือขั้นตอนการสนทนา) และฉันพบว่าฉันมักจะต้องการโต้ตอบกับแกดเจ็ตของฉันโดยใช้การเรียกใช้แบบช็อตเดียวอยู่แล้ว เนื่องจากโดยปกติแล้วจะเร็วกว่า
ขั้นตอนที่ 2: ลงทะเบียน Gadget บน Alexa Voice Service Developer Console
ต่อไปนี้เป็นคำอธิบายของขั้นตอนที่จำเป็น ฉันได้สร้างวิดีโอที่เทียบเท่ากันซึ่งแสดงวิธีการทำตามขั้นตอนเหล่านี้ทั้งหมด คุณสามารถใช้อย่างใดอย่างหนึ่งหรือทั้งสองอย่างเพื่อทำตามขั้นตอนนี้
- ไปที่
- หากคุณยังไม่มีบัญชีฟรี ให้สร้างบัญชีใหม่
- คลิกที่ "สินค้า"
- กรอกป้ายกำกับและเลือก "Alexa Gadget"
- กรอกข้อมูลที่ต้องการในช่องที่เหลือ
- คลิกเสร็จสิ้น
ขั้นตอนที่ 3: สร้างฟังก์ชัน AWS Lambda และทักษะที่กำหนดเอง
สร้างทักษะที่กำหนดเองบน Alexa Skills Kit Developer Console
รหัสสำหรับบทช่วยสอนนี้สามารถพบได้ที่นี่
ก่อนทำตามขั้นตอนนี้ คุณจะต้องสร้างไฟล์.zip ที่มีแพ็คเกจการปรับใช้สำหรับฟังก์ชัน AWS Lambda ตามที่แสดงในบทช่วยสอนที่นี่
- ดาวน์โหลดโฟลเดอร์ "lambda" จาก Github ของฉันซึ่งมี "lambda_function.py" และ "requirements.txt"
- เปิดเทอร์มินัลแล้วเปลี่ยนไดเร็กทอรีปัจจุบันให้อยู่ในโฟลเดอร์นี้
- รันลำดับต่อไปนี้:
pip install -r requirements.txt -t skill_env
cp lambda_function.py skill_env cd skill_env zip -r../../skill-code.zip
ไฟล์.zip ของคุณจะอยู่ในไดเร็กทอรีที่มีโฟลเดอร์ lambda และชื่อ "skill-code.zip"
หมายเหตุเกี่ยวกับค่าใช้จ่ายในการโฮสต์บน AWS: บทช่วยสอนนี้กำหนดให้คุณมีบัญชี AWS (สร้างได้ฟรี) ฟังก์ชัน Lambda มีค่าใช้จ่าย แต่ราคาปัจจุบันในภูมิภาค N. Virginia อยู่ที่ $0.000000208 ต่อ 100ms ที่ใช้กับหน่วยความจำ 128MB สำหรับการอ้างอิง การเรียกใช้ทักษะของฉันแต่ละครั้งจะเรียกเก็บเงินประมาณ 800 มิลลิวินาทีของการใช้งานในระดับนี้ หากต้องการเรียกเก็บเงิน $1.00USD คุณจะต้องเรียกใช้ฟังก์ชันนี้ประมาณ 600,000 ครั้ง ซึ่ง (หากคุณใช้เวลา 5 วินาทีต่อการเรียกใช้แต่ละครั้ง) จะใช้เวลา 34 วันในการเรียกใช้ฟังก์ชันของคุณแบบไม่หยุดหย่อน ค่าใช้จ่ายไม่ควรเป็นปัญหาสำคัญ เว้นแต่คุณจะเผยแพร่ทักษะของคุณและผู้คนจำนวนมากเริ่มใช้งาน หากคุณกังวลเกี่ยวกับการเรียกเก็บเงินใน AWS ให้พิจารณาตั้งค่าการเตือนการใช้งานที่แจ้งให้คุณทราบหากการใช้งานผ่านเกณฑ์ที่กำหนดไว้
ต่อไปนี้เป็นคำอธิบายของขั้นตอนที่จำเป็น ฉันได้สร้างวิดีโอที่เทียบเท่ากันซึ่งแสดงวิธีการทำตามขั้นตอนเหล่านี้ทั้งหมด คุณสามารถใช้อย่างใดอย่างหนึ่งหรือทั้งสองอย่างเพื่อทำตามขั้นตอนนี้
- ไปที่ https://aws.amazon.com/ และลงชื่อเข้าใช้คอนโซลหรือสร้างบัญชีฟรีหากคุณไม่มี
- ค้นหาและคลิกที่ Lambda ภายใต้บริการ
- คลิก "สร้างฟังก์ชัน"
- เลือก "ผู้เขียนตั้งแต่เริ่มต้น" ตั้งชื่อและเลือก Python 3 เวอร์ชันล่าสุดสำหรับรันไทม์
- เปลี่ยน "แก้ไขโค้ดในบรรทัด" เป็น "อัปโหลดไฟล์.zip" และเลือกไฟล์.zip ที่สร้างขึ้นด้านบน
- ในหน้าต่างใหม่ ไปที่ https://developer.amazon.com/alexa/console/ask และลงชื่อเข้าใช้
- คลิกที่ "สร้างทักษะ"
- ติดป้ายกำกับ เลือกโมเดล "กำหนดเอง" และ "จัดเตรียมของคุณเอง" แล้วคลิก "สร้างทักษะ"
- คลิก "เริ่มจากศูนย์" และคลิก "เลือก"
- ภายใต้ "ความตั้งใจ" คลิก "เพิ่ม"
- สร้างความตั้งใจที่กำหนดเองที่เรียกว่า "alexa_to_pi" และกรอก "เขียน {person}" เป็นตัวอย่างคำพูด
- ทำช่องเจตนาเรียกว่า "บุคคล" ด้วยประเภท "AMAZON. Person"
- สร้างความตั้งใจที่กำหนดเองที่เรียกว่า "pi_to_alexa" และกรอก "ตรวจสอบอุณหภูมิจากเซ็นเซอร์ {sensor_num}
- สร้าง Intent slot ชื่อ "sensor_num" ด้วยประเภท "AMAZON. NUMBER"
- ภายใต้อินเทอร์เฟซ เปิด "ตัวควบคุมอินเทอร์เฟซแบบกำหนดเอง"
- ภายใต้ Endpoint เลือก "AWS Lambda ARN" และคัดลอก "Your Skill ID"
- กลับไปที่ AWS Console
- คลิก "เพิ่มทริกเกอร์"
- เลือก "Alexa Skills Kit" เลือก "เปิดใช้งาน" ภายใต้การตรวจสอบ ID ทักษะ วางใน Skill ID ที่คุณเพิ่งคัดลอกและคลิกเพิ่ม
- คัดลอก Lambda ARN ที่มุมขวาบน
- กลับไปที่ Alexa Developer Console และวาง Lambda ARN ลงในฟิลด์ "Default Region"
- ภายใต้ Invocation ให้ตั้งชื่อ Skill Invocation Name เป็น "my gadget"
- คลิก "บันทึกโมเดล" จากนั้น "สร้างโมเดล"
- คลิก "ทดสอบ" ในแท็บด้านบนและเปลี่ยนตัวเลือกจาก "ปิด" เป็น "การพัฒนา"
- โปรดทราบว่าบันทึกสำหรับฟังก์ชัน Lambda จะพบได้ในบริการ "CloudWatch" บน AWS
ขั้นตอนที่ 4: ตั้งค่ารหัสบน Raspberry Pi ของคุณ
เพื่อให้ Raspberry Pi สื่อสารกับอุปกรณ์ Alexa ได้ จำเป็นต้องมีโค้ดเพื่ออำนวยความสะดวกในการส่งข้อมูลผ่านบลูทูธและคงการเชื่อมต่อนั้นไว้ นอกเหนือจากไฟล์อื่นๆ อีกสองสามไฟล์ วิธีที่ง่ายที่สุดในการเริ่มต้นใช้งานไฟล์ล่าสุดจาก Amazon คือการโคลนที่เก็บ Raspberry Pi Gadgets ไปที่ไดเร็กทอรีของโปรเจ็กต์ปัจจุบันของคุณและรัน
โคลน git
สิ่งนี้จะโหลดพื้นที่เก็บข้อมูลทั้งหมดด้วยรหัสที่จำเป็นทั้งหมดบน Pi ของคุณ มีตัวอย่างโครงการที่แสดงความสามารถบางอย่างของ Alexa Gadgets หากคุณต้องการข้อมูลเพิ่มเติม โปรดดู readme บนหน้า Github ของพวกเขา
เรียกใช้ฟังก์ชันการตั้งค่าเพื่อรับทุกอย่างที่กำหนดค่า
cd /home/pi/Alexa-Gadgets-Raspberry-Pi-Samples
sudo python3 launch.py --setup
ทำตามคำแนะนำและตอบ "y" เมื่อถูกถามว่าคุณต้องการกำหนดค่าโดยใช้ข้อมูลรับรอง Gadget ของคุณหรือไม่ เรียกคืน Amazon ID และ Gadget Secret จากการตั้งค่าแกดเจ็ตของคุณบนคอนโซลนักพัฒนาซอฟต์แวร์ เนื่องจากระบบจะถามคุณที่นี่ ฉันเลือกโหมดการส่ง "bt" สำหรับ Raspberry Pi Zero W ของฉัน อุปกรณ์ Echo รุ่นเก่าทั้งหมดไม่รองรับ BLE แต่คุณสามารถค้นหาว่าฮาร์ดแวร์ของคุณมีความสามารถใดบ้าง หากคุณกำลังใช้ Pi ในโหมดเดสก์ท็อป Amazon แนะนำให้คลิกขวาที่ไอคอนบลูทูธที่ด้านบนขวาแล้วคลิก "ลบ "บลูทูธ" ออกจากแผงควบคุม" เพื่อหลีกเลี่ยงปัญหาการเชื่อมต่อ
หมายเหตุ: ขั้นตอนนี้อาจใช้เวลาสักครู่ขึ้นอยู่กับว่าจำเป็นต้องติดตั้งมากน้อยเพียงใด
ตอนนี้คุณจะมีไฟล์สนับสนุนที่จำเป็นทั้งหมดเพื่อกลับไปที่โครงการของคุณ และเริ่มเพิ่มในฟังก์ชันเพื่อให้สามารถสื่อสารกับ Echo ของคุณได้
หากคุณเลือก คุณสามารถลบโฟลเดอร์ "ตัวอย่าง" ใน "Alexa-Gadgets-Raspberry-Pi-Samples/src"
คุณสามารถมีรหัสโปรเจ็กต์ได้ทุกที่ตามต้องการ แต่ฉันจะสร้างโฟลเดอร์ในโฮมไดเร็กตอรี่สำหรับมัน หรือคุณสามารถดาวน์โหลดโฟลเดอร์ที่มีโค้ดจาก Github ของฉันได้ เพียงแค่ต้องแน่ใจว่าได้แก้ไขไฟล์.ini ตามที่อธิบายไว้ด้านล่าง
cd /home/pi
mkdir my_project cd my_project touch my_gadget.py touch my_gadget.ini
ตอนนี้ฉันได้สร้างสองไฟล์ในโฟลเดอร์ชื่อ "my_project" ไฟล์.ini มีความสำคัญ ตรวจสอบให้แน่ใจว่ามีสิ่งต่อไปนี้และแทนที่ใน Amazon ID และ Gadget Secret ของคุณ:
[การตั้งค่าแกดเจ็ต]
amazonId = INSERT_AMAZON_ID_HERE alexaGadgetSecret = INSERT_ALEXA_GADGET_SECRET_HERE [GadgetCapabilities] กำหนดเอง MyGadget = 1.0
ทีนี้มาดูไฟล์ python กันก่อนจะลงรายละเอียด:
นำเข้า json
จาก agt นำเข้า AlexaGadget
คลาส MyGadget (AlexaGadget):
def _init_ (ตัวเอง):
สุดยอด()._init_()
def on_custom_mygadget_alexatopi (ตัวเอง, คำสั่ง):
payload = json.loads(directive.payload.decode("utf-8")) print("ข้อมูลที่ได้รับ: " + str(payload)) write_text(str(payload['data']['person']['value ']))
def on_custom_mygadget_pitoalexa (ตัวเอง, คำสั่ง):
payload = json.loads(directive.payload.decode("utf-8")) พิมพ์ ("ข้อมูลที่ได้รับ: " + str (payload)) payload = {'data': "โพรบอ่าน " + str (get_temp (payload) ['data'] ['sensor_num']['value'])) + " องศา."} self.send_custom_event('Custom. MyGadget', 'PiToAlexa', เพย์โหลด) MyGadget().main()
ขั้นแรก คุณจะสังเกตเห็นว่ามันเรียกฟังก์ชันสองอย่าง: write_text() และ get_temp() ในโค้ดของฉัน ฉันกำหนดฟังก์ชันเหล่านี้ในไฟล์เดียวกัน แต่ฟังก์ชันเหล่านี้ขึ้นอยู่กับฮาร์ดแวร์ของฉัน ดังนั้นฉันจึงเลือกที่จะละเว้น ฉันได้แนบไฟล์นี้พร้อมกับฟังก์ชันที่กำหนดไว้เพื่อพิมพ์และส่งคืนข้อมูลจำลอง ในกรณีที่คุณต้องการเรียกใช้โค้ดที่แน่นอนนี้ ฉันขอแนะนำให้ทดสอบด้วยรหัสที่แน่นอนนี้ก่อนที่คุณจะแก้ไขเพื่อให้ทำงานกับโครงการของคุณ ฉันได้แนบไฟล์.ini มาด้วย แต่ให้แน่ใจว่าคุณเข้าไปข้างในและเปลี่ยนรหัสลับและแกดเจ็ต ฟังก์ชันระดับบนสุดรับข้อมูลที่ส่งผ่านมาจาก Alexa ฟังก์ชันด้านล่างรับข้อมูลในรูปแบบเดียวกัน แต่อุปกรณ์ Alexa จะรอเป็นเวลาห้าวินาทีเพื่อให้เหตุการณ์ถูกส่งกลับพร้อมเพย์โหลดของตัวเอง เพย์โหลดนี้พิเศษตรงที่อุปกรณ์ Alexa จะพูดเนื้อหา
เมื่อคุณมีไฟล์เหล่านี้แล้ว ให้ไปที่โฟลเดอร์ "my_project" และเรียกใช้ไฟล์ python
sudo รีบูต
cd /home/pi/my_project sudo python3./my_gadget.py
หากนี่เป็นครั้งแรกที่คุณเรียกใช้โปรแกรม คุณจะต้องจับคู่กับอุปกรณ์ Echo ของคุณ ตรวจสอบให้แน่ใจว่าอุปกรณ์ Echo ของคุณอยู่ใกล้กับ Raspberry Pi เนื่องจากเราต้องอนุญาตการเชื่อมต่อบลูทูธ
ในแอป Alexa บนอุปกรณ์มือถือของคุณ คลิก "อุปกรณ์" ที่มุมล่างขวา
คลิก "Echo & Alexa" ที่ด้านบนซ้าย
คลิกที่อุปกรณ์ Echo ของคุณ
ในส่วน "ไร้สาย" ให้แตะ "อุปกรณ์บลูทูธ"
แตะ "จับคู่อุปกรณ์ใหม่" แล้วคุณจะเห็นแกดเจ็ตของคุณในรายการ
แตะที่แกดเจ็ตของคุณ คุณควรเห็นรายงาน Pi ว่าจับคู่สำเร็จแล้ว
ในขณะที่ดูผลลัพธ์บน Pi ของคุณ ให้ลองสั่งเสียงกับ Echo:
คุณ: "Alexa ขอให้อุปกรณ์ของฉันตรวจสอบอุณหภูมิจากเซ็นเซอร์ตัวหนึ่ง"
หากทุกอย่างทำงานอย่างถูกต้อง คุณควรได้ยิน:
Echo: "โพรบอ่าน 120.505 องศา"
คุณ: "Alexa บอกแกดเจ็ตของฉันให้เขียน George Washington"
Pi ควรพิมพ์:
ข้อมูลที่ได้รับ: {'data': {'person': {'name': 'person', 'value': 'George Washington', 'confirmationStatus': 'NONE'}}}
จอร์จวอชิงตัน"
ขั้นตอนที่ 5: การสรุป
วิดีโอที่แสดงในที่นี้คือตัวอย่างของแกดเจ็ตที่ทำงานด้วยการอ่านอุณหภูมิ (โพรบเดียวกันใน F เทียบกับ C) และการเขียนชื่อลงในจอแสดงผลทั่วไป
ตอนนี้คุณหวังว่าจะมีบางอย่างที่ใช้งานได้ คุณควรลองปรับแต่งสิ่งนี้เพื่อทำให้โครงการของคุณมีความสามารถมากขึ้น จำไว้ว่าคุณสามารถแก้ไข Intents ใน Alexa Developer Console ได้อย่างง่ายดาย และสล็อตทั้งหมดที่คุณใช้จะถูกส่งต่อไปยัง Pi ของคุณในเพย์โหลด นอกจากนี้ คุณสามารถให้ Alexa พูดอะไรก็ได้ที่คุณต้องการโดยเพียงแค่แก้ไขเพย์โหลดที่คุณส่งกลับในกิจกรรมจากโค้ด Raspberry Pi ของคุณ
โปรดทราบว่าบทช่วยสอนนี้ไม่ได้มีวัตถุประสงค์เพื่อเป็นทางออกสุดท้ายสำหรับความสามารถทั้งหมดที่คุณต้องการด้วย Alexa Gadget มีการจำกัดโดยเจตนาเพื่อให้คุณมีฟังก์ชันง่ายๆ สองฟังก์ชันสำหรับส่งข้อมูลในแต่ละทิศทางระหว่าง Alexa และ Gadget หากคุณสนใจที่จะสร้างโมเดลการโต้ตอบที่ซับซ้อนมากขึ้น เราขอแนะนำให้คุณอ่านไฟล์ readme ทั้งหมดใน https://github.com/alexa/Alexa-Gadgets-Raspberry-P… และลองตัวอย่างทั้งหมดที่มีให้. ฉันยังขอแนะนำให้คุณอ่านเอกสารประกอบของ Alexa Gadgets Toolkit และ Alexa Skills Kit