Mục lục:

Nhà thông minh của Raspberry Pi: 5 bước (có hình ảnh)
Nhà thông minh của Raspberry Pi: 5 bước (có hình ảnh)

Video: Nhà thông minh của Raspberry Pi: 5 bước (có hình ảnh)

Video: Nhà thông minh của Raspberry Pi: 5 bước (có hình ảnh)
Video: 5 Dự Án Nổi Bật với Raspberry Pi trong năm 2022 2024, Tháng bảy
Anonim
Nhà thông minh của Raspberry Pi
Nhà thông minh của Raspberry Pi

Đã có một số sản phẩm giúp căn hộ của bạn trở nên thông minh hơn, nhưng hầu hết chúng đều là các giải pháp độc quyền. Nhưng tại sao bạn cần kết nối internet để chuyển đổi đèn bằng điện thoại thông minh của mình? Đó là một lý do để tôi xây dựng giải pháp Nhà thông minh của riêng mình.

Tôi đã lập trình một ứng dụng máy chủ chạy trên Raspberry Pi. Đây là một dự án mã nguồn mở dựa trên java cho phép bạn định cấu hình căn hộ của mình và kết nối một số máy khách và 'đơn vị có thể điều khiển được'. Tôi cho thấy một giải pháp xử lý các công tắc cấp nguồn rc, phát nhạc và video trên Raspberry Pi, hiển thị trạng thái trên gương thông minh và có thể được điều khiển bởi một ứng dụng android và hai ứng dụng pebble. Nguồn được lưu trữ trên github

Bước 1: Những thứ bạn cần

Những thứ bạn cần
Những thứ bạn cần

Để thiết lập Nhà thông minh, bạn cần những 'nguyên liệu' sau

  • Raspberry Pi ít nhất là kiểu 2 B
  • Người gửi 433 MHz, tương tự như thế này
  • 3 cáp jumper kết nối Raspberry Pi và người gửi
  • Một số ổ cắm điều khiển vô tuyến ở 433 MHz
  • Điện thoại thông minh Android để chạy ứng dụng khách

Ngoài ra, bạn có thể mở rộng Nhà thông minh với nhiều khách hàng và đơn vị tùy chọn hơn như thế này

  • Đồng hồ thông minh Pebble
  • Smart Mirror, hãy xem dự án này
  • Dải đèn LED được điều khiển 433 MHz, hãy xem https://www.instructables.com/id/RC-controlled-LE… này

Bước 2: Chuẩn bị Raspberry Pi cho 433 MHz

Chuẩn bị Raspberry Pi cho 433 MHz
Chuẩn bị Raspberry Pi cho 433 MHz
Chuẩn bị Raspberry Pi cho 433 MHz
Chuẩn bị Raspberry Pi cho 433 MHz

Trong các bước sau, bạn cần truy cập vào dòng lệnh trên Raspberry Pi. Để có được quyền truy cập, bạn có thể đọc https://www.instructables.com/id/Remote-SSH-access… có thể hướng dẫn này

Kết nối người gửi 433 MHz với Raspberry Pi như trong hình trên

  • GND (người gửi) 6 GND (raspi)
  • VCC (người gửi) 2 + 5V (raspi)
  • DATA (người gửi) 11 GPIO 17 (raspi)

Vui lòng kết nối ăng-ten 17cm với chân ANT (người gửi). Điều đó làm tăng tín hiệu đáng kể.

Vì chúng tôi cần một số thư viện từ các kho lưu trữ git khác, chúng tôi phải cài đặt git

sudo apt-get install git-core -y

Để thiết lập Raspberry Pi cho giao tiếp 433 MHz, chúng ta cần thư viện Pi đi dây để xử lý tốt hơn các GPIO.

git clone git: //git.drogon.net/wiringPi

cd wiringPi./build

Sau đó, chúng ta cần một thư viện thực hiện các giao thức cung cấp điện thường rc.

git clone git: //github.com/dabastynator/rcswitch-pi.git

cd rcswitch-pi làm cho cp gửi / usr / bin /

Thực thi 'send' cho phép bạn gửi mã để chuyển đổi hầu hết các nguồn cung cấp năng lượng có sẵn.

Trong thiết lập Nhà thông minh của tôi, tôi cũng có dải LED rc được mô tả bởi hướng dẫn này: https://www.instructables.com/id/RC-controlled-LED… Để đặt màu cho dải LED này, bạn cần một tệp thực thi gửi khác cho phép bạn để gửi bất kỳ giá trị Số nguyên nào (Mã hóa màu đó).

Do đó, hãy biên dịch sendInt.cpp trong repo rcswitch-pi và chuyển nó đến / usr / bin / sendInt.

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

Bây giờ bạn có thể gửi lệnh rc với hai tệp thực thi / usr / bin / send và / usr / bin / sendInt

Bước 3: Thiết lập Máy chủ Nhà thông minh

Trước hết, bạn cần cài đặt một số gói. Ứng dụng Smart Home dựa trên java và chạy tốt với openjdk-11. Tôi không chắc chắn về các môi trường thời gian chạy java khác. Mplayer là một trình phát nhạc dòng lệnh tối giản. Omxplayer sử dụng đồ họa Raspberry Pi để mã hóa video, vì vậy điều này sẽ được sử dụng cho video. Kiến chương trình là cần thiết để xây dựng ứng dụng java.

sudo apt-get install mplayer omxplayer openjdk-11-jdk ant -y

Thiết lập thư mục cho tệp jar và cho nhật ký.

sudo mkdir / opt / neo

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

Định cấu hình tập lệnh bắt đầu để khởi động ứng dụng tự động khi khởi động. Do đó, hãy sao chép tập lệnh smart-home đính kèm vào thư mục /etc/init.d/ Tôi cũng đã tạo một tập lệnh trong / usr / bin / truyền lệnh đến tập lệnh đính kèm, vì vậy tôi chỉ cần nhập smart-home vào bảng điều khiển để thực hiện các lệnh.

sudo cp smart-home /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 default

Bây giờ đã đến lúc kiểm tra kho lưu trữ và xây dựng ứng dụng. Nếu bạn không muốn tự biên dịch, bạn chỉ cần tải xuống smarthome.jar đính kèm và chuyển nó vào / opt / neo /

git clone [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 /

Cố gắng khởi động ngôi nhà thông minh và kiểm tra tệp nhật ký. Để có quyền truy cập các GPIO, ứng dụng phải được khởi động bởi sudo.

khởi đầu ngôi nhà thông minh sudo

cat Logs / smarthome.log

Bạn sẽ thấy thông báo lỗi Tập tin cấu hình không tồn tại dẫn chúng ta đến bước tiếp theo. Kho chứa một readme giải thích tệp cấu hình. Bạn có thể thấy điều này được hiển thị độc đáo tại github:

Sao chép xml này vào /home/pi/controlcenter.xml, sau đó đặt vị trí cho máy chủ phương tiện của bạn và thay đổi nội dung khi bạn cần. Sau khi hoàn tất cấu hình và khởi động lại ngôi nhà thông minh (sudo smart-home restart), bạn sẽ thấy nội dung sau trong smarthome.log

24.05-08: 26 THÔNG TIN TỪ XA bởi de.neo.smarthome.cronjob. CronJob@15aeb7ab: Lên lịch công việc cron

24.05-08: 26 THÔNG TIN TỪ XA bởi [trigger.light]: Chờ 79391760 mili giây để thực thi 24.05-08: 26 THÔNG TIN RMI bằng cách Thêm trình xử lý web (5061 / ledstrip) 24.05-08: 26 THÔNG TIN RMI bằng cách Thêm trình xử lý web (5061 / action) 24.05-08: 26 THÔNG TIN RMI bằng cách Thêm trình xử lý web (5061 / máy chủ trung gian) 24.05-08: 26 THÔNG TIN RMI bằng cách Thêm trình xử lý web (5061 / switch) 24.05-08: 26 THÔNG TIN RMI bằng cách Thêm trình xử lý web (5061 / controlcenter) 24.05-08: 26 THÔNG TIN RMI bằng Khởi động máy chủ web với 5 trình xử lý (localhost: 5061) 24.05-08: 26 THÔNG TIN TỪ XA bởi Controlcenter: Thêm 1. đơn vị điều khiển: MyUnit (xyz)…

Máy chủ web hiện đang chạy:-)

Bước 4: Thiết lập khách hàng

Thiết lập khách hàng
Thiết lập khách hàng
Thiết lập khách hàng
Thiết lập khách hàng
Thiết lập khách hàng
Thiết lập khách hàng

Ứng dụng khách Android trên điện thoại thông minh

Kho lưu trữ git cho ứng dụng nhà thông minh cũng chứa mã nguồn cho ứng dụng khách android, vì vậy bạn có thể tự biên dịch nó. Nhưng tôi đã đính kèm APK cho bước này, điều đó làm cho nó dễ dàng hơn. Lần đầu tiên bạn khởi động ứng dụng, nó sẽ yêu cầu bạn cung cấp một máy chủ, giống như trong hình ảnh đầu tiên ở trên. Nhập url của máy chủ và mã thông báo bảo mật.

