สารบัญ:

อุณหภูมิ HRV เป็น OpenHAB ผ่าน ESP8266 (ตัวอย่างรหัสซีเรียล!): 3 ขั้นตอน
อุณหภูมิ HRV เป็น OpenHAB ผ่าน ESP8266 (ตัวอย่างรหัสซีเรียล!): 3 ขั้นตอน

วีดีโอ: อุณหภูมิ HRV เป็น OpenHAB ผ่าน ESP8266 (ตัวอย่างรหัสซีเรียล!): 3 ขั้นตอน

วีดีโอ: อุณหภูมิ HRV เป็น OpenHAB ผ่าน ESP8266 (ตัวอย่างรหัสซีเรียล!): 3 ขั้นตอน
วีดีโอ: GrowController 2024, กรกฎาคม
Anonim
อุณหภูมิ HRV เป็น OpenHAB ผ่าน ESP8266 (ตัวอย่างรหัสซีเรียล!)
อุณหภูมิ HRV เป็น OpenHAB ผ่าน ESP8266 (ตัวอย่างรหัสซีเรียล!)
อุณหภูมิ HRV เป็น OpenHAB ผ่าน ESP8266 (ตัวอย่างรหัสซีเรียล!)
อุณหภูมิ HRV เป็น OpenHAB ผ่าน ESP8266 (ตัวอย่างรหัสซีเรียล!)
อุณหภูมิ HRV เป็น OpenHAB ผ่าน ESP8266 (ตัวอย่างรหัสซีเรียล!)
อุณหภูมิ HRV เป็น OpenHAB ผ่าน ESP8266 (ตัวอย่างรหัสซีเรียล!)

HRV - ไร้สายไปยัง OpenHAB

คำแนะนำนี้มีไว้สำหรับผู้ที่มีระบบ HRV (การระบายอากาศหมุนเวียนด้วยความร้อน) โดยเฉพาะ - แม้ว่าบางส่วนของแผงวงจร, การกำหนดค่า openhab หรือรหัส Arduino (เช่นการอ่านข้อมูลอนุกรม TTL) อาจมีประโยชน์สำหรับโครงการของคุณเองหรือให้บริการดีสำหรับการเรียนรู้ ถือว่าคุณมีความรู้ที่เหมาะสมเกี่ยวกับ Arduino IDE และชิป ESP8266 คืออะไร

บทนำ

ต่อไปนี้จะอธิบายวิธีสร้าง ESP8266 ที่เชื่อมต่อกับระบบ HRV และส่งอุณหภูมิหลังคาและโรงเรือน อุณหภูมิแผงควบคุม และความเร็วพัดลมผ่านข้อความ MQTT ไปยัง OpenHAB สิ่งนี้ออกแบบมาเพื่อทำงานร่วมกับบอร์ด ESP8266-01 (แม้ว่าจะใช้ได้กับรุ่น ESP8266 3.3V ใดก็ตาม) หากคุณมีระบบประเภท HRV ที่คล้ายกันจากผู้จำหน่ายรายอื่น คุณจะต้องตรวจสอบว่าข้อมูลถูกส่งเป็น TTL แบบอนุกรมหรือไม่ และหากเป็นเช่นนั้น, โครงสร้างข้อมูลที่ส่งเป็น

OpenHAB และยุง

รหัส ESP8266 ถูกเขียนขึ้นโดยเฉพาะเพื่อทำงานกับ OpenHAB (ซอฟต์แวร์โอเพ่นซอร์สโฮมออโตเมชั่น) และโบรกเกอร์ MQTT เช่น Mosquitto (โปรโตคอลประเภทการสมัครสมาชิก/เผยแพร่ข้อความที่มีน้ำหนักเบาและเหมาะสำหรับการสื่อสารระหว่างอุปกรณ์) อย่าให้ชื่อหรือ คำย่อทำให้คุณกลัว พวกมันค่อนข้างใช้งานง่ายเมื่อคุณได้รู้ว่ามันทำงานอย่างไร ฉันใช้ OpenHAB กับ NTC C. H. I. P (คอมพิวเตอร์ราคา 9 เหรียญสหรัฐ) อย่างไรก็ตาม หลายคนใช้ Raspberry Pi หรือคล้ายกัน บทช่วยสอนนี้ถือว่าคุณได้ใช้งาน OpenHAB (หากคุณต้องการความช่วยเหลือในการตั้งค่า OpenHAB ให้ทำตามบทความที่ยอดเยี่ยมนี้จากเว็บไซต์ makeuseof) คุณต้องดาวน์โหลดและติดตั้ง Mosquitto (โบรกเกอร์ MQTT) และการเชื่อมโยง OpenHAB ที่เกี่ยวข้อง คุณสามารถติดตั้งสิ่งนี้ที่อื่นบนเครือข่ายของคุณ แต่คนส่วนใหญ่เพียงแค่ติดตั้งสิ่งนี้ในเครื่องเดียวกับ OpenHAB เพื่อให้ง่าย

ในการติดตั้ง Mosquitto ให้ไปที่ลิงก์นี้ จากนั้นเลือกประเภทของอุปกรณ์ที่คุณใช้และปฏิบัติตามคำแนะนำ เนื่องจาก C. H. I. P ใช้งาน Debian (Jessie) คุณจึงสามารถปฏิบัติตามคำแนะนำของ Raspberry Pi ได้ หากคุณใช้ C. H. I. P สำหรับอุปกรณ์ Home Automation ของคุณ (โปรดทราบว่า เป็นการดีที่สุดที่จะกำหนดค่า CHIP ใหม่ให้บูตจาก CLI มีคำแนะนำสำหรับสิ่งนี้)

เมื่อคุณเปิดใช้งาน OpenHAB และ Mosquitto แล้ว คุณต้องเตรียม Arduino IDE สำหรับ ESP8266 และโค้ด ขั้นแรก คุณต้องเพิ่มไลบรารี "PubSubClient" ใน Arduino IDE จากเมนูไปที่ Sketch, Include Library, Manage Libraries ในกล่องค้นหาตัวกรอง ให้พิมพ์ PubSubClient จากนั้นไฮไลต์ผลการค้นหาแล้วคลิกเพื่อติดตั้ง (ในขณะที่เขียน เวอร์ชันล่าสุดคือ 2.6.0) คุณจะ ยังต้องเพิ่มบอร์ด ESP8266 ให้กับ Arduino IDE ซึ่งสามารถทำได้โดยทำตามคำแนะนำที่นี่

สิ่งนี้ให้อะไรฉัน

ตามที่ระบุไว้ก่อนหน้านี้ โปรเจ็กต์นี้จะช่วยให้คุณดูหลังคาแผงควบคุม HRV บ้าน อุณหภูมิแผงควบคุม และความเร็วพัดลมใน OpenHAB GUI (แบบเรียลไทม์!) รูปภาพแสดงสิ่งที่ดูเหมือนจาก iPhone ของฉัน บวกกับกราฟของคุณ จะได้รับโดยการเจาะลงไปในอุณหภูมิต่างๆ

ในการรับกราฟ คุณจะต้องติดตั้งและกำหนดค่าการผูก RRD4J ด้วย (ซึ่งตรงไปตรงมามาก) ซึ่งจะทำให้คุณสามารถคลิกที่ 'House' หรือ 'Roof' และรับประวัติอุณหภูมิ HRV สำหรับแต่ละรายการในอดีต ชั่วโมง วัน หรือสัปดาห์ (หรือนานกว่านั้น ถ้าคุณเปลี่ยนการกำหนดค่าให้เหมาะสม) รูปภาพที่แสดงอยู่ในเซลเซียส และเห็นได้ชัดว่าฤดูหนาวในซีกโลกใต้เมื่อฉันทำสิ่งนี้!

นอกจากนี้ ฉันได้สร้างมุมมอง OpenHAB ที่แสดงการเปรียบเทียบระหว่างอุณหภูมิภายนอก (โดยส่วนเสริมการผูกสภาพอากาศ ในกรณีของฉันโดยใช้ Wunderground) กับอุณหภูมิหลังคาและบ้านโดยคลิกที่ตัวเลือก 'การควบคุม' (รูปภาพแสดงกราฟด้วย บ้าน หลังคา และอุณหภูมิภายนอก) ฉันวางแผนที่จะใช้ข้อมูลนี้ในกฎเพื่อเปิดเครื่องทำความร้อนตามต้องการ เพียงเพิ่มรายการสภาพอากาศลงใน URL รูปภาพของคุณในไฟล์แผนผังเว็บไซต์และรวมไว้ในกราฟเดียวกัน (เช่น: …items=houseTemp, roofTemp, weatherTemp…)

ขั้นตอนที่ 1: ชิ้นส่วนที่จำเป็น / การประกอบ

ชิ้นส่วนที่จำเป็น / การประกอบ
ชิ้นส่วนที่จำเป็น / การประกอบ
ชิ้นส่วนที่จำเป็น / การประกอบ
ชิ้นส่วนที่จำเป็น / การประกอบ
ชิ้นส่วนที่จำเป็น / การประกอบ
ชิ้นส่วนที่จำเป็น / การประกอบ

คุณจะต้องมีชิ้นส่วนดังต่อไปนี้

  • ตัวแยกสัญญาณ RJ11 (ซึ่งจะแยกสัญญาณจากตัวควบคุมบนหลังคา ไปยังแผงควบคุม และ ESP8266)
  • สายแพและปลั๊ก RJ11 (เพื่อเรียกใช้สายจากตัวแยกสัญญาณไปยัง ESP8266)
  • ESP8266-01 (รุ่น 3.3V อื่น ๆ ควรใช้งานได้)
  • ตัวแปลงระดับลอจิก TTL (เพื่อเปลี่ยนข้อมูลจาก 5V -> 3.3V)
  • ตัวควบคุมแรงดันไฟฟ้า AMS1117 3.3V (หรือคล้ายกัน เพื่อเปลี่ยนแรงดันไฟฟ้าจาก HRV 5V -> 3.3V เป็นกำลังไฟ ESP8266)
  • 1N5817 schottky diode (ด้วยเหตุผลบางอย่างสิ่งนี้ช่วยหยุดการรีเซ็ตแผงควบคุม HRV เมื่อเปิดเครื่อง ESP)
  • ตัวต้านทาน 10K ohm (ตัวต้านทานแบบดึงขึ้นระหว่างตัวควบคุมแรงดันไฟฟ้า 3.3 และ ESP CH_PD)
  • ตัวเก็บประจุ 10V 10uF (หรือคล้ายกัน เพื่อทำให้พลังงานขาเข้าจาก HRV เสถียรและเสถียร)
  • ตัวเก็บประจุ 10V 1uF (หรือคล้ายกัน เพื่อทำให้กระแสไฟขาออกคงที่และเสถียรกับ ESP)
  • ปุ่มสไลด์เสริมเพื่อตั้งโปรแกรม ESP (หรือต้องดึง GPIO0 ไปที่ GND ด้วยตนเองเพื่อตั้งโปรแกรม)
  • อะแดปเตอร์ FTDI (ในการเขียนโปรแกรม ESP ให้แปลง USB เป็นซีเรียล)

ประกอบตาม Schematic

ภาพเขียงหั่นขนมแสดงให้เห็นว่าควรประกอบชิ้นส่วนอย่างไร โปรดทราบว่ามีหมุด 6 ตัวที่ห้อยลงมาที่สายแพจากชุดควบคุม HRV บนเพดาน:

พิน 1 และ 6 คือ 5V VCC

พิน 2 และ 5 คือ GND

พิน 3 และ 4 เป็นข้อมูล

คุณจำเป็นต้องใช้พิน 1, 2, 3 และ 6 (พลัง 1 และ 6 VCC ESP8266 และด้านสูงของตัวแปลงลอจิก TTL 2 เป็นพื้นทั่วไปและ 3 สำหรับอ่านข้อมูลอนุกรม TTL)

ตัวแยกสัญญาณที่คุณต้องการจะเป็นตัวแยกสัญญาณ RJ11 เพียงตรวจสอบให้แน่ใจว่าตัวแยกสัญญาณที่หมุดนั้นตรง (เช่น พิน 1 ไปที่พิน 1 พิน 2 ถึงพิน 2 เป็นต้น) โปรดทราบว่าหมุดตัวเมียเพิ่มเติม (เช่น ที่แสดงในภาพ) ใช้สำหรับเชื่อมต่อ FTDI เพื่อตั้งโปรแกรม ESP ใหม่ในภายหลัง และสวิตช์ที่แสดงอยู่ในโหมด "การเขียนโปรแกรม" ตัวเลือกเหล่านี้เป็นทางเลือก แต่แนะนำ (เช่น หากคุณเปลี่ยนรหัสผ่าน WiFi เนื่องจาก WiFi AP และรหัสผ่านถูกตั้งโปรแกรมอย่างหนักในรหัส ซึ่งคุณจะต้องอัปโหลดเมื่อสร้าง ESP8266 ของคุณแล้ว)

ขั้นตอนที่ 2: การอัปโหลดโค้ดและการทดสอบ

กำลังอัปโหลดรหัสและการทดสอบ
กำลังอัปโหลดรหัสและการทดสอบ
กำลังอัปโหลดรหัสและการทดสอบ
กำลังอัปโหลดรหัสและการทดสอบ
กำลังอัปโหลดรหัสและการทดสอบ
กำลังอัปโหลดรหัสและการทดสอบ
กำลังอัปโหลดรหัสและการทดสอบ
กำลังอัปโหลดรหัสและการทดสอบ

การเปลี่ยนแปลงรหัส

ลิงค์ดาวน์โหลดสำรองไปยังโค้ด Arduino ที่นี่

เปิดใน Arduino IDE ตรวจสอบให้แน่ใจว่าได้ติดตั้งบอร์ด ESP เช่นเดียวกับ PubSubClient และคุณได้เลือกบอร์ด ESP8266 (เครื่องมือ, บอร์ด, บอร์ด ESP8266 ทั่วไป) แก้ไขรหัสและเปลี่ยนชื่อ WiFi AP และรหัสผ่านและที่อยู่ IP ของ โบรกเกอร์ MQTT ของคุณ (นี่คือสิ่งเดียวที่คุณควรต้องเปลี่ยน) ดังที่แสดงด้านล่าง คลิกปุ่ม 'ยืนยัน' เพื่อให้แน่ใจว่าคอมไพล์เรียบร้อย จากนั้นตรวจสอบให้แน่ใจว่าได้เลือกพอร์ต COM ที่ถูกต้อง (เครื่องมือ พอร์ต) และอัปโหลดรหัสไปยัง ESP8266 ของคุณ มีบทความมากมายเกี่ยวกับวิธีการทำเช่นนี้ ฉันจะไม่คิดค้นล้อใหม่ที่นี่

//Wifi

const char* ssid = "your_wifi_ssid_here"; const char* password = "your_wifi_password_here"; // MQTT โบรกเกอร์ IPAddress MQTT_SERVER(192, 168, 222, 254);

การทดสอบ MQTT

สำหรับการทดสอบ คุณสามารถปล่อยให้อแด็ปเตอร์ FTDI เชื่อมต่อและเปิด Serial Monitor ใน Arduino IDE คุณจะเห็นข้อความที่พิมพ์ข้อมูลอุณหภูมิในคอนโซล หากคุณต้องการแก้ไขปัญหาข้อความ MQTT ขาเข้าจาก ESP8266 ไปยังโบรกเกอร์ MQTT ของคุณ บนเซิร์ฟเวอร์ Mosquitto ให้เรียกใช้หนึ่งในคำสั่งต่อไปนี้เพื่อสมัครรับข้อความขาเข้า:

mosquitto_sub -d -t openhab/hrv/status

คุณควรเห็นข้อความ PUBLISH ขาเข้าที่เข้ามาจาก ESP8266 ทุกๆ 30 วินาทีหรือมากกว่านั้นด้วยตัวเลข "1" (หมายถึง "ฉันยังมีชีวิตอยู่") หากคุณเห็นค่าคงที่ "0" (หรือไม่มีอะไรเลย) แสดงว่าไม่มีการสื่อสารใดๆ เมื่อคุณเห็นหมายเลข 1 เข้ามา แสดงว่า ESP8266 กำลังสื่อสารกับนายหน้า MQTT (ค้นหา "MQTT Last Will and Testament" สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงาน หรือดูรายการบล็อกที่ดีจริงๆ)

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

mosquitto_sub -d -t openhab/hrv/rooftemp

mosquitto_sub -d -t openhab/hrv/housetemp

mosquitto_sub -d -t openhab/hrv/controltemp

mosquitto_sub -d -t openhab/hrv/fanspeed

คำแนะนำ: สมัครรับอุณหภูมิแผงควบคุมด้านบน จากนั้นกดปุ่มอุณหภูมิบนแผงควบคุมเอง คุณจะเห็นการตั้งค่าอุณหภูมิใหม่เข้ามา

เมื่อคุณต้องบัดกรีสิ่งนี้ PCB ขนาด 3 ซม. x 7 ซม. จะพอดีกับกล่องฝังด้านหลังแผงควบคุม HRV ฉันขอแนะนำให้ทำเช่นนี้เฉพาะในกรณีที่เป็นกล่องล้างพลาสติกเนื่องจากกล่องโลหะอาจรบกวนสัญญาณ Wifi หรือการเชื่อมต่อบนบอร์ด PCB ขาด อีกวิธีหนึ่ง คุณสามารถพิมพ์เคสพลาสติก 3 มิติเพื่อติดบอร์ด

ขั้นตอนที่ 3: การเปลี่ยนแปลง OpenHAB

การกำหนดค่า OpenHAB

การเปลี่ยนแปลง OpenHAB ที่จำเป็นมีดังนี้:

ไฟล์ 'รายการ':

/* HRVNumber hrvStatus "สถานะ HRV [MAP(status.map):%d]" (gHRV) { mqtt="<[mqttbroker:openhab/hrv/status:state:default]" }หมายเลข houseTemp "บ้าน [%.1f C]" (gHRV) { mqtt="<[mqttbroker:openhab/hrv/housetemp:state:default]" }Number houseTemp_Chart_Period "Chart Period"Number roofTemp "Roof [%.1f C]" (gHRV) { mqtt=" <[mqttbroker:openhab/hrv/rooftemp:state:default]" }Number roofTemp_Chart_Period "Chart Period"Number controlTemp "Control [%.1f C]" (gHRV) { mqtt="<[mqttbroker:openhab/hrv/controltemp: state:default]" }String fanSpeed "ความเร็วพัดลม [%s]" (gHRV) { mqtt="<[mqttbroker:openhab/hrv/fanspeed:state:default]" }*/

ไฟล์ 'แผนผังเว็บไซต์':

Frame label="HRV Temperature" {รายการข้อความ=roofTemp {Frame { Switch item=roofTemp_Chart_Period label="Period" mappings=[0="Hour", 1="Day", 2="Week"] Image url="https://localhost:8080/rrdchart.png" รีเฟรช=6000 การมองเห็น=[roofTemp_Chart_Period==0, roofTemp_Chart_Period=="ไม่ได้กำหนดค่าเริ่มต้น"] รูปภาพ url="https://localhost:8080/rrdchart.png" รีเฟรช=30000 การมองเห็น= [roofTemp_Chart_Period==1] Image url="https://localhost:8080/rrdchart.png" refresh=30000 vision=[roofTemp_Chart_Period==2] } } รายการข้อความ = houseTemp { เฟรม { รายการสวิตช์ = houseTemp_Chart_Period label="ระยะเวลา การแมป =="ไม่ได้กำหนดค่าเริ่มต้น"] url รูปภาพ="https://localhost:8080/rrdchart.png" รีเฟรช=30000 การมองเห็น=[houseTemp_Chart_Period==1] url รูปภาพ="https://localhost:8080/rrdchart.png" รีเฟรช =30000 การมองเห็น=[houseTemp_Chart_Period==2] } } รายการข้อความ = controlTemp { กรอบ { สลับรายการ = รวม ed_Chart_Period label="Period" mappings=[0="Hour", 1="Day", 2="Week"] Image url="https://localhost:8080/rrdchart.png" refresh=6000Vision=[Combined_Chart_Period" ==0, Combined_Chart_Period=="Uninitialized"] URL รูปภาพ="https://localhost:8080/rrdchart.png" refresh=30000 การมองเห็น=[Combined_Chart_Period==1] Image url="https://localhost:8080/ rrdchart.png" รีเฟรช=30000 การมองเห็น=[Combined_Chart_Period==2] } } รายการข้อความ=fanSpeed }

รวมไอคอนพิเศษสำหรับ OpenHAB (คลิกขวาและบันทึกภาพ)

บันทึกไฟล์เหล่านี้ไปยังโฟลเดอร์..\OpenHAB Home\webapps\images บนเซิร์ฟเวอร์ OpenHAB ของคุณ

แนะนำ: