本篇文章將引導您使用 Raspberry Pi 控制 Sonoff WiFi 智慧開關。從硬體準備、韌體燒錄到網路設定,逐步說明如何將 Sonoff 連線到家用 WiFi 網路,並透過 MQTT 協定與 Raspberry Pi 進行通訊。此外,還會介紹如何使用 Node-RED 建立視覺化流程,簡化控制邏輯的設計,讓您無需撰寫程式碼即可輕鬆控制智慧開關。最後,將探討如何透過 MQTT 傳送指令控制 Sonoff 的開關狀態,並結合 Node-RED 建立更進階的自動化控制應用。

使用 Raspberry Pi 回應 WiFi 智慧開關

問題描述

您想要使用 WiFi 智慧開關與您的 Raspberry Pi 進行互動。

解決方案

將新的韌體(Tasmota)燒錄到低成本的 Sonoff WiFi 開關上,透過網頁介面進行組態,然後使用 MQTT 進行控制。 Sonoff 網頁開關(如圖 17-10 所示)提供了一種極低成本的方式,可以無線地開啟和關閉照明和其他電器。

所需材料

  • Sonoff 網頁開關(見「模組」)
  • 一排四個頭針(見「雜項」)
  • 四個母對母跳線(見「原型設計裝置和套件」)
  • 焊接裝置和焊料(見「原型設計裝置和套件」)

您還需要一個 Raspberry Pi 2 或更新版本,因為較早的 Raspberry Pi 無法在 3.3V 下提供足夠的電流來供應 Sonoff。

高電壓警告

使用 Sonoff 切換交流電(AC)需要將活線連線到 Sonoff 的螺絲端子。這是電工的工作,應該只由合格的電工進行。

步驟

  1. 焊接頭針:在 Sonoff 的電路板上焊接一排四個頭針,位置如圖 17-11 所示。
  2. 連線 Raspberry Pi:將 Sonoff 的頭針連線到 Raspberry Pi 的 GPIO 引腳,如下所示:
  • Sonoff 3.3V 到 Raspberry Pi 3.3V
  • Sonoff RXD 到 Raspberry Pi TXD
  • Sonoff TXD 到 Raspberry Pi RXD
  • Sonoff GND 到 Raspberry Pi GND
  1. 下載 esptool:在 Raspberry Pi 上下載 esptool 軟體,使用以下命令:
sudo apt-get update
sudo apt-get install python-pip
pip install esptool
  1. 燒錄韌體:使用 esptool 燒錄 Tasmota 韌體到 Sonoff 上。

注意事項

  • 在將 Sonoff 連線到 AC 電源之前,請先燒錄新的韌體。
  • 在連線 Sonoff 到 Raspberry Pi 時,請確保 Raspberry Pi 已經關閉,以避免意外重啟。
  • 當 Sonoff 由 Raspberry Pi 供電時,可能會導致 Raspberry Pi 重啟。因此,請按照以下程式將 Sonoff 放入快閃記憶體模式,以避免意外重啟導致 SD 卡損壞。

組態 Sonoff WiFi 智慧開關

前言

在上一節中,我們成功地將 Tasmota 韌體燒錄到 Sonoff 智慧開關中。現在,讓我們進一步組態 Sonoff,使其成為一個真正的 WiFi 智慧開關。

步驟 1:連線 Sonoff 到 WiFi 網路

首先,確保您的 Sonoff 已經燒錄了 Tasmota 韌體,並且已經連線到您的 Raspberry Pi。然後,使用您的電腦或手機,連線到同一個 WiFi 網路。

步驟 2:設定 Sonoff 的 WiFi 連線

開啟您的網頁瀏覽器,輸入 Sonoff 的 IP 位址(通常是 192.168.0.1192.168.1.1),然後按下 Enter 鍵。這將會開啟 Sonoff 的 Web 介面。

步驟 3:設定 Sonoff 的 WiFi 設定

在 Sonoff 的 Web 介面中,點選「設定」按鈕,然後選擇「WiFi 設定」。輸入您的 WiFi 網路的 SSID 和密碼,然後點選「儲存」按鈕。

步驟 4:設定 Sonoff 的 MQTT 連線

如果您想要使用 MQTT 協定來控制您的 Sonoff,您需要設定 Sonoff 的 MQTT 連線。點選「設定」按鈕,然後選擇「MQTT 設定」。輸入您的 MQTT 伺服器的 IP 位址和埠號,然後點選「儲存」按鈕。

步驟 5:測試 Sonoff 的功能

現在,讓我們測試 Sonoff 的功能。點選「控制」按鈕,然後選擇「開啟」或「關閉」來控制您的 Sonoff。如果一切正常,您應該可以看到 Sonoff 的 LED 燈亮起或熄滅。

圖表翻譯:
  flowchart TD
    A[開始] --> B[連線 Sonoff 到 WiFi 網路]
    B --> C[設定 Sonoff 的 WiFi 連線]
    C --> D[設定 Sonoff 的 MQTT 連線]
    D --> E[測試 Sonoff 的功能]
    E --> F[結束]

內容解密:

以上步驟中,我們使用了 Tasmota 韌體來組態 Sonoff WiFi 智慧開關。Tasmota 是一個開源的韌體,允許您將您的 Sonoff 智慧開關連線到 WiFi 網路,並控制其功能。透過以上步驟,您可以輕鬆地將您的 Sonoff 連線到 WiFi 網路,並設定其 WiFi 和 MQTT 連線。

將 Sonoff WiFi 切換器連線到您的家用 WiFi 網路

問題

您需要將 Sonoff WiFi 切換器連線到您的家用 WiFi 網路。

解決方案

首先,使用 Recipe 17.4 將 Tasmota 韌體燒錄到您的 Sonoff 上。如果您已經在 Sonoff 上安裝了 Tasmota 韌體,並且它已經啟動,無論是使用 Raspberry Pi(Pi 2 或更新版本)的 3.3V 供電還是使用 AC 供電,您都可以使用玄貓組態 Sonoff。

在撰寫本文時,您無法使用 Raspberry Pi 進行此操作,因為連線後,無線存取點不會以與使用 Mac 或 Windows PC 相同的方式觸發歡迎頁面。因此,請在 PC 或 Mac 上,或甚至在您的智慧型手機上連線到名為 Sonoff-2500 的 WiFi 存取點(圖 17-14)。

圖 17-14. 將 Sonoff 連線到 WiFi 網路

您實際上有選項可以輸入兩個無線存取點的憑證。但假設您只有一個存取點,您可以使用頁面頂部的「掃描 WiFi 網路」鏈結,或者直接在 AP1 SSId 欄位中輸入您的存取點名稱,在 AP1 密碼欄位中輸入您的密碼,然後單擊「儲存」。

Sonoff 將重新啟動,如果您正確輸入了存取點憑證,它將重新啟動並連線到您的網路。

現在,您需要找到 Sonoff 的 IP 地址。Fing(適用於 Android 手機)或 Discovery(適用於 iOS)等工具可以幫助您完成此操作。如圖 17-15 所示,在我的情況下,Sonoff 被分配了 IP 地址 192.168.1.84。

圖 17-15. 查詢 Sonoff 的 IP 地址

討論

現在 Sonoff 已經連線到您的網路,它將改變模式,而不是執行整個存取點,而是執行一個網頁伺服器,您可以從中管理裝置。要連線到此網頁,請在任何連線到網路的機器上輸入 Sonoff 的 IP 地址到瀏覽器中。您應該會看到類別似於圖 17-16 的內容。

圖 17-16. Sonoff 的網頁

單擊「Toggle」按鈕以開啟和關閉 Sonoff 的 LED。如果 Sonoff 實際上是連線到您的房屋,而不是從您的 Raspberry Pi 供電,它將開啟和關閉它所連線的任何裝置。

參考

若要了解如何組態這些切換器以與 MQTT 和 Node-RED 配合使用,請參閱 Recipe 17.5。

使用 MQTT 的 Sonoff Web 切換器

問題

您想要使用 MQTT 控制已經燒錄了新韌體的 Sonoff Web 切換器。

解決方案

首先,確保您已經遵循 Recipe 17.3 和 Recipe 17.4 將新的韌體燒錄到您的 Sonoff 裝置並組態它以連線到您的 WiFi 網路。

要使用 MQTT 控制 Sonoff 切換器,您需要使用其網頁介面組態 Sonoff。將 Sonoff 的 IP 地址(請參閱 Recipe 17.4)輸入到您的瀏覽器中,然後單擊「Configuration」按鈕。這將開啟如圖 17-17 所示的選單。

圖 17-17. Sonoff Tasmota 組態選單

單擊「Configure MQTT」選項以開啟 MQTT 組態頁面,如圖 17-18 所示。

圖 17-18. Sonoff Tasmota MQTT 組態選單

這是組態 Sonoff 作為 MQTT 伺服器的使用者端並指定它將如何訂閱的位置,以便當我們發布命令(例如,開啟)時,它可以理解命令。

為此,您需要更改組態表單中的某些欄位:

Raspberry Pi 與 Sonoff 的 MQTT 連線設定

為了將 Sonoff 智慧開關連線到 Raspberry Pi 的 MQTT 伺服器,首先需要進行一些設定。這包括修改 Sonoff 的 Host 欄位為 Raspberry Pi 的 IP 地址,並設定 Client 欄位為「sonoff_1」,以便區分多個 Sonoff 裝置。由於 MQTT 伺服器尚未設定安全性,因此 User 和 Password 欄位可以留空。

設定 Sonoff

  1. 修改 Host 欄位:將 Host 欄位設定為 Raspberry Pi 的 IP 地址,以便 Sonoff 可以連線到 MQTT 伺服器。
  2. 設定 Client 欄位:設定 Client 欄位為「sonoff_1」,以便識別該 Sonoff 裝置。
  3. 設定 Topic:設定 Topic 欄位為「sonoff_1」,以便與其他 Sonoff 裝置進行區分。
  4. 儲存設定:點選「Save」以儲存變更,Sonoff 將會重新啟動以套用變更。

測試 MQTT 連線

可以使用 Terminal 來測試 MQTT 連線。輸入以下命令以開啟 Sonoff 的 LED:

mosquitto_pub -t cmnd/sonoff_1/power -m 1

輸入以下命令以關閉 Sonoff 的 LED:

mosquitto_pub -t cmnd/sonoff_1/power -m 0

如果以上命令無法正常運作,請新增 -d 選項以檢查 Mosquitto 客戶端是否連線到 MQTT 伺服器。

使用 Node-RED 控制 Sonoff

問題描述

您想要使用 Node-RED 來控制已經透過 MQTT 連線的 Sonoff 智慧開關。

解決方案

  1. 完成 Recipe 17.5:按照 Recipe 17.5 中的步驟,將 Sonoff 連線到 MQTT 伺服器。
  2. 建立 Node-RED 流程:建立一個新的 Node-RED 流程,並新增一個 MQTT 節點。
  3. 設定 MQTT 節點:設定 MQTT 節點以連線到您的 MQTT 伺服器,並設定 Topic 欄位為「sonoff_1」。
  4. 新增 Trigger 節點:新增兩個 Trigger 節點,分別用於開啟和關閉 Sonoff。
  5. 設定 Trigger 節點:設定 Trigger 節點以在按下按鈕時開啟 Sonoff,並在 10 秒後自動關閉。
  6. 佈署流程:佈署流程,並測試 Sonoff 是否可以正常開啟和關閉。

討論

這個食譜展示瞭如何使用 Node-RED 來控制 Sonoff 智慧開關,無需撰寫任何程式碼。Node-RED 提供了一個方便的方式來進行程式設計。

相關主題

  • Recipe 17.7:Node-RED Dashboard

綜觀物聯網應用生態的蓬勃發展,使用低成本的 WiFi 智慧開關,例如 Sonoff 搭配 Raspberry Pi,已成為實作居家自動化的熱門方案。本文深入探討了從韌體燒錄、WiFi 組態到 MQTT 整合,最終以 Node-RED 實作控制的完整流程。從技術架構視角來看,Tasmota 韌體的開源特性為 Sonoff 開啟了無限可能性,MQTT 協定則扮演了橋樑角色,實作了裝置與 Raspberry Pi 的無縫溝通。然而,安全性議題仍是此方案的一大挑戰,未加密的 MQTT 通訊存在潛在風險。此外,Tasmota 韌體的版本更新與社群支援也需要持續關注。對於追求更高安全性和穩定性的使用者,可以考慮進一步整合更安全的 MQTT Broker 和更強大的自動化平臺。展望未來,隨著邊緣計算和 AI 技術的發展,預期未來智慧家居將更智慧化、個人化,而類別似 Sonoff 這樣的低成本裝置,將在更廣泛的物聯網應用場景中扮演重要角色。對於想要入門智慧家居的使用者,本文提供的逐步教學將是極佳的起點,並可作為未來更進階應用的基礎。玄貓認為,此方案兼具成本效益和技術彈性,值得想要探索智慧家居的使用者深入研究。