Đó phải là nó. Giờ đây, bạn có quyền truy cập vào máy chủ và điều khiển căn hộ của mình, phát nhạc và xem video từ xa trên Raspberry Pi. Lưu ý rằng bạn có thể thêm các widget vào màn hình chính, điều này giúp các công tắc và điều khiển âm nhạc dễ tiếp cận hơn.

Ứng dụng khách Smartwatch Pebble

Nguồn cho hai ứng dụng pebble được lưu trữ trên github. Một ứng dụng hiển thị tệp nhạc đang phát: https://github.com/dabastynator/PebbleRemoteMusic… Điều này cũng cho phép bạn tạm dừng / phát và tăng / giảm âm lượng.

Ứng dụng thứ hai kích hoạt ba hành động: https://github.com/dabastynator/PebbleControl Tên của trình kích hoạt là: mobile.come_home mobile.leaving và mobile.go_to_bed. Nếu bạn xác định quy tắc sự kiện cho trình kích hoạt này trong cấu hình-xml của mình, bạn sẽ kích hoạt chúng bằng đồng hồ của bạn.

Tất cả đều là mã nguồn mở, nhưng bạn không cần phải tự biên dịch nó, tôi cũng đính kèm các ứng dụng pebble. Tải xuống PBW bằng điện thoại thông minh của bạn, điện thoại của bạn sẽ cài đặt chúng trên đồng hồ của bạn. Các ứng dụng pebble cần có cấu hình để nói chuyện với máy chủ. Tôi đã đính kèm một ảnh chụp màn hình cài đặt của tôi trông như thế nào.

Ứng dụng khách Smartwatch Garmin

Ngoài ra còn có một ứng dụng khách dành cho Đồng hồ thông minh Garmin. Ứng dụng có sẵn trong cửa hàng ứng dụng garmin connect và có thể được cài đặt tại đây:

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

Ứng dụng khách Smart Mirror

Tôi đã tạo một tài liệu hướng dẫn giải thích cách tạo Smart Mirror, hãy xem https://www.instructables.com/id/Smart-Mirror-by-R…. Mã nguồn này cũng được lưu trữ trên github: https://www.instructables.com/id/Smart-Mirror-by-R…. github.com/dabastynator/SmartMirror. Phần mềm của Smart Mirror đọc cấu hình từ tệp smart_config.js không phải là một phần của kho lưu trữ git. Nội dung của tệp cấu hình sẽ giống như danh sách sau:

var mOpenWeatherKey = 'your-open-wheather-key';

var mSecurity = 'your-security-token';

Bạn cũng phải điều chỉnh hai dòng đầu tiên của tệp smart_mirror.js để chỉ định địa chỉ ip máy chủ Nhà thông minh và vị trí để có được thời tiết phù hợp.

Nhiều khách hàng hơn

Ứng dụng máy chủ là một máy chủ web đơn giản. Điều này cho phép bạn kích hoạt các hành động từ bất kỳ khách hàng nào bạn muốn bằng các cuộc gọi web đơn giản. Trong video giới thiệu, tôi hiển thị trình tác vụ ứng dụng Android kết hợp với AutoVoice. Điều này cho phép tôi kích hoạt các sự kiện bằng các lệnh thoại đơn giản. Ví dụ: "ok google, time to sleep" có thể kích hoạt mobile.go_to_bed. Nhưng bạn cũng có thể thực hiện các cuộc gọi web chẳng hạn từ IFTTT. Làm thế nào về một dải đèn LED nhấp nháy màu vàng để thông báo qua email?

Bạn có thể yêu cầu máy chủ cho các cuộc gọi web có thể có như các liên kết sau (thay thế ip, cổng và mã thông báo bằng cấu hình của bạn)

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-…

Bước 5: Kết luận

Vẫn còn một số tính năng để triển khai: Vì máy chủ chỉ cung cấp một web-api đơn giản, nên thực hiện rất nhiều cuộc thăm dò. Để giảm bỏ phiếu, tôi muốn tích hợp MQTT để có thông báo tốt hơn. Ngoài ra, bộ nguồn wifi nên hoạt động đáng tin cậy hơn bộ nguồn rc vì rc chỉ là giao tiếp một chiều.

Nó tạo ra rất nhiều niềm vui khi phát triển dự án này. Và việc điều khiển căn hộ bằng một số thiết bị khá tuyệt, ngay cả khi kết nối internet bị hỏng.

Đề xuất: