תוכן עניינים:

תקע חכם נשלט על ידי טמפרטורת WiFi: 4 שלבים
תקע חכם נשלט על ידי טמפרטורת WiFi: 4 שלבים

וִידֵאוֹ: תקע חכם נשלט על ידי טמפרטורת WiFi: 4 שלבים

וִידֵאוֹ: תקע חכם נשלט על ידי טמפרטורת WiFi: 4 שלבים
וִידֵאוֹ: שקע Zigbee יורו עם צג אנרגיה של 3680 וואט עבור Tuya Smart, שילוב ב-Home Assistant 2024, יולי
Anonim
תקע חכם נשלט על ידי טמפרטורת WiFi
תקע חכם נשלט על ידי טמפרטורת WiFi

במערך הוראות זה נבחן כיצד לבנות בדיקת טמפרטורה המאפשרת WiFi באמצעות ESP8266 פשוט להרמה כבדה וחיישן טמפרטורה/לחות DHT11. נשתמש גם בלוח המעגלים שיצרתי והוא גם במכירה כעת בחנות הטינדי בערוץ אם תרצה לרכוש.

נתחיל עם כתב החומרים שתזדקק לו:

מודול WiFi ESP8266

amzn.to/2pkGPoa

חיישן DHT11

amzn.to/2phwfhO

תקע חכם TP-Link

amzn.to/2GElQUz

אתה יכול גם לאסוף את כל המודול בחנות tindie לערוץ:

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

בדוק גם את JLCPCB עבור יצירת PCB. הם מי שהכנתי את ה- PCB:

משלוח חינם בהזמנה ראשונה ואב -טיפוס PCB של 2 $ ב-

שלב 1: הוספת הקוד ל- ESP8266

כעת נצטרך להבהב את הקוד הבא על ESP8266. קוד זה ניתן למצוא במאגר github הבא:

בקוד למטה יהיה עליך להגדיר רק את סעיפי ההגדרות המובילים:

שרת MQTT:

משתמש MQTT:

סיסמת MQTT:

MQTT_sensor_topic:

-וויי - פיי

אמר: האמור על רשת ה- wifi שאליה אתה מתחבר

סיסמא: סיסמת ה- WiFi.

לאחר שתמלא את זה בקוד שלהלן תוכל לאסוף ולבדוק אם יש שגיאות ואם 0 שגיאות תוכל להבליט אותו על ESP8266.

/ * * שם הקובץ: TempHumSensor.ino * * יישום: תרמוסטט תנור חימום חלל HomeAssistant * * תיאור: קוד זה מיועד למכשיר תואם arduino * ESP8266 WiFi. פעולה זו תעביר את מידע הטמפרטורה * של מכשיר DHT11 אל חזית HASS לעיבוד. * * מחבר: מ.ספרי - https://www.youtube.com/misperry * תאריך: 03/ * עדכון: 1.0 * * */

#לִכלוֹל

#include #include #include #include #include

#הגדר CON_TIME_OUT 20 // פסק זמן של אין חיבור ל- wifi

#הגדר MQTT_TIME_OUT 10 // פסק זמן של אין חיבור לשרת MQTT

#define DHTPIN 0 // Pin המחובר לחיישן DHT

#define DHTTYPE DHT11 // סוג החיישן הוא DHT11, אתה יכול לשנות אותו ל- DHT22 (AM2302), DHT21 (AM2301)

#define mqtt_server "" // הזן את תוספות שרת MQTT או את כתובת ה- IP שלך. אני משתמש בתוסף DuckDNS שלי (yourname.duckdns.org) בשדה זה

#define mqtt_user "" // הזן את שם המשתמש שלך MQTT #הגדר mqtt_password "" // הזן את הסיסמה שלך #הגדר 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 wifiClient;

לקוח PubSubClient (wifiClient);

הפונקציה // נקראת לפרסם את הטמפרטורה והלחות

void publishData (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 (data, root.measureLength () + 1); client.publish (MQTT_SENSOR_TOPIC, נתונים, true); }

הפונקציה // נקראה כשהגיעה הודעת MQTT

שיחה חוזרת בטלה (char* p_topic, byte* p_payload, int p_length לא חתומה) {}

חיבור מחדש של ריק () {

// לולאה עד שאנו מחוברים מחדש בזמן (! Client.connected ()) {Serial.print ("מידע: ניסיון לחיבור MQTT …"); // ניסיון להתחבר אם (client.connect ("ESPBlindstl", mqtt_user, mqtt_password)) {Serial.println ("INFO: מחובר"); } אחרת {Serial.print ("ERROR: נכשל, rc ="); Serial.print (client.state ()); Serial.println ("DEBUG: נסה שוב בעוד 5 שניות"); // המתן 5 שניות לפני השהיית ניסיון חוזר (5000); }}}

הגדרת void (void) {

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 את חיבור MQTT client.setServer (mqtt_server, 1883); client.setCallback (callback);

// אתחל חיישן DHT

dht.begin (); Serial.println ("נתוני חיישן מאוחדים DHT11");

// הדפס פרטי חיישן טמפ

חיישן sensor_t; dht.temperature (). getSensor (& חיישן); Serial.println ("------------------------------------"); Serial.println ("טמפרטורה"); Serial.print ("חיישן:"); Serial.println (sensor.name); Serial.print ("Driver Driver:"); Serial.println (sensor.version); 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 ("רזולוציה:"); Serial.print (sensor.resolution); Serial.println (" *C"); Serial.println ("------------------------------------"); // הדפס פרטי חיישן לחות. dht.humidity (). getSensor (& חיישן); Serial.println ("------------------------------------"); Serial.println ("לחות"); Serial.print ("חיישן:"); Serial.println (sensor.name); Serial.print ("Driver Driver:"); Serial.println (sensor.version); 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 ("רזולוציה:"); Serial.print (sensor.resolution); Serial.println ("%"); Serial.println ("------------------------------------");

// הגדר עיכוב בין קריאות החיישן על סמך פרטי החיישן

delayMS = sensor.min_delay / 1000; }

לולאת חלל (void) {

טמפרטורת מצוף;

אם (! client.connected ())

{התחבר מחדש (); }

עיכוב (עיכוב MS);

// קבל אירוע טמפרטורה והדפס את ערכו.

אירוע sensors_event_t; dht.temperature (). getEvent (& event); if (isnan (event.temperature)) {Serial.println ("שגיאה בקריאת טמפרטורה!"); טמפרטורה = 0.00; } אחר {טמפרטורה = אירוע.טמפרטורה; Serial.print ("טמפרטורה:"); Serial.print (טמפרטורה); Serial.println (" *C"); } // לפרסם ב- MQTT publishData (טמפרטורה); }

שלב 2: הגדרת התקע החכם TP-LINK שלך

הגדרת התקע החכם TP-LINK שלך
הגדרת התקע החכם TP-LINK שלך

יהיה עליך להגדיר את התקע החכם TP-LINK שלך, או כל תקע חכם עבור אותו חומר, באופן שהיצרן ממליץ עליו.

הקפד לרשום את כתובת ה- MAC במכשיר. אם המכשיר שלך דומה למכשיר TP-LINK שלי, אינך יכול לדרוש כתובת IP סטטית. לפיכך, יהיה עליך להגדיר את הנתב שלך להזמנת DHCP. זה ייקח את כתובת ה- MAC של המכשיר שלך וכאשר המכשיר יבקש כתובת הנתב ייתן לו את אותה כתובת בכל פעם.

להלן קישור כיצד להגדיר זאת באמצעות Linksys

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

שלב 3: הגדרת עוזר הבית

עכשיו כדי להגדיר את עוזר הבית. לשם כך יהיה עליך להוסיף את התצורות הבאות לקובץ configuration.yaml הממוקם במבנה התיקיות /home/homeassistant/.homeassistant במכשיר שאליו התקנת אותו.

לאחר שתסיים להוסיף את זה לתצורת עוזר הבית שלך יהיה עליך להפעיל מחדש את תוכנת עוזר הבית כדי שהשינויים ייכנסו להשפעה.

כמו כן אשתמש בתקע החכם TP-LINK למכשיר המיתוג וההגדרה להלן בקובץ התצורה. כתובת ה- IP המשמשת את ההתקן היא זו שהגדרת להזמנת DHCP בשלב הקודם.

ניתן למצוא תצורה זו גם ב- repo github הבא:

mqtt: switch: - פלטפורמה: tplink שם: מארח תנור שינה: 192.168.2.11

חיישן 1:

פלטפורמה: mqtt state_topic: 'ha/bedroom_temp' שם: יחידת טמפ 'ליחידה_מדידה:' ° F 'value_template:' {{value_json.temperature}} '

אוטומציה:

- כינוי: _ Temp Temp Bedroom High trigger: - platform: numeric_state entity_id: sensor. Bedroom_Temp למעלה: 73

פעולה:

service: homeassistant.turn_off entity_id: switch. Bedroom_Heater

- כינוי: _ Temp Bedroom Temp נמוך

טריגר: - פלטפורמה: מספר_ישויות מספר_מספר: חיישן. חדר_מטה למטה: 73 פעולה: שירות: מסייע ביתי.

שלב 4: השלבים האחרונים

Image
Image
צעדים אחרונים
צעדים אחרונים
צעדים אחרונים
צעדים אחרונים

כעת עם הגדרת עוזר הבית והגדרת קוד ה- Arduino שלך תהיה מוכן להפעיל את המערכת כולה. לפיכך, הכנס את תקע החימום/מאוורר/הקירור לתקע החכם וחבר אותו לתקע החכם. ברגע שהוא מוכן יהיה עליך לחבר מטען USB קטן ולאחר מכן את בדיקת הטמפרטורה המאופשרת ב- WiFi. ברגע שהכל מקוון אתה אמור להיות מסוגל להסתכל בלוח המחוונים של עוזר הבית שלך ולראות את הטמפרטורה החדשה המדווחת.

תודה רבה על כל העזרה והתמיכה. הקפד להשאיר לייק ובוא לבקר בערוץ בכתובת https://www.youbue.com/misperry ולראות מה יש לנו בשבילך שם. הקפד להירשם ולשתף עם חבריך כדי לעזור לערוץ.

מוּמלָץ: