สารบัญ:

รังเครื่องควบคุมอุณหภูมิเครื่องเก่าของคุณ: 4 ขั้นตอน (พร้อมรูปภาพ)
รังเครื่องควบคุมอุณหภูมิเครื่องเก่าของคุณ: 4 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: รังเครื่องควบคุมอุณหภูมิเครื่องเก่าของคุณ: 4 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: รังเครื่องควบคุมอุณหภูมิเครื่องเก่าของคุณ: 4 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: แนะนำหลักการทำงาน และวิธีการต่อใช้งาน เครื่องควบคุมอุณหภูมิ REX C100 2024, พฤศจิกายน
Anonim
Image
Image
เทอร์โมสตัททำงานอย่างไร
เทอร์โมสตัททำงานอย่างไร

ระบบทำความร้อนในบ้านของฉันน่าจะเก่าพอๆ กับตัวบ้าน มันมีอายุประมาณ 30 ปี ซึ่งถือว่าดีในแง่ของอายุบ้าน แต่ค่อนข้างติดอยู่ในยุคน้ำแข็งเท่าที่เกี่ยวข้องกับเทคโนโลยี มี 2 ปัญหาหลักในการแก้ปัญหาเชิงพาณิชย์:

  • ราคาต้องห้าม
  • สินค้าเป็นบริการ

เราทุกคนจำสิ่งที่เกิดขึ้นกับ Revolv ได้ และฉันไม่กระตือรือร้นที่จะให้สิ่งนี้เกิดขึ้นกับฉันในช่วงกลางฤดูหนาว ด้วยเหตุนี้ ฉันขอนำเสนอตัวควบคุม NEST-Alike ที่ดูน่าสงสัยแต่ใช้งานได้จริงสำหรับตัวควบคุมอุณหภูมิเก่าของคุณ ไม่ต้องกังวล ฉันกำลังวางแผนที่จะเพิ่มตู้ที่ดีกว่านี้ในเร็วๆ นี้!

คุณสมบัติ:

  • ความสามารถในการใช้เทอร์โมสตัทที่มีอยู่ (ในกรณีที่ภรรยาคร่ำครวญถึงเรื่องนี้)
  • การเข้าถึงระยะไกล
  • โหมด AWAY
  • ตัวบ่งชี้อุณหภูมิที่เหมาะสม
  • ทำงานร่วมกับ Alexa

เร็วๆ นี้ (ตรวจสอบที่นี่สำหรับการอัปเดต)

  • หน้าแรกของ Google
  • Google ปฏิทิน
  • เซ็นเซอร์หลายตัว
  • ตัวควบคุมหม้อน้ำ
  • การบูรณาการ ITT
  • การสนับสนุนทาซเคอร์
  • คำขอ
  • ตู้ที่ดูดีขึ้นมาก

ขั้นตอนที่ 1: ตัวควบคุมอุณหภูมิทำงานอย่างไร

เทอร์โมสตัททำงานอย่างไร
เทอร์โมสตัททำงานอย่างไร
เทอร์โมสตัททำงานอย่างไร
เทอร์โมสตัททำงานอย่างไร

ตัวควบคุมอุณหภูมิน่าจะเชื่อมต่อกับแรงดันสูง! อย่าพยายามทำอะไรเว้นแต่คุณจะแน่ใจว่าวงจรปิดอยู่ คุณสามารถทำร้ายตัวเองและทำให้เกิดความเสียหายต่ออุปกรณ์ที่เชื่อมต่อ พิจารณาปรึกษาช่างไฟฟ้าที่มีคุณสมบัติเหมาะสมเพื่อความปลอดภัยของคุณ

เทอร์โมสตัทของ Honeywell เป็นหน่วยติดผนังซึ่งขับเคลื่อนโดยแหล่งจ่ายไฟหลัก (พื้นฐาน Sonoff ต้องการขั้นต่ำ 90V วงจรของฉันมี 230V) กล่องเชื่อมต่อกับหน่วยควบคุมหลัก (ซึ่งเป็นกล่องขั้นสูง) และจะส่งสัญญาณเมื่ออุณหภูมิลดลงต่ำกว่าระดับเป้าหมาย แม้ว่าหน่วยของคุณอาจแตกต่างกัน แต่หลักการก็เหมือนกันมากที่สุด หากคุณมีสายไฟ 3 เส้นและไม่มีการเชื่อมต่อวิทยุระหว่างหน่วยติดผนัง – นี่คือบทช่วยสอนสำหรับคุณ

ฉันรู้ว่าเทอร์โมสแตทแบบ 3 สายทำงานอย่างไรในหลักการ ซึ่งไม่ได้หยุดฉันจากการเป่าฟิวส์โดยการลัดวงจร 2 สายโดยไม่ได้ตั้งใจ! ฉันมีสายไฟ 3 เส้นต่อเข้ากับตัวเครื่อง (สายที่ 4 คือสายดิน) ตัวควบคุมอุณหภูมิ Honeywell ของฉันไม่ใช่แบบไร้สาย ฉันจึงสามารถใช้ Sonoff Basic เพื่อเปลี่ยนสัญญาณได้ ได้เวลาแยกชิ้นส่วนและดูว่าสัญญาณถูกส่งไปยังยูนิตอย่างไร เมื่อตรวจสอบอย่างใกล้ชิดแล้ว เทอร์มินัลจะเชื่อมต่อด้วยวิธีต่อไปนี้:

  1. (สีน้ำเงิน) – กราวด์
  2. (สีเหลือง) – สัญญาณ เมื่อดึงขึ้นสูง เครื่องทำความร้อนจะเปิดขึ้น
  3. ไม่ได้ใช้งาน
  4. (สีแดง) – สายสดที่ใช้ดึงสัญญาณสูง

เพื่อให้บรรลุเป้าหมาย ฉันต้องลัดวงจรสายสัญญาณสดด้วยสายสัญญาณเมื่อฉันต้องการเปิดเครื่องทำความร้อน หากคุณมีเทอร์โมสตัทที่เชื่อมต่อในลักษณะเดียวกัน คุณโชคดีเพราะ Sonoff Basic ก็เพียงพอที่จะทำเคล็ดลับนี้

ขั้นตอนที่ 2: เตรียม Sonoff Basic Ready

เตรียม Sonoff Basic ให้พร้อม
เตรียม Sonoff Basic ให้พร้อม
เตรียม Sonoff Basic ให้พร้อม
เตรียม Sonoff Basic ให้พร้อม
เตรียม Sonoff Basic ให้พร้อม
เตรียม Sonoff Basic ให้พร้อม

ก่อนที่เราจะเริ่มเชื่อมต่อสายไฟ เราต้องเพิ่มเซ็นเซอร์อุณหภูมิ (DHT11) ลงในส่วนผสม ตรวจสอบให้แน่ใจว่าคุณมีเฟิร์มแวร์ Tasmota ที่แฟลชไปยังอุปกรณ์ Sonoff ของคุณ (ฉันมีคู่มือการกะพริบที่ยอดเยี่ยมที่นี่) และ Sonoff ที่เปิดใช้งาน Tasmota ของคุณได้รับการกำหนดค่าอย่างถูกต้อง (ซึ่งฉันครอบคลุมอยู่แล้ว) ตอนนี้ สิ่งที่คุณเหลือคือเชื่อมต่อเซ็นเซอร์ DHT11 กับ Sonoff และกำหนดค่าสำหรับการรายงานอุณหภูมิ

DHT11 มาพร้อมกับ 3 พินแบบมีสาย: สัญญาณ - GPIO14Vcc - 3.3VGND - GND

ฉันเจาะรูเข้าไป ฉันไม่ได้สนใจว่าตอนนี้มันจะเป็นอย่างไร ทั้งหมดที่ฉันต้องการคือข้อพิสูจน์ของแนวคิดและการตรวจสอบ ฉันจะสร้างกล่องที่สวยงามและแวววาวเมื่อเครื่องพิมพ์ 3D ของฉันมาถึง ฉันให้ความสนใจเป็นพิเศษกับวิธีการต่อสาย Sonoff เนื่องจากฉันต้องตรวจสอบให้แน่ใจว่าสายสดเชื่อมต่อกับสายสัญญาณที่ปลายอีกด้านของอุปกรณ์ Sonoff หน่วย Honeywell มีตัวต้านทานโหลด (R) อยู่ภายในซึ่งจำกัดกระแส ในขณะที่วงจรได้รับการป้องกันโดยฟิวส์ 3A การจับคู่ความต้านทานเดียวกันเพื่อการป้องกันพิเศษนั้นนับว่าฉลาด เมื่อฉันเตรียมสายไฟแล้ว ก็ถึงเวลาปิดสวิตช์หลักและต่อสาย Sonoff กลับ

Sonoff Tasmota - เทอร์โมสตัทของ Honeywell

INPUT Live - เทอร์มินัลที่ 4 Live

INPUT GND - เทอร์มินัลที่ 1 GND

สัญญาณขาออก - สัญญาณขั้วที่ 2

ฉันได้กล่าวไว้ก่อนหน้านี้ว่าตอนนี้ฉันจะไม่เครียดกับรูปลักษณ์ของสิ่งนี้ ภรรยาได้รับความเชื่อมั่นและฉันสามารถมุ่งเน้นไปที่การทำงานและล้างข้อบกพร่องที่จะเกิดขึ้น ข้อดีคือเทอร์โมสตัทแบบเดิมยังใช้งานได้ ถ้าฉันเปิดใช้งาน มันจะแทนที่ Sonoff Tasmota ตามหนึ่ง นี่ควรเป็นตัวสำรองที่ดีสำหรับเหตุการณ์ที่ไม่คาดคิด

ขั้นตอนที่ 3: NodeRED

NodeRED
NodeRED
NodeRED
NodeRED
NodeRED
NodeRED

โปรดทราบว่าวิดีโออาจมีการอ้างอิง NodeRed ที่เก่ากว่า ฉันกำลังปรับปรุงการออกแบบอย่างต่อเนื่อง นี่เป็นการเปลี่ยนแปลงเล็กน้อยและไฟล์บทความจะได้รับการอัปเดตอยู่เสมอ

ฉันเจอการออกแบบนี้ทางออนไลน์ มันดูดีมาก แต่เมื่อตรวจสอบอย่างใกล้ชิด วิดเจ็ตนี้ไม่เหมาะกับ NodeRED จริงๆ ต้องมีการตั้งค่าเพย์โหลด 5 รายการ ซึ่งไม่ใช่วิธีการทำงานของโหนดที่เหมือนกัน ฉันต้องใช้เวลาพอสมควรในการค้นหาวิธีที่ดีที่สุดในการส่งข้อมูลทั้งหมดนั้นไปเพื่ออัปเดตวิดเจ็ตและทำให้มันทำงานต่อไปได้ ฉันแน่ใจว่าเมื่อเวลาผ่านไปฉันจะใช้เวลามากขึ้นในการออกแบบเพื่อที่ฉันจะได้ผลักดันการอัปเดตที่จำเป็นทั้งหมดด้วยวัตถุ msg เดียว สำหรับตอนนี้มันคือสิ่งที่มันเป็น

กระแสอุณหภูมิ

DHT11 รายงานทุก ๆ X วินาทีกลับไปยังเซิร์ฟเวอร์ NodeRED ฉันเพิ่มความถี่นี้ผ่านคอนโซลของ Tasmota เพียงเรียกใช้คำสั่งเพื่อตั้งค่าความถี่เป็นวินาที:

TelePeriod ตั้งระยะเวลาการวัดและส่งข้อมูลทางไกลระหว่าง 10 ถึง 3600 วินาที

การดำเนินการนี้ทำเพื่อการทดสอบเป็นส่วนใหญ่ เนื่องจากฉันไม่ต้องการรอสักครู่เพื่อดูว่าการแก้ไขข้อผิดพลาดของฉันได้ผลหรือไม่ การรักษาความถี่ให้สูงจะทำให้ระบบทำความร้อนติดไฟบ่อยขึ้นในช่วงเวลาที่สั้นลง ดังนั้นอย่าตั้งไว้ที่ 10 วินาทีสำหรับวัตถุประสงค์อื่นนอกเหนือจากการทดสอบ โหนด MQTT ดึงข้อมูลจาก:

sonoff/เทเล/เซ็นเซอร์

และเก็บข้อมูลที่เป็นประโยชน์มากที่สุดในวัตถุต่อไปนี้:

msg.payload. DHT11. Temperature msg.payload. DHT11.ความชื้น

เพื่อจำกัดข้อผิดพลาด ฉันได้เพิ่มโหนดที่ราบรื่นเพื่อเฉลี่ยผลลัพธ์และอัปเดตตัวแปรโฟลว์: NodeRED:

โหนดฟังก์ชัน - อัปเดต 'TempAmbient'

flow.set('TempAmbient', msg.payload. DHT11. Temperature); return msg;

อัปเดตวิดเจ็ต

ฉันตัดสินใจว่า 5 วินาทีเป็นอัตราการรีเฟรชที่ดี ดังนั้นฉันจึงผลักดันค่าที่จำเป็นทั้งหมดด้วยความถี่นี้ ข้อยกเว้นเพียงอย่างเดียวคือตัวเลื่อนซึ่งตอบสนองทันทีด้วยเหตุผลที่ชัดเจน

แต่ละโหนดที่สอดคล้องกันจะส่งเพย์โหลดที่มีหัวข้อที่กำหนดไปยังวิดเจ็ตที่เหมือนกันที่ซ้อนกัน

  • สี (ความร้อน | ความเย็น * | ปิด & hvac_state)
  • ใบไม้ (จริง|เท็จ & has_leaf)
  • ห่างออกไป (จริง | เท็จ & ห่างออกไป)
  • อุณหภูมิแวดล้อม (ตัวเลข & ambient_temperature)
  • อุณหภูมิเป้าหมาย (ตัวเลข & target_temperature)

*ไม่ได้ใช้งาน

NodeRED: โหนดฟังก์ชัน - อัปเดตวิดเจ็ต

สี

x = flow.get('TempTarget'); //targetz = flow.get('TempAmbient'); //บรรยากาศ

ถ้า (z = x){

flow.set('heatingState', "ปิด"); flow.set('สวิตช์ทำความร้อน', "ปิด"); } msg.payload = z; msg.topic = "ambient_temperature"; กลับผงชูรส;

ใบไม้

x = flow.get('TempAmbient'); if (x > 17 && x < 23){ flow.set('leaf', true); msg.payload = จริง; msg.topic = "has_leaf"; กลับผงชูรส; } อื่น{flow.set('ใบไม้', เท็จ); msg.payload = เท็จ; msg.topic = "has_leaf"; กลับผงชูรส; }

ลบล้างสี

x = flow.get('ไม่อยู่'); ถ้า (x === จริง){ msg.topic = "hvac_state"; msg.payload = "ปิด"; กลับผงชูรส; }

msg.topic = "hvac_state";

msg.payload = flow.get('สถานะความร้อน');

กลับผงชูรส;

ห่างออกไป

x = flow.get('ไม่อยู่'); ถ้า (x === จริง){ flow.set('heatingSwitch', "OFF"); flow.set('heatingState', "ปิด"); }

msg.topic = "ไม่อยู่";

msg.payload = flow.get('ไม่อยู่'); กลับผงชูรส;

อุณหภูมิเป้าหมาย

if (msg.topic === "update"){ msg.topic = "target_temperature"; msg.payload = flow.get('TempTarget'); กลับผงชูรส; }

if (msg.command === "SetTargetTemperatureRequest") {

flow.set('ห่างออกไป', เท็จ); msg.topic = "target_temperature"; flow.set('TempTarget', msg.payload); }

if (msg.topic === "ตัวเลื่อน") {

flow.set('ห่างออกไป', เท็จ); msg.topic = "target_temperature"; flow.set('TempTarget', msg.payload); }

if (msg.command === "GetTemperatureReadingRequest"){}

กลับผงชูรส;

อย่างที่คุณเห็น ฉันเลือกไม่ใช้ตัวแปรโฟลว์ ดังนั้นฉันจึงสามารถจำค่าได้ตลอดเวลา ฉันมีโฟลว์การดีบักซึ่งโดยทั่วไปจะอ่านค่าที่เก็บไว้ทั้งหมด

  • ‘TempAmbinet‘– เก็บอุณหภูมิปัจจุบัน
  • 'TempTarget' - เก็บค่าเป้าหมายชั่วคราว
  • ‘ใบไม้’ – แสดงใบไม้หากต้องการ
  • ‘ไม่อยู่‘– แสดงสถานะไม่อยู่หากจำเป็น
  • 'heatingState' - เปลี่ยนสีของจอแสดงผล
  • 'heatingSwitch' - ควบคุมสถานะของรีเลย์

ความท้าทายคือต้องตรวจสอบให้แน่ใจว่าข้อมูลได้รับการอัปเดตใน "อัปเดต" และเมื่อมีการร้องขอด้วยวิธีการอื่น (Alexa เป็นต้น) นี่คือเหตุผลที่คุณจะเห็นเงื่อนไขต่างๆ ใน JavaScript ทุกครั้งที่อัปเดตค่า จะถูกส่งไปยังตัวแปรโฟลว์และวิดเจ็ตจะรีเฟรช

ตัวเลื่อน

การทดสอบพบว่าจำเป็นต้องมีการอัปเดตตัวเลื่อนเพิ่มเติม (ตัวเลื่อนดันอุณหภูมิเป้าหมาย) สไลเดอร์ส่งเพย์โหลด (หมายเลข) พร้อมหัวข้อที่เกี่ยวข้อง “สไลเดอร์) เมื่อมันถูกย้าย ยิ่งไปกว่านั้น ฉันต้องการให้ตัวเลื่อนอยู่ในตำแหน่งที่ถูกต้อง หากมีอินเทอร์เฟซเว็บหลายรายการ ในการทำเช่นนี้ ทุกๆ 5 วินาที ฉันเพียงแค่อัปเดตตำแหน่งตัวเลื่อนเป็นอุณหภูมิเป้าหมายปัจจุบัน

NodeRED: โหนดฟังก์ชัน - ตัวเลื่อนอัปเดต '

msg.payload = flow.get('TempTarget');ส่งคืน msg;

การควบคุมรีเลย์

ตัวควบคุมรีเลย์นั้นเรียบง่าย ใช้ (สำหรับตอนนี้) สองอินพุต จริง|เท็จของ Alexa และการโต้ตอบที่ตามหลังการอัปเดตตัวแปรโฟลว์ "สวิตช์ทำความร้อน" ไม่จำเป็นต้องมีการดำเนินการทันที ดังนั้นเพื่อความเรียบง่าย มันทำงานบนความถี่การอัปเดต 5 วินาทีเดียวกันกับขั้นตอนที่เหลือ

รีเลย์เชื่อมต่อผ่าน MQTT โหนดกำลังโพสต์คำสั่ง ON|OFF ไปที่หัวข้อ:

sonoff/cmnd/POWER1

โหนดฟังก์ชันยอมรับจริง|เท็จจาก Alexa และยังเปลี่ยนสถานะของอินพุตตามตัวแปรการไหลของ 'heatingSwitch'

NodeRED: โหนดฟังก์ชัน - รีเลย์ควบคุม'

if (msg.command === "TurnOffRequest"){ msg.payload = "OFF"; กลับผงชูรส; }

if (msg.command === "TurnOnRequest"){

msg.payload = "เปิด"; flow.set('TempTarget', 21); กลับผงชูรส; } if (msg.topic === "update"){ msg.payload = flow.get('heatingSwitch'); } ส่งคืน msg;

การรวม Alexa

นี่เป็นอุปกรณ์แรกที่ฉันต้องปิด "ตอบรับอัตโนมัติ" แทนที่จะสมมติว่ามีการตอบสนองโดยอัตโนมัติ ฉันได้สร้างคำตอบขึ้นมาเนื่องจากฉันต้องการความสามารถในการค้นหาอุณหภูมิที่ตั้งไว้ โดยหลักการแล้ว msg.payload = true|false จะระบุว่าคำขอสำเร็จหรือไม่ และเทมเพลตที่พบที่นี่จะจัดการส่วนที่เหลือเอง หากคุณยังใหม่กับ Alexa และ NodeRed อย่าลืมอ่านสิ่งนี้

ฉันตัดสินใจส่งต่อการรับทราบต่างหาก (ฉันรู้ว่านี่ไม่ใช่วิธีที่ดีที่สุด) เพื่อให้สามารถควบคุมทุกอย่างได้ดีขึ้นเล็กน้อย ควรให้การตอบสนองแต่ละครั้งอย่างเหมาะสมที่ส่วนท้ายของสายการบังคับบัญชา ของฉันมีความเสี่ยงที่จะไม่ส่งคืนข้อผิดพลาดหากสิ่งเหล่านี้เกิดขึ้น โปรดทราบว่าเพื่อให้สอดคล้องกัน ฉันจะอัปเดตตัวแปรเท่านั้น ในขณะที่ลูปการรีเฟรช ดันค่าใหม่ไปที่วิดเจ็ต

NodeRED: โหนดฟังก์ชัน - ประมวลผลการตอบสนองของ Alexa

// อุณหภูมิเป้าหมายของตัวควบคุมอุณหภูมิคืออะไรif (msg.command === "GetTemperatureReadingRequest"){ x =flow.get('TempTarget'); msg.extra = { "temperatureReading": { "value": x}, "applianceResponseTimestamp": new Date().toISOString()}; msg.payload = จริง; กลับผงชูรส; } // ตั้งค่าอุณหภูมิเป็น (ไม่ต่ำกว่า 10 หรือมากกว่า 30) if (msg.command === "SetTargetTemperatureRequest"){ if (msg.payload 30) { var range = { min: 10.0, max: 30.0 } msg.payload = เท็จ; msg.extra = ช่วง; } อื่น ๆ { msg.extra = { targetTemperature: { ค่า: msg.payload } }; msg.payload = จริง; } ส่งคืน msg; } // เปิดใช้งานหาก (msg.command === "TurnOnRequest"){ msg.payload = true; flow.set('ห่างออกไป', เท็จ); flow.set('TempTarget', 21); กลับผงชูรส; } // ปิดถ้า (msg.command === "TurnOffRequest"){ msg.payload = true; flow.set('ออกไป', จริง); กลับผงชูรส;

ขั้นตอนที่ 4: บทสรุป

บทสรุป
บทสรุป

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

  • NodeRED สำหรับผู้เริ่มต้น
  • การรักษาความปลอดภัย NodeRED

นอกจากนี้ หากคุณต้องการทราบเกี่ยวกับการอัปเดตของโปรเจ็กต์นี้ โปรดติดตามฉันบนแพลตฟอร์มที่คุณเลือก:

  • เฟสบุ๊คก็ได้
  • ทวิตเตอร์
  • อินสตาแกรม
  • YouTu be

และถ้าคุณรู้สึกอยากซื้อกาแฟให้ฉันหรือสนับสนุนฉันอย่างต่อเนื่องกว่านี้:

  • Paypal
  • Patreon

ฉันหวังว่าคุณจะสนุกกับโครงการ!

แนะนำ: