สารบัญ:

ปลั๊กอัจฉริยะควบคุมอุณหภูมิที่เปิดใช้งาน WiFi: 4 ขั้นตอน
ปลั๊กอัจฉริยะควบคุมอุณหภูมิที่เปิดใช้งาน WiFi: 4 ขั้นตอน

วีดีโอ: ปลั๊กอัจฉริยะควบคุมอุณหภูมิที่เปิดใช้งาน WiFi: 4 ขั้นตอน

วีดีโอ: ปลั๊กอัจฉริยะควบคุมอุณหภูมิที่เปิดใช้งาน WiFi: 4 ขั้นตอน
วีดีโอ: 6 การใช้งานสุดเจ๋ง! ปลั๊กอัจฉริยะ Smart Plug ใช้ทำอะไรได้บ้าง |How to use SMART OUTLET Daddy's Tips 2024, กรกฎาคม
Anonim
ปลั๊กอัจฉริยะควบคุมอุณหภูมิที่เปิดใช้งาน WiFi
ปลั๊กอัจฉริยะควบคุมอุณหภูมิที่เปิดใช้งาน WiFi

ในชุดคำสั่งนี้ เราจะมาดูวิธีสร้างโพรบวัดอุณหภูมิที่เปิดใช้งาน WiFi โดยใช้ ESP8266 แบบง่ายสำหรับการยกของหนัก และเซ็นเซอร์อุณหภูมิ/ความชื้น DHT11 เราจะใช้แผงวงจรที่ฉันสร้างขึ้นและวางจำหน่ายในร้านค้าดีบุกของช่องหากคุณต้องการซื้อ

เริ่มต้นด้วยรายการวัสดุที่คุณต้องการ:

โมดูล WiFi ESP8266

amzn.to/2pkGPoa

เซ็นเซอร์ DHT11

amzn.to/2phwwfhO

TP-Link Smart Plug

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 ที่คุณกำลังเชื่อมต่อ

รหัสผ่าน: รหัสผ่าน WiFi

เมื่อคุณกรอกโค้ดด้านล่างนี้แล้ว คุณสามารถคอมไพล์และตรวจสอบข้อผิดพลาด และหากมีข้อผิดพลาด 0 รายการ คุณอาจแฟลชไปที่ 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 (ชื่อของคุณ.duckdns.org) ในช่องนี้

#define mqtt_user "" // ป้อนชื่อผู้ใช้ MQTT ของคุณ #define mqtt_password "" // ป้อนรหัสผ่านของคุณ #define MQTT_SENSOR_TOPIC "ha/bedroom_temp" // ป้อนหัวข้อสำหรับ MQTT ของคุณ

// Wifi: SSID และรหัสผ่าน

const ถ่าน* ssid = ""; const ถ่าน* รหัสผ่าน = "";

//ตั้งค่า DHT

DHT_Unified dht(DHTPIN, DHTTYPE); uint32_t ล่าช้าMS;

WiFiClient wifiClient;

ไคลเอนต์ PubSubClient (wifiClient);

// เรียกใช้ฟังก์ชันเพื่อเผยแพร่อุณหภูมิและความชื้น

เป็นโมฆะ publishData (float p_temperature) { // สร้างวัตถุ JSON // doc: https://github.com/bblanchon/ArduinoJson/wiki/API%20Reference StaticJsonBuffer jsonBuffer; JsonObject& root = jsonBuffer.createObject(); // INFO: ข้อมูลต้องถูกแปลงเป็นสตริง ปัญหาเกิดขึ้นเมื่อใช้ floats… //แปลงเป็นฟาเรนไฮต์ 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) { }

เป็นโมฆะเชื่อมต่อใหม่ () {

// วนซ้ำจนกว่าเราจะเชื่อมต่อใหม่ในขณะที่ (!client.connected()) { Serial.print("INFO: พยายามเชื่อมต่อ MQTT…"); // พยายามเชื่อมต่อ if (client.connect ("ESPBlindstl", mqtt_user, mqtt_password)) { Serial.println ("INFO: เชื่อมต่อแล้ว"); } อื่น ๆ { Serial.print ("ข้อผิดพลาด: ล้มเหลว 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()); // เริ่มต้นการเชื่อมต่อ MQTT client.setServer(mqtt_server, 1883); client.setCallback(โทรกลับ);

// เริ่มต้นเซ็นเซอร์ DHT

dht.begin(); Serial.println ("DHT11 Unified Sensor Data");

//พิมพ์รายละเอียดเซ็นเซอร์อุณหภูมิ

sensor_t เซ็นเซอร์; dht.temperature().getSensor(&เซ็นเซอร์); Serial.println("-----------------------------"); Serial.println("อุณหภูมิ"); Serial.print ("เซ็นเซอร์: "); Serial.println(sensor.name); Serial.print ("เวอร์ชันไดรเวอร์: "); 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 ("ความละเอียด: "); Serial.print(เซ็นเซอร์.ความละเอียด); Serial.println(" *C"); Serial.println("-----------------------------"); // พิมพ์รายละเอียดเซ็นเซอร์ความชื้น dht.humidity().getSensor(&เซ็นเซอร์); Serial.println("-----------------------------"); Serial.println("ความชื้น"); Serial.print ("เซ็นเซอร์: "); Serial.println(sensor.name); Serial.print ("เวอร์ชันไดรเวอร์: "); 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 ("ความละเอียด: "); Serial.print(เซ็นเซอร์.ความละเอียด); Serial.println("%"); Serial.println("-----------------------------");

//ตั้งค่าการหน่วงเวลาระหว่างการอ่านเซ็นเซอร์ตามรายละเอียดของเซ็นเซอร์

delayMS = sensor.min_delay / 1000; }

วงโมฆะ (เป็นโมฆะ) {

อุณหภูมิลอยตัว;

ถ้า (!client.connected())

{ เชื่อมต่อใหม่ (); }

ล่าช้า (delayMS);

// รับเหตุการณ์อุณหภูมิและพิมพ์ค่าของมัน

เหตุการณ์ sensors_event_t; dht.temperature().getEvent(&เหตุการณ์); if (isnan (event.temperature)) { Serial.println ("ข้อผิดพลาดในการอ่านอุณหภูมิ!"); อุณหภูมิ = 0.00; } อื่น ๆ { อุณหภูมิ = เหตุการณ์ อุณหภูมิ; 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 สำหรับสิ่งนี้ คุณจะต้องเพิ่มการกำหนดค่าต่อไปนี้ในไฟล์ configuration.yaml ที่อยู่ในโครงสร้างโฟลเดอร์ /home/homeassistant/.homeassistant บนอุปกรณ์ที่คุณติดตั้งไว้

เมื่อเพิ่มสิ่งนี้ลงในการกำหนดค่าผู้ช่วยในบ้านของคุณเสร็จแล้ว คุณจะต้องรีสตาร์ทซอฟต์แวร์ผู้ช่วยในบ้านเพื่อให้การเปลี่ยนแปลงมีผล

นอกจากนี้ฉันจะใช้สมาร์ทปลั๊ก TP-LINK สำหรับอุปกรณ์สวิตช์และคำจำกัดความอยู่ด้านล่างในไฟล์การกำหนดค่า ที่อยู่ IP ที่ใช้สำหรับอุปกรณ์คือที่อยู่ที่คุณตั้งค่าสำหรับการจอง DHCP ในขั้นตอนก่อนหน้า

การกำหนดค่านี้สามารถพบได้ที่ repo github ต่อไปนี้:

mqtt:switch: - แพลตฟอร์ม: tplink ชื่อ: Bedroom Heater host: 192.168.2.11

เซ็นเซอร์ 1:

แพลตฟอร์ม: mqtt state_topic: 'ha/bedroom_temp' ชื่อ: Bedroom Temp unit_of_measurement: '°F' value_template: '{{ value_json.temperature }}'

ระบบอัตโนมัติ:

- นามแฝง: _Temp Bedroom Temp ทริกเกอร์สูง: - แพลตฟอร์ม: numeric_state entity_id: sensor. Bedroom_Temp ด้านบน: 73

การกระทำ:

บริการ: homeassistant.turn_off entity_id: switch. Bedroom_Heater

- นามแฝง: _Temp Bedroom Temp Low

ทริกเกอร์: - แพลตฟอร์ม: numeric_state entity_id: sensor. Bedroom_Temp ด้านล่าง: 73 การกระทำ: บริการ: homeassistant.turn_on entity_id: switch. Bedroom_Heater

ขั้นตอนที่ 4: ขั้นตอนสุดท้าย

Image
Image
ขั้นตอนสุดท้าย
ขั้นตอนสุดท้าย
ขั้นตอนสุดท้าย
ขั้นตอนสุดท้าย

ด้วยการกำหนดค่าผู้ช่วยในบ้านและรหัส Arduino ของคุณ คุณก็พร้อมที่จะเปิดใช้งานทั้งระบบ ดังนั้น ให้เสียบปลั๊กฮีตเตอร์/พัดลม/คูลเลอร์ของคุณเข้ากับปลั๊กอัจฉริยะ และเสียบปลั๊กอัจฉริยะ เมื่อพร้อมแล้ว คุณจะต้องเสียบที่ชาร์จ USB ขนาดเล็ก จากนั้นใช้หัววัดอุณหภูมิที่เปิดใช้งาน WiFi เมื่อทุกอย่างออนไลน์แล้ว คุณควรดูแดชบอร์ดผู้ช่วยในบ้านและดูอุณหภูมิใหม่ที่กำลังรายงาน

ขอบคุณมากสำหรับความช่วยเหลือและการสนับสนุนของคุณ อย่าลืมกดไลค์และมาเยี่ยมชมช่องที่ https://www.youbue.com/misperry และดูว่าเรามีอะไรให้คุณบ้าง ตรวจสอบให้แน่ใจว่าคุณสมัครและแชร์กับเพื่อน ๆ เพื่อช่วยช่อง

แนะนำ: