สารบัญ:
- ขั้นตอนที่ 1: การตั้งค่าเริ่มต้น
- ขั้นตอนที่ 2: ตั้งค่า Ngrok
- ขั้นตอนที่ 3: สคริปต์ Python สำหรับการควบคุมสวิตช์ไฟ
- ขั้นตอนที่ 4: สคริปต์ Python สำหรับการควบคุมพัดลม
- ขั้นตอนที่ 5: การติดตั้งและกำหนดค่าแพ็คเกจ LIRC
- ขั้นตอนที่ 6: สคริปต์ Python สำหรับการควบคุมทีวี
- ขั้นตอนที่ 7: เข้าสู่ระบบบัญชี AWS
- ขั้นตอนที่ 8: การตั้งค่าทักษะทีวี Alexa
- ขั้นตอนที่ 9: ตั้งค่าทักษะ Alexa ให้สว่าง
- ขั้นตอนที่ 10: Fan Alexa Skill Setup
- ขั้นตอนที่ 11: สร้าง Ciruit
- ขั้นตอนที่ 12: คำสั่งของ Alexa
วีดีโอ: ควบคุมห้องนั่งเล่นด้วย Alexa และ Raspberry Pi: 12 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:02
ควบคุมทีวี ไฟ และพัดลมในห้องนั่งเล่นของคุณด้วย Alexa (Amazon Echo หรือ Dot) และ Raspberry Pi GPIO
ขั้นตอนที่ 1: การตั้งค่าเริ่มต้น
ฉันใช้ Raspberry Pi 2 และรูปภาพ Raspbian Jessie ที่ดาวน์โหลดจาก
เมื่อเข้าสู่ระบบแล้ว ให้ป้อนคำสั่งต่อไปนี้เพื่อติดตั้งแพ็คเกจและไลบรารีหลามที่จำเป็น:
sudo apt-get update && sudo apt-get upgrade -ysudo apt-get install python2.7-dev python-dev python-pip sudo pip ติดตั้ง Flask flask-ask sudo apt-get ติดตั้ง lirc
ขั้นตอนที่ 2: ตั้งค่า Ngrok
เยี่ยมชม https://ngrok.com/download และรับ Linux ARM รุ่นล่าสุดในรูปแบบ zip และ unzip ภายในโฮมไดเร็กตอรี่:
เปิดเครื่องรูด /home/pi/ngrok-stable-linux-arm.zip
เปิดเทอร์มินัลใหม่และป้อนคำสั่งต่อไปนี้:
sudo./ngrok http 4000
เปิดเทอร์มินัลใหม่และป้อนคำสั่งต่อไปนี้:
sudo./ngrok http 4500
เปิดเทอร์มินัลใหม่ที่สามแล้วป้อนคำสั่งต่อไปนี้:
sudo./ngrok http 5000
ขั้นตอนที่ 3: สคริปต์ Python สำหรับการควบคุมสวิตช์ไฟ
เปิดเทอร์มินัลเซสชันใหม่และสร้างไฟล์ python ใหม่ชื่อ light_control.py:
นาโน light_control.py
คัดลอก/วางโค้ดต่อไปนี้ลงในไฟล์ใหม่:
จากการนำเข้าขวด Flaskfrom การนำเข้า flask_ask ถาม, คำสั่ง, convert_errors นำเข้า RPi. GPIO เป็นการนำเข้าการบันทึกการนำเข้า GPIO การนำเข้า ระบบปฏิบัติการ GPIO.setmode(GPIO. BCM) แอป = Flask(_name_) ask = Ask(app, '/') logging.getLogger(" flask_ask").setLevel(logging. DEBUG) @ask.intent('LightControlIntent', mapping={'status': 'status'}) def light_control(status): ลอง: pinNum = 27 ยกเว้นข้อยกเว้น e: return statement('หมายเลขพินไม่ถูกต้อง') GPIO.setup (pinNum, GPIO. OUT) หากสถานะเป็น ['on', 'high']: GPIO.output (pinNum, GPIO. LOW) หากสถานะเป็น ['off', ' ต่ำ']: GPIO.output(pinNum, GPIO. HIGH) return statement('Turning {} the Living Room Lights'.format(status)) if _name_ == '_main_': port = 4000 app.run(host=' 0.0.0.0', พอร์ต=พอร์ต)
บันทึกและปิดไฟล์
เริ่มเซิร์ฟเวอร์ขวดด้วย:
sudo python light_control.py
ปล่อยให้ทั้ง ngrok และ light_control.py ทำงานอยู่
ขั้นตอนที่ 4: สคริปต์ Python สำหรับการควบคุมพัดลม
เปิดเทอร์มินัลเซสชันใหม่และสร้างไฟล์ python ใหม่ชื่อ fan_control.py:
นาโน fan_control.py
คัดลอก/วางโค้ดต่อไปนี้ลงในไฟล์ใหม่:
จากขวดนำเข้า Flask
จากการนำเข้า flask_ask ขอคำสั่ง convert_errors นำเข้า RPi. GPIO เป็นการนำเข้าการบันทึกการนำเข้า GPIO ระบบปฏิบัติการ GPIO.setmode(GPIO. BCM) app = Flask(_name_) ask = Ask(app, '/') logging.getLogger("flask_ask").setLevel(logging. DEBUG) @ask.intent('FanControlIntent', mapping={'status': 'status'}) def fan_control(status): ลอง: pinNum = 22 ยกเว้นข้อยกเว้น e: คำสั่งส่งคืน ('หมายเลขพิน) ไม่ถูกต้อง') GPIO.setup(pinNum, GPIO. OUT) หากสถานะเป็น ['on', 'high']: GPIO.output(pinNum, GPIO. LOW) หากสถานะเป็น ['off', 'low']: GPIO.output(pinNum, GPIO. HIGH) return statement('Turning {} the Living Room Lights'.format(status)) if _name_ == '_main_': port = 4500 app.run(host='0.0.0.0' ', พอร์ต=พอร์ต)
บันทึกและปิดไฟล์
เริ่มเซิร์ฟเวอร์ขวดด้วย:
sudo python fan_control.py
ปล่อยให้ทั้ง ngrok, light_control.py และ fan_control.py ทำงานอยู่
ขั้นตอนที่ 5: การติดตั้งและกำหนดค่าแพ็คเกจ LIRC
ในการควบคุมทีวี คุณต้องกำหนดค่าพินบน Raspberry Pi เพื่อสร้างสัญญาณอินฟราเรด (IR) สำหรับทีวีเฉพาะของคุณ เปิดเทอร์มินัลแล้วป้อนคำสั่งต่อไปนี้เพื่อติดตั้งแพ็คเกจ LIRC ที่จำลองสัญญาณอินฟราเรดของรีโมทคอนโทรลจำนวนมาก
sudo apt-get ติดตั้ง lirc
ถัดไป คุณต้องเปิดใช้งานและกำหนดค่าโมดูลเคอร์เนล lirc_rpi ในการทำเช่นนั้น ให้เปิดโมดูลในตัวแก้ไขนาโน
sudo nano /etc/modules
เพิ่มบรรทัดด้านล่างลงในไฟล์ (ตรวจสอบให้แน่ใจว่าพารามิเตอร์ gpio_out_pin ชี้ไปที่พินที่ควบคุม IR LED):
lirc_devlirc_rpi gpio_out_pin=17
ถัดไป เปิดไฟล์ hardware.conf ใน Nano เหมือนเดิมด้วย sudo:
sudo nano /etc/lirc/hardware.conf
เพิ่มการกำหนดค่าต่อไปนี้ในไฟล์:
LIRCD_ARGS="--uinput"LOAD_MODULES=true
DRIVER="ค่าเริ่มต้น"
DEVICE="/dev/lirc0"
MODULES="lirc_rpi"
LIRCD_CONF=""
LIRCMD_CONF=""
ตอนนี้รีบูต Raspberry Pi:
sudo รีบูต
ขั้นตอนที่ 6: สคริปต์ Python สำหรับการควบคุมทีวี
เปิดเทอร์มินัลเซสชันใหม่และสร้างไฟล์ python ใหม่ชื่อ ir_control.py:
nano ir_control.py
ไปที่
ค้นหารีโมทที่เข้ากันได้กับทีวีของคุณ ในกรณีของฉัน ฉันมีทีวี Sanyo ที่ใช้งานได้กับไฟล์กำหนดค่า sanyo-tv01 เมื่อคุณพบไฟล์ที่รองรับทีวีของคุณแล้ว ให้เปิดและดูตัวเลือกคำสั่ง
คัดลอก/วางรหัสต่อไปนี้ลงในไฟล์ใหม่และแทนที่ sanyo-tv01 ด้วยชื่อไฟล์ที่ใช้ได้กับทีวีของคุณ ตรวจสอบให้แน่ใจด้วยว่าไฟล์กำหนดค่าทีวีของคุณรองรับคำสั่งทีวี คุณอาจต้องแก้ไขคำสั่ง KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN และ KEY_MUTE เพื่อให้ทำงานได้อย่างถูกต้องกับไฟล์กำหนดค่าของทีวี:
จากการนำเข้าขวด Flaskfrom การนำเข้า flask_ask ถาม, คำสั่ง, convert_errors นำเข้า RPi. GPIO เป็นการนำเข้าการบันทึกการนำเข้า GPIO การนำเข้า ระบบปฏิบัติการ GPIO.setmode(GPIO. BCM) app = Flask(_name_) ask = Ask(app, '/') logging.getLogger(" flask_ask").setLevel(logging. DEBUG) @ask.intent('GPIOControlIntent', mapping={'status': 'status'}) #'pin': 'pin'}) def tv_function(status): ถ้าสถานะอยู่ใน ['turn on']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_POWER") return statement('Turning on the TV') สถานะ elif ใน ['turn off']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_POWER") return statement('Turning off the TV') สถานะ elif ใน ['change input']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_VIDEO") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VIDEO") return statement('การเปลี่ยนอินพุตบนทีวี') สถานะ elif ใน ['เพิ่มระดับเสียง']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system("ส่ง SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system ("ส่ง SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system("ส่ง SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") return statement('Increasing Volume on the TV') สถานะ elif ใน ['decrease volume']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system("irsend" ของผู้ให้บริการ ") return statement('ลดระดับเสียงบนทีวี') สถานะ elif ใน ['mute']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") return statement('Muting the TV') สถานะ elif ใน ['unmute ']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") return statement('Unmuting the TV') else: return statement('Remote function not found.') if _name_ == '_main_': port = 5000 app.run(host='0.0.0.0', port=port)
บันทึกและปิดไฟล์
เริ่มเซิร์ฟเวอร์ขวดด้วย:
sudo python ir_control.py
ปล่อยให้หน้าต่างเทอร์มินัล ngrok ทั้งสาม, light_control.py, fan_control.py และ ir_control.py ทำงาน
ขั้นตอนที่ 7: เข้าสู่ระบบบัญชี AWS
สร้างหรือเข้าสู่ระบบบัญชีนักพัฒนา AWS ของคุณก่อน แล้วเปิดรายการทักษะของ Alexa
ขั้นตอนที่ 8: การตั้งค่าทักษะทีวี Alexa
เลือก "เพิ่มทักษะใหม่"
ตั้งชื่อสกิลเป็น 'Trigger TV' และชื่อ Invocation Name เป็นคำที่คุณต้องการใช้เพื่อเปิดใช้งานทักษะ
คลิก 'ถัดไป' เพื่อดำเนินการต่อ
คัดลอก/วางสิ่งต่อไปนี้ลงในช่อง 'Intent Schema':
{ "เจตนา": [{
"สล็อต": [{ "ชื่อ": "สถานะ", "ประเภท": "TV_Function" }, { "ชื่อ": "จำนวน", "ประเภท": "AMAZON. NUMBER" }], "เจตนา": "GPIOControlIntent " }] }
ถัดไป คลิก 'เพิ่มประเภทสล็อต'
ป้อน TV_Function ในฟิลด์ 'Enter Type'
ป้อนค่าต่อไปนี้ในฟิลด์ 'Enter Values':
เปิด
ปิด เปลี่ยน อินพุต เพิ่มระดับเสียง ลดระดับเสียง ปิดเสียง เปิดเสียง
ถัดไป คัดลอก/วางสิ่งต่อไปนี้ลงในกล่อง 'ตัวอย่างคำพูด':
GPIOControlIntent {สถานะ}
GPIOControlIntent {สถานะ} โดย {amount}
คลิก 'ถัดไป' เพื่อดำเนินการต่อ
เลือก 'HTTPS' เป็นประเภทปลายทางของบริการและเลือกภูมิภาค ป้อน URL ngrok จากขั้นตอนที่ 2 แล้วคลิก 'ถัดไป' URL ควรมีลักษณะดังนี้:
ed6ea04d.ngrok.io
คลิก 'ถัดไป' เพื่อดำเนินการต่อและกด 'บันทึก'
ขั้นตอนที่ 9: ตั้งค่าทักษะ Alexa ให้สว่าง
ปิดทักษะที่เปิดอยู่และเลือก "เพิ่มทักษะใหม่"
ตั้งชื่อทักษะเป็น 'Lights Control' และชื่อ Invocation Name เป็นคำที่คุณต้องการใช้เพื่อเปิดใช้งานทักษะ
คลิก 'ถัดไป' เพื่อดำเนินการต่อ คัดลอก/วางสิ่งต่อไปนี้ลงในช่อง 'Intent Schema':
{
"intent": [{ "slots": [{ "name": "status", "type": "LIGHTS_CONTROL" }], "intent": "LightsControlIntent" }] }
ถัดไป คลิก 'เพิ่มประเภทสล็อต'
ป้อน "LIGHTS_CONTROL" ในช่อง 'ป้อนประเภท'
ป้อนค่าต่อไปนี้ในฟิลด์ 'Enter Values':
บน
ปิด
ถัดไป คัดลอก/วางสิ่งต่อไปนี้ลงในกล่อง 'ตัวอย่างคำพูด':
LightsControlIntent เปลี่ยน {สถานะ}
คลิก 'ถัดไป' เพื่อดำเนินการต่อ เลือก 'HTTPS' เป็นประเภทปลายทางของบริการและเลือกภูมิภาค ป้อน URL ngrok จากขั้นตอนที่ 2 แล้วคลิก 'ถัดไป' URL ควรมีลักษณะดังนี้:
ed6ea04d.ngrok.io
คลิก 'ถัดไป' เพื่อดำเนินการต่อและกด 'บันทึก'
ขั้นตอนที่ 10: Fan Alexa Skill Setup
ปิดทักษะที่เปิดอยู่และเลือก "เพิ่มทักษะใหม่"
ตั้งชื่อสกิลเป็น 'Fan Control' และชื่อ Invocation Name เป็นคำที่คุณต้องการใช้เพื่อเปิดใช้งานทักษะ
คลิก 'ถัดไป' เพื่อดำเนินการต่อ
คัดลอก/วางสิ่งต่อไปนี้ลงในช่อง 'Intent Schema':
{
"intent": [{ "slots": [{ "name": "status", "type": "FAN_CONTROL" }], "intent": "FANControlIntent" }] }
ถัดไป คลิก 'เพิ่มประเภทสล็อต'
ป้อน "FAN_CONTROL" ในช่อง 'ป้อนประเภท'
ป้อนค่าต่อไปนี้ในฟิลด์ 'Enter Values':
บน
ปิด
ถัดไป คัดลอก/วางสิ่งต่อไปนี้ลงในกล่อง 'ตัวอย่างคำพูด':
FANControlIntent เปลี่ยน {สถานะ}
คลิก 'ถัดไป' เพื่อดำเนินการต่อ เลือก 'HTTPS' เป็นประเภทปลายทางของบริการและเลือกภูมิภาค ป้อน URL ngrok จากขั้นตอนที่ 2 แล้วคลิก 'ถัดไป' URL ควรมีลักษณะดังนี้:
ed6ea04d.ngrok.io
คลิก 'ถัดไป' เพื่อดำเนินการต่อและกด 'บันทึก'
ขั้นตอนที่ 11: สร้าง Ciruit
ต่อวงจรตามที่แสดงในแผนภาพ ฉันใช้ JBtek 8 Channel DC 5V Relay Module เพื่อเชื่อมต่อกับสายและกราวด์ AC 120v ที่บ้านของฉัน
ขั้นตอนที่ 12: คำสั่งของ Alexa
ตอนนี้สามารถพูดคำสั่งต่อไปนี้กับ Alexa เพื่อควบคุมห้องนั่งเล่นของคุณได้
แนะนำ:
ติดตาม: ศูนย์สื่อขั้นสูงพร้อม Odroid N2 และ Kodi (รองรับ 4k และ HEVC): 3 ขั้นตอน
ติดตาม: Advanced Media Center พร้อม Odroid N2 และ Kodi (รองรับ 4k และ HEVC): บทความนี้เป็นบทความต่อจากบทความก่อนหน้าของฉันที่ประสบความสำเร็จค่อนข้างมากเกี่ยวกับการสร้างศูนย์สื่ออเนกประสงค์ โดยอ้างอิงจาก Raspberry PI ที่ได้รับความนิยมมากในตอนแรก แต่ ในภายหลัง เนื่องจากไม่มีเอาต์พุตที่สอดคล้องกับ HEVC, H.265 และ HDMI 2.2 จึงมีสวิตช์
Blinds Control ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: 5 ขั้นตอน (พร้อมรูปภาพ)
การควบคุมมู่ลี่ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: ในคำแนะนำนี้ ฉันจะแสดงให้คุณเห็นว่าฉันเพิ่มระบบอัตโนมัติให้กับมู่ลี่ของฉันอย่างไร ฉันต้องการเพิ่มและลบระบบอัตโนมัติได้ ดังนั้นการติดตั้งทั้งหมดจึงเป็นแบบหนีบ ส่วนหลักคือ: สเต็ปเปอร์มอเตอร์ ตัวขับสเต็ปควบคุม bij ESP-01 เกียร์และการติดตั้ง
DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: 3 ขั้นตอน
DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: Story A beacon จะส่งสัญญาณอย่างต่อเนื่องเพื่อให้อุปกรณ์บลูทู ธ อื่น ๆ รู้ว่ามีอยู่ และฉันอยากได้บีคอนบลูทูธเพื่อติดตามกุญแจมาตลอด เพราะฉันลืมเอามันมาเหมือน 10 ครั้งในปีที่แล้ว และฉันก็เกิดขึ้น
RuuviTag และ PiZero W และ Blinkt! เทอร์โมมิเตอร์แบบ Bluetooth Beacon: 3 ขั้นตอน (พร้อมรูปภาพ)
RuuviTag และ PiZero W และ Blinkt! เครื่องวัดอุณหภูมิที่ใช้ Bluetooth Beacon: คำแนะนำนี้อธิบายวิธีการอ่านข้อมูลอุณหภูมิและความชื้นจาก RuuviTag โดยใช้ Bluetooth กับ Raspberry Pi Zero W และเพื่อแสดงค่าเป็นเลขฐานสองบน Pimoroni กะพริบตา! pHAT.หรือเรียกสั้นๆ ว่า จะสร้างสถานะอย่างไร
วิธีการสร้าง Quadcoptor (NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS 3DR Radio และ FlySky TH9X): 25 ขั้นตอน (พร้อมรูปภาพ)
วิธีการสร้าง Quadcoptor (NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS 3DR Radio และ FlySky TH9X): นี่คือบทแนะนำเกี่ยวกับวิธีการสร้าง Quadcopter โดยใช้มอเตอร์ NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS & วิทยุ 3DR ฉันพยายามอธิบายแต่ละขั้นตอนด้วยรูปภาพจำนวนหนึ่ง หากคุณมีคำถามหรือความคิดเห็นใด ๆ โปรดตอบกลับ