สารบัญ:

Sonos Spotify Vinyl Emulator: 26 ขั้นตอน
Sonos Spotify Vinyl Emulator: 26 ขั้นตอน

วีดีโอ: Sonos Spotify Vinyl Emulator: 26 ขั้นตอน

วีดีโอ: Sonos Spotify Vinyl Emulator: 26 ขั้นตอน
วีดีโอ: Vinyl Emulator demo (SOUND ON!) 2024, กรกฎาคม
Anonim
Image
Image
Sonos Spotify Vinyl Emulator
Sonos Spotify Vinyl Emulator

โปรดทราบว่านี่ไม่ใช่ชุดคำสั่งล่าสุดสำหรับโครงการนี้:

โปรดไปที่ https://www.hackster.io/mark-hank/sonos-spotify-vinyl-emulator-3be63d เพื่อดูชุดคำแนะนำและการสนับสนุนล่าสุด

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

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

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

ฉันจะแนะนำคุณตลอดทุกขั้นตอน ตั้งแต่การตั้งค่า Raspberry Pi ไปจนถึงการเข้ารหัสแท็ก NFC นี่เป็นโปรเจ็กต์ Raspberry Pi แรกของฉันและโค้ด Python แรกของฉัน ดังนั้นฉันจึงสอนตัวเองทั้งคู่ขณะพัฒนาสิ่งนี้ ดังนั้น คำแนะนำเหล่านี้จึงถือว่าไม่มีความรู้เดิมมาก่อนและจะอธิบายให้คุณทราบในทุกขั้นตอน

ค่าใช้จ่ายทั้งหมดสำหรับส่วนประกอบที่จำเป็นในการสร้างนี้อยู่ที่ประมาณ 50-60 ปอนด์

ฉันชอบที่จะเห็นสิ่งที่คุณสร้าง!

ขั้นตอนที่ 1: อุปกรณ์ที่จำเป็น 1: Raspberry Pi

แบ็กเอนด์ที่เชื่อมต่อกับเครือข่าย Sonos และ Spotify ของคุณจะถูกเรียกใช้โดย Raspberry Pi มีน้อยมากที่คุณต้องทำสิ่งนี้ให้สำเร็จ

จำเป็น:

Raspberry Pi: ฉันใช้ Raspberry Pi 3 Model B+ แต่จะใช้ได้กับ Raspberry Pi 3 Model A+ ด้วย (23 ปอนด์)

แหล่งจ่ายไฟ USB: ฉันมีตัวหนึ่งวางอยู่รอบๆ - มีอีกตัวหนึ่งที่มีจำหน่ายหากคุณไม่มี (9 ปอนด์)

การ์ด Micro SD: ฉันมีการ์ดขนาด 32GB ซึ่งเพียงพอสำหรับแอปพลิเคชันนี้ใน Amazon (6 ปอนด์)

อุปกรณ์ Sonos บางตัวที่ทำงานบนเครือข่ายของคุณ (ฉันเดาว่าคุณมีอยู่แล้วถ้าคุณอยู่ที่นี่…)

บัญชี Spotify Premium

ที่แนะนำ:

กรณีสำหรับ Pi: มีตัวเลือกมากมายเริ่มต้นที่ 5 ปอนด์

California Zinfandel หนึ่งขวด: ฉันแนะนำ Ridge แต่มีอย่างอื่นให้เลือก

ขั้นตอนที่ 2: อุปกรณ์ที่จำเป็น 2: NFC Reader

อุปกรณ์ที่จำเป็น 2: เครื่องอ่าน NFC
อุปกรณ์ที่จำเป็น 2: เครื่องอ่าน NFC
อุปกรณ์ที่จำเป็น 2: เครื่องอ่าน NFC
อุปกรณ์ที่จำเป็น 2: เครื่องอ่าน NFC

คำแนะนำเหล่านี้จัดทำขึ้นสำหรับเครื่องอ่าน NFC ACR122U ซึ่งเชื่อมต่อผ่าน USB

ACR122U

ฉันซื้อเครื่องนี้จาก Amazon ในราคา 38 ปอนด์ (ส่วนใหญ่เป็นเพราะมีการจัดส่งที่สำคัญ) แต่มีตัวเลือกที่ถูกกว่าในการซื้อเครื่องอ่านเดียวกันนี้

ดูเหมือนว่า ACR122U จะขายได้อย่างสับสนภายใต้ชื่อแบรนด์ต่างๆ (ของฉันมาภายใต้ชื่อแบรนด์ "Yosoo") แต่จากสิ่งที่ฉันสามารถบอกได้ว่าพวกเขาทั้งหมดเหมือนกันและสร้างโดย American Card Systems

ราคาถูกที่สุดที่ฉันพบว่า ACR122U โฆษณาคือ 21 ปอนด์รวมค่าจัดส่ง แต่มาจากประเทศจีนโดยตรง ดังนั้นคุณอาจต้องรอสักครู่

ตัวเลือกอื่น

โครงการนี้อาศัยไลบรารีหลามที่เรียกว่า nfcpy ซึ่งดูแลรายการอุปกรณ์ที่รองรับที่นี่:

ตามทฤษฎีแล้ว โปรเจ็กต์นี้ควรทำงานร่วมกับผู้ใดก็ตามที่อยู่ในรายชื่อนั้นโดยมีการบูรณาการเพียงเล็กน้อย

ตัวเลือกหนึ่งที่น่าดึงดูดใจคือ Adafruit PN532 ซึ่งเป็นบอร์ดที่ควรต่อกับ Raspberry Pi ของคุณโดยตรงโดยใช้สายจัมเปอร์ ฉันลองและพบว่ามันเป็นของจริง มันต้องมีการบัดกรีเป็นต้น

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

ขั้นตอนที่ 3: วัสดุที่จำเป็น 3: แท็ก NFC

วัสดุที่จำเป็น 3: แท็ก NFC
วัสดุที่จำเป็น 3: แท็ก NFC

สำหรับแต่ละอัลบั้มที่คุณต้องการสร้าง คุณจะต้องมีแท็ก NFC ซึ่งตรงตามมาตรฐาน NTAG213

มีหลายสถานที่ที่จะซื้อเหล่านี้

ฉันซื้อชุดแรกจาก Amazon โดยได้ชุด 10 ชิ้นในราคา 9 ปอนด์ (รวมการจัดส่งแบบ Prime)

สิ่งที่ดีที่สุดที่ฉันเคยพบในสหราชอาณาจักรคือ Seritag - พวกเขามีรูปแบบที่แตกต่างกันมากมาย คำแนะนำที่ดีบนเว็บไซต์ของพวกเขา คุณรู้แน่ชัดว่าคุณได้รับอะไร (ไม่จริงเสมอไปใน Amazon) พวกเขาไม่มีขนาดการสั่งซื้อขั้นต่ำและตัวเลือกมากมาย แท็กเริ่มต้นที่ 27p ต่อแท็ก

ขั้นตอนที่ 4: ดาวน์โหลด Raspberry Pi OS ไปยังการ์ด SD

ดาวน์โหลด Raspberry Pi OS ลงในการ์ด SD
ดาวน์โหลด Raspberry Pi OS ลงในการ์ด SD
ดาวน์โหลด Raspberry Pi OS ลงในการ์ด SD
ดาวน์โหลด Raspberry Pi OS ลงในการ์ด SD

บนพีซีหรือ Mac ของคุณ ให้ดาวน์โหลดและเรียกใช้แอปพลิเคชันตัวสร้างภาพ Raspberry PI

ใส่การ์ด SD ที่คุณต้องการติดตั้งระบบปฏิบัติการ Raspberry Pi

คลิกที่ CHOOSE OS และเลือก Rasbian เริ่มต้น

คลิกที่ CHOOSE SD CARD และเลือกการ์ด SD ที่คุณเสียบไว้

คลิกที่เขียน อาจใช้เวลาสักครู่

เมื่อเสร็จแล้วระบบจะบอกให้คุณถอดการ์ด SD ออก ซึ่งคุณควรทำ แต่จากนั้นเสียบกลับเข้าไปใหม่ เนื่องจากมีบางจุดของการดูแลทำความสะอาดที่คุณต้องทำก่อน

ขั้นตอนที่ 5: เปิดใช้งาน SSH บนอิมเมจ Raspberry Pi OS ของคุณ

เปิดใช้งาน SSH บนอิมเมจ Raspberry Pi OS ของคุณ
เปิดใช้งาน SSH บนอิมเมจ Raspberry Pi OS ของคุณ

เมื่อระบบปฏิบัติการได้รับการเขียนลงในการ์ด SD แล้ว มีงานเพิ่มเติมบางอย่างที่คุณต้องทำ

เราต้องการเข้าถึง Raspberry Pi โดยไม่ต้องเสียบแป้นพิมพ์หรือจอภาพ (หรือที่เรียกว่า "หัวขาด") ซึ่งเราสามารถทำได้ผ่านเครือข่ายท้องถิ่นของเราโดยใช้พีซีหรือ Mac ของเราผ่านโปรโตคอลที่เรียกว่า SSH อย่างไรก็ตาม ด้วยเหตุผลด้านความปลอดภัย SSH จะถูกปิดใช้งานโดยค่าเริ่มต้น เราจำเป็นต้องเปิดใช้งาน

เราสามารถทำได้โดยสร้างไฟล์เปล่าที่เรียกว่า:

ssh

ในการ์ด SD ที่เราเพิ่งสร้างขึ้น สิ่งสำคัญคือต้องไม่มีนามสกุล (เช่น.txt) ไฟล์ไม่จำเป็นต้องมีเนื้อหาใด ๆ เพียงแค่มีอยู่เท่านั้นที่จะเปิดใช้งาน SSH เมื่อ Pi บูทขึ้น

ขั้นตอนที่ 6: ตัวเลือก: ตั้งค่า Wifi บน Raspberry Pi. ของคุณ

ไม่บังคับ: ตั้งค่า Wifi บน Raspberry Pi. ของคุณ
ไม่บังคับ: ตั้งค่า Wifi บน Raspberry Pi. ของคุณ
ไม่บังคับ: ตั้งค่า Wifi บน Raspberry Pi. ของคุณ
ไม่บังคับ: ตั้งค่า Wifi บน Raspberry Pi. ของคุณ

คุณสามารถข้ามขั้นตอนนี้ได้ หากคุณวางแผนที่จะต่อ Raspberry Pi กับเราเตอร์ของคุณทางอีเธอร์เน็ต (แม้ว่าคุณอาจต้องการคิดหนักเกี่ยวกับการตัดสินใจนั้น - การใช้งานผ่าน wifi ทำให้ชีวิตง่ายขึ้นมากในแง่ของการวางตำแหน่งนี้)

สร้างไฟล์ข้อความธรรมดาชื่อ wpa_supplicant.conf ในไดเร็กทอรีรากของการ์ด SD

แทรกข้อความด้านล่างลงในไฟล์:

ประเทศ=gb

update_config=1 ctrl_interface=/var/run/wpa_supplicant network={ scan_ssid=1 ssid="MyNetworkSSID" psk="MyPassword" }

เปลี่ยนประเทศตามความเหมาะสม (GB คือสหราชอาณาจักร US คือ US DE คือเยอรมนี ฯลฯ)

เปลี่ยนข้อมูลรับรอง wifi ในนั้นเพื่อให้เป็นรายละเอียดเราเตอร์ wifi จริงของคุณ

บันทึกไฟล์.

นำการ์ด SD ออกอย่างปลอดภัย

ขั้นตอนที่ 7: เพิ่มพลังให้ Raspberry Pi. ของคุณ

เพิ่มพลังให้ Raspberry Pi. ของคุณ
เพิ่มพลังให้ Raspberry Pi. ของคุณ

ใส่การ์ด SD ที่คุณเพิ่งสร้างลงใน Raspberry Pi

เสียบ Raspberry Pi เข้ากับแหล่งจ่ายไฟผ่านสาย USB รอสักครู่เพื่อให้บูตขึ้น

ขั้นตอนที่ 8: ค้นหาที่อยู่ IP ของ Raspberry Pi. ของคุณ

ตอนนี้คุณต้องค้นหาที่อยู่ IP ของ Raspberry Pi เพื่อให้คุณสามารถเชื่อมต่อได้ คุณสามารถทำได้สองวิธี:

  • ผ่านหน้าการตั้งค่าเราเตอร์ของคุณ - หากคุณมีเราเตอร์ที่ทันสมัยเช่น eero สิ่งนี้ง่ายมาก
  • หรือผ่านแอพสมาร์ทโฟนที่มีให้สำหรับ iOS และ Android ที่เรียกว่า "fing" - ดาวน์โหลด เชื่อมต่อกับเราเตอร์ของคุณและสแกนหาอุปกรณ์ - หนึ่งในนั้นควรเรียกว่า "Raspberry" - นี่คือที่อยู่ IP ที่คุณต้องการ

ขั้นตอนที่ 9: เชื่อมต่อกับบรรทัดคำสั่ง Raspberry Pi ของคุณ

เชื่อมต่อกับบรรทัดคำสั่ง Raspberry Pi ของคุณ
เชื่อมต่อกับบรรทัดคำสั่ง Raspberry Pi ของคุณ

เปิด Terminal บน Mac ของคุณ (หรือหากคุณใช้ Windows ให้ดาวน์โหลดและใช้ Putty)

ป้อนคำสั่งต่อไปนี้:

ssh pi@[ที่อยู่ IP ของ Pi ของคุณ]

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

ราสเบอร์รี่

ขั้นตอนที่ 10: ตั้งค่า Raspberry Pi OS GUI

ตั้งค่า Raspberry Pi OS GUI
ตั้งค่า Raspberry Pi OS GUI
ตั้งค่า Raspberry Pi OS GUI
ตั้งค่า Raspberry Pi OS GUI

ตอนนี้คุณเชื่อมต่อกับ Pi ของคุณผ่านทางบรรทัดคำสั่ง ซึ่งดีมาก แต่คุณต้องการตั้งค่าเพื่อให้คุณสามารถเข้าถึงส่วนต่อประสานกราฟิกกับผู้ใช้ซึ่งเราจะเข้าถึงผ่าน VNC (Virtual Network Computing) เราจำเป็นต้องเปิดใช้งานสิ่งนี้ด้วย

ก่อนอื่น ให้ตรวจสอบว่าซอฟต์แวร์ Pi ของคุณเป็นเวอร์ชันล่าสุดโดยป้อนคำสั่งสองคำสั่งต่อไปนี้ (แต่ละคำสั่งตามด้วย Enter) ลงในบรรทัดคำสั่ง:

sudo apt อัปเดต

sudo apt ติดตั้ง realvnc-vnc-server realvnc-vnc-viewer

ถัดไป เปิดเมนูการตั้งค่า Raspberry Pi โดยป้อน:

sudo raspi-config

ไปที่ตัวเลือกการเชื่อมต่อ > VNC > ใช่

ออกจากแอปพลิเคชันการกำหนดค่าโดยกดปุ่ม Escape และรีบูต Pi จากบรรทัดคำสั่งโดยพิมพ์:

sudo รีบูต

ขั้นตอนที่ 11: เชื่อมต่อและตั้งค่า Raspberry Pi GUI ของคุณ

เชื่อมต่อและตั้งค่า Raspberry Pi GUI. ของคุณ
เชื่อมต่อและตั้งค่า Raspberry Pi GUI. ของคุณ
เชื่อมต่อและตั้งค่า Raspberry Pi GUI. ของคุณ
เชื่อมต่อและตั้งค่า Raspberry Pi GUI. ของคุณ

ดาวน์โหลดและเปิด VNC Viewer

พิมพ์ที่อยู่ IP สำหรับ Raspberry Pi ของคุณแล้วกดเชื่อมต่อ มันจะแจ้งให้คุณใส่ชื่อผู้ใช้และรหัสผ่านซึ่งก็คือ:

ชื่อผู้ใช้ = pi

รหัสผ่าน = ราสเบอร์รี่

สิ่งนี้ควรบูตคุณสู่ GUI

ระบบจะแจ้งให้คุณยืนยันรูปแบบภูมิศาสตร์และแป้นพิมพ์ของคุณ

จากนั้นจะแจ้งให้คุณเปลี่ยนรหัสผ่าน (เป็นความคิดที่ดี)

มันจะขอให้คุณตั้งค่ารายละเอียด wifi ของคุณ แต่คุณสามารถข้ามสิ่งนี้ได้เนื่องจากใช้งานได้แล้ว (แม้ว่าคุณจะใช้อีเธอร์เน็ตและมีความคิดที่สอง ตอนนี้ก็เป็นโอกาสของคุณแล้ว… แต่โปรดทราบว่าที่อยู่ IP ของคุณอาจเปลี่ยนแปลงได้)

จากนั้นจะตรวจสอบ ดาวน์โหลด และติดตั้งการอัปเดต (อาจใช้เวลาสักครู่)

เมื่อคุณผ่านวิซาร์ดการตั้งค่าแล้ว ฉันขอแนะนำให้เปลี่ยนความละเอียดหน้าจอเนื่องจากค่าเริ่มต้นมีขนาดเล็กมาก คุณสามารถทำได้โดยคลิกที่ Raspberry ที่ด้านบนซ้าย > Preferences > Raspberry Pi Configuration > Display > Set Resolution

คุณจะต้องรีบูต Pi อีกครั้งเพื่อให้สิ่งนี้มีผล

ขั้นตอนที่ 12: ติดตั้ง Node.js และ NPM

ติดตั้ง Node.js และ NPM
ติดตั้ง Node.js และ NPM

ถัดไปคุณต้องการโหลดบรรทัดคำสั่ง Raspberry Pi เพื่อติดตั้งการพึ่งพาที่เราต้องการ

คุณสามารถทำได้โดยเชื่อมต่อผ่าน VNC และคลิกปุ่มใกล้ด้านบนที่ดูเหมือนบรรทัดคำสั่ง หรือคุณสามารถเชื่อมต่อโดยตรงจาก Mac/PC ของคุณโดยใช้ Terminal และ Putty ตามที่เราทำก่อนหน้านี้ หากคุณไม่ค่อยคุ้นเคยกับการทำงานกับ Raspberry Pi การทำแบบเดิมจะง่ายกว่า

(เคล็ดลับ: คุณสามารถคัดลอกข้อความจาก Mac/PC ของคุณแล้ววางลงใน Raspberry Pi ผ่าน VNC ได้โดยกด CONTROL-V แต่ถ้าคุณพยายามวางลงใน Terminal คุณต้องกด CONTROL-SHIFT-V)

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

sudo apt-get update

sudo apt-get อัพเกรด

ถัดไป คุณต้องการดาวน์โหลดและติดตั้ง node.js และ NPM (อย่ากังวลมากว่ามันคืออะไร สิ่งเหล่านี้มีประโยชน์และจำเป็นสำหรับงานต่อไปของเรา) โดยพิมพ์ข้อความต่อไปนี้:

sudo apt-get ติดตั้ง nodejs npm

มันจะถามคุณสองสามครั้งว่าคุณยินดีที่จะใช้พื้นที่ดิสก์กับสิ่งเหล่านี้หรือไม่ - คุณกด Y

ขั้นตอนที่ 13: ติดตั้ง SONOS HTTP API

ติดตั้ง SONOS HTTP API
ติดตั้ง SONOS HTTP API
ติดตั้ง SONOS HTTP API
ติดตั้ง SONOS HTTP API

พื้นฐานของแบ็คเอนด์สำหรับโครงการของเราคือแพ็คเกจ node-sonos-http-api ที่สร้างโดย jishi คุณสามารถอ่านทั้งหมดได้ที่นี่:

เราจะดาวน์โหลดสิ่งนี้จาก github ด้วยคำสั่งต่อไปนี้ที่ป้อนลงในบรรทัดคำสั่ง:

โคลน git

และเราจะติดตั้งด้วยคำสั่งต่อไปนี้

cd node-sonos-http-api

ติดตั้ง npm --production

จากนั้นเราสามารถเรียกใช้ด้วยคำสั่งต่อไปนี้:

npm เริ่ม

เมื่อเสร็จแล้วเราควรทดสอบว่ามันใช้งานได้

ก่อนอื่น เปิดอินเทอร์เน็ตเบราว์เซอร์บน Raspberry Pi ของเราแล้วไปที่ https://localhost:5005/ อินเทอร์เฟซที่ดีควรเปิดด้วยโลโก้ Sonos และเอกสารเกี่ยวกับวิธีการทำงานของ API

ต่อไป ให้ตรวจสอบว่าสิ่งนี้ทำงานจากเครือข่ายที่กว้างขึ้นโดยใช้เบราว์เซอร์บนพีซีหรือ Mac เครื่องอื่นบนเครือข่ายเดียวกันและไปที่ https://[theIPaddressofyourPi]:5005/ และดูว่าเราได้ผลลัพธ์เดียวกันหรือไม่ เราควร

ตอนนี้เราจะทำให้ระบบทำอะไรบางอย่าง ใช้เบราว์เซอร์และไปที่:

192.168.4.102:5005/ห้องอาหาร/playpause

คุณควรแทนที่ที่อยู่ IP ด้านบนด้วยที่อยู่ของ Raspberry Pi และ "Dining Room" ด้วยชื่อโซน Sonos ของคุณ ควรเล่นหรือหยุดชั่วคราว (ขึ้นอยู่กับว่าเพลงกำลังเล่นอยู่หรือไม่) เพลงในห้องนั้น เห็นได้ชัดว่ามีบางอย่างต้องอยู่ในคิว Sonos เพื่อให้ทำงานได้

ต่อจากนี้ไป ฉันจะใช้ที่อยู่ IP และห้องรับประทานอาหารด้านบนเป็นตัวอย่างตลอดบทช่วยสอนนี้ เห็นได้ชัดว่าคุณควรแทนที่ด้วยที่อยู่ IP และชื่อโซนของคุณในแต่ละโอกาส

ขั้นตอนที่ 14: ทำให้ Sonos HTTP API ทำงานอย่างต่อเนื่อง

ทำให้ Sonos HTTP API ทำงานอย่างต่อเนื่อง
ทำให้ Sonos HTTP API ทำงานอย่างต่อเนื่อง

เป็นเรื่องดีที่เราได้เปิดใช้ Sonos HTTP API แต่ถ้าเกิดขัดข้องล่ะ หรือคุณสูญเสียพลังงานหรือต้องการรีบูต Raspberry Pi ของคุณ?

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

เราต้องการให้มันทำงานอย่างต่อเนื่องและดำเนินการตั้งแต่เริ่มต้นในแต่ละครั้ง เราทำสิ่งนี้ด้วยสิ่งดีๆ ที่เรียกว่า PM2

ในหน้าต่างเทอร์มินัลใหม่ ให้ติดตั้งและเรียกใช้ดังนี้:

sudo npm ติดตั้ง -g pm2

สถานะ pm2

มาเริ่มกันเลยเพื่อเรียกใช้ Sonos HTTP API ของเรา:

cd node-sonos-http-api

pm2 เริ่ม npm -- เริ่ม pm2 เริ่มต้น systemd

คำสั่งสุดท้ายนี้สร้างสิ่งที่ดูเหมือน:

sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u pi --hp /home/pi

คัดลอกสิ่งที่ Pi ของคุณสร้างขึ้น (ไม่ใช่ข้อความด้านบนทั้งหมด - ข้อความของคุณอาจแตกต่างกัน) และป้อนลงในบรรทัดคำสั่ง สิ่งนี้แนะนำให้ระบบเรียกใช้ PM2 เมื่อบู๊ตทุกครั้ง

สุดท้าย ให้ป้อน:

บันทึก pm2

ซึ่งบันทึกทุกอย่างลง

ตอนนี้ทดสอบว่าสิ่งนี้ทำงานได้หรือไม่โดยรีบูต Raspberry Pi ของคุณด้วยคำสั่ง

sudo รีบูต

หวังว่าเมื่อ Pi รีบูตเครื่องจะเริ่ม PM2 และในทางกลับกัน Sonos HTTP API คุณสามารถตรวจสอบได้โดยการนำทางโดยใช้เบราว์เซอร์ในเครือข่ายเดียวกันไปยังที่อยู่ที่เราเคยใช้ก่อน และดูโลโก้ Sonos และคำแนะนำ:

192.168.4.102:5005/

เป็นสิ่งที่สำหรับฉัน แต่ของคุณจะขึ้นอยู่กับที่อยู่ IP

ขั้นตอนที่ 15: เล่น Spotify

ตรวจสอบว่าบริการสามารถเข้าถึง Spotify ได้หรือไม่

เปิดเบราว์เซอร์และไปที่ที่อยู่ต่อไปนี้ (แทนที่ด้วยที่อยู่ IP และชื่อห้องของคุณอย่างชัดเจน):

192.168.4.102:5005/ห้องอาหาร/spotify/ตอนนี้/spotify/spotify:อัลบั้ม:2dfTV7CktUEBkZCHiB7VQB

คุณน่าจะได้ยินจอห์น แกรนท์บ้าง สนุก.

ขั้นตอนที่ 16: ค้นหา Spotify URIs

ค้นหา Spotify URI
ค้นหา Spotify URI

แปลก ฉันรู้ แต่ไม่ใช่ทุกคนที่ชอบจอห์น แกรนท์ บางทีคุณอาจต้องการฟังอย่างอื่น?

คุณสามารถรับลิงก์ Spotify จากเดสก์ท็อป เว็บ หรือแอปบนอุปกรณ์เคลื่อนที่ได้ แต่เดสก์ท็อปนั้นง่ายที่สุด เนื่องจากส่ง URI ในรูปแบบที่คุณต้องการ ดังนั้นให้เริ่มต้นด้วยสิ่งนั้น

ในแอป Spotify บนเดสก์ท็อป ให้นำทางไปยังอัลบั้มที่คุณต้องการฟัง (อาจจะเป็น Lemonade โดย Beyonce?)

คลิกที่จุดเล็ก ๆ สามจุดถัดจากปุ่มหัวใจ

ไปที่เมนูเพื่อแชร์และเลือกคัดลอก Spotify URI

สิ่งนี้จะคัดลอกบางสิ่งเช่น

spotify:อัลบั้ม:7dK54iZuOxXFarGhXwEXfF

ไปยังคลิปบอร์ดของคุณ ซึ่งเป็น Spotify URI สำหรับอัลบั้ม Lemondade ของ Beyonce

เปิดเบราว์เซอร์ของคุณอีกครั้งและไปที่ที่อยู่ต่อไปนี้ (เห็นได้ชัดว่าแทนที่ที่อยู่ IP และห้องและวางใน URI ที่คุณเพิ่งคัดลอก):

192.168.4.102:5005/ห้องรับประทานอาหาร/spotify/ตอนนี้/[Spotify URI ที่คุณต้องการเล่น]

คุณควรได้ยินการเล่นที่คุณเลือก

หากคุณต้องการใช้เว็บแอป แอปจะให้ลิงก์เว็บแก่คุณ (เช่นด้านล่าง):

open.spotify.com/album/7dK54iZuOxXFarGhXwEXfF

คุณต้องแปลงเป็นรูปแบบ spotify:album:code ด้านบนจึงจะใช้งานได้

ขั้นตอนที่ 17: หมายเหตุเกี่ยวกับ Spotify URIs

Spotify URI และวิธีที่พวกเขาเชื่อมต่อกับ node-sonos-http-api นั้นใช้งานง่าย ส่วนใหญ่

คุณสามารถเชื่อมโยงไปยังอัลบั้ม แทร็ก และเพลย์ลิสต์ได้โดยตรง

อัลบั้ม URI มีลักษณะดังนี้:

spotify:อัลบั้ม:6agCM9GJcebduMddgFmgsO

URI ของแทร็กมีลักษณะดังนี้:

spotify:track:4fNDKbaeEjk2P4GrRE1UbW

เพลย์ลิสต์ทำงานแตกต่างกันเล็กน้อย เมื่อคุณคัดลอก URI จาก Spotify จะมีลักษณะดังนี้:

spotify:playlist:5huIma0YU4iusLcT2reVEU

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

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

spotify:ผู้ใช้:spotify:playlist:5huIma0YU4iusLcT2reVEU

ขั้นตอนที่ 18: ตั้งค่า Raspberry Pi เพื่อส่งคำขอ

ตั้งค่า Raspberry Pi เพื่อส่งคำขอ HTTP
ตั้งค่า Raspberry Pi เพื่อส่งคำขอ HTTP

แทนที่จะพิมพ์คำขอ HTTP ด้วยตนเองลงในเว็บเบราว์เซอร์ เราต้องการทำให้เป็นอัตโนมัติเพื่อให้ Raspberry Pi ทำเช่นนั้นเองเมื่อมีสิ่งกระตุ้นบางอย่าง (เครื่องอ่าน NFC ถูกทริกเกอร์)

เราจะใช้ไลบรารีที่เรียกว่าการร้องขอเพื่อให้ Raspberry Pi ของเราทำสิ่งนี้ได้ ให้ตรวจสอบการติดตั้ง

เปิดเทอร์มินัลบน Pi ของคุณและพิมพ์ดังต่อไปนี้:

คำขอติดตั้ง sudo pip

เป็นไปได้มากที่มันจะกลับมาและบอกว่าติดตั้งแล้ว ซึ่งในกรณีนี้ก็เยี่ยมมาก ถ้าไม่ก็จะติดตั้ง

ขั้นตอนที่ 19: สร้างแท็ก NFCC ด้วย Spotify Data

สร้างแท็ก NFCC ด้วย Spotify Data
สร้างแท็ก NFCC ด้วย Spotify Data
สร้างแท็ก NFCC ด้วย Spotify Data
สร้างแท็ก NFCC ด้วย Spotify Data
สร้างแท็ก NFCC ด้วย Spotify Data
สร้างแท็ก NFCC ด้วย Spotify Data
สร้างแท็ก NFCC ด้วย Spotify Data
สร้างแท็ก NFCC ด้วย Spotify Data

ตอนนี้เราต้องการเขียน URI อัลบั้ม Spotify ลงในแท็ก NFC แต่ละแท็กเหล่านี้คือสิ่งที่คุณจะใช้เพื่อบอกให้ Raspberry Pi เล่นอัลบั้มใดอัลบั้มหนึ่ง

คุณสามารถเขียนไปยังแท็ก NFC โดยใช้โทรศัพท์ Android แต่ฉันคิดว่ามันง่ายที่สุดที่จะทำผ่าน Mac หรือ PC เพราะคุณจะได้รับ Spotify URI จากแอพ Spotify บนเดสก์ท็อปที่ง่ายที่สุด

เสียบเครื่องอ่าน USB NFC เข้ากับพีซีหรือ Mac ฉันกำลังใช้ ACR122U โดย American Card Systems

ดาวน์โหลดเครื่องมือ NFC ไปยังพีซีหรือ Mac ของคุณ ติดตั้งและเปิดขึ้น

การเชื่อมต่อกับเครื่องอ่านอาจช้าเล็กน้อยในบางครั้งและอาจกล่าวได้ว่าไม่พบเครื่องอ่านเลย ไปที่แท็บอื่นๆ ในเครื่องมือ NFC และคลิกทุก ๆ ครั้งบนปุ่ม Connected NFC Reader คุณอาจต้องถอดปลั๊กและเสียบปลั๊กเครื่องอ่านใหม่สองสามครั้งก่อนที่จะพบ

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

ใช้แท็ก NFC เปล่า วางบนเครื่องอ่านแล้วปล่อยไว้ที่นั่น NFC Tools จะแสดงข้อมูลเกี่ยวกับแท็ก

ไปที่แท็บ เขียน แล้วคลิก เพิ่มเรกคอร์ด > ข้อความ (ระวังอย่าเลือก URL หรือ URI - ฉันรู้ว่ามันน่าสนใจเพราะคุณกำลังคัดลอก URI แต่คุณต้องการข้อความ)

หยิบ URI จาก Spotify โดยใช้วิธีที่เราใช้ก่อนหน้านี้ หากคุณต้องการตัวอย่างง่ายๆ ต่อไปนี้คืออัลบั้ม John Grant ของเราก่อนหน้านี้

spotify:อัลบั้ม:2dfTV7CktUEBkZCHiB7VQB

คลิก ตกลง แล้วคลิก เขียน (อย่าลืมขั้นตอนสุดท้ายนี้ เนื่องจากจะไม่เขียนจริงๆ จนกว่าคุณจะคลิกที่นี่) มันจะบอกคุณว่ามันเขียนแท็กสำเร็จแล้ว

แกะป้ายคนอ่านออก

ขั้นตอนที่ 20: ตั้งค่า NFC Reader บน Raspberry Pi

ตั้งค่า NFC Reader บน Raspberry Pi
ตั้งค่า NFC Reader บน Raspberry Pi

เสียบเครื่องอ่าน NFC ของคุณเข้ากับพอร์ต USB ของ Raspberry Pi

เราจะใช้ไลบรารี nfcpy Python เพื่อสื่อสารกับเครื่องอ่าน NFC ติดตั้งโดยพิมพ์ข้อความต่อไปนี้บนบรรทัดคำสั่ง Pi ของคุณ:

pip ติดตั้ง -U nfcpy

จากนั้นเราสามารถตรวจสอบว่าห้องสมุดนี้สามารถมองเห็นเครื่องอ่าน NFC ของเราได้หรือไม่โดยพิมพ์ข้อความต่อไปนี้:

หลาม -m nfc

ถ้ามันใช้งานได้คุณจะเห็นสิ่งต่อไปนี้:

นี่คือเวอร์ชัน 1.0.3 ของ nfcpy ที่รันใน Python 2.7.16 บน Linux-4.19.97-v7+-armv7l-with-debian-10.3

ตอนนี้ฉันกำลังค้นหาอุปกรณ์ไร้สัมผัสในระบบของคุณ ** พบ ACS ACR122U PN532v1.6 ที่ usb:001:011 ฉันไม่ได้ลองใช้อุปกรณ์ซีเรียลเพราะคุณไม่ได้บอกฉัน - เพิ่มตัวเลือก '--search-tty' ให้ฉันดู -- แต่ระวังว่านี่อาจทำให้ devs อนุกรมอื่น ๆ เสียหาย

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

sudo sh -c 'echo SUBSYSTEM==\"usb\", ACTION==\"add\", ATTRS{idVendor}==\"04e6\", ATTRS{idProduct}==\"5591\", GROUP= \"plugdev\" >> /etc/udev/rules.d/nfcdev.rules'

sudo udevadm ควบคุม -R

คัดลอกและดำเนินการคำสั่งทั้งสองที่คุณให้ไว้ (ไม่ใช่สิ่งที่กล่าวข้างต้น เนื่องจากคำสั่งของคุณอาจแตกต่างกัน) จากนั้นถอดปลั๊กและเสียบเครื่องอ่าน NFC ของคุณใหม่จากพอร์ต USB

ลองใช้คำสั่งตรวจสอบอีกครั้ง:

หลาม -m nfc

คราวนี้น่าจะบอกว่าเจอแล้วไม่มีข้อความแสดงข้อผิดพลาด

ขั้นตอนที่ 21: ติดตั้งสคริปต์ Python ของ Vinylemulator

ตอนนี้เรามีหน่วยการสร้างทั้งหมด:

  • Raspberry Pi ของเราสามารถฟังอินพุต NFC ได้
  • Raspberry Pi ของเราสามารถบอกให้ Sonos เล่นเพลย์ลิสต์ Spotify เมื่อได้รับ Spotify URI
  • เรามีแท็ก NFC ที่มี Spotify URI จัดเก็บอยู่

ตอนนี้เราจำเป็นต้องดึงบล็อคการสร้างทั้งหมดเหล่านี้เป็นสิ่งที่มีประโยชน์ สิ่งนี้ทำได้ผ่านสคริปต์หลามสั้น ๆ ที่ฉันเขียน (ด้วยความช่วยเหลือมากมายจากโครงการ NFC/Spotify/Sonos ก่อนหน้า) ซึ่งเรียกว่าไวนิลอีมูเลเตอร์

คุณสามารถดูซอร์สโค้ดของไฟล์ได้ที่ github:

ในการติดตั้งบน Raspberry Pi ของเรา เราจำเป็นต้องโคลนจาก github ด้วยคำสั่งต่อไปนี้:

โคลน git

ขั้นตอนที่ 22: ปรับแต่ง Vinylemulator

ปรับแต่ง Vinylemulator
ปรับแต่ง Vinylemulator
ปรับแต่ง Vinylemulator
ปรับแต่ง Vinylemulator

เปิดตัวจัดการไฟล์ Raspberry Pi และไปที่หน้าแรก > pi > vinylemulator

เปิดไฟล์ usersettings.py

บรรทัดใดบรรทัดหนึ่งในไฟล์นี้จะเขียนว่า:

sonosroom="ห้องรับประทานอาหาร"

เปลี่ยน "Dining Room" เป็นชื่อห้อง Sonos ที่คุณต้องการควบคุม

นอกจากนี้ยังมีการตั้งค่าในไฟล์นี้ซึ่งช่วยให้คุณปรับแต่งที่อยู่ IP ของ sonos-http-api คุณควรปล่อยให้สิ่งนี้ไม่เปลี่ยนแปลงเป็น "localhost" ซึ่งหมายความว่าจะใช้ Raspberry Pi ที่กำลังทำงานอยู่

บันทึกไฟล์และปิด

ขั้นตอนที่ 23: ทดสอบ Vinylemulator

ทดสอบ Vinylemulator
ทดสอบ Vinylemulator
ทดสอบ Vinylemulator
ทดสอบ Vinylemulator

ไปที่พรอมต์คำสั่ง Raspberry Pi ของคุณ

ป้อนคำสั่งต่อไปนี้:

หลามไวนิลอีมูเลเตอร์/readnfc.py

ถ้าทุกอย่างเรียบร้อย สคริปต์จะโหลดขึ้นมาและบอกว่าผู้อ่านพร้อม ไฟที่เครื่องอ่านควรเป็นสีเขียว

ใส่แท็ก NFC บนเครื่องอ่านซึ่งจะส่งเสียงบี๊บ

เครื่องอ่านบัตรจะแสดงสิ่งที่อ่านจากแท็ก NFC และแสดงที่อยู่คำขอ HTTP ที่ส่งไป อัลบั้มที่คุณเลือกควรเล่นจากลำโพง Sonos ของคุณ

สคริปต์นี้จะทำงานต่อไปจนกว่าคุณจะปิดหน้าต่างเทอร์มินัล คุณสามารถแตะแท็ก NFC ของอัลบั้มต่างๆ ได้ แล้วแท็กจะสลับไปที่อัลบั้มนั้น

ขั้นตอนที่ 24: รับ Vinylemulator ให้ทำงานอย่างต่อเนื่องและเมื่อเริ่มต้น

เช่นเดียวกับ sonos-http-api เราต้องการให้ vinylemulator ทำงานตลอดเวลา ไม่ใช่แค่ตอนที่เราเรียกมัน เราสามารถใช้ pm2 ทำเช่นนี้ได้อีกครั้ง

ขั้นแรกให้ปิดไวนิลอีมูเลเตอร์ที่คุณใช้งานอยู่โดยปิดหน้าต่างเทอร์มินัล

จากนั้นเปิดหน้าต่างเทอร์มินัลใหม่และพิมพ์คำสั่งสองคำสั่งต่อไปนี้:

pm2 เริ่ม vinylemulator/readnfc.py

บันทึก pm2

ลองตรวจสอบว่าใช้งานได้หรือไม่โดยการรีบูต Raspberry Pi (คุณสามารถพิมพ์ sudo reboot หรือพิมพ์จากเมนู Raspberry ด้วยเมาส์ของคุณ

รอให้ Pi เริ่มทำงานอีกครั้งและดูว่าใช้งานได้โดยแตะแท็ก NFC บนเครื่องอ่าน คุณควรได้รับเพลง

ขั้นตอนที่ 25: แสดงความยินดีกับตัวเอง

ตอนนี้ทุกอย่างใช้งานได้แล้ว คุณสามารถย้าย Raspberry Pi ไปที่ใดก็ได้ที่คุณวางแผนจะวาง มันจะรีสตาร์ทและทำงานในแบบที่คุณตั้งค่าไว้ทุกครั้งที่คุณเสียบปลั๊ก

งานต่อไปของคุณคืองานที่สนุก: ทำให้ทุกอย่างสวยงาม

ขั้นตอนที่ 26: ทำให้สวยงาม - ซ่อนผู้อ่านของคุณ

Make It Beautiful - ซ่อนผู้อ่านของคุณ
Make It Beautiful - ซ่อนผู้อ่านของคุณ
Make It Beautiful - ซ่อนผู้อ่านของคุณ
Make It Beautiful - ซ่อนผู้อ่านของคุณ
Make It Beautiful - ซ่อนผู้อ่านของคุณ
Make It Beautiful - ซ่อนผู้อ่านของคุณ
Make It Beautiful - ซ่อนผู้อ่านของคุณ
Make It Beautiful - ซ่อนผู้อ่านของคุณ

ส่วนแรกของการทำให้สวยงามคือการซ่อนตัวอ่าน NFC พลาสติกสีขาวที่น่ารังเกียจไว้ที่ไหนสักแห่ง

ฉันได้ใช้ตัวเลือกเทคโนโลยีต่ำอย่างแน่นอนในการติดเทปไว้ที่ด้านล่างของเคาน์เตอร์ถัดจาก Sonos Play ของฉัน:5 ไม้ของเคาน์เตอร์นั้นบางพอที่ NFC จะทะลุผ่านได้ ฉันจึงเล่นเพลงโดยแตะแท็ก NFC บนจุดที่มีมนต์ขลังและมองไม่เห็น

แนะนำ: