Nhầm lẫn về việc sử dụng công nghệ nào trong Hệ thống nhà thông minh


8

Trong dự án đại học của tôi (Hệ thống nhà thông minh) có một chức năng trong đó nếu ai đó gõ cửa, một hình ảnh phải được hiển thị trên màn hình (trong trình duyệt). Tôi đang triển khai cảm biến gõ cửa (Piezo) bằng cách sử dụng Arduino mà bằng cách nào đó phải gửi lệnh đến Raspberry Pi để chụp ảnh, được gửi đến trình duyệt của một máy tính khác. Có một số mô-đun khác như thế này. Mọi thứ được kết nối với cùng một mạng WiFi.

Bây giờ tôi có thể hy vọng làm cho nó hoạt động bằng cách nào đó bằng cách sử dụng PHP và MySQL và một số yêu cầu Ajax chạy liên tục, nhưng đó có lẽ không phải là một cách rất gọn gàng để làm điều đó. Tôi đã nghe nói về node.js và ổ cắm web nhưng tôi không chắc mình có thời gian để tìm hiểu nó. (Tôi có thể nếu nó thực sự cần thiết)

Dù sao, bất cứ ai cũng có thể cho tôi biết đâu là cách phù hợp để thực hiện loại hệ thống này? Nó sẽ thực sự hữu ích.


3
Tôi nghĩ rằng chúng tôi sẽ đấu tranh để xác định cách tốt nhất để bạn làm điều này, vì rất nhiều thứ phụ thuộc vào những gì bạn đã biết - trừ khi ai đó có thể chỉ cho bạn một cơ sở mã hiện tại (nhưng sau đó bạn có thể không học được nhiều).
Sean Houlihane

Để cảnh báo theo thời gian thực được kích hoạt trong trình duyệt để thay đổi máy chủ hoặc cơ sở dữ liệu, NodeJS sẽ là cần thiết. Phần còn lại của chức năng có thể được quản lý bởi PHP ...!
Prashanth Benny

Câu trả lời:


9

Đẩy so với bình chọn

Giải pháp đề xuất gửi yêu cầu AJAX thường xuyên của bạn nghe có vẻ giống như bỏ phiếu - bạn thường xuyên gửi yêu cầu để kiểm tra xem trạng thái có thay đổi hay không. Sẽ có ý nghĩa hơn nhiều khi đẩy các thay đổi đến máy chủ khi cảm biến piezo phát hiện ra sự thay đổi.

Đó là sự khác biệt giữa điều này:

Máy chủ: Có ai đó ở cửa không? Cảm biến: Không .
Máy chủ: Có ai đó ở cửa không? Cảm biến: Không .
Máy chủ: Có ai đó ở cửa không? Cảm biến: Không .
... lặp lại quảng cáo vô hạn ...

Và điều này:

Cảm biến: Có ai đó ở cửa!

Ví dụ đầu tiên là bỏ phiếu, và thứ hai là đẩy. Bạn có thể biết cái nào sẽ có mức sử dụng năng lượng thấp hơn, mã ít phức tạp hơn và giảm mức sử dụng mạng.

HTTP hay cái gì khác?

Yêu cầu AJAX được gửi qua HTTP, do đó, nó khá nặng và yêu cầu một số bắt tay TCP trên mỗi kết nối (trừ khi bạn sử dụng Keep-Alive ).

Có thể đáng để xem xét các giao thức thay thế như MQTT (có một số giải thích tốt trong câu hỏi ' Khi nào và tại sao nên sử dụng giao thức MQTT? ', Có vấn đề rất giống với bạn).

Một nhà môi giới tin nhắn như MQTT có thể mạnh hơn một chút so với bạn thực sự cần trong tình huống hiện tại của bạn, nhưng một nhà môi giới MQTT có thể dễ dàng mở rộng nếu bạn chọn thêm nhiều thiết bị vào mạng gia đình thông minh của mình, trong khi hệ thống yêu cầu AJAX hiện tại của bạn sẽ nhanh chóng sụp đổ Hãy tưởng tượng bốn hoặc năm thiết bị khác nhau bỏ phiếu cho nhau; nó sẽ nhanh chóng dẫn đến mạng của bạn trở nên quá tải và nó sẽ tiêu tốn rất nhiều vào việc sử dụng năng lượng.

Nút và nút Web

Sử dụng ổ cắm web và Node sẽ giải quyết vấn đề sử dụng đẩy thay vì thăm dò ý kiến , vì vậy theo tôi, đó sẽ là một ý tưởng tốt. Tuy nhiên , tôi nghi ngờ việc bỏ phiếu sẽ hiệu quả nếu bạn thực sự không muốn học Node.

Nếu bạn muốn một giải pháp mở rộng sẽ hoạt động khi bạn mở rộng ngôi nhà thông minh của mình, chắc chắn phải đi với đẩy - nó sẽ tiết kiệm rất nhiều rắc rối và nước mắt. Nếu bạn chỉ muốn một bằng chứng nhanh chóng về khái niệm, bỏ phiếu có thể sẽ hoạt động.

Lời khuyên cá nhân của tôi là bạn nên tìm hiểu các ổ cắm web hoặc điều tra bằng cách sử dụng một nhà môi giới tin nhắn như MQTT. Bạn có thể sử dụng thư viện máy khách như Mosquitto-PHP (với hướng dẫn của HiveMQ ) để đơn giản hóa bằng MQTT trong PHP hoặc chỉ cần đi với Node và ổ cắm web. Tôi nghi ngờ tài nguyên học tập cho Node và web socket sẽ tốt hơn, nhưng MQTT có xu hướng được ưa chuộng cho môi trường nhà thông minh / IoT.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.