이것은 Thermoworks Smoke X2 또는 Smoke X4 원격 온도계로부터 RF 신호를 수신하고 MQTT 브로커에 정보를 게시하는 ESP32+LORA 응용 프로그램입니다. 이것은 기존의 연기 X2/X4 수신기와 함께 작동합니다 (즉, 모든 페어링 된 수신기는 여전히 작동합니다). 이 프로젝트는 홈 어시스턴트와 통합되도록 특별히 설계되었지만 다른 MQTT 기반 응용 프로그램과도 사용할 수도 있습니다. 또한이 응용 프로그램은 현장 사용을 위해 독립형 방식 (MQTT 또는 Home Assistant가없는 AP 모드의 WLAN 인터페이스)으로 작동 할 수 있습니다.
참고이 응용 프로그램은 원래 Thermoworks Smoke 또는 Thermoworks Signals 제품과 호환되지 않습니다 .
Smoke X는 견고하게 제작되고 정확하며 RF 범위가 뛰어나고 인터넷이 작동 할 필요가 없습니다. 그러나 제공된 수신기 단위는 기록 또는 추적 추세가없는 현재 프로브 판독 값 만 표시합니다.

이 애플리케이션을 사용하면 Smoke X 사용자가 RF 신호에서 온도 데이터를 수집하고 웹 UI (ESP32에서 제공), 홈 어시스턴트 대시 보드 및/또는 기타 데이터 시각화 도구를 통해 온도 기록을 시각화 할 수 있습니다.



모든 데이터는 아래와 같이 로컬로 수집, 처리 및 저장됩니다.
흐름도 LR
기본 -> | lora rf | ESP32
mqclient-> mq
mq-> ha
웹 -> 브라우저 (모든 웹 브라우저)
서브 그래프 연기 x2/x4
프로브 -> 기본 (기지국) -> | Lora rf | recv (수신기)
Billows->베이스
끝
하위 그래프 ESP32 [Smoke-X-Receiver]
MQClient (MQTT 클라이언트)
웹 (HTTP 서버)
끝
하위 그래프 MQTTB [MQTT 브로커]
MQ (HomeAssistant Topic)
끝
하위 그래프 홈 어시스턴트
mq_int
끝
서브 그래프 ha_dev [x2/x4 용 장치]
E1 (이진 센서 엔티티)
E2 (센서 엔티티)
끝
subgraph mq_int [mqtt 통합]
ha (자동 발견) -> ha_dev
ha_dev
끝
홈 어시스턴트 사용자가 아니더라도이 응용 프로그램의 내장 웹 인터페이스를 사용하여 온도를 모니터링하고 트렌드를 감시 할 수 있습니다.
915 MHz ISM 대역에서 작동하는 SEMTECH LORA 트랜시버가 부착 된 ESP32가 필요합니다. Heltec Wi -Fi Lora 32 V2 또는 V3과 같은 결합 된 ESP32+LORA 개발 보드가 이상적이지만 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 Wi -Fi Lora 32 V2 등)을 사용하는 경우 "Smoke X 수신기 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응용 프로그램 및 웹 자산은 ESP32 플래시에 구축 및 작성됩니다.
ESP32가 번쩍이면 여러 항목을 구성하고 NVRAM에 저장해야합니다. 이 항목의 구성은 ESP32 재설정 후에도 응용 프로그램 소프트웨어 업데이트가 지속됩니다.
WLAN 정보가 구성되지 않았거나 연결이 실패한 경우 장치가 기본값으로 AP 모드로 표시됩니다. 기본 AP 모드 정보 (menuconfig에서 구성 가능)는 다음과 같습니다.
ESP32의 AP에 연결하고 웹 브라우저를 사용하여 http://192.168.4.1/wlan으로 이동하여 홈 네트워크에 장치를 구성하기 위해 자체 설명 웹 UI가 제공됩니다. WPA2-PSK 및 WPA2-ENTERPRISE (EAP-TTLS)가 지원됩니다. 네트워크 인증 정보를 적용하면 장치가 재설정되고 홈 네트워크에 가입하려고 시도합니다. ESP32는 smoke_x 에 대한 DHCP 클라이언트 호스트 이름 요청을 제공합니다. 홈 네트워크에서 ESP32를 찾으면 나머지 설정 프로세스를 진행할 수 있습니다. ESP32가 네트워크에 가입하지 않으면 기본 AP 모드로 되돌아갑니다.
웹 UI의 "페어링"탭은 장치가 Smoke X 기본 장치와 페어링이 필요하다는 것을 나타냅니다. 장치가 짝을 이루지 않은 상태 인 경우 두 개의 동기화 채널 (X2의 920 MHz, X4의 경우 915 MHz)을 교대로 모니터링하고 수신 한 첫 번째 Smoke X Sync 전송과 쌍을 이룹니다. 페어링하려면 Smoke X 기본 장치를 동기화 모드에 배치하여 3 초마다 동기 버스트를 보냅니다. ESP32가 버스트를 수신하고 구문 분석하면 대상 주파수에 동기화 응답을 전송하고 기본 장치는 정상 작동으로 돌아갑니다. 이 시점에서 웹 UI에서 장치가 특정 장치 ID 및 주파수와 쌍을 이루는 것을 확인할 수 있습니다. ESP32가 LORA 신호를 전송할 유일한 시간입니다. 장치는 항상 웹 UI를 통해 짝을 이루지 않을 수 있습니다. ESP32의 페어링/쌍은 다른 장치의 페어링 상태에 영향을 미치지 않습니다.
일단 페어링되면 상태 페이지에 온도 그래프가 표시됩니다.
웹 UI는 또한 MQTT 브로커에 연결하도록 장치를 구성하는 데 사용됩니다. MQTT URI는 유일한 필수 필드이며 나머지는 선택 사항이며 특정 MQTT 브로커 구성에 따라 다릅니다. MQTTS 서버 인증은 웹 UI를 통해 신뢰할 수있는 CA PEM을 입력하여 지원됩니다. PKI 클라이언트 인증은 현재 지원되지 않습니다.
MQTT가 구성되고 활성화되면 Application은 Smoke X 기지국으로부터 RF 전송을 수신하면 상태 메시지를 게시합니다. 기지국은 30 초마다 전달됩니다. 게시 된 메시지 내용은 다음과 같습니다.
{
"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 발견을 지원합니다. Home Assistant 인스턴스가 발견을 위해 구성된 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}} "
}또한이 신청서는 출생 공지에 대한 Home Assistant Nations Topic을 구독합니다. Home Assistant가 다시 시작되면 출생 발표는 신청서에 신호를 보내 Discovery 메시지를 다시 게시합니다. 기본 홈 어시스턴트 주제 이름이 사용되지만 ESP32 웹 UI에서 사용자 정의 할 수 있습니다.
이 응용 프로그램은 HTTP API (웹 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에 대한 추가 데이터도 포함됩니다.
버그를 수정하거나 기능을 향상/추가하는 PRS를 환영합니다! 응용 프로그램을 성공적으로 구축 한 경우 응용 프로그램을 수정하는 데 필요한 모든 것이 있습니다.
초기 응용 프로그램 설정 중에 ESP32 로그를 모니터링하여 디버깅을 돕는 것이 도움이 될 수 있습니다. ESP32는 여전히 컴퓨터에 연결되어 있지만 다음을 수행하여 로그를 모니터링합니다.
$ idf.py monitor
이 응용 프로그램은 ESP-IDF V4 SDK로 구축되었으며 다음 LORA 모뎀 드라이버와 외부 종속성이 있습니다.
웹 인터페이스는 VUE로 작성되었으며 ESP32 웹 서버에서 제공하는 압축 된 정적 웹 자산으로 ESP32 플래시 파일 시스템에로드됩니다. 개발 및 수동 테스트를 지원하기 위해 웹 인터페이스를 미리 볼 수 있습니다.
$ ./mock_web_ui.sh