Mục lục:
- Bước 1: Tải Pi bằng Rasbian Stretch
- Bước 2: Cập nhật và thêm các tính năng cho Node-Red
- Bước 3: Cài đặt Mosquitto MQTT
- Bước 4: Thiết lập giao diện Node Red
- Bước 5: Thiết lập hệ thống Arduino để lập trình lại các thiết bị Sonoff
- Bước 6: Lập trình lại công tắc Sonoff
- Bước 7: Bảo mật
- Bước 8: Các bước đầu tiên để mở rộng
- Bước 9: Phụ lục - Tải từ Raspbian Stretch Lite
Video: Hệ thống tự động hóa gia đình độc lập mạnh mẽ - Pi, Sonoff, ESP8266 và Node-Red: 9 bước (có hình ảnh)
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-13 06:58
Hướng dẫn này sẽ đưa bạn đến cơ sở đầu tiên, nơi bạn có thể bật / tắt đèn hoặc thiết bị thông qua bất kỳ thiết bị nào có thể kết nối với mạng cục bộ của bạn và với giao diện web có thể tùy chỉnh tuyệt vời. Phạm vi cho các tính năng mở rộng / bổ sung là rất lớn, bao gồm gửi email, tin nhắn twitter, cảm biến đọc (ví dụ: nhiệt độ). Bạn có thể dễ dàng thiết lập các quy tắc, ví dụ: - Nếu nhiệt độ dưới 15 độ C lúc 11 giờ tối, bật chăn điện trong 30 phút. Hệ thống sử dụng giao thức MQTT với TCP đáng tin cậy hơn đáng kể so với UDP - điều đáng ngạc nhiên là được sử dụng bởi một số thiết bị tự động hóa gia đình thương mại. Một khi công việc khó khăn của việc thiết lập hệ thống, được mô tả ở đây, thì niềm vui có thể bắt đầu. Node Red cung cấp một giao diện người dùng tuyệt vời, trực quan, nhanh chóng và dễ thiết lập, đồng thời cung cấp khả năng tuyệt vời.
Kết quả là một hệ thống tự động hóa gia đình mạnh mẽ hoàn toàn nằm dưới sự kiểm soát của riêng một người và hoàn toàn nằm trên mạng cục bộ. Nhiều hệ thống hiển thị trên Guiductable hoạt động với các máy chủ dựa trên đám mây và do đó có nguy cơ bảo mật và có thể yêu cầu đăng ký. Những thứ này dễ thiết lập hơn nhưng có rủi ro bảo mật cao hơn và chi phí có thể cao hơn. Tôi nên nói thêm rằng người ta có thể thiết lập một VPN (mạng riêng ảo) cho Pi để kích hoạt kết nối an toàn với hệ thống / mạng gia đình nếu truy cập từ bên ngoài sẽ hữu ích (Google Pi OpenVPN để được hướng dẫn).
Hệ thống này yêu cầu lập trình lại các thiết bị Sonoff với một hệ thống mã nguồn mở tuyệt vời được gọi là Sonoff-Tasmoda. Điều này có thể được thực hiện bằng cách sử dụng thiết lập Arduino đặc biệt và bộ chuyển đổi USB sang nối tiếp. Các thiết bị Sonoff sử dụng chip Wi-Fi ESP8266 nên bạn cũng có thể tạo thiết bị của riêng mình bằng cách sử dụng mô-đun ESP8266 hoặc lắp chúng với các vật dụng khác để cung cấp kết nối không dây.
Nhiệm vụ lớn nhất là thiết lập Raspberry Pi làm trung tâm. Điều này chạy nhà môi giới MQTT (hoặc máy chủ) quản lý giao tiếp với các thiết bị được kết nối. Pi cũng chạy một hệ thống có tên là Node-Red có thể chặn các tin nhắn, dữ liệu và xuất các lệnh - chẳng hạn như khi nào thì bật chăn điện. Node-Red cũng cung cấp một giao diện để phục vụ trang web mà bạn có thể đăng nhập thông qua điện thoại thông minh / máy tính bảng / PC / Máy tính xách tay, để xem những gì đang xảy ra và cho phép chuyển đổi đèn thủ công, v.v.
Mục đích của tôi với tài liệu hướng dẫn này là đưa ra từng bước đủ chi tiết để một người mới làm quen có thể làm cho hệ thống hoạt động.
Các bước là:
- Tải Pi bằng Rasbian Stretch
- Cập nhật và thêm các tính năng vào Node-Red
- Cài đặt nhà môi giới Mosquitto MQTT
- Thiết lập môi trường Arduino để tải lên phần sụn Sonoff-Tasmota
- Lập trình lại công tắc Sonoff
- Thiết lập giao diện Node-Red
- Kiểm tra tất cả các hoạt động.
Phần cứng bạn sẽ cần:
- Raspberry Pi và bộ nguồn (và bàn phím và màn hình để thiết lập ban đầu) (kiểu B được sử dụng ở đây)
- Công tắc Sonoff
- Bộ chuyển đổi nối tiếp USB
- Tùy chọn - Ban phát triển ESP chẳng hạn như NodeMCU.
Kinh nghiệm của tôi với Raspberry Pi là việc thiết lập bất cứ thứ gì dường như liên quan đến nhiều nỗi đau hơn đáng kể so với những gì người ta có thể tưởng tượng có thể xảy ra với những thứ không hoạt động hoặc bị mắc kẹt ở một số bước nhỏ mà lời giải thích có thể tốt hơn. Các diễn đàn không phải lúc nào cũng nhận được lời khuyên có hiệu quả! Tôi đã tìm thấy một số tuyến đường đơn giản là không hoạt động vì lý do này hay lý do khác. Chi phí này là 3 ngày! Sau đó, tôi xóa sạch mọi thứ và bắt đầu lại và hoàn thành trong vòng chưa đầy một (dài) ngày. Tuy nhiên, điều này đã sử dụng Raspian Jessie cũ hơn. Sau đó, tôi đã tìm ra cách để sử dụng phiên bản hiện tại và mới phát hành (Stretch) và làm lại tất cả. Hướng dẫn này cho phép sao chép và dán các hướng dẫn vào Pi. Vì vậy, bạn sẽ được thực hiện trong một vài giờ. Dù sao, tôi hy vọng điều này sẽ giúp bạn nhanh hơn trong quá trình học tập và ít đau đớn hơn nhiều. Tin tôi rằng nó là giá trị nó cho kết quả cuối cùng.
Bước 1: Tải Pi bằng Rasbian Stretch
Điều này sẽ khá đơn giản. Bắt đầu với thẻ SD 8Gb hoặc 16Gb. Tải xuống phiên bản mới nhất từ:
www.raspberrypi.org/downloads/
Chủ đề chính ở đây giả định rằng phiên bản đầy đủ đã được tải. Tuy nhiên bạn có thể sử dụng phiên bản lite để tiết kiệm dung lượng. Nếu sử dụng Raspbian Stretch Lite, hãy thực hiện qua bước này rồi chuyển đến Bước 9 ở cuối.
Giải nén tệp đã tải xuống sẽ tạo ra một thư mục có tệp.img. 7Zip được khuyến nghị cho Windows (và Mac Unarchiver). Hình ảnh phải được ghi vào thẻ SD - nhưng một chương trình đặc biệt phải được sử dụng vì hệ thống tệp không tương thích với Windows. Phần mềm được đề xuất có tên là Etcher và có thể được tải xuống từ:
etcher.io/
Hướng dẫn cho Etcher có trên trang web của họ và khó có thể đơn giản hơn. Chọn hình ảnh và ổ đĩa và nhấp vào Flash.
Giờ đây, với thẻ SD đã flash của chúng tôi, Pi có thể hoạt động.
Nếu bạn biết địa chỉ IP mà Pi của bạn sử dụng hoặc rất vui khi tìm thấy nó bằng cách đăng nhập vào bộ định tuyến của bạn thì bạn có thể không cần bàn phím và màn hình và sử dụng SSH ngay lập tức. Chỉ cần thêm một tệp trống có tên SSH vào thẻ SD, lắp, kết nối với Ethernet và bật nguồn. Nếu không, hãy làm theo hướng dẫn bên dưới.
Kết nối Pi với internet, màn hình, chuột và bàn phím và kết nối với nguồn điện. Điều đầu tiên chúng tôi sẽ làm là kích hoạt SSH để chúng tôi có thể thực hiện phần lớn quá trình thiết lập từ sự thoải mái trên PC. Tất nhiên, nó có thể được thực hiện trực tiếp nhưng sẽ giúp ích rất nhiều để có thể làm theo hướng dẫn này trên cùng một thiết bị với một thiết bị điều khiển Pi và sử dụng sao chép và dán cho hầu hết các hướng dẫn. Ngoài ra, trong trường hợp của tôi, máy trạm PC của tôi đẹp và thoải mái nhưng không đủ lớn cho một pi.
Có một hướng dẫn để hoàn thành tốt công việc trên video YouTube. Đây là nơi tôi bắt đầu. Bạn có thể chạy video cùng với việc làm theo các hướng dẫn này. Tuy nhiên, khi tôi chạy lại quy trình trong khi viết cái này, tôi thấy việc làm theo hướng dẫn ở đây dễ dàng hơn. Có một số sai lệch đáng kể. Ngoài ra còn có một số phần mà tôi đã khuyên bạn nên làm theo video hơn là liệt kê các bước ở đây. Tuy nhiên, tôi khuyên bạn nên xem nó để hiểu về MQTT, Node-Red và quy trình thiết lập rộng rãi. Video dài 38 phút nên các bạn cứ xem thoải mái nhé. Video bắt đầu với việc hiển thị những gì Node Red có thể làm, sau đó trình bày quá trình cài đặt và thiết lập Pi, tiếp theo là nâng cấp Node Red và cuối cùng là cài đặt Mosquitto. Thời gian chính trong trường hợp bạn muốn quay lại một phần:
00:00 Giới thiệu về Video
03:00 Node Red trình diễn
14:14 Nhập các mục trên bảng điều khiển vào Node Red
21:05 Pi thiết lập ban đầu, bao gồm cả SSH
23:35 Cài đặt mã hỗ trợ Node Red
27:00 Giới thiệu về MQTT
29:12 Cài đặt Mosquitto (MQTT) (Lưu ý chỉ hoạt động với Raspian Jessie)
33:00 Node Red ví dụ
Tôi sẽ liệt kê các lệnh in nghiêng đậm (thay vì sử dụng “”). Định dạng này bị bỏ qua khi bạn sao chép và dán chúng vào Pi.
Phần giới thiệu về Node Red sẽ cung cấp cho bạn ý tưởng về những gì hệ thống có thể làm và cung cấp bức tranh về nơi chúng tôi sẽ kết thúc.
Video YouTube tại:
Làm theo quy trình cài đặt từ 21:05 đến 23:35. Lưu ý thông tin đăng nhập mặc định là user: pi và mật khẩu: raspberry. Trước khi khởi động lại, hãy tìm địa chỉ IP của pi. Nhấp vào biểu tượng ‘mũi tên lên + xuống’ trong thanh trên cùng của màn hình hoặc nhập hướng dẫn sau vào cửa sổ terminal / terminal:
địa chỉ ifconfig sudo
Sau đó lưu ý địa chỉ IP sau: inet addr:. Nó sẽ có dạng 192.168.x.y
Ghi lại địa chỉ này và khởi động lại (nhập: sudo shutdown –r now)
Chìa khóa ở thời điểm này là SSH đã được kích hoạt và người ta có thể thiết lập liên kết đến Pi từ PC (Mac và Linux bao gồm các giao diện SSH). Một chương trình tốt để thực hiện điều này là bản tải xuống miễn phí có tên PuTTY cũng có thể được sử dụng làm giao diện nối tiếp và có thể thực hiện Telnet. Putty có sẵn từ:
www.chiark.greenend.org.uk/~sgtatham/putty…
Tải xuống và cài đặt PuTTY.
Bây giờ, với Pi đã khởi động lại, hãy khởi động PuTTY và nhập địa chỉ IP đã ghi trước đó. Xem ví dụ bên dưới:
Bây giờ hãy nhấp vào Mở
Sau khi Đăng nhập bằng: nhập pi
Sau đó nhập mật khẩu của bạn.
Bây giờ hãy làm theo hướng dẫn tại đây và tùy chọn bắt đầu video từ 23:35. Trong hầu hết các trường hợp, bạn có thể sao chép và dán. Đánh dấu văn bản và sử dụng ctrl + C để sao chép. Sau đó nhấp chuột phải vào PuTTY để dán. Đôi khi văn bản không xuất hiện ngay lập tức vì vậy hãy đợi một vài giây. Nếu bạn nhập hai lần, hãy sử dụng phím xóa lùi để xóa mục nhập thứ hai. Nhấn enter để thực hiện từng lệnh.
sudo raspi-update
Tôi không tìm thấy lệnh và bỏ qua điều này và hướng dẫn tắt / khởi động lại sau:
sudo shutdown -r now
sudo apt-get -y cập nhật
nâng cấp sudo apt-get -y
Việc này mất một lúc…..
sudo apt-get autoremove
sudo apt-get -y cập nhật
sudo shutdown -r now
Tại thời điểm này, chúng tôi đã tải và cập nhật hệ điều hành Pi, sẵn sàng cho bước tiếp theo.
Bước 2: Cập nhật và thêm các tính năng cho Node-Red
Kết nối PuTTY sẽ bị mất khi khởi động lại ở cuối bước trước đó. Vì vậy, hãy đóng PuTTY và sau khi đợi Pi khởi động, hãy Đăng nhập lại như trước.
Tôi đã chuyển sang một phương pháp đơn giản và đáng tin cậy hơn để tải Node-Red - theo cách tiếp cận tại https://nonough.org/docs/hardware/raspberrypi. Điều này sử dụng một tập lệnh và sẽ cài đặt hoặc nâng cấp Node-Red - do đó, cách tiếp cận giống nhau hoạt động từ các phiên bản đầy đủ hoặc nhẹ của Raspbian Stretch. Vì vậy, hãy nhập:
bash <(curl -sL
Nhập Y khi được nhắc (hai lần). Tập lệnh này cũng tải các tệp cần thiết để kích hoạt tính năng tự động khởi động lại Node-Red.
Vì vậy, tại thời điểm này, chúng tôi đã tải và cập nhật số pi của mình cũng như các bản cập nhật cần thiết cho Node Red. Việc khởi động lại trước giai đoạn tiếp theo sẽ không có hại gì.
sudo shutdown -r now
Bước 3: Cài đặt Mosquitto MQTT
Nếu bạn chưa làm như vậy, bạn nên xem video giới thiệu về MQTT trên video từ 27:00.
Đây là lúc chúng ta cần phải đi một con đường khác. Quy trình được nêu trong video chỉ hoạt động đối với phiên bản Jessie cũ hơn của Raspian. Có một cuộc thảo luận trên trang web mosquitto nhưng không có kết quả rõ ràng nào được hiển thị và do đó sẽ đi theo một con đường đơn giản hơn và an toàn hơn.
Vì vậy, hãy đăng nhập bằng PuTTY và nhập như sau:
sudo apt-get cập nhật
sudo apt-get install mosquitto mosquitto-client
Y
sudo /etc/init.d/mosquitto stop
sudo /etc/init.d/mosquitto start
Hai lệnh sau dừng và bắt đầu mosquitto và cho thấy rằng nhà môi giới MQTT của chúng tôi đang hoạt động.
Để kiểm tra nhanh, hãy mở thêm hai phiên PuTTY và đăng nhập vào mỗi phiên.
Bây giờ bạn sẽ biết rằng MQTT hoạt động bởi thiết bị cần dữ liệu đăng ký một 'chủ đề'. Nhà môi giới sẽ gửi bất kỳ dữ liệu nào có cùng 'chủ đề'. Sau đó, thiết bị muốn gửi dữ liệu / hướng dẫn sẽ xuất bản điều này cho nhà môi giới bằng cách sử dụng cùng một 'chủ đề'.
Vì vậy, trong một phiên PuTTY, hãy nhập:
mosquitto_sub -d -t xin chào / world
Đây là hướng dẫn đăng ký chủ đề: hello / world.
Trong phần khác, hãy nhập:
mosquitto_pub -d -t xin chào / world -m "Xin chào bạn từ cửa sổ Terminal 2!"
Đây là một hướng dẫn xuất bản với cùng một chủ đề với một tin nhắn. Dòng chữ: “Xin chào từ cửa sổ Terminal 2!” bây giờ sẽ xuất hiện trong thiết bị đầu cuối khác.
Làm rất tốt để đạt được điều này xa. Giờ đây, chúng tôi đã tải và cập nhật Pi với các bản cập nhật cần thiết cho Node-Red và với nhà môi giới MQTT muỗi đã được cài đặt và thử nghiệm. Từ nay cuộc sống trở nên dễ dàng và vui vẻ hơn một chút. Đóng hai phiên PuTTY được sử dụng cho bài kiểm tra MQTT.
Bước 4: Thiết lập giao diện Node Red
Đầu tiên chúng ta cần khởi động Node Red. Nhập hướng dẫn:
node-red-pi --max-old-space-size = 256
Chờ nó chạy và bạn thấy dòng chữ "Đã bắt đầu quy trình".
Bây giờ, hãy mở một trình duyệt, tôi sử dụng Chrome và nhập địa chỉ IP pi được ghi chú trước đó là: 1880, tức là một cái gì đó giống như 192.168.0.8:1880
Bây giờ bạn sẽ có trang lập trình Node Red ở dạng dưới đây:
Bây giờ bạn có thể làm theo các ví dụ về Node Red bắt đầu lúc 33:00 hoặc chuyển thẳng sang một chút thiết lập bổ sung và tải luồng đầu tiên sẽ hiển thị liên kết đến MQTT và sẵn sàng chuyển đổi của chúng tôi.
Thiết lập bổ sung cần thiết là thêm các mục trên bảng điều khiển cho phép giao diện web.
Những điều này được hiển thị trên video lúc 14:14.
Làm theo hướng dẫn để tải trang tổng quan nút đỏ.
Bây giờ chúng ta có thể chơi một chút và cho thấy MQTT đang hoạt động và được điều khiển bởi Node-Red. Điều này không có trong video nhưng là chìa khóa của dự án này. Bạn có thể làm theo hướng dẫn của tôi và / hoặc nhập các luồng từ tệp NRtest1.txt đính kèm.
Đầu tiên hãy thêm một nút chèn đầu vào và một nút mqtt đầu ra và liên kết chúng với nhau.
Nhấp đúp vào nút tiêm (ban đầu được gắn nhãn thời gian). Trong phần Tải trọng, sử dụng twiddly để thay đổi thành chuỗi và nhập: Xin chào từ tôi. Để trống chủ đề vì chúng ta có thể nhập chủ đề này vào nút MQTT. Nhấp vào Xong
Bây giờ nhấp đúp vào nút MQTT. Nhấp vào biểu tượng bút chì ở bên phải của phần Máy chủ. Điều này sẽ mở ra một hộp thoại mới. Nhập: localhost trong phần Máy chủ. Nhấp vào Thêm. Bây giờ, quay lại nút Chỉnh sửa mqtt out, nhập chủ đề của chúng ta vào phần Chủ đề: hello / world. Đặt QoS thành 1. Nhấp vào Xong. Bây giờ hãy nhấp vào Triển khai. Bạn sẽ thấy một đốm màu xanh lục và "được kết nối" bên dưới nút mqtt.
Bây giờ thêm hai nút nữa - mqtt đầu vào và đầu ra gỡ lỗi, và kết nối chúng với nhau. Bây giờ nhấp đúp vào nút mqtt đầu vào và nhập hello / world vào phần chủ đề. Máy chủ đã hiển thị localhost: 1883. Đặt QoS thành 1. Nhấp vào Xong. Sau đó nhấp vào Triển khai và nhấp vào tab gỡ lỗi trên ngăn bên phải. Bây giờ hãy nhấp vào hình vuông màu xám ở bên trái của nút tiêm ‘Xin chào từ tôi’. Thao tác này sẽ gửi tải trọng văn bản đến nhà môi giới MQTT với chủ đề hello / world. Nhà môi giới biết rằng nút đầu vào mqtt đã đăng ký vào cùng một chủ đề và do đó, chuyển tiếp trọng tải. Sau đó, nút đầu vào mqtt sẽ gửi nó đến tab gỡ lỗi (RHS) và văn bản 'Xin chào từ tôi' sẽ xuất hiện.
Điều này đánh dấu một ô khác khi chúng tôi có Node Red đang nói chuyện với nhà môi giới MQTT của chúng tôi. Lưu ý rằng Node Red chỉ là một ứng dụng khách của nhà môi giới - giống như các thiết bị Sonoff mà chúng tôi sẽ kết nối sau. Tuy nhiên, nó cho phép tự động hóa tinh vi và cung cấp giao diện người dùng tuyệt vời.
Bây giờ chúng ta có thể thực hiện một vài thay đổi nhỏ và thiết lập các luồng cho công tắc Sonoff của mình.
Vì vậy, xóa nút tiêm đầu vào (nhấp để đánh dấu và nhấn phím xóa). Bây giờ, hãy thêm một công tắc từ phần bảng điều khiển và kết nối nó với đầu ra mqtt. Nhấp đúp vào công tắc. Nhấp vào bút chì ở bên phải của Nhóm. Nhập vào Tên: Light. Sau đó nhấp vào bút chì ở bên phải của Tab và nhập vào phần Tên: Phòng chờ. Nhấp vào Thêm / Cập nhật và Thêm / Cập nhật một lần nữa. Bây giờ, quay lại nút chuyển đổi Chỉnh sửa, đặt bật và tắt Tải trọng. Sử dụng twidlys để chọn chuỗi và nhập BẬT cho tải trọng Bật và TẮT cho tải trọng TẮT. Nhấp vào Xong
Bây giờ đi đến từng nút mqtt và thay đổi Chủ đề thành cmnd / sonoff / POWER. Nếu sao chép và dán, hãy kiểm tra xem bạn đã không bao gồm khoảng trắng ở cuối hay chưa. Đây là một chủ đề khác và sẽ không phù hợp với Sonoff. Tìm một không gian lạc có thể mất một giờ hoặc lâu hơn - tin tôi đi! Tôi cũng đã đi tới bảng điều khiển> Chủ đề và chọn: Tối. Nhấp vào Triển khai và chọn tab gỡ lỗi.
Bây giờ, hãy mở một phiên trình duyệt mới trong một cửa sổ mới và kích thước nó giống như một chiếc điện thoại di động trong phiên Node Red. Nhập địa chỉ: địa chỉ IP Pi của bạn: 1880 / ui / # / 0, tức là một cái gì đó giống như 192.168.0.8:1880/ui/#/0. Bạn sẽ thấy một màn hình với Lounge and Light và chuyển đổi. Nhấp vào nút bật và sau đó tắt. Cửa sổ gỡ lỗi sẽ hiển thị các tải trọng BẬT và TẮT. Bây giờ nếu bạn muốn cũng đăng nhập qua điện thoại di động. Lưu ý rằng vị trí chuyển đổi được đồng bộ hóa. Không quan trọng là Sonoff của chúng tôi chưa được kết nối. Khi có, bằng cách đăng ký Chủ đề, nó sẽ nhận tin nhắn / tải trọng và hành động theo chủ đề đó.
Một bước nhỏ cuối cùng là làm cho Node Red tự động khởi động sau khi Pi khởi động.
Node Red có một hướng dẫn tại:
Tuy nhiên, các tệp cần thiết đã được tải nên không cần cài đặt.
Để sau đó cho phép Node-RED chạy tự động ở mỗi lần khởi động và khi có sự cố, hãy nhập (mở phiên PuTTY):
sudo systemctl cho phép gật đầu.service
Nếu bạn cần tắt chức năng này, hãy nhập:
sudo systemctl vô hiệu hóa gật đầu.service
Bây giờ tắt pi với sudo tắt ngay bây giờ và loại bỏ nguồn.
Điều này hiện đã khóa Pi của chúng tôi và đã tải sẵn sàng để hành động. Chúng tôi có PC / điện thoại di động của mình kết nối với Node Red và điều này đang nói chuyện với máy chủ MQTT của chúng tôi. Đây là một chặng đường dài và đáng được vỗ về. Tốt lắm. Tôi đã tìm thấy phần tiếp theo, Arduino bit, một giao dịch tốt dễ dàng hơn!
Bước 5: Thiết lập hệ thống Arduino để lập trình lại các thiết bị Sonoff
Tất cả thông tin để làm điều này là tại Sonoff-Tasmota GitHub. Phần duy nhất tôi gặp khó khăn là văn bản Chủ đề - nhưng tôi đã khéo léo giúp bạn nhập phần này rồi!
Truy cập
Bạn sẽ tìm thấy hướng dẫn thiết lập trên tab Wiki trong phần Công cụ tải lên:
Thay vì đi qua từng bước, tôi sẽ chỉ ghi lại những khía cạnh chính mà tôi cảm thấy quan trọng hoặc bị mắc kẹt.
Các hướng dẫn là tốt nhưng cần chú ý cẩn thận đến từng chi tiết. Tôi đã bị vấp bởi nhu cầu về một thư mục ESP8266 trong một thư mục nằm trong một thư mục khác có tên là ESP8266 và do đó đã bỏ lỡ hai cấp.
Tôi đã làm theo khuyến nghị cho một thiết lập Arduino hoàn toàn riêng biệt. Tôi đã tạo một thư mục mới có tên là ‘ArduinoSonoff’ tách biệt với thư mục Arduino hiện có của tôi. Thiết lập khá tiên tiến và do đó giữ nó riêng biệt là một ý tưởng rất hay. Nếu đây là lần thiết lập Arduino đầu tiên của bạn, hãy đảm bảo rằng bạn cài đặt nó lần thứ hai trong ‘Arduino’ hoặc thư mục khác cho bất kỳ công việc Arduino nào khác, bao gồm cả công việc trên ESP8266.
Tải xuống Arduino IDE mới nhất từ https://www.arduino.cc/en/Main/Software. Giải nén tệp vào thư mục mới của bạn.
Các hướng dẫn bao gồm tải xuống hệ thống Sonoff-Tasmoda từ https://github.com/arendst/Sonoff-Tasmota trang chính thông qua: Clone hoặc Tải xuống> Tải xuống ZIP. Giải nén tệp vào thư mục mới của bạn.
Làm theo các hướng dẫn một cách cẩn thận. Tôi không làm phần Tùy chọn: Chuẩn bị cho phần tải lên OTA. Chúng tôi sẽ để điều này cho một ngày khác.
Bây giờ khởi động Arduino IDE (nhấp đúp vào arduino.exe). Tải bản phác thảo Sonoff-Tasmota qua File> Sketchbook> sonoff. Không cần phải thực hiện bất kỳ chỉnh sửa nào. Tất cả các cài đặt được thực hiện thông qua kết nối nối tiếp sau khi phần sụn được tải. Chúng được lưu trữ trong EEPROM. Do đó, phần sụn có thể được cập nhật và giữ lại tất cả các cài đặt. Đây là công cụ khá thông minh. Tuy nhiên, bạn có thể tránh phải thực hiện một vài bước ở đây bằng cách truy cập tệp user-config.h và nhập SSID wifi và mật khẩu của bạn và MQTT_HOST (thay thế tham chiếu thứ hai ‘domus1’–, bằng địa chỉ IP Pi của bạn). Sau đó, bạn có thể muốn nhập người dùng và mật khẩu MQTT. Trước khi tải xuống, hãy kiểm tra cài đặt bảng trong Công cụ. Chúng sẽ cần một vài thay đổi để phù hợp với các yêu cầu đặt ra trong Wiki. Bây giờ hãy nhấp vào biên dịch (biểu tượng đánh dấu). Nó sẽ biên dịch OK. Nếu không hoặc nếu các cài đặt bo mạch được yêu cầu không khả dụng, hãy quay lại và kiểm tra từng bước của quá trình thiết lập.
Bước 6: Lập trình lại công tắc Sonoff
Bây giờ chúng tôi đã sẵn sàng để tải xuống. Ở giai đoạn này, người ta có thể đi thẳng về phía trước và nhấp nháy công tắc Sonoff hoặc trước tiên có thể nhấp nháy mô-đun ESP8266. Tôi đã làm điều thứ hai, một phần vì công tắc của tôi chưa đến (chỉ đến khi tôi nhập cái này!) Nhưng cũng để đề phòng vì việc nhấp nháy công tắc Sonoff là một bước duy nhất vì phần sụn gốc không được công bố rộng rãi. Tôi nhận thức được. Tôi có một vài bảng NodeMCU. Chúng dễ dàng kết nối, có bộ chuyển đổi USB sang nối tiếp trên bo mạch. Tuy nhiên, phương pháp thiết lập lại bằng nút không hoạt động với hệ thống này. Vì vậy, hãy đặt Công cụ> Phương pháp Đặt lại thành “ck”. Thực hiện thiết lập đèn flash thủ công bình thường bằng cách giữ nút Flash (GPIO 0 xuống mặt đất) trong khi nhấn và thả Đặt lại (Đặt lại về mặt đất). Tôi không chắc liệu điều này có hết thời gian chờ hay không hoặc có thể tôi đã không giữ GPIO 0 ở mức thấp đủ lâu nhưng tôi đã cần thử vài lần, kể cả thực hiện việc này trong khi Arduino IDE đang biên dịch!
Nếu bạn muốn kiểm tra các phản hồi - đầu ra rơle là D6 trên các bo mạch NodeMCU. Trên ESP12, đây là GPIO 12. Đầu ra LED là D7 (NodeMCU) hoặc GPIO 13 (ESP12’s).
Công tắc Sonoff.
CẢNH BÁO: Tôi phải nói "không kết nối với nguồn điện trong bất kỳ trường hợp nào khi vỏ máy đang mở". Lưu ý rằng PCB (ít nhất là trên Sonoff Basic (công tắc nội dòng) chỉ có khoảng cách 'cách ly duy nhất' giữa phần điện áp thấp và nguồn điện lưới. Vì vậy, người ta nên coi bất kỳ phần nào của mạch Sonoff là điện áp chính. Sonoff- Tasmota GitHub hiển thị kết nối của cảm biến nhiệt độ và độ ẩm với Sonoff S20. Tôi sẽ không làm điều này vì lo ngại về cách ly. - vì vậy nếu bạn muốn làm điều này, hãy lấy mô-đun ESP12 hoặc NodeMCU và thiết lập điều này riêng biệt với một mô-đun kép cách ly thích hợp hoặc nguồn điện nối đất.
Công tắc cắm Sonoff S20 là một điểm khởi đầu tốt vì nó không cần bất kỳ hệ thống dây điện nào. Điều này có thể được mở bằng cách tháo một con vít (dưới niêm phong bảo mật) và mở vỏ hộp ra. Hình ảnh dưới đây cho thấy vị trí của các thẻ. Nặn vỏ ở những điểm này sẽ giúp ích.
Bộ chuyển đổi nối tiếp USB
Bộ chuyển đổi yêu thích của tôi là phiên bản FTDI. Tuy nhiên, điều này không có đủ khả năng để cung cấp nhu cầu Sonoff 3.3v. Đặc điểm kỹ thuật FTDI cho biết tối đa 50ma. Giải pháp thay thế tốt nhất tiếp theo là sử dụng chip CP2102. Tuy nhiên, điều này có giới hạn 100ma vẫn chưa đủ. Rõ ràng là nhiều người đang sử dụng bộ chuyển đổi này trực tiếp nhưng cũng có báo cáo về việc tải không thành công. Tôi sẽ giới hạn thời gian nó được kết nối vì nó sẽ nóng lên khi tải. Làm điều này có nguy cơ đến bạn. Giải pháp lý tưởng là cũng có bộ điều chỉnh 3.3v, ví dụ: một AMS1117 3.3. Tôi đã tạo ra một PCB nhỏ để thực hiện điều này. Xem phần Lập trình cho các thiết bị Sonoff.
Trình tự lập trình của tôi như sau:
Mở Arduino IDE.
Trong Công cụ, hãy kiểm tra các cài đặt có giống như trên Wiki không.
Thực hiện bất kỳ chỉnh sửa nào được yêu cầu đối với user_config.h. Tôi đặt SSID và mật khẩu Wi-Fi và địa chỉ nhà môi giới MQTT và chi tiết tiết kiệm múi giờ / ánh sáng ban ngày.
Nhấp vào 'xác minh' để kiểm tra xem nó biên dịch OK.
Cắm bộ chuyển đổi nối tiếp USB (của riêng nó) vào PC. Lưu ý số cổng.
Bây giờ ngắt kết nối dây nối tiếp USB khỏi PC và kết nối nó với công tắc Sonoff. Kiểm tra mặt đất và các kết nối 3v3 có đúng cách không (mặt đất được kết nối với mặt đất trên Sonoff PCB).
Giữ bộ lập trình để các số liên lạc được an toàn trong khi nhấn nút.
Bây giờ hãy cắm dây dẫn USB vào PC, kiểm tra số cổng có đúng không (trong Công cụ), sau đó nhấp vào tải xuống.
Tôi tiếp tục giữ nút trong suốt chương trình vì tôi không muốn làm phiền các kết nối.
Khi hoàn tất, bạn sẽ thấy một màn hình như sau:
Sonoff cần một vài bit thông tin để kết nối với hệ thống của chúng tôi: SSID và mật khẩu của mạng cục bộ và địa chỉ IP Pi. Có một số cách để thực hiện việc này, một trong số đó là sửa đổi tệp config.ino như đã lưu ý trước đó. Nếu bạn có điện thoại thông minh, bạn có thể (sau khi lắp ráp lại công tắc) nhấn nút Sonoff 4 lần khá nhanh để đưa nó vào chế độ máy chủ web. Đèn LED sẽ nhấp nháy. Tôi đã phải cố gắng nhiều lần để làm cho nó hoạt động. Sau đó, trên điện thoại thông minh của bạn, hãy tìm mạng Sonoff mới và kết nối. Một trang web sẽ xuất hiện nơi bạn có thể đặt dữ liệu cần thiết. Địa chỉ IP Pi chuyển thành tên máy chủ. Tôi cũng đã thay đổi SSID và mật khẩu thứ hai thành một thứ gì đó dài và về cơ bản là không thể sử dụng được.
Ngoài ra, nó có thể được thiết lập thông qua kết nối nối tiếp ngay sau khi tải. Mở Trình theo dõi nối tiếp Arduino (trong Công cụ).
Các lệnh để nhập:
SSId yourWiFiSSID
Mật khẩu yourWiFiPassword
MqttHost 192.168.x.y (Địa chỉ IP PI)
Bạn cũng có thể nhập SSId1 và Password1, theo sau là một cái gì đó dài và không sử dụng được để vô hiệu hóa điều này một cách hiệu quả.
Bây giờ bạn có thể đóng hộp công tắc Sonoff, mở Node-Red và bảng điều khiển Node-red và nhấp vào nút chuyển đổi và xem tab gỡ lỗi mà bây giờ sẽ bao gồm các phản hồi từ Sonoff. Vì vậy, chúng tôi đã đạt được một bước quan trọng khác - công tắc đầu tiên của chúng tôi được điều khiển từ PC / điện thoại thông minh.
Cho đến nay chúng tôi không đề cập đến vấn đề bảo mật. Có khả năng sử dụng thông tin liên lạc được mã hóa. Điều này khá phức tạp để thiết lập và có lẽ thích hợp hơn khi một nhà môi giới dựa trên đám mây đang được sử dụng. Ngoài ra còn có tùy chọn thêm tên người dùng và mật khẩu cho tất cả các thiết bị được kết nối và không cho phép người dùng ẩn danh. Điều này khá đơn giản để thiết lập. Và bây giờ đến An ninh.
Bước 7: Bảo mật
MQTT cho phép tên người dùng và mật khẩu cho từng máy khách. Điều này rất dễ cài đặt. Trước tiên, có thể dễ dàng hơn khi đổi tên từng thiết bị và sau đó đặt tên người dùng và mật khẩu của chúng. Điều này có thể được thực hiện thông qua các lệnh MQTT và Node-Red có lẽ là cách dễ nhất để gửi các lệnh này. Đầu tiên hãy quyết định một quy ước đặt tên. Một tùy chọn là đặt tên dựa trên vị trí và chức năng. Sau đó, bạn sẽ muốn ghi lại tên (Chủ đề) tên người dùng và mật khẩu cùng với chủ đề dự phòng. Lưu ý rằng cũng có một ‘tùy chọn đặt lại’ để đặt lại cài đặt Sonoff về tải xuống ban đầu (xem Cách sử dụng Wiki> Chức năng của Nút).
Bật pi và sau một vài giây, mở trình duyệt đến Node-Red (địa chỉ IP: 1880).
Trong Node-Red, hãy thiết lập một nút tiêm và liên kết nút này với đầu ra mqtt và đặt máy chủ mqtt thành localhost. Để trống chủ đề, người dùng và mật khẩu vì chúng tôi sẽ đặt chúng trong nút tiêm. Cũng thiết lập một nút đầu vào mqtt và kết nối nút này với một nút gỡ lỗi để chúng ta có thể xem các phản hồi. Đặt ghi chú đầu vào mqtt thành localhost (nên được đặt sẵn) và nhập + / + / + cho chủ đề để nó bắt được tất cả lưu lượng truy cập.
Nhập chuỗi cài đặt sau vào nút tiêm.
Đầu tiên hãy kiểm tra kết nối với
Chủ đề: cmnd / sonoff / Status
Tin nhắn: 6
nhấp vào 'Tiêm một lần khi bắt đầu'. Triển khai. Chúng ta sẽ thấy gỡ lỗi bao gồm 7 dòng dữ liệu từ stat / sonoff / STATUS6
Nhập Chủ đề: cmnd / sonoff / Chủ đề và Tin nhắn: loungelight. Triển khai. Điều này thay đổi tên chuyển đổi từ sonoff thành loungelight
Tab gỡ lỗi sẽ hiển thị thiết bị đang khởi động lại với tên / chủ đề mới
Chủ đề: cmnd / loungelight / MqttUser
Tin nhắn: loungelight
Nhấp vào triển khai. Gỡ lỗi sẽ được nhìn thấy từ stat / loungelight / RESULT với {“MtqqUser”:”loungelight”}
Chủ đề: cmnd / loungelight / MqttPassword
Tin nhắn: loungelightPW (lưu ý hãy giàu trí tưởng tượng hơn thế này!)
Xóa tab gỡ lỗi và Triển khai.
Một câu trả lời sẽ được nhìn thấy từ stat / loungelight / RESULT với {"MqttPassword": "loungelightPW"}
Bây giờ nhập NodeRed và NodeRedPW làm tên người dùng và mật khẩu trong nút mqtt out. Điều này thông qua biểu tượng bút chì Máy chủ và tab bảo mật trong cửa sổ mở ra. Điều này tự động được sao chép sang các nút MQTT khác.
Kiểm tra lại với
Chủ đề: cmnd / loungelight / Trạng thái và Thông điệp: 6. Triển khai.
Và phản hồi được gửi đi.
Vì vậy, tại thời điểm này, chúng tôi đã đổi tên thiết bị Sonof của mình để nó sẽ nghe các chủ đề cmnd / loungelight / …… và sẽ đăng nhập vào máy chủ MQTT với tên người dùng loungelight và mật khẩu loungelightPW. Chúng tôi cũng đã đặt tên người dùng và mật khẩu cho Node-Red.
Tiếp theo, chúng ta phải yêu cầu máy chủ MQTT muỗi chỉ chấp nhận các ứng dụng khách có tên người dùng và liệt kê tên người dùng và mật khẩu được chấp nhận.
Thủ tục là:
- Dừng muỗi
- Tạo tệp cấu hình riêng
- Chỉnh sửa tệp cấu hình
- Tạo tệp mật khẩu
- Thêm người dùng / mật khẩu.
Vì vậy, hãy đăng nhập bằng một phiên PuTTY mới và chạy qua các lệnh sau:
sudo /etc/init.d/mosquitto stop
cd /etc/mosquitto/conf.d/
sudo nano mosquitto.conf Thao tác này khởi động trình soạn thảo.
Thêm dòng:
allow_anonymous false
password_file /etc/mosquitto/conf.d/passwd
request_certificate false
Lưu và thoát (Ctrl + X), Y, enter.
sudo touch passwd. Thao tác này sẽ tạo một tệp mật khẩu và các hướng dẫn sau đây thêm tên và mật khẩu.
sudo mosquitto_passwd -b /etc/mosquitto/conf.d/passwd loungelight loungelightPW
sudo mosquitto_passwd -b /etc/mosquitto/conf.d/passwd NodeRed NodeRedPW
sudo /etc/init.d/mosquitto khởi động lại
Lưu ý khi thêm một thiết bị mới, bạn sẽ phải nhập người dùng và mật khẩu qua cổng nối tiếp và thêm chúng vào tệp mật khẩu hoặc tạm thời thay đổi tệp cấu hình mosquitto và nhận xét (thêm # ở đầu dòng) dòng "allow_anonymous false "và" password_file /etc/mosquitto/conf.d/passwd "và sau đó đặt lại chúng khi thông tin chi tiết đã được gửi đến thiết bị và được thêm vào tệp mật khẩu như trên.
Chúng tôi đã thay đổi tên sonoff thành loungelight và vì vậy hãy cập nhật nút đầu ra mqtt (được kết nối với công tắc) để sử dụng chủ đề cmnd / loungelight / POWER.
Nhấp vào Triển khai và kiểm tra các nút mqtt hiển thị 'đã kết nối'.
Tiếp theo, hãy thử nút chuyển đổi và tìm kiếm gỡ lỗi hiển thị công tắc Sonoff phản hồi. Bạn sẽ nhận thấy rằng thiết bị hiển thị sự thay đổi với một chủ đề: stat / loungelight / POWER. Vì vậy, bây giờ thay đổi nút đầu vào đã được đặt thành cmnd / sonoff / POWER thành stat / loungelight / POWER. Chúng tôi có thể sử dụng điều này để che một lỗ hổng trong chức năng của chúng tôi. Hệ thống như được thiết lập ban đầu sẽ được đồng bộ hóa với tất cả người dùng đã đăng nhập nhưng sẽ không đồng bộ hóa với các thay đổi công tắc được thực hiện bằng cách nhấn nút trên công tắc Sonoff. Vì vậy, bây giờ kết nối đầu ra của nút đầu vào stat / loungelight / POWER mqtt với đầu vào công tắc (LHS). Bây giờ nhấp đúp vào công tắc và bỏ chọn "nếu tin nhắn đến trên đầu vào, chuyển qua đầu ra". Thao tác này sẽ đưa ra một số tùy chọn mới - chọn 'biểu tượng chuyển đổi hiển thị trạng thái của đầu vào'. Triển khai. Vì vậy, bây giờ chúng tôi có một vòng phản hồi tốt. Vị trí công tắc bảng điều khiển sẽ luôn thay đổi khi công tắc Sonoff thay đổi, bất kể thay đổi được bắt đầu từ đâu.
Vì vậy, giờ đây chúng tôi có một hệ thống tự động hóa gia đình độc lập, an toàn đang hoạt động và sẵn sàng mở rộng cho bất cứ điều gì bạn muốn. Trong phần tiếp theo, tôi sẽ trình bày một số thử nghiệm của tôi cho đến nay và những thách thức mà tôi dự định giải quyết.
Bước 8: Các bước đầu tiên để mở rộng
Tôi có một Bảng phát triển đèn LED cho cảm biến Sonoff-Tasmota có thể hướng dẫn tại nhà khác cho thấy một số khả năng khác của phần sụn Sonoff-Tasmota:
Đo nhiệt độ và độ ẩm
Phát hiện kẻ xâm nhập (chuyển đổi đầu vào)
Điều khiển từ xa IR (dành cho TV, v.v.)
Dây LED - cả RGB và NeoPixel (có thể định địa chỉ riêng)
Cảm biến I2C
Đối với những điều trên, tôi đang sử dụng ESP12F và một PCB tùy chỉnh. NodeMCU và breadboard có thể được sử dụng như nhau. Điều này cho phép các chức năng bổ sung này mà không cần nối dây vào thiết bị Sonoff và do đó là một cách tiếp cận an toàn hơn nhiều. Với đầu vào nhiệt độ, tôi đã có thể hoàn thành quá trình tự động hóa chăn điện của mình.
Âm nhạc và Internet Radio có thể dễ dàng được thêm vào. Điều này mở ra các tùy chọn để có các đài hoặc album cụ thể xuất hiện vào những thời điểm đã định hoặc có thể để phản hồi khi phát hiện thấy một khách truy cập (điện thoại). Hướng dẫn liên quan này có tại Máy nghe nhạc chất lượng cao và Radio Internet với Điều khiển bằng điện thoại thông minh. Vì điều này cũng được thúc đẩy bởi Node-RED nên thậm chí có thể có nhiều hơn một hệ thống âm thanh và sử dụng giao tiếp MQTT để thúc đẩy chúng.
Tôi cũng đã khám phá Node-Red, bao gồm gửi email và thực hiện cảnh báo bằng giọng nói. Cũng có khả năng hệ thống phát hiện khi bạn ra / vào - bằng cách ping địa chỉ IP điện thoại di động của bạn. Node-Red cũng có thể truy cập thời tiết và tin tức - vì vậy người ta có thể thêm thông tin cũng như tự động hóa.
Có một vài thủ thuật cần học - nhưng những thủ thuật này sẽ trở nên dễ dàng lần thứ hai trở nên dễ dàng.
Một đại lộ khác đang thêm màn hình vào số pi để hiển thị trang tổng quan. Đây là 'công việc đang được tiến hành' - hay nói cách khác là tôi không quá vui. Màn hình tôi nhận được khó xoay sang chế độ dọc và trình duyệt Chromium rất chậm. Một giải pháp thay thế sẽ là chọn một máy tính bảng cũ trên ebay và sử dụng nó. Tôi có thể thử với Pi 2 và xem liệu điều đó có mang lại đủ cải tiến hay không (mô hình B được sử dụng cho sự phát triển này).
Tôi hy vọng điều này sẽ giúp bạn bắt đầu và làm cho trí tưởng tượng của bạn bay bổng. Phạm vi tiềm năng là rất lớn. Người ta thậm chí có thể sửa đổi mã Sonoff cho các cảm biến khác nếu cần.
Nhìn chung, tôi đã rất ngạc nhiên về những gì hệ thống này có thể làm được. Mục tiêu ban đầu của tôi là chỉ điều khiển chuyển đổi từ điện thoại thông minh một cách đáng tin cậy thông qua một hệ thống độc lập. Tôi đã có tầm nhìn về việc cần quản lý máy chủ, máy khách và viết html cho giao diện người dùng. Điều này đã kết thúc ở phía trước, với bảo mật cao hơn, độ tin cậy tuyệt vời, giao diện người dùng tuyệt vời, lập trình kéo và thả và tiềm năng mở rộng rất lớn. Và tất cả điều này với nỗ lực ít hơn nhiều.
Mike
Bước 9: Phụ lục - Tải từ Raspbian Stretch Lite
Tùy chọn này tránh bloatware đi kèm với phiên bản Raspbian Stretch đầy đủ. Hầu hết điều này sẽ không cần thiết khi sử dụng Pi để tự động hóa gia đình. Tuy nhiên, Node-Red không phải được cài đặt.
Tiến hành như trong Bước 1 nhưng sử dụng Raspbian Stretch Lite thay vì Raspbian Stretch.
Thay vì Bước 2, hãy làm như sau:
sudo apt -y install npm
npm -v sẽ trả về: 1.4.21 trở lên
sudo npm install -g n
sudo n 8.9.0
Bây giờ chúng ta có thể sử dụng trình quản lý gói nút để cài đặt Node-Red:
sudo npm install node-red --global --unsafe-perm
Điều này sẽ đưa ra một vài thông báo lỗi do địa chỉ không chính xác. Tuy nhiên, hệ thống thực hiện một 'biên dịch nguồn' để khắc phục sự cố này. Nếu bạn lặp lại hướng dẫn trên (không cần thiết), lỗi sẽ không xảy ra.
Bây giờ chúng ta đã cài đặt Node-Red và các gói hỗ trợ của nó và có thể chuyển sang Bước 3, tải mosquitto.
Về nhì trong cuộc thi không dây