Ini adalah aplikasi ESP32+LORA yang menerima sinyal RF dari Thermoworks Smoke X2 atau Smoke X4 Remote Thermometer dan menerbitkan informasi ke broker MQTT. Ini akan bekerja bersama Smoke X2/X4 Receiver yang ada (yaitu semua penerima berpasangan masih akan berfungsi). Proyek ini dirancang khusus untuk berintegrasi dengan asisten rumah, tetapi juga dapat digunakan dengan aplikasi berbasis MQTT lainnya. Selain itu, aplikasi ini dapat beroperasi secara mandiri (antarmuka WLAN dalam mode AP tanpa MQTT atau asisten rumah) untuk penggunaan lapangan.
Catatan Aplikasi ini tidak kompatibel dengan produk Thermoworks Smoke atau Thermoworks yang asli.
Asap X dibangun dengan solid, akurat, memiliki rentang RF yang hebat, dan tidak perlu internet berfungsi. Tetapi unit penerima yang disediakan hanya menunjukkan pembacaan probe saat ini, tanpa cara merekam atau tren pelacakan.

Aplikasi ini memungkinkan pengguna Smoke X untuk mengumpulkan data suhu dari sinyal RF dan memvisualisasikan riwayat suhu melalui UI Web (dilayani oleh ESP32), dasbor asisten rumah, dan/atau alat visualisasi data lainnya.



Semua data diperoleh, diproses, dan disimpan secara lokal seperti yang ditunjukkan di bawah ini:
LR FOLKCHART
Base -> | Lora RF | ESP32
MQClient -> MQ
mq -> ha
Web -> Browser (browser web apa pun)
Subgraph Smoke x2/x4
Probe -> Base (Base Station) -> | Lora RF | RECV (penerima)
Billows -> Base
akhir
Subgraph ESP32 [Smoke-X-Receiver]
MQClient (klien MQTT)
Web (server http)
akhir
Subgraph MQTTB [broker MQTT]
MQ (topik homeassistant)
akhir
Asisten Rumah Subgraph
mq_int
akhir
Subgraph ha_dev [perangkat ha untuk x2/x4]
E1 (entitas sensor biner)
E2 (entitas sensor)
akhir
Subgraph MQ_INT [integrasi MQTT]
ha (penemuan otomatis) -> ha_dev
ha_dev
akhir
Bahkan jika Anda bukan pengguna asisten rumah, Anda masih dapat menggunakan antarmuka web bawaan aplikasi ini untuk memantau suhu Anda dan menonton tren.
ESP32 dengan Transceiver Semtech Lora yang terpasang di diperlukan pita ISM 915 MHz. Dewan Pengembangan Lora Gabungan ESP32+seperti Heltec WiFi Lora 32 V2 atau V3 sangat ideal, tetapi papan ESP32 apa pun dengan SPI yang terhubung SX1276 atau SX1262 harus berfungsi.
$ source /path/to/esp-idf/export.sh$ git clone --recurse-submodules [email protected]:G-Two/smoke-x-receiver.git
$ cd smoke-x-receiverKonfigurasi default untuk proyek ini ditulis untuk Heltec WiFi Lora 32 V3 (berdasarkan SX1262). Jika Anda menggunakan perangkat keras yang tepat ini, Anda mungkin dapat melewatkan bagian ini. Jika Anda menjalankan perangkat keras lain, ingin menyesuaikan build, atau jika build default tidak berfungsi, Anda harus menjalankan Menuconfig:
$ idf.py menuconfigCatatan: Jika Anda menggunakan SX1276 (seperti Heltec WiFi Lora 32 V2 ), Anda harus memilih driver SX127X di menu "Smoke X Receiver HW/App Config" dan konfigurasikan menu pin SX127X SPI PIN SX127X SPI
Perubahan konfigurasi tambahan mungkin diperlukan untuk mendukung perangkat keras spesifik Anda atau kebutuhan lainnya
$ idf.py set-target esp32s3 # If using a Heltec WiFi LoRa 32 v3, otherwise set target as appropriate to your hardware
$ idf.py flashAplikasi dan aset web akan dibangun dan ditulis ke Flash ESP32.
Setelah ESP32 dilontarkan, beberapa item perlu dikonfigurasi dan disimpan ke NVRAM. Konfigurasi item ini akan bertahan setelah reset ESP32 serta pembaruan perangkat lunak aplikasi.
Perangkat akan default ke mode AP jika informasi WLAN belum dikonfigurasi, atau jika koneksi gagal. Informasi mode AP default (dapat dikonfigurasi dalam Menuconfig) adalah:
Hubungkan ke AP ESP32 dan gunakan browser web untuk menavigasi ke http://192.168.4.1/wlan Anda akan disajikan dengan Web UI yang jelas untuk mengkonfigurasi perangkat ke jaringan rumah Anda. WPA2-PSK dan WPA2-Enterprise (EAP-TTLS) didukung. Setelah Anda menerapkan informasi otentikasi jaringan Anda, perangkat akan mengatur ulang dan mencoba untuk bergabung dengan jaringan rumah Anda. ESP32 akan menyediakan permintaan host klien DHCP untuk smoke_x . Setelah Anda menemukan ESP32 di jaringan rumah Anda, Anda dapat melanjutkan dengan sisa proses pengaturan. Jika ESP32 gagal bergabung dengan jaringan Anda, itu akan kembali ke mode AP default.
Tab "pasangan" dari UI web akan menunjukkan bahwa perangkat memerlukan pemasangan ke unit dasar asap x. Jika perangkat dalam keadaan tidak berpasangan, itu akan mengganti pemantauan dua saluran sinkronisasi (920 MHz untuk x2, 915 MHz untuk x4), dan akan berpasangan dengan transmisi Sync Sync pertama yang diterimanya. Untuk berpasangan, tempatkan unit dasar asap x dalam mode sinkronisasi yang akan menyebabkannya mengirim semburan sinkronisasi setiap tiga detik. Setelah ESP32 menerima dan mem -parsing burst, ia akan mengirimkan respons sinkronisasi pada frekuensi target, dan unit dasar akan kembali ke operasi normal. Pada titik ini Anda dapat mengonfirmasi di UI Web bahwa perangkat dipasangkan dengan ID dan frekuensi perangkat tertentu. Ini adalah satu -satunya waktu ESP32 akan mengirimkan sinyal LORA. Perangkat mungkin selalu tidak berpasangan melalui Web UI. Pasangan/tidak berpasangan dari ESP32 tidak akan mempengaruhi status pemasangan perangkat lain.
Setelah dipasangkan, halaman status akan menampilkan grafik suhu.
Web UI juga digunakan untuk mengkonfigurasi perangkat untuk terhubung ke broker MQTT. MQTT URI adalah satu -satunya bidang wajib, sisanya opsional dan akan tergantung pada konfigurasi broker MQTT spesifik Anda. Otentikasi Server MQTTS didukung dengan memasukkan CA PEM tepercaya melalui UI Web. PKI Client Auth saat ini tidak didukung.
Jika MQTT dikonfigurasi dan diaktifkan, aplikasi akan mempublikasikan pesan status setelah menerima transmisi RF dari stasiun base Smoke X. Stasiun pangkalan mentransmisikan setiap tiga puluh detik. Isi pesan yang diterbitkan adalah:
{
"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 "
}Catatan: Perangkat X4 juga akan menyertakan data tambahan untuk Probe 3 dan 4
Aplikasi ini mendukung penemuan asisten rumah MQTT. Jika instance asisten rumah Anda memiliki integrasi MQTT yang dikonfigurasi untuk penemuan, sensor Smoke X berikut akan secara otomatis ditambahkan:
Setelah koneksi yang berhasil ke broker MQTT, perangkat akan mengkonfigurasi setiap sensor dengan menerbitkan pesan penemuan yang mirip dengan yang berikut (satu untuk setiap entitas):
{
"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}} "
}Selain itu, aplikasi akan berlangganan topik status asisten rumah untuk pengumuman kelahiran. Jika asisten rumah mulai restart, pengumuman kelahiran akan memberi sinyal ke aplikasi untuk menerbitkan ulang pesan penemuan. Nama topik asisten rumah default digunakan, tetapi dapat disesuaikan di UI Web ESP32.
Aplikasi ini menyediakan HTTP API (digunakan oleh grafik riwayat suhu Web UI) yang juga dapat digunakan oleh klien lain yang dapat mengirim permintaan HTTP ke ESP32.
Tanggapan:
{
"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
}Catatan: Perangkat X4 juga akan menyertakan data tambahan untuk Probe 3 dan 4
PRS untuk memperbaiki bug atau meningkatkan/menambahkan fungsionalitas dipersilakan! Jika Anda telah berhasil membangun aplikasi, Anda memiliki segala yang diperlukan untuk memodifikasinya.
Mungkin bermanfaat untuk memantau log ESP32 selama pengaturan aplikasi awal untuk membantu dalam debugging. Sementara ESP32 masih terhubung ke komputer Anda, monitor log dengan menjalankan:
$ idf.py monitor
Aplikasi ini dibangun dengan ESP-IDF V4 SDK dan memiliki dependensi eksternal dengan driver modem LORA berikut:
Antarmuka web ditulis dalam Vue dan dimuat ke sistem file flash ESP32 sebagai aset web statis terkompresi yang dilayani oleh server web ESP32. Untuk membantu dalam pengembangan dan pengujian manual, antarmuka web dapat dipratinjau dengan:
$ ./mock_web_ui.sh