這是一個ESP32+LORA應用程序,它從Thermoworks Smoke X2或Smoke X4遠程溫度計接收RF信號,並將信息發布給MQTT代理。這將與任何現有的Smoke X2/X4接收器一起使用(即所有配對接收器仍將運行)。該項目的設計專門用於與家庭助理集成,但也可以與任何其他基於MQTT的應用程序一起使用。此外,此應用程序可能以獨立的方式(無MQTT或Home Assistant的AP模式下的WLAN接口)進行現場使用。
請注意,此應用與原始的ThermoWorks煙霧或ThermoWorks信號產品不兼容。
Smoke X是堅固的,準確的,具有很大的RF範圍,並且不需要Internet運行。但是提供的接收器單元僅顯示當前的探測讀數,而沒有記錄或跟踪趨勢的方法。

該應用程序允許Smoke X用戶從RF信號中收集溫度數據,並通過Web UI(由ESP32提供),家庭助理儀表板和/或任何其他數據可視化工具來可視化溫度歷史記錄。



如下所示,所有數據均可在本地獲取,處理和存儲:
流圖LR
基礎 - > | lora rf | ESP32
MQClient-> MQ
MQ-> HA
Web->瀏覽器(任何Web瀏覽器)
子圖煙x2/x4
探針 - >基地(基站) - > | Lora RF | RECV(接收器)
滾蛋 - >基礎
結尾
ESP32子圖[Smoke-X接收器]
MQClient(MQTT客戶端)
Web(HTTP服務器)
結尾
子圖MQTTB [MQTT經紀人]
MQ(鄉親話題)
結尾
子圖家庭助理
MQ_INT
結尾
子圖HA_DEV [X2/X4的HA設備]
E1(二元傳感器實體)
E2(傳感器實體)
結尾
子圖MQ_INT [MQTT集成]
ha(自動發現) - > ha_dev
ha_dev
結尾
即使您不是家庭助理用戶,您仍然可以使用此應用程序的內置Web界面來監視您的溫度並註意趨勢。
需要在915 MHz ISM頻段中運行的帶有Semtech Lora收發器的ESP32。組合的ESP32+LORA開發板,例如Heltec WiFi Lora 32 V2或V3是理想的選擇,但是任何具有SPI連接的SX1276或SX1262的ESP32板都可以使用。
$ source /path/to/esp-idf/export.sh$ git clone --recurse-submodules [email protected]:G-Two/smoke-x-receiver.git
$ cd smoke-x-receiver該項目的默認配置是為Heltec WiFi Lora 32 V3編寫的(基於SX1262)。如果您使用此確切的硬件,則可以跳過此部分。如果您在任何其他硬件上運行,要自定義構建,或者默認構建不起作用,則需要運行menuconfig:
$ idf.py menuconfig注意:如果您使用的是SX1276(例如Heltec Wifi Lora 32 V2 ),則必須在“ Smoke X Recever HW/App Config”菜單中選擇SX127X驅動程序,並配置SX127X SPI PIN分配
可能需要進行其他配置更改以支持您的特定硬件或其他需求
$ idf.py set-target esp32s3 # If using a Heltec WiFi LoRa 32 v3, otherwise set target as appropriate to your hardware
$ idf.py flash應用程序和Web資產將被構建並寫入ESP32 Flash。
ESP32閃爍後,需要配置幾個項目並將其保存到NVRAM。 ESP32重置以及應用程序軟件更新後,這些項目的配置將持續存在。
如果尚未配置WLAN信息,則該設備將默認為AP模式,或者連接失敗。默認的AP模式信息(可在Menuconfig中配置)為:
連接到ESP32的AP,並使用Web瀏覽器導航到http://192.168.4.4.1/wlan,您將為您提供一個自稱的Web UI,以將設備配置為家庭網絡。支持WPA2-PSK和WPA2-ENTERPRISE(EAP-TTLS)。應用網絡身份驗證信息後,設備將重置並嘗試加入家庭網絡。 ESP32將為smoke_x提供DHCP客戶端主機名。一旦在家庭網絡上找到ESP32,就可以繼續進行設置過程的其餘部分。如果ESP32未能加入您的網絡,它將恢復為默認的AP模式。
Web UI的“配對”選項卡將表明該設備需要配對與Smoke X Base單元。如果該設備處於未配合的狀態,它將交替監視兩個同步通道(X2的920 MHz,X4的915 MHz),並將與它接收到的第一個Smoke X Sync Transmine配對。要配對,請將Smoke X Base單元放在同步模式下,這將使其每三秒鐘發送一次同步爆發。 ESP32接收並解析爆發後,它將在目標頻率上傳遞同步響應,並且基本單元將返回正常操作。此時,您可以在Web UI中確認設備與特定的設備ID和頻率配對。這是ESP32唯一一次傳輸Lora信號的時間。該設備可能總是通過Web UI不配對。 ESP32的配對/非搭配不會影響任何其他設備的配對狀態。
配對後,狀態頁將顯示一個溫度圖。
Web UI還用於配置設備以連接到MQTT代理。 MQTT URI是唯一的強制性字段,其餘的是可選的,將取決於您的特定MQTT代理配置。通過通過Web UI輸入受信任的CA PEM來支持MQTTS服務器身份驗證。當前不支持PKI Client Auth。
如果配置並啟用了MQTT,則該應用程序將在從Smoke X Base Station收到RF傳輸後發布狀態消息。基站每三十秒傳輸一次。已發布的消息內容是:
{
"probe_1_attached" : " ON " ,
"probe_1_alarm" : " ON " ,
"probe_1_temp" : 70.4 ,
"probe_1_max" : 185 ,
"probe_1_min" : 32 ,
"billows_target" : " offline " ,
"probe_2_attached" : " ON " ,
"probe_2_alarm" : " ON " ,
"probe_2_temp" : 70.4 ,
"probe_2_max" : 91 ,
"probe_2_min" : 50 ,
"billows_attached" : " OFF "
}注意: X4設備還將包括探針3和4的其他數據
該應用程序支持家庭助理MQTT Discovery。如果您的家庭助理實例已配置了用於發現的MQTT集成,則將自動添加以下Smoke X傳感器:
成功連接到MQTT代理後,該設備將通過發布類似於以下的發現消息(每個實體)來配置每個傳感器:
{
"dev" : {
"name" : " Smoke X Receiver " ,
"identifiers" : " |ABC12 " ,
"sw_version" : " 0.1.0 " ,
"model" : " X2 " ,
"manufacturer" : " ThermoWorks "
},
"exp_aft" : 120 ,
"pl_not_avail" : " offline " ,
"stat_t" : " homeassistant/smoke-x/state " ,
"dev_cla" : " temperature " ,
"unit_of_meas" : " °F " ,
"uniq_id" : " smoke-x_probe_1_temp " ,
"name" : " Smoke X Probe 1 Temp " ,
"val_tpl" : " {{value_json.probe_1_temp}} "
}此外,該申請將訂閱家庭助理狀態主題以進行出生公告。如果家庭助理重新開始,則出生公告將向申請發出信號,以重新發布發現消息。使用默認的家庭助理主題名稱,但可以在ESP32 Web UI中自定義。
該應用程序提供了HTTP API(由Web UI的溫度歷史記錄圖使用),該應用程序也可以由任何能夠將HTTP請求發送給ESP32的其他客戶端使用。
回覆:
{
"probe_1" : {
"current_temp" : 95.3 ,
"alarm_max" : 185 ,
"alarm_min" : 32 ,
"history" : [ 95.1 , 95.2 , 95.3 ]
},
"probe_2" : {
"current_temp" : 165.9 ,
"alarm_max" : 91 ,
"alarm_min" : 50 ,
"history" : [ 165.7 , 165.8 , 165.9 ]
},
"billows" : false
}注意: X4設備還將包括探針3和4的其他數據
歡迎修復錯誤或增強/添加功能的PR!如果您已經成功構建了該應用程序,則需要修改它所需的一切。
在初始申請設置中監視ESP32日誌可能會有所幫助,以幫助調試。當ESP32仍插入計算機時,通過運行監視日誌:
$ idf.py monitor
該應用程序是使用ESP-IDF V4 SDK構建的,具有以下洛拉調製解調器驅動程序的外部依賴性:
Web界面用VUE編寫,並將其加載到ESP32 Flash文件系統上,作為由ESP32 Web服務器提供的壓縮靜態Web資產。為了幫助進行開發和手動測試,可以預覽網絡界面:
$ ./mock_web_ui.sh