هذا هو تطبيق ESP32+Lora الذي يتلقى إشارة RF من دخان حراري X2 أو مقياس الحرارة عن بُعد Smoke X4 ونشر المعلومات إلى وسيط MQTT. سيعمل هذا جنبًا إلى جنب مع أي مستقبلات دخان X2/X4 موجودة (أي أن جميع أجهزة الاستقبال المقترنة ستظل تعمل). تم تصميم هذا المشروع خصيصًا للاندماج مع المساعد المنزلي ، ولكن يمكن استخدامه أيضًا مع أي تطبيق آخر يستند إلى MQTT. بالإضافة إلى ذلك ، قد يعمل هذا التطبيق بطريقة مستقلة (واجهة WLAN في وضع AP دون MQTT أو مساعد المنزل) للاستخدام الميداني.
لاحظ أن هذا التطبيق غير متوافق مع منتجات إشارات ThermoWorks الأصلية أو المنتجات الحرارية.
تم تصميم Smoke X بقوة ودقيقة ولديه نطاق RF رائع ولا يحتاج إلى الإنترنت للعمل. لكن وحدة الاستقبال المقدمة تعرض فقط قراءات التحقيق الحالية ، دون أي وسيلة لتسجيل أو تتبع اتجاهات.

يسمح هذا التطبيق لمستخدمي Smoke X بجمع بيانات درجة الحرارة من إشارة RF وتصور سجل درجة الحرارة من خلال واجهة مستخدم ويب (يقدمها ESP32) ، ولوحة معلومات مساعد منزلي ، و/أو أي أدوات تصور بيانات أخرى.



يتم الحصول على جميع البيانات ومعالجتها وتخزينها محليًا كما هو موضح أدناه:
مخطط انسيابي LR
قاعدة -> | لورا RF | ESP32
mqclient -> mq
MQ -> ها
Web -> Browser (أي متصفح ويب)
الدخان الفرعي x2/x4
تحقيقات -> قاعدة (محطة قاعدة) -> | لورا RF | RECV (جهاز الاستقبال)
Billows -> قاعدة
نهاية
Subgraph ESP32 [Smoke-X-Receiver]
MQClient (عميل MQTT)
الويب (خادم HTTP)
نهاية
Subgraph MQTTB [MQTT Broker]
MQ (موضوع هاتمائيات)
نهاية
مساعد المنزل الفرعي
mq_int
نهاية
subgraph ha_dev [ha device for x2/x4]
E1 (كيانات المستشعر الثنائي)
E2 (كيانات المستشعر)
نهاية
Subgraph MQ_INT [تكامل MQTT]
ها (اكتشاف السيارات) -> ha_dev
ha_dev
نهاية
حتى إذا لم تكن مستخدمًا للمنزل ، فلا يزال بإمكانك استخدام واجهة الويب المدمجة لهذا التطبيق لمراقبة درجات الحرارة الخاصة بك ومشاهدة الاتجاهات.
مطلوب ESP32 مع Semtech Lora Stersceiver الذي يعمل في نطاق 915 MHz ISM. تعد لوحة تطوير ESP32+Lora مجتمعة مثل Heltec WiFi Lora 32 V2 أو V3 مثالية ، ولكن يجب أن تعمل أي لوحة ESP32 مع SPI متصل SX1276 أو SX1262.
$ 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 ) ، فيجب عليك تحديد برنامج تشغيل SX127x في قائمة "Smoke X Receiver HW/App Config" وتكوين تعيينات 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سيتم بناء وتطبيق أصول الويب وكتابتها إلى Flash ESP32.
بعد وميض ESP32 ، يجب تكوين عدة عناصر وحفظها في NVRAM. سيستمر تكوين هذه العناصر بعد إعادة تعيين ESP32 وكذلك تحديثات برامج التطبيق.
سيقوم الجهاز افتراضيًا بوضع AP إذا لم يتم تكوين معلومات WLAN ، أو إذا فشل الاتصال. معلومات وضع AP الافتراضية (قابلة للتكوين في menuconfig) هي:
اتصل بـ AP ESP32 واستخدم متصفح الويب للانتقال إلى http://192.168.4.1/wlan سيتم تقديمه مع واجهة مستخدم ويب محسوسة لتكوين الجهاز بشبكتك الرئيسية. يتم دعم WPA2-PSK و WPA2-ENTERPRISE (EAP-TTLS). بمجرد تطبيق معلومات مصادقة الشبكة الخاصة بك ، سيقوم الجهاز بإعادة ضبط ومحاولة الانضمام إلى شبكتك الرئيسية. سيوفر ESP32 طلب اسم مضيف عميل DHCP لـ smoke_x . بمجرد العثور على ESP32 على شبكتك المنزلية ، يمكنك المتابعة مع الفترة المتبقية من عملية الإعداد. إذا فشل ESP32 في الانضمام إلى شبكتك ، فسوف يعود إلى وضع AP الافتراضي.
ستشير علامة التبويب "الاقتران" في واجهة المستخدم على الويب إلى أن الجهاز يتطلب الاقتران بوحدة قاعدة دخان X. إذا كان الجهاز في حالة غير مسبوقة ، فسيقوم بتبديل مراقبة قناتين المزامنة (920 ميغاهيرتز لـ X2 ، 915 MHz لـ X4) ، وسوف يتم إقرانه مع نقل Smoke X Sync الأول الذي يتلقاه. للاقتران ، ضع الوحدة الأساسية للدخان X في وضع المزامنة مما سيؤدي إلى إرسال رشقات متزامنة كل ثلاث ثوان. بمجرد استلام ESP32 وتوصيف الانفجار ، ستقوم بنقل استجابة المزامنة على التردد المستهدف ، وستعود الوحدة الأساسية إلى التشغيل العادي. في هذه المرحلة ، يمكنك التأكيد في واجهة مستخدم الويب على أن الجهاز يقترن بمعرف جهاز معين وتردد. هذه هي المرة الوحيدة التي ينقل فيها ESP32 إشارة Lora. قد يكون الجهاز دائمًا غير مقبول عبر واجهة المستخدم على الويب. لن يؤثر الاقتران/إلغاء توصيل ESP32 على حالة الاقتران لأي أجهزة أخرى.
بمجرد الاقتران ، ستعرض صفحة الحالة رسم بياني لدرجة الحرارة.
يتم استخدام واجهة المستخدم على الويب أيضًا لتكوين الجهاز للاتصال بوسيط MQTT. MQTT URI هو الحقل الإلزامي الوحيد ، والباقي اختياري وسيعتمد على تكوين وسيط MQTT المحدد. يتم دعم مصادقة MQTTS Server من خلال إدخال CA PEM الموثوق بها عبر واجهة المستخدم على الويب. لا يتم دعم Auth Client Client PKI حاليًا.
إذا تم تكوين MQTT وتمكينه ، فسيقوم التطبيق بنشر رسائل الحالة عند استلام ناقل حركة RF من محطة Smoke X Base. تنقل المحطة الأساسية كل ثلاثين ثانية. محتويات الرسائل المنشورة هي:
{
"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. إذا كان مثيل 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 بإعادة تشغيله ، فسيشير إعلان الولادة إلى الطلب لإعادة نشر رسائل الاكتشاف. يتم استخدام أسماء موضوع المساعد الافتراضي للمنزل ، ولكن قد يتم تخصيصها في واجهة المستخدم على الويب ESP32.
يوفر التطبيق واجهة برمجة تطبيقات HTTP (المستخدمة بواسطة الرسم البياني لدرجة حرارة 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
PRS لإصلاح الحشرات أو تحسين/إضافة وظائف نرحب! إذا كنت قد قمت بنجاح ببناء التطبيق ، فلديك كل ما هو مطلوب لتعديله.
قد يكون من المفيد مراقبة سجلات ESP32 أثناء إعداد التطبيق الأولي للمساعدة في تصحيح الأخطاء. على الرغم من أن ESP32 لا تزال متصلة بجهاز الكمبيوتر الخاص بك ، إلا أن مراقبة سجلاتها عن طريق التشغيل:
$ idf.py monitor
تم تصميم هذا التطبيق باستخدام ESP-IDF V4 SDK ولديه تبعيات خارجية مع برامج تشغيل مودم LORA التالية:
تتم كتابة واجهة الويب في Vue ويتم تحميلها على نظام ملفات Flash ESP32 كأصول ويب ثابتة مضغوطة يتم تقديمها بواسطة خادم الويب ESP32. للمساعدة في التنمية والاختبار اليدوي ، يمكن معاينة واجهة الويب مع:
$ ./mock_web_ui.sh