Home AssistantInternet of ThingsSmartHome

Bài 3: Điều khiển bật ,tắt đèn với Home Assistant

Trong bài viết này lophocvui.com sẽ hướng dẫn bạn điều khiển bật tắt đèn từ xa bằng Node MCU. Từ đó có thể phát triển để điều khiển các thiết bị thực tế trong gia đình. Bạn chỉ cần ngồi một chỗ cũng có thể điều khiển được bất cứ thiết bị nào trong nhà.

I/Yêu cầu phần cứng

1.Những linh kiện cần chuẩn bị:

  • Module ESP8266V12 hoặc Node MCU
  • Nguồn 5VDC
  • Board test và dây cắm
  • Đèn LED

2.Sơ đồ kết nối

  • Sơ đồ kết nối như hình vẽ :

II/ Tìm hiểu về giao thức MQTT

Home Assistant điều khiển bật tắt thiết bị thông qua giao thức gọi là MQTT. Đây là một giao thức truyền thông điệp (message) theo mô hình publish/subscribe (xuất bản – theo dõi), sử dụng băng thông thấp, độ tin cậy cao và có khả năng hoạt động trong điều kiện đường truyền không ổn định.

Kiến trúc mức cao (high-level) của MQTT gồm 2 phần chính là BrokerClients.

Trong đó, broker được coi như trung tâm, nó là điểm giao của tất cả các kết nối đến từ client. Nhiệm vụ chính của broker là nhận mesage từ publisher, xếp các message theo hàng đợi rồi chuyển chúng tới một địa chỉ cụ thể. Nhiệm vụ phụ của broker là nó có thể đảm nhận thêm một vài tính năng liên quan tới quá trình truyền thông như: bảo mật message, lưu trữ message, logs,…

Client thì được chia thành 2 nhóm là :

publisher(thiết bị xuất bản thông điệp)

subscriber(thiết bị đăng ký nhận thông điệp)

Client chỉ làm ít nhất một trong 2 việc là publish các message lên một topic cụ thể hoặc subscribe một topic nào đó để nhận message từ topic này.

Các khái niệm đáng chú ý trong giao thức MQTT:

Trong một hệ thống sử dụng giao thức MQTT, nhiều client kết nối tới một server (Trong MQTT, server được gọi là MQTT Broker). Mỗi client sẽ đăng ký theo dõi các kênh thông tin (topic) hoặc gửi dữ liệu lên kênh thông tin đó. Quá trình đăng ký này gọi là “subscribe” và hành động một client gửi dữ liệu lên kênh thông tin được gọi là “publish”. Mỗi khi kênh thông tin đó được cập nhật dữ liệu (dữ liệu này có thể đến từ các client khác) thì những client nào đã đăng ký theo dõi kênh này sẽ nhận được dữ liệu cập nhật đó.

Message:  Message còn được gọi là “message payload”, có định dạng mặc định là plain-text (chữ viết người đọc được), tuy nhiên người sử dụng có thể cấu hình thành các định dạng khác.

Topic:  Topic có thể coi như một “đường truyền” logic giữa 2 điểm là publisher và subscriber. Về cơ bản, khi message được publish vào một topic thì tất cả những subscriber của topic đó sẽ nhận được message này.

QoS – Quality of Service: 

Chất lượng dịch vụ

MQTT hỗ trợ 3 mức QoS:

  •  QoS-0 :là mức đảm bảo thấp nhất, tất cả các message có QoS 0 sau khi được gửi đi bởi publisher sẽ không được kiểm tra xem đã đến broker hay chưa (fire – and – forget)
  •  QoS-1: message được đảm bảo rằng đã đến nơi nhận ít nhất 1 lần (tức là sự trùng lặp        vẫn có thể xảy ra)
  •  QoS-2: đây là mức đảm bảo cao nhất, broker sẽ đảm bảo các message có QoS-2 sẽ đến nơi nhận chỉ 1 lần duy nhất, không trùng lặp, không thất lạc. Tất nhiên việc xác nhận với QoS-2 sẽ tốn băng thông hơn 2 cách còn lại.

Retain: Retain là một cờ (flag) được gắn cho một message của giao thức MQTT. Retain chỉ nhận giá trị 0 hoặc 1 (tương ứng 2 giá trị logic false hoặc true). Nếu retain = 1, broker sẽ lưu lại message cuối cùng của 1 topic kèm theo mức QoS tương ứng. Khi client bắt đầu subscribe topic có message được lưu lại đó, client ngay lập tức nhận được message.

III/ Cấu hình MQTT cho Home Assistant

Để tích hợp giao thức MQTT vào Home Assistant ta thức hiện các bước sau :

Bước 1: Vào Hass.io thêm add-on mossquito broker như hình vẽ sau :

Sau khi thêm  ta chỉnh sửa đoạn code ở Config như dưới đây :

Username , password là không bắt buộc . Nếu không start được hãy thử kiểm tra xem cổng 1883  trên máy bạn có bị dịch vụ nào chiếm không ,hãy tắt nó đi  và thử lại.

Bước 2: Chỉnh sửa trong file cấu hình configuration.yaml

Bạn vào mục configurator đã thêm vào bài viết trước , trỏ đến file configuration.yaml và thêm vào đoạn code cấu hình MQTT:

Biến cấu hình :

  • broker : là địa chỉ ip  broker mqtt  của bạn ,với add-on mossquito broker là core-mosquitto.

Bạn có thể thay thể địa chỉ ip broker khác  ,có thể xem đầy đủ tại đây: https://www.home-assistant.io/docs/mqtt/broker#run-your-own

  • usernamepassword bạn điền ở bước 1.

Để tạo công tắc hiện thị bật tắt cho đèn led ta thêm đoạn code tiếp theo :

Biến cấu hình :

  • platform : giao thức truyền cho switch
  • name : Tên switch hiển thị lên Home Assistant
  • state_topic : chủ đề MQTT được đăng kí để cập nhập các trạng thái
  • command_topic: chủ để MQTT xuất bản các lệnh để thay đổi trạng thái chuyển đổi
  • payloade_on ,_offf : nội dung message để bặt,tắt đèn
  • qos : chất lượng dịch vụ

Cấu hình đầy đủ cho MQTT Switch có thể xem tại đây : https://www.home-assistant.io/components/switch.mqtt/

Bước 3 : Lưu lại file configuration.yaml ,check lỗi và khởi động lại Home Assistant

Thực hiện các bước như ở bài viết trước .Sau khi khởi động lại ta sẽ thấy một switch được tạo mới như hình :

IV/ Code cho Node MCU

Bạn copy  về đoạn code dưới đây cho Node MCU dùng phần mêm Ardunio IDE :

Sau khi nạp code hãy thử bật, tắt công tắc trên Home Assistant  đồng thời check trên cửa sổ Serial của phần mềm Ardunio . Nếu báo như hình vẽ dưới ,đèn bật tắt được tức là đã kết nối thành công .

Trên đây là một ví dụ đơn giản cho việc bật tắt thiết bị từ xa của nhà thông minh . Ta có thể phát triển cao hơn nữa từ ví dụ trên. Từ điều khiển nhiều đèn cùng một lúc hoặc thêm relay 220v để điều khiển được các thiết bị thực tế trong gia đình .

Các bạn có thể đặt các câu hỏi trực tiếp tại đây

lophocvui.com chúc các bạn thành công !!!

—————————-
Chi tiết liên hệ:
📌Website: lophocvui.com
☎️Hotline: 0971479145//0983811938
🖌️Fanpage:https://www.facebook.com/lophocvui.com/

Bình luận

Related Articles

Close
Close