Mục lục:

Tích hợp bộ đếm Geiger Trợ lý Trang chủ: 8 bước
Tích hợp bộ đếm Geiger Trợ lý Trang chủ: 8 bước

Video: Tích hợp bộ đếm Geiger Trợ lý Trang chủ: 8 bước

Video: Tích hợp bộ đếm Geiger Trợ lý Trang chủ: 8 bước
Video: #538 Vũ Trụ Về Cơ Bản Là Trống Rỗng?! 2024, Tháng bảy
Anonim
Image
Image
Nguyên tắc làm việc
Nguyên tắc làm việc

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách thêm cảm biến tùy chỉnh vào HASS (trợ lý tại nhà) cụ thể hơn là bộ đếm geiger nhưng quá trình này cũng tương tự đối với các cảm biến khác.

Chúng tôi sẽ sử dụng bảng NodeMCU, một bộ đếm geiger dựa trên arduino và một trợ lý gia đình đã được cài đặt sẵn.

Việc tích hợp sẽ dựa trên máy chủ MQTT (công khai hoặc riêng tư) và tôi sẽ hướng dẫn bạn từng bước về việc này.

Trong trường hợp bạn không biết trợ lý tại nhà là gì, vui lòng truy cập trang của họ https://www.home-assistant.io/. Đó là một nền tảng tự động hóa gia đình nổi tiếng được duy trì rất tốt và có khả năng tùy biến cao.

Bạn sẽ tìm hiểu về:

- cấu hình nâng cao cho Trợ lý tại nhà

- NodeMCU (bảng phát triển) và cách lập trình nó với Arduino IDE

- OTA (cập nhật qua mạng) bằng Arduino IDE cho bảng NodeMCU

- cách kết nối thiết bị nối tiếp với NodeMCU

- cài đặt thủ công máy chủ MQTT trên linux (tùy chọn)

Giả định cơ bản:

- bạn đã thiết lập và chạy Trợ lý Home

- bạn biết một chút về điện tử

- bạn đã cài đặt Arduino IDE

Bước 1: Các bộ phận và công cụ

Các bộ phận:

1. Bảng NodeMCU

2. breadbord

3. dây máy ép trái cây nam-nam và nam-nữ

3. cáp usb sang micro usb

4. Bộ đếm geiger arduino với giao diện nối tiếp

(tìm kiếm "arduino geiger couter" trên Ebay)

5. chất phóng xạ (tùy chọn một mẫu thử nghiệm nhỏ)

Công cụ:

1. Arduino IDE

2. Home Assistant đã được cài đặt

Bước 2: Nguyên tắc làm việc

Mục tiêu của chúng tôi là hiển thị trên HomeAssistat (HASS) các kết quả đọc từ bộ đếm geiger. Ở một bên, chúng tôi có một máy chủ HASS đang hoạt động ở đâu đó, nó có thể là một quả mâm xôi pi hoặc thiết bị khác và ở bên kia, chúng tôi có bộ đếm geiger.

Bộ đếm geiger có một cổng nối tiếp, một giải pháp sẽ là gắn trực tiếp cổng nối tiếp vào RaspberryPi mà HASS chạy trên đó.

Một số lý do tại sao nó có thể không phải là một lý tưởng tốt:

- không có không gian vật lý ở đó

- chúng tôi có một số thiết bị khác trên cổng nối tiếp

- chúng tôi muốn gắn một cảm biến môi trường nên được đặt bên ngoài thay vì bộ đếm geiger

Ok vì vậy chúng ta sẽ khám phá một khả năng khác để thực hiện kết nối thông qua WIFI:

HASS hỗ trợ đọc dữ liệu cảm biến và hiển thị thông qua máy chủ MQTT, loại máy chủ này là một kết nối trọng lượng nhỏ dành cho các thiết bị nhỏ, một thiết bị xuất bản thông báo về "chủ đề" mà thiết bị kia nghe về chủ đề đó để nhận thông báo. Vì vậy, HASS sẽ lắng nghe và chúng tôi cần một thứ gì đó sẽ công bố thông điệp.

Cảm biến của chúng tôi chỉ biết nói chuyện qua đường dây nối tiếp, vì vậy chúng tôi sẽ sử dụng một bảng có thể đọc một đường dây nối tiếp và có thể kết nối qua WIFI và nói chuyện với máy chủ MQTT. Một bảng giá rẻ làm được điều này là NodeMCU.

NodeMCU có thể được lập trình với Arduino IDE. Bản phác thảo khá đơn giản, nó thực hiện như sau:

- kết nối với WIFI

- duy trì kết nối MQTT với máy chủ và thử lại kết nối khi không thành công hoặc bị ngắt kết nối

- lắng nghe dữ liệu đến nối tiếp dưới dạng một chuỗi các số nguyên

- khi một số nguyên đến, nó sẽ gửi nó qua MQTT đến một chủ đề cụ thể

Bước 3: Lắp ráp thiết bị

Lắp ráp thiết bị
Lắp ráp thiết bị

Chúng tôi sẽ sử dụng breadboard và dây dẫn vì vậy nó khá đơn giản, chúng tôi có một vài bước:

- đặt NodeMCU trên breadboard

- kết nối ống geiger với bộ đếm geiger (coi chừng phân cực)

- VIN chuyển đến bộ đếm geiger +

- GND goest đến bộ đếm geiger -

- NodeMCU D7 (chân 13) đi đến geiger TX

- NodeMCU D8 (chân 15) đi đến geiger RX

- cấp nguồn cho NodeMCU thông qua micro USB từ máy tính

Bước 4: Tải lên mã

Tải lên mã
Tải lên mã
Tải lên mã
Tải lên mã
Tải lên mã
Tải lên mã
Tải lên mã
Tải lên mã

Chúng tôi sẽ sử dụng Arduino IDE và chúng tôi sẽ đảm bảo rằng chúng tôi đã cài đặt bảng NodeMCU và cài đặt thư viện Adafruit_MQTT.

1. Sao chép kho lưu trữ github: https://github.com/danionescu0/arduino và sao chép bản phác thảo từ các dự án / HASSGeigerIntegration vào vị trí sách phác thảo arduino của bạn

2. Mở Arduino IDE và cài đặt NodeMCU

- đi tới Tệp -> Tùy chọn, trong URL Trình quản lý bảng bổ sung, hãy thêm https://arduino.esp8266.com/stable/package_esp8266com_index.json nếu bạn đã có thứ gì đó ở đó và nhấp vào ok

- từ Tools -> Board -> Board Manager, gõ "gật đầu" và chọn mục nhập esp8266 của Cộng đồng ESP8266, và nhấn cài đặt

3. Cài đặt Adafruit_MQTT

- vào Công cụ -> Quản lý Thư viện -> tìm kiếm "Adafruit_MQTT" và cài đặt "Thư viện Arduino MQTT"

4. Cắm cáp USB vào máy tính của bạn và định cấu hình bo mạch:

- vào Tools -> Board -> chọn NodeMcu 1.0

- Công cụ -> Cổng -> cổng USB của bạn

- giữ nguyên các cài đặt khác

4. Trong bản phác thảo, hãy thay đổi thông tin đăng nhập WIFI của bạn để phù hợp với thông tin đăng nhập của riêng bạn:

#define STASSID "ssid" // Thay thế bằng SSID WIFI của bạn

#define STAPSK "pass" // Thay thế bằng mật khẩu WIFI của bạn

5. Tải bản phác thảo lên bảng của bạn và sau khi tải lên, hãy đặt lại bảng từ nút

6. Mở màn hình nối tiếp, nếu tất cả đều suôn sẻ, bạn sẽ thấy một số đầu ra như thế này:

Khởi động

Địa chỉ IP: 192.168.1.168 Đã bật OTA Kết nối với MQTT… Đã kết nối MQTT! {"bức xạ": 0,03}..

Bước 5: Định cấu hình HomeAssistant

Định cấu hình HomeAssistant
Định cấu hình HomeAssistant
Định cấu hình HomeAssistant
Định cấu hình HomeAssistant

Chúng tôi sẽ giả định rằng bạn có trợ lý tại nhà đang hoạt động. Trên hệ thống của tôi, tôi có HASSOS phiên bản 3.12 trên RaspberryPi. Nếu phiên bản trợ lý tại nhà của bạn quá cũ hoặc quá mới, một số tính năng có thể khác. Hướng dẫn này chắc chắn hoạt động với phiên bản 3.12.

Nếu bạn chưa cài đặt Home Assistant, hãy xem hướng dẫn cài đặt chính thức của họ:

Trước khi tiến hành cài đặt, hãy đảm bảo rằng NodeMCU đã được cắm và nó xuất bản dữ liệu.

Được rồi, chúng tôi cũng sẽ có một loạt các bước ở đây cho cấu hình:

1. Cài đặt "trình chỉnh sửa tệp" nếu bạn không có nó trong menu, đây là hướng dẫn chính thức:

2. Chỉnh sửa tệp "/config/configuration.yaml" và thêm phần sau và lưu nó

- phần mqtt nếu bạn chưa có

mqtt:

broker: broker.hivemq.com Discovery: true Discovery_prefix: ha

- phần cảm biến

cảm biến:

- platform: mqtt name: "Bức xạ" state_topic: "ha / bức xạ" unit_of_measurement: 'uSv' unique_id: "bức xạ" value_template: "{{value_json.radiation}}"

3. Từ Cấu hình -> Điều khiển máy chủ: nhấn "Kiểm tra cấu hình" kiểm tra tệp cấu hình yaml xem có lỗi không, sau đó nhấn "khởi động lại" và đợi cho đến khi nó được khởi động lại

4. Từ Tổng quan -> Menu góc trên cùng bên phải -> Định cấu hình giao diện người dùng -> nhấn nút + từ dưới cùng bên phải

5. Chọn "cảm biến" từ danh sách -> trong trường "thực thể" tìm kiếm "sensor.radiation", trong trường tên viết "Radiation" và nhấp vào ok, nó sẽ ở trang chính ngay bây giờ

Bước 6: Định cấu hình máy chủ MQTT của riêng bạn [Tùy chọn]

Thảo luận một chút về MQTT

“MQTT là một Client Server xuất bản / đăng ký giao thức truyền tải tin nhắn. Nó có trọng lượng nhẹ, mở, đơn giản và được thiết kế để dễ thực hiện. Những đặc điểm này khiến nó trở nên lý tưởng để sử dụng trong nhiều tình huống, bao gồm các môi trường hạn chế như để giao tiếp trong bối cảnh Máy với Máy (M2M) và Internet of Things (IoT), nơi yêu cầu dấu chân mã nhỏ và / hoặc băng thông mạng ở mức cao.”

Trích dẫn từ đặc tả MQTT 3.1.1 chính thức.

Vì vậy, về cơ bản chúng ta có thể xuất bản một thông báo ở đâu đó ở một bên và ở phía bên kia, chúng tôi có thể lắng nghe những thông điệp đó và làm điều gì đó với dữ liệu. MQTT hỗ trợ "chủ đề", chủ đề là các chuỗi mà nhà môi giới sử dụng để lọc tin nhắn cho từng khách hàng, vì vậy nếu chúng tôi xuất bản tin nhắn tới chủ đề "/ bức xạ", người nghe phải đăng ký cùng chủ đề để nhận được tin nhắn mà chúng tôi đang gửi.

Đây là hướng dẫn chi tiết về MQTT:

Sử dụng máy chủ hive miễn phí có một số nhược điểm như:

- bất kỳ ai lắng nghe chủ đề của bạn sẽ nhận được tin nhắn của bạn

- nếu nó bị hỏng hoặc yêu cầu thanh toán sau đó, bạn sẽ không thể sử dụng nó (trừ khi bạn thanh toán)

- nếu bất kỳ ai xuất bản tin nhắn về cùng một chủ đề, bạn cũng sẽ nhận được tin nhắn của họ, họ có thể xuất bản các tin nhắn không tương thích và phá vỡ đồ thị HASS của bạn

Sử dụng máy chủ riêng

Nếu bạn không muốn sử dụng máy chủ miễn phí công cộng, bạn có tùy chọn máy chủ riêng. Chúng tôi sẽ cài đặt Mosquitto MQTT trên máy chủ ubuntu / debian như raspberry pi hoặc máy tính.

Mosquitto là một máy chủ thực hiện giao thức MQTT và hoàn toàn miễn phí.

Để cài đặt nó, hãy đăng nhập vào pi raspnerry của bạn hoặc máy chủ dựa trên debian khác và chạy:

cập nhật apt sudo

sudo apt install -y mosquitto mosquitto-client sudo systemctl enable mosquitto.service

Thao tác này sẽ cập nhật kho lưu trữ, cài đặt máy chủ và ứng dụng khách mosquiito và cho phép nó trở thành một dịch vụ chạy khi khởi động

Để thực thi ip máy chủ:

tên máy tôi

và nó sẽ xuất ra một cái gì đó như:

192.168.1.52 172.17.0.1 172.18.0.1

Vì vậy, ip của tôi là 192.168.1.52, trong các lệnh dưới đây thay thế nó bằng ip của riêng bạn

Bạn có thể kiểm tra máy chủ MQTT bằng cách xuất bản tin nhắn và nhận nó bằng công cụ console, vì hai thiết bị đầu cuối này phải được mở, một thiết bị lắng nghe thông báo, một đầu cuối sẽ xuất bản thông báo.

Đầu tiên trong một thiết bị đầu cuối, hãy chạy lệnh này để nghe thông báo về "/ some-topic"

mosquitto_sub -h 192.168.1.52 -t / some-topic

Mở một thiết bị đầu cuối khác và xuất bản một tin nhắn cho chủ đề đó:

mosquitto_pub -h 192.168.1.52 -t / some-topic -m '{"độ ẩm": 74.0}'

Trong dòng đầu tiên, bạn sẽ thấy '{"Moisturiser": 74.0}' được in ra.

Đặc biệt chú ý:

- thiết lập này giả định rằng HASS, Mosquitto và NodeMCU được kết nối với cùng một mạng WIFI và không có quy tắc tường lửa và chúng có thể giao tiếp tự do

- máy chủ Mosquitt MQTT không có tên người dùng / mật khẩu, nếu bạn muốn thiết lập thông tin đăng nhập, hãy kiểm tra phần này: https://www.steves-internet-guide.com/mqtt-username-password-example/ Ngoài ra, bạn sẽ cần phải định cấu hình thông tin đăng nhập trong Home Assistant và trong bản phác thảo arduino

Bước 7: OTA (Cập nhật qua mạng) cho NodeMCU

Cập nhật qua mạng có nghĩa là bảng phát triển có thể được chiếu sáng bằng dây mà không cần cáp vật lý.

Arduino IDE hỗ trợ chức năng này cho dòng ESP8266 và một số bo mạch khác:

- yêu cầu flash ban đầu qua cáp USB

- tạo một cổng ảo qua WIFI và nó chỉ hiển thị từ Arduino IDE

- không có thông tin gỡ lỗi nối tiếp có sẵn

- hỗ trợ bảo vệ bằng mật khẩu

Để kích hoạt OTA trong bản phác thảo ESP8266, trước tiên hãy bao gồm thư viện:

#include "ArduinoOTA.h"

Đồng thời xác định hằng số mật khẩu phác thảo này:

#define SKETCHPASS "some_password"

Trong phần thiết lập, hãy thêm các dòng sau:

trong khi (WiFi.waitForConnectResult ()! = WL_CONNECTED) {

Serial.println ("Kết nối Không thành công! Đang khởi động lại…"); chậm trễ (5000); ESP.restart (); } ArduinoOTA.setPassword (SKETCHPASS); ArduinoOTA.onStart ( () {Kiểu chuỗi; if (ArduinoOTA.getCommand () == U_FLASH) {type = "sketch";} else {// U_FS type = "filesystem";} Serial.println ("Bắt đầu cập nhật "+ loại);}); ArduinoOTA.onEnd ( () {Serial.println ("\ nEnd");}); ArduinoOTA.onProgress ( (unsigned int process, unsigned int total) {Serial.printf ("Progress:% u %% / r", (process / (total / 100)));}); ArduinoOTA.onError ( (ota_error_t error) {Serial.printf ("Error [% u]:", error); if (error == OTA_AUTH_ERROR) {Serial.println ("Auth Failed");} else if (error == OTA_BEGIN_ERROR) {Serial.println ("Bắt đầu không thành công");} else if (error == OTA_CONNECT_ERROR) {Serial.println ("Kết nối không thành công");} else if (error == OTA_RECEIVE_ERROR) {Serial.println (" Nhận không thành công ");} else if (error == OTA_END_ERROR) {Serial.println (" Kết thúc không thành công ");}}); ArduinoOTA.begin (); Serial.print ("Địa chỉ IP:"); Serial.println (WiFi.localIP ());

Và trong phần vòng lặp thêm dòng này:

ArduinoOTA.handle ();

Sau khi tải mã ban đầu lên sau khi bo mạch khởi động, bạn sẽ thấy trong Arduino IDE trong phần Công cụ-> Cổng hai loại cổng:

Cổng nối tiếp: / dev / ttyUSB0 (ví dụ)

Cổng mạng: esp8266-xxxxx tại 192.168.1.xxx

Bây giờ bạn có thể chọn cổng mạng và tải lên điều khiển từ xa phác thảo, bạn sẽ được nhắc nhập mật khẩu phác thảo (mật khẩu mà bạn đã xác định trong hằng số ở trên)

Bước 8: Kết luận, Công việc trong tương lai

Hướng dẫn này có thể dễ dàng sửa đổi để gửi dữ liệu về các loại cảm biến khác:

- nếu cảm biến của bạn được NodeMCU hỗ trợ trực tiếp thông qua thư viện, chỉ cần gộp dữ liệu từ cảm biến và trực tiếp đẩy nó qua MQTT

- nếu thư viện cảm biến không hoạt động với NodeMCU nhưng chỉ dành cho Arduino thì hãy tải mã của bạn lên arduino, xuất giá trị qua dòng nối tiếp và đọc nó trong NodeMCU và đẩy nó (giống như chúng ta đã làm với bộ đếm geiger)

Chúng tôi thậm chí có thể sửa đổi nó để gửi dữ liệu từ nhiều cảm biến như vậy:

- kết nối các cảm biến của bạn với NodeMCU

- dữ liệu thăm dò ý kiến từ mỗi cảm biến

- đối với mỗi cảm biến xuất bản dữ liệu cho một chủ đề khác nhau

- trong HASS xác định nhiều cảm biến (giống như chúng tôi đã làm với geiger) sẽ lắng nghe các chủ đề khác nhau

Đề xuất: