جدول المحتويات:

مقبس ذكي للتحكم في درجة الحرارة بتقنية WiFi: 4 خطوات
مقبس ذكي للتحكم في درجة الحرارة بتقنية WiFi: 4 خطوات

فيديو: مقبس ذكي للتحكم في درجة الحرارة بتقنية WiFi: 4 خطوات

فيديو: مقبس ذكي للتحكم في درجة الحرارة بتقنية WiFi: 4 خطوات
فيديو: حول أي جهاز في منزلك لجهاز ذكي! 2024, يوليو
Anonim
واي فاي تمكين التحكم في درجة الحرارة المكونات الذكية
واي فاي تمكين التحكم في درجة الحرارة المكونات الذكية

في مجموعة التعليمات هذه ، سننظر في كيفية إنشاء مسبار درجة حرارة مزود بتقنية WiFi باستخدام ESP8266 بسيط لرفع الأحمال الثقيلة ومستشعر درجة الحرارة / الرطوبة DHT11. سنستخدم أيضًا لوحة الدوائر التي قمت بإنشائها وهي أيضًا معروضة للبيع الآن في متجر tindie التابع للقناة إذا كنت ترغب في الشراء.

لنبدأ في فاتورة المواد التي ستحتاجها:

وحدة واي فاي ESP8266

amzn.to/2pkGPoa

مستشعر DHT11

amzn.to/2phwfhO

TP-Link Smart Plug

amzn.to/2GElQUz

يمكنك أيضًا التقاط الوحدة بأكملها من متجر tindie للقناة:

www.tindie.com/products/misperry/wifi-enab…

تحقق أيضًا من JLCPCB لـ PCB Fabriction. هم الذين اعتدت صنع ثنائي الفينيل متعدد الكلور:

شحن مجاني للطلب الأول ونماذج أولية لثنائي الفينيل متعدد الكلور بقيمة 2 دولار على

الخطوة 1: إضافة الرمز إلى ESP8266

سنحتاج الآن إلى وميض الكود التالي على ESP8266. يمكن العثور على هذا الرمز في مستودع جيثب التالي:

في الكود أدناه ، سيتعين عليك فقط إعداد أقسام التعريف القليلة الأولى:

خادم MQTT:

مستخدم MQTT:

كلمة مرور MQTT:

MQTT_sensor_topic:

-واي فاي

قال: قال من شبكة wifi التي تتصل بها

كلمة المرور: كلمة مرور WiFi.

بمجرد أن تقوم بملء هذا في الكود أدناه ، يمكنك بعد ذلك تجميع الأخطاء والتحقق منها ، وإذا لم تكن هناك أخطاء ، فيمكنك تحديثها على ESP8266.

/ * * اسم الملف: TempHumSensor.ino * * التطبيق: HomeAssistant Space Heater Thermostat * * الوصف: هذا الرمز مخصص لجهاز Arduino * المتوافق مع ESP8266 WiFi. سيؤدي هذا إلى ترحيل معلومات درجة الحرارة * لجهاز DHT11 إلى واجهة HASS للمعالجة. * * المؤلف: M. Sperry - https://www.youtube.com/misperry * التاريخ: 03 / * المراجعة: 1.0 * * * /

#يشمل

# تضمين # تضمين # تضمين # تضمين # تضمين

#define CON_TIME_OUT 20 // مهلة عدم الاتصال بشبكة wifi

#define MQTT_TIME_OUT 10 // مهلة عدم الاتصال بخادم MQTT

#define DHTPIN 0 // دبوس متصل بمستشعر DHT

#define DHTTYPE DHT11 // نوع المستشعر هو DHT11 ، يمكنك تغييره إلى DHT22 (AM2302) ، DHT21 (AM2301)

#define mqtt_server "" // أدخل إضافات خادم MQTT أو IP. أستخدم عنوان DuckDNS الخاص بي (yourname.duckdns.org) في هذا المجال

#define mqtt_user "" // أدخل اسم مستخدم MQTT الخاص بك #define mqtt_password "" // أدخل كلمة المرور #define MQTT_SENSOR_TOPIC "ha / bedroom_temp" // أدخل موضوعًا لـ MQTT

// Wifi: SSID وكلمة المرور

const char * ssid = ""؛ const char * password = "" ؛

// DHT SEtup

DHT_Unified dht (DHTPIN ، DHTTYPE) ؛ uint32_t delayMS ؛

WiFiClient wifi العميل ؛

عميل PubSubClient (wifiClient) ؛

// وظيفة تسمى لنشر درجة الحرارة والرطوبة

نشر voidData (float p_temperature) {// إنشاء كائن JSON // doc: https://github.com/bblanchon/ArduinoJson/wiki/API٪20Reference StaticJsonBuffer jsonBuffer؛ JsonObject & root = jsonBuffer.createObject () ، // INFO: يجب تحويل البيانات إلى سلسلة ؛ تحدث مشكلة عند استخدام الطفو… // التحويل إلى فهرنهايت p_temperature = (p_temperature * 1.8) + 32 ؛ // التحويل إلى جذر فهرنهايت ["درجة الحرارة"] = (سلسلة) p_temperature؛ root.prettyPrintTo (المسلسل) ، Serial.println ("") ؛

بيانات شار [200] ؛

root.printTo (البيانات ، root.measureLength () + 1) ، client.publish (MQTT_SENSOR_TOPIC ، بيانات ، صحيح) ؛ }

// تم استدعاء الوظيفة عند وصول رسالة MQTT

رد اتصال باطل (char * p_topic، byte * p_payload، unsigned int p_length) {}

إعادة الاتصال باطل () {

// Loop حتى نعيد الاتصال أثناء (! client.connected ()) {Serial.print ("INFO: Attempting MQTT connection…") ؛ // حاول الاتصال إذا (client.connect ("ESPBlindstl" ، mqtt_user ، mqtt_password)) {Serial.println ("INFO: متصل") ؛ } else {Serial.print ("ERROR: failure، rc =")؛ Serial.print (client.state ()) ؛ Serial.println ("DEBUG: حاول مرة أخرى خلال 5 ثوانٍ") ؛ // انتظر 5 ثوانٍ قبل إعادة محاولة التأخير (5000) ؛ }}}

إعداد باطل (باطل) {

Serial.begin (9600) ؛

// نبدأ بالاتصال بشبكة WiFi

Serial.println () ، Serial.println () ، Serial.print ("الاتصال بـ") ؛ Serial.println (ssid) ؛

WiFi.begin (SSID ، كلمة المرور) ؛

بينما (WiFi.status ()! = WL_CONNECTED) {

تأخير (800) ؛ Serial.print (".") ؛ }

Serial.println ("") ؛

Serial.println ("متصل بشبكة WiFi") ؛ Serial.println ("عنوان IP:") ؛ Serial.println (WiFi.localIP ()) ؛ // init the MQTT connection client.setServer (mqtt_server ، 1883) ؛ client.setCallback (رد الاتصال) ؛

// تهيئة مستشعر DHT

dht.begin () ، Serial.println ("بيانات الاستشعار الموحدة DHT11") ؛

// طباعة تفاصيل مستشعر درجة الحرارة

sensor_t الاستشعار ؛ dht.temperature (). getSensor (& sensor) ؛ Serial.println ("------------------------------------") ؛ Serial.println ("درجة الحرارة") ؛ Serial.print ("Sensor:") ؛ Serial.println (sensor.name) ؛ Serial.print ("Driver Ver:") ؛ Serial.println (مستشعر الإصدار) ؛ Serial.print ("المعرف الفريد:") ؛ Serial.println (sensor.sensor_id) ؛ Serial.print ("القيمة القصوى:") ؛ Serial.print (sensor.max_value) ؛ Serial.println ("* C") ؛ Serial.print ("الحد الأدنى للقيمة:") ؛ Serial.print (sensor.min_value) ؛ Serial.println ("* C") ؛ Serial.print ("Resolution:") ؛ Serial.print (مستشعر الدقة) ؛ Serial.println ("* C") ؛ Serial.println ("------------------------------------") ؛ // طباعة تفاصيل مستشعر الرطوبة. dht.humidity (). getSensor (& sensor) ؛ Serial.println ("------------------------------------") ؛ Serial.println ("الرطوبة") ؛ Serial.print ("Sensor:") ؛ Serial.println (sensor.name) ؛ Serial.print ("Driver Ver:") ؛ Serial.println (مستشعر الإصدار) ؛ Serial.print ("المعرف الفريد:") ؛ Serial.println (sensor.sensor_id) ؛ Serial.print ("القيمة القصوى:") ؛ Serial.print (sensor.max_value) ؛ Serial.println ("٪") ؛ Serial.print ("الحد الأدنى للقيمة:") ؛ Serial.print (sensor.min_value) ؛ Serial.println ("٪") ؛ Serial.print ("Resolution:") ؛ Serial.print (مستشعر الدقة) ؛ Serial.println ("٪") ؛ Serial.println ("------------------------------------") ؛

// ضبط التأخير بين قراءات المستشعر بناءً على تفاصيل المستشعر

delayMS = sensor.min_delay / 1000 ؛ }

حلقة باطلة (باطلة) {

درجة حرارة تعويم

إذا (! client.connected ())

{إعادة الاتصال () ؛ }

تأخير (delayMS) ؛

// احصل على حدث درجة الحرارة واطبع قيمته.

حدث sensors_event_t ؛ dht.temperature (). getEvent (& event) ؛ if (isnan (event.temperature)) {Serial.println ("خطأ في قراءة درجة الحرارة!") ؛ درجة الحرارة = 0.00 ؛ } else {temperature = event.temperature؛ Serial.print ("درجة الحرارة:") ؛ Serial.print (درجة الحرارة) ؛ Serial.println ("* C") ؛ } // انشر على MQTT publishData (درجة الحرارة) ؛ }

الخطوة 2: إعداد TP-LINK Smart Plug

إعداد القابس الذكي TP-LINK
إعداد القابس الذكي TP-LINK

ستحتاج إلى ضبط قابس TP-LINK الذكي الخاص بك ، أو أي قابس ذكي لتلك الأم ، بالطريقة التي توصي بها الشركة المصنعة.

تأكد من تدوين عنوان MAC على الجهاز. إذا كان جهازك مثل جهاز TP-LINK الخاص بي ، فلا يمكنك كتابة عنوان IP ثابت. وبالتالي ، سوف تحتاج إلى تكوين جهاز التوجيه الخاص بك لحجز DHCP. سيأخذ هذا عنوان MAC الخاص بجهازك وعندما يطلب هذا الجهاز الحصول على عنوان ، فسيعطيه جهاز التوجيه نفس العنوان في كل مرة.

فيما يلي رابط لكيفية إعداد ذلك باستخدام Linksys

www.linksys.com/us/support-article؟article…

الخطوة 3: إعداد Home Assistant

الآن لإعداد Home Assistant. لهذا ، ستحتاج إلى إضافة التكوينات التالية إلى ملف config.yaml الموجود في بنية المجلد /home/homeassistant/.homeassistant على الجهاز الذي قمت بتثبيته عليه.

بمجرد الانتهاء من إضافة هذا إلى تكوين المساعد المنزلي الخاص بك ، ستحتاج إلى إعادة تشغيل برنامج المساعد المنزلي حتى تسري التغييرات.

كما سأستخدم القابس الذكي TP-LINK لجهاز التبديل والتعريف أدناه في ملف التكوين. عنوان IP المستخدم للجهاز هو العنوان الذي قمت بإعداده لحجز DHCP في الخطوة السابقة.

يمكن أيضًا العثور على هذا التكوين في github repo التالي:

mqtt: التبديل: - المنصة: اسم tplink: مضيف سخان غرفة النوم: 192.168.2.11

جهاز استشعار 1:

النظام الأساسي: mqtt state_topic: 'ha / bedroom_temp' name: Bedroom Temp unit_of_measurement: '° F' value_template: '{{value_json.temperature}}'

التشغيل الآلي:

- الاسم المستعار: _Temp Bedroom Temp High المشغل: - المنصة: numeric_state union_id: sensor. Bedroom_Temp أعلاه: 73

عمل:

service: homeassistant.turn_off worker_id: switch. Bedroom_Heater

- الاسم المستعار: _Temp Bedroom Temp Low

المشغل: - المنصة: numeric_state kingdom_id: sensor. Bedroom_Temp أدناه: 73 الإجراء: service: homeassistant.turn_on kingdom_id: switch. Bedroom_Heater

الخطوة 4: الخطوات النهائية

Image
Image
الخطوات النهائية
الخطوات النهائية
الخطوات النهائية
الخطوات النهائية

الآن مع تكوين المساعد المنزلي وإعداد كود Arduino الخاص بك ، ستكون جاهزًا لتنشيط النظام بأكمله. وبالتالي ، ضع قابس السخان / المروحة / المبرد في القابس الذكي وقم بتوصيل القابس الذكي. بمجرد أن يصبح جاهزًا ، ستحتاج إلى توصيل شاحن USB صغير ثم مسبار درجة الحرارة الذي يدعم WiFi. بمجرد أن يصبح كل شيء متصلاً بالإنترنت ، يجب أن تكون قادرًا على البحث في لوحة معلومات المساعد المنزلي والاطلاع على درجة الحرارة الجديدة التي يتم الإبلاغ عنها.

شكرا جزيلا لك على كل مساعدتك ودعمك. تأكد من ترك إعجاب وتعال وقم بزيارة القناة على https://www.youbue.com/misperry وشاهد كل ما لدينا هناك من أجلك. تأكد من الاشتراك والمشاركة مع أصدقائك للمساعدة في القناة.

موصى به: