สารบัญ:

บ้านอัจฉริยะโดย Raspberry Pi: 5 ขั้นตอน (พร้อมรูปภาพ)
บ้านอัจฉริยะโดย Raspberry Pi: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: บ้านอัจฉริยะโดย Raspberry Pi: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: บ้านอัจฉริยะโดย Raspberry Pi: 5 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: สร้าง Smart Farm ด้วย Raspberry Pi (Smart Vertical Farm EP.2) 2024, ธันวาคม
Anonim
บ้านอัจฉริยะโดย Raspberry Pi
บ้านอัจฉริยะโดย Raspberry Pi

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

ฉันตั้งโปรแกรมแอปพลิเคชันเซิร์ฟเวอร์ที่ทำงานบน Raspberry Pi นี่คือโปรเจ็กต์โอเพ่นซอร์สที่ใช้จาวาที่ให้คุณกำหนดค่าแฟลตและเชื่อมต่อไคลเอนต์หลายตัวและ 'หน่วยที่ควบคุมได้' ฉันแสดงวิธีแก้ปัญหาที่จัดการสวิตช์แหล่งจ่ายไฟ rc เล่นเพลงและวิดีโอบน Raspberry Pi แสดงสถานะบนกระจกอัจฉริยะและสามารถควบคุมโดยแอพ Android และแอพ Pebble สองแอพ แหล่งที่มาโฮสต์บน github

ขั้นตอนที่ 1: สิ่งที่คุณต้องการ

สิ่งที่คุณต้องการ
สิ่งที่คุณต้องการ

ในการตั้งค่าบ้านอัจฉริยะ คุณต้องมี 'ส่วนผสม' ต่อไปนี้

  • Raspberry Pi อย่างน้อยรุ่น 2 B
  • ผู้ส่ง 433 MHz ประมาณนี้
  • สายจัมเปอร์ 3 สายเชื่อมต่อ Raspberry Pi และผู้ส่ง
  • ซ็อกเก็ตควบคุมวิทยุบางตัวที่ 433 MHz
  • สมาร์ทโฟน Android เพื่อเรียกใช้แอพไคลเอนต์

นอกจากนี้ คุณสามารถขยาย Smart Home ด้วยไคลเอนต์และยูนิตเสริมเพิ่มเติมเช่นนี้

  • นาฬิกาอัจฉริยะ Pebble
  • Smart Mirror ดูโครงการนี้
  • แถบ LED ควบคุม 433 MHz ดูนี่

ขั้นตอนที่ 2: เตรียม Raspberry Pi สำหรับ 433 MHz

เตรียม Raspberry Pi สำหรับ 433 MHz
เตรียม Raspberry Pi สำหรับ 433 MHz
เตรียม Raspberry Pi สำหรับ 433 MHz
เตรียม Raspberry Pi สำหรับ 433 MHz

ในขั้นตอนต่อไปนี้ คุณต้องเข้าถึงบรรทัดคำสั่งบน Raspberry Pi ในการเข้าถึงคุณสามารถอ่านคำแนะนำนี้

เชื่อมต่อเครื่องส่ง 433 MHz กับ Raspberry Pi ดังรูปด้านบน

  • GND (ผู้ส่ง) 6 GND (ราสปี)
  • VCC (ผู้ส่ง) 2 +5V (raspi)
  • DATA (ผู้ส่ง) 11 GPIO 17 (raspi)

โปรดเชื่อมต่อเสาอากาศ 17 ซม. เข้ากับพิน ANT (ผู้ส่ง) ที่เพิ่มสัญญาณอย่างมีนัยสำคัญ

เนื่องจากเราต้องการไลบรารี่จากที่เก็บ git อื่น เราจึงต้องติดตั้ง git

sudo apt-get ติดตั้ง git-core -y

ในการตั้งค่า Raspberry Pi สำหรับการสื่อสาร 433 MHz เราจำเป็นต้องมีไลบรารีสายไฟ Pi เพื่อการจัดการ GPIO ที่ดียิ่งขึ้น

โคลน git git://git.drogon.net/wiringPi

cdสายไฟPi./build

จากนั้นเราต้องการไลบรารีที่ใช้โปรโตคอลแหล่งจ่ายไฟ rc โดยทั่วไป

โคลน git git://github.com/dabastynator/rcswitch-pi.git

cd rcswitch-pi ทำให้ cp ส่ง /usr/bin/

คำสั่ง 'ส่ง' ช่วยให้คุณสามารถส่งรหัสเพื่อสลับอุปกรณ์จ่ายไฟที่มีอยู่ส่วนใหญ่ได้

ในการตั้งค่า Smart Home ของฉันฉันยังมีแถบ rc LED ที่อธิบายโดยคำสั่งนี้: https://www.instructables.com/id/RC-controlled-LED… ในการตั้งค่าสีสำหรับแถบ LED นี้ คุณต้องมีไฟล์ปฏิบัติการส่งอื่นที่ช่วยให้คุณ เพื่อส่งค่าจำนวนเต็มใด ๆ (ที่เข้ารหัสสี)

ดังนั้น ให้คอมไพล์ sendInt.cpp ใน rcswitch-pi repo และย้ายไปที่ /usr/bin/sendInt

sudo g++ sendInt.cpp -o /usr/bin/sendInt /home/pi/rcswitch-pi/RCSwitch.o -I/home/pi/rcswitch-pi -lwiringPi

ตอนนี้คุณควรจะสามารถส่งคำสั่ง rc ด้วยสองไฟล์ปฏิบัติการ /usr/bin/send และ /usr/bin/sendInt

ขั้นตอนที่ 3: ตั้งค่าเซิร์ฟเวอร์บ้านอัจฉริยะ

ก่อนอื่นคุณต้องติดตั้งหลายแพ็คเกจ แอปพลิเคชัน Smart Home ใช้จาวาและทำงานได้ดีกับ openjdk-11 ฉันไม่แน่ใจเกี่ยวกับสภาพแวดล้อมรันไทม์ของ Java อื่นๆ mplayer เป็นเครื่องเล่นเพลงบรรทัดคำสั่งที่เรียบง่าย omxplayer ใช้กราฟิก Raspberry Pi สำหรับการเข้ารหัสวิดีโอ ดังนั้นจึงควรใช้สำหรับวิดีโอ จำเป็นต้องใช้โปรแกรมมดเพื่อสร้างแอปพลิเคชันจาวา

sudo apt-get ติดตั้ง mplayer omxplayer openjdk-11-jdk ant -y

ตั้งค่าไดเร็กทอรีสำหรับไฟล์ jar และสำหรับบันทึก

sudo mkdir /opt/neo

sudo chown pi:pi /opt/neo mkdir /home/pi/Logs

กำหนดค่าสคริปต์เริ่มต้นเพื่อเริ่มแอปพลิเคชันโดยอัตโนมัติเมื่อบูต ดังนั้นให้คัดลอกสคริปต์สมาร์ทโฮมที่แนบมาลงในไดเร็กทอรี /etc/init.d/ ฉันยังสร้างสคริปต์ใน /usr/bin/ ซึ่งไพพ์คำสั่งไปยังสคริปต์ที่แนบมาด้วย ดังนั้นฉันเพียงแค่ป้อนสมาร์ทโฮมไปที่คอนโซลเพื่อรันคำสั่ง.

sudo cp สมาร์ทโฮม /etc/init.d/smart-home

sudo chmod +x /etc/init.d/smart-home sudo sh -c "echo '#! /bin/bash' > /usr/bin/smart-home" sudo sh -c "echo '/etc/init. d/smart-home \$1' >> /usr/bin/smart-home" sudo chmod +x /usr/bin/smart-home sudo update-rc.d smart-home defaults

ถึงเวลาชำระเงินที่เก็บและสร้างแอปพลิเคชัน หากคุณไม่ต้องการคอมไพล์ด้วยตนเอง คุณสามารถดาวน์โหลด smarthome.jar ที่แนบมาและย้ายไปที่ /opt/neo/

โคลน git [email protected]:dabastynator/SmartHome.git

ant -f SmartHome/de.neo.smarthome.build/build.ant build_remote cp SmartHome/de.neo.smarthome.build/build/jar/* /opt/neo/

ลองเริ่มสมาร์ทโฮมและตรวจสอบไฟล์บันทึก ในการเข้าถึง GPIO แอปพลิเคชันต้องเริ่มต้นโดย sudo

sudo smart-home start

cat Logs/smarthome.log

คุณควรเห็นข้อความแสดงข้อผิดพลาด ไม่มีไฟล์การกำหนดค่า ซึ่งชี้ให้เราไปยังขั้นตอนถัดไป ที่เก็บมี readme ที่อธิบายไฟล์คอนฟิกูเรชัน คุณสามารถดูสิ่งนี้ได้อย่างสวยงามที่ github:

คัดลอก xml นี้ไปที่ /home/pi/controlcenter.xml จากนั้นตั้งค่าตำแหน่งสำหรับเซิร์ฟเวอร์สื่อของคุณและเปลี่ยนเนื้อหาตามที่คุณต้องการ เมื่อคุณกำหนดค่าเสร็จแล้วและรีสตาร์ทบ้านอัจฉริยะ (sudo smart-home restart) คุณควรเห็นเนื้อหาต่อไปนี้ใน smarthome.log

24.05-08:26 REMOTE INFORMATION โดย de.neo.smarthome.cronjob. CronJob@15aeb7ab: กำหนดเวลางาน cron

24.05-08:26 REMOTE INFORMATION โดย [trigger.light]: รอ 79391760 ms สำหรับการดำเนินการ 24.05-08:26 RMI INFORMATION โดย Add web-handler (5061/ledstrip) 24.05-08:26 RMI INFORMATION โดย Add web-handler (5061) /action) 24.05-08:26 ข้อมูล RMI โดยเพิ่มตัวจัดการเว็บ (5061/mediaserver) 24.05-08:26 ข้อมูล RMI โดยเพิ่มตัวจัดการเว็บ (5061/สวิตช์) 24.05-08:26 ข้อมูล RMI โดยเพิ่มตัวจัดการเว็บ (5061/controlcenter) 24.05-08:26 RMI INFORMATION โดยเริ่มเว็บเซิร์ฟเวอร์ด้วยตัวจัดการ 5 (localhost:5061) 24.05-08:26 REMOTE INFORMATION โดย Controlcenter: เพิ่ม 1. ชุดควบคุม: MyUnit (xyz) …

เว็บเซิร์ฟเวอร์กำลังทำงาน:-)

ขั้นตอนที่ 4: ตั้งค่าไคลเอนต์

ตั้งค่าไคลเอนต์
ตั้งค่าไคลเอนต์
ตั้งค่าไคลเอนต์
ตั้งค่าไคลเอนต์
ตั้งค่าไคลเอนต์
ตั้งค่าไคลเอนต์

ไคลเอนต์ Android บนสมาร์ทโฟน

ที่เก็บ git สำหรับแอปพลิเคชันบ้านอัจฉริยะยังมีซอร์สสำหรับไคลเอ็นต์ Android ดังนั้นคุณจึงสามารถคอมไพล์ได้ด้วยตัวเอง แต่ฉันแนบ APK สำหรับขั้นตอนนี้ ซึ่งทำให้ง่ายขึ้น ครั้งแรกที่คุณเริ่มแอป ระบบจะถามหาเซิร์ฟเวอร์จากคุณ เช่นเดียวกับในภาพแรกด้านบน ป้อน URL ของเซิร์ฟเวอร์และโทเค็นความปลอดภัย

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

ลูกค้า Smartwatch Pebble

ซอร์สสำหรับไคลเอนต์ Pebble ทั้งสองโฮสต์บน GitHub แอปหนึ่งแสดงไฟล์เพลงที่กำลังเล่นอยู่: https://github.com/dabastynator/PebbleRemoteMusic… สิ่งนี้ยังช่วยให้คุณหยุดชั่วคราว/เล่นและเพิ่มระดับเสียงขึ้น/ลง

แอปที่สองทริกเกอร์สามการกระทำ: https://github.com/dabastynator/PebbleControl ชื่อทริกเกอร์คือ: mobile.come_home mobile.leaving และ mobile.go_to_bed หากคุณกำหนดกฎเหตุการณ์สำหรับทริกเกอร์นี้ใน configuration-xml คุณจะทริกเกอร์โดยนาฬิกา

เป็นโอเพ่นซอร์สทั้งหมด แต่คุณไม่จำเป็นต้องคอมไพล์เอง ฉันยังแนบแอปเพบเบิลมาด้วย ดาวน์โหลด PBW ด้วยสมาร์ทโฟนของคุณ โทรศัพท์ของคุณควรติดตั้งไว้บนนาฬิกาของคุณ แอป Pebble ต้องมีการกำหนดค่าเพื่อพูดคุยกับเซิร์ฟเวอร์ ฉันแนบภาพหน้าจอว่าการตั้งค่าของฉันเป็นอย่างไร

ลูกค้าสมาร์ทวอทช์ Garmin

นอกจากนี้ยังมีไคลเอนต์สำหรับ Garmin Smartwatches แอพนี้มีอยู่ใน garmin connect app-store และสามารถติดตั้งได้ที่นี่:

apps.garmin.com/en-US/apps/c745527d-f2af-4…

ลูกค้าสมาร์ทมิเรอร์

ฉันได้สร้างคำแนะนำที่อธิบายวิธีสร้าง Smart Mirror แล้ว ดู https://www.instructables.com/id/Smart-Mirror-by-R… นี้ ซอร์สโค้ดโฮสต์บน github ด้วย: https:// github.com/dabastynator/SmartMirror ซอฟต์แวร์ของ Smart Mirror อ่านการกำหนดค่าจากไฟล์ smart_config.js ที่ไม่ได้เป็นส่วนหนึ่งของที่เก็บ git เนื้อหาของไฟล์การกำหนดค่าควรมีลักษณะดังนี้:

var mOpenWeatherKey = 'คีย์ open-wheather ของคุณ';

var mSecurity = 'โทเค็นความปลอดภัยของคุณ';

คุณต้องปรับสองบรรทัดแรกของไฟล์ smart_mirror.js เพื่อระบุที่อยู่ IP ของเซิร์ฟเวอร์ Smart Home และตำแหน่งเพื่อให้ได้สภาพอากาศที่เหมาะสม

ลูกค้ามากขึ้น

แอปพลิเคชันเซิร์ฟเวอร์เป็นเว็บเซิร์ฟเวอร์ที่เรียบง่าย สิ่งนี้ทำให้คุณสามารถทริกเกอร์การดำเนินการจากไคลเอนต์ใดๆ ที่คุณต้องการโดยการโทรผ่านเว็บแบบง่ายๆ ในวิดีโอสาธิตฉันแสดงตัวจัดการแอป Android ร่วมกับ AutoVoice สิ่งนี้ทำให้ฉันสามารถทริกเกอร์เหตุการณ์ด้วยคำสั่งเสียงง่ายๆ ตัวอย่างเช่น "ok google ได้เวลานอน" สามารถเรียก mobile.go_to_bed แต่คุณสามารถโทรผ่านเว็บได้เช่นจาก IFTTT แล้วแถบไฟ LED กะพริบสีเหลืองสำหรับการแจ้งเตือนทางอีเมลล่ะ

คุณสามารถขอเซิร์ฟเวอร์สำหรับการโทรทางเว็บที่เป็นไปได้เช่นลิงก์ต่อไปนี้ (แทนที่ ip, พอร์ตและโทเค็นด้วยการกำหนดค่าของคุณ)

localhost:5061/controlcenter/api?token=secu…

localhost:5061/action/api?token=security-to…

localhost:5061/mediaserver/api?token=securi…

localhost:5061/switch/api?token=security-to…

localhost:5061/ledstrip/api?token=security-…

ขั้นตอนที่ 5: บทสรุป

ยังมีคุณลักษณะบางอย่างที่จะนำไปใช้: เนื่องจากเซิร์ฟเวอร์มีไคลเอ็นต์ web-api แบบง่าย ๆ จึงทำการสำรวจจำนวนมาก เพื่อลดการสำรวจ ฉันต้องการการรวม MQTT เพื่อการแจ้งเตือนที่ดีขึ้น นอกจากนี้ อุปกรณ์จ่ายไฟ wifi ควรทำงานได้อย่างน่าเชื่อถือมากกว่าอุปกรณ์จ่ายไฟ rc เนื่องจาก rc เป็นเพียงการสื่อสารทางเดียว

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

แนะนำ: