Mundarija:

Eski termostatni NEST: 4 qadam (rasmlar bilan)
Eski termostatni NEST: 4 qadam (rasmlar bilan)

Video: Eski termostatni NEST: 4 qadam (rasmlar bilan)

Video: Eski termostatni NEST: 4 qadam (rasmlar bilan)
Video: Дешевое отопление из чайника. Часть 2. Безумный самодельщик 2024, Iyul
Anonim
Image
Image
Termostat qanday ishlaydi
Termostat qanday ishlaydi

Uyimdagi isitish tizimi, ehtimol, uyning o'zi kabi eski. Bu taxminan 30 yoshda, bu uy yillari jihatidan juda yaxshi, lekin texnologiya nuqtai nazaridan muzlik davrida qolib ketgan. Tijorat echimlari bilan bog'liq ikkita asosiy muammo bor:

  • taqiqlangan narx
  • mahsulot xizmat sifatida

Biz hammamiz Revolv bilan nima bo'lganini eslaymiz va men buni qish o'rtalarida men bilan bo'lishini xohlamayman. Shuni yodda tutgan holda, men sizga sizning eski termostatingiz uchun shubhali ko'rinadigan, lekin funktsional NEST-Alike kabi boshqaruvchini taqdim etaman. Xavotir olmang, men yaqinda qo'shiladigan juda yaxshi korpusni rejalashtiryapman!

Xususiyatlari:

  • mavjud termostatni ishlatish qobiliyati (agar xotini bu haqda yig'lasa)
  • masofadan kirish
  • AWAY rejimi
  • optimal harorat ko'rsatkichi
  • Alexa bilan ishlaydi

Tez orada (yangilanishlar uchun bu erga qarang)

  • Google uyi
  • Google taqvimi
  • Ko'p sensorlar
  • Radiator boshqaruv elementlari
  • IFTT integratsiyasi
  • Taskerni qo'llab -quvvatlash
  • HTTP so'rovlari
  • Juda yaxshi ko'rinadigan korpus

1 -qadam: Termostat qanday ishlaydi

Termostat qanday ishlaydi
Termostat qanday ishlaydi
Termostat qanday ishlaydi
Termostat qanday ishlaydi

Termostat, ehtimol, yuqori kuchlanishga ulangan! O'chirish o'chirilganligiga ishonch hosil qilmaguningizcha hech narsa qilishga urinmang. Siz o'zingizga zarar etkazishingiz va ulangan uskunaga zarar etkazishingiz mumkin. Xavfsizligingizni ta'minlash uchun malakali elektrchi bilan maslahatlashishni o'ylab ko'ring

Honeywell termostati - bu devorga o'rnatilgan, elektr tarmog'idan quvvat oluvchi (Sonoff asoslari min 90V, mening zanjirim 230V). Quti asosiy boshqaruv blokiga ulangan (bu yanada rivojlangan quti) va harorat maqsadli darajadan pastga tushganda signal yuboradi. Sizning qurilmangiz boshqacha bo'lishi mumkin bo'lsa -da, ehtimol, printsip bir xil. Agar sizda 3 ta sim bo'lsa va devorga o'rnatilgan birlik o'rtasida radio aloqasi bo'lmasa-bu siz uchun qo'llanma.

Men 3-simli termostatlar qanday ishlashini bilaman, bu tasodifan 2 simni qisqartirib sug'urta puflashimga to'sqinlik qilmadi! Menda qurilmaga ulangan 3 ta sim bor (4 -chi yer). Mening Honeywell termostatim simsiz emas, shuning uchun signalni o'zgartirish uchun Sonoff Basic -dan foydalanishim mumkin. Uni ajratish va signal qanday qurilmaga yuborilishini ko'rish vaqti keldi, yaqinroq tekshirilganda, terminal quyidagicha ulanadi:

  1. (ko'k) - er
  2. (sariq) - signal, yuqori tortilganda isitish yoqiladi
  3. ishlatilmayapti
  4. (qizil) - signalni baland tortish uchun ishlatiladigan jonli sim

Maqsadimga erishish uchun, men isitgich yoqilishini xohlaganimda, uzatish simini uzib qo'yaman. Agar sizda xuddi shunday ulangan termostat bo'lsa, omadingiz bor, chunki Sonoff Basic bu hiylani bajarish uchun etarli bo'ladi.

2 -qadam: Sonoff -ning asosiy tayyorligi

Sonoff asosiy tayyorligini olish
Sonoff asosiy tayyorligini olish
Sonoff asosiy tayyorligini olish
Sonoff asosiy tayyorligini olish
Sonoff asosiy tayyorligini olish
Sonoff asosiy tayyorligini olish

Simlarni ulashni boshlashdan oldin, biz harorat sensori (DHT11) qo'shishimiz kerak. Tasmota dasturiy ta'minoti Sonoff qurilmangizda yonib ketganligiga ishonch hosil qiling (menda bu erda ajoyib miltillovchi ko'rsatma bor) va Tasmota-ni yoqadigan Sonoff to'g'ri sozlangan (men ham allaqachon o'z ichiga olganman). Endi DHT11 sensorini Sonoff -ga ulash va uni harorat hisoboti uchun sozlash kifoya.

DHT11 simli 3 ta pin bilan birga keladi: Signal - GPIO14Vcc - 3.3VGND - GND

Men teshik ochdim, hozir qanday ko'rinayotgani meni bezovta qilmaydi, menga kontseptsiya va tasdiqning isboti kerak. Men 3D -printerim kelganidan keyin chiroyli va yorqin korpus yasayman. Men Sonoffni qanday ulashimga alohida e'tibor qaratdim, chunki jonli sim Sonoff qurilmasining boshqa uchidagi signal simiga ulanganligiga ishonch hosil qilishim kerak. Honeywell qurilmasida yuk qarshiligi (R) o'rnatilgan bo'lib, u oqimni cheklaydi. O'chirish 3A sug'urta bilan himoyalangan bo'lsa -da, qo'shimcha himoya qilish uchun bir xil qarshilikka mos kelish aqlli. Simlar tayyor bo'lgandan so'ng, asosiy quvvatni o'chirish va Sonoff -ni qayta ulash vaqti keldi.

Sonoff Tasmota - Honeywell termostati

INPUT Live - 4 -terminal Live

INPUT GND - 1 -terminal GND

Chiqish signali - 2 -terminalli signal

Men bundan oldin aytganman, hozircha men uning tashqi ko'rinishi haqida o'ylamayman. Xotin ishonch hosil qildi va men uning funktsional imkoniyatlariga e'tibor qaratishim va yuzaga keladigan xatolarni tozalashim mumkin. Yaxshi narsa shundaki, asl termostat hali ham ishlaydi. Agar men uni yoqsam, u Sonoff Tasmota -ga asoslanganini bekor qiladi. Bu har qanday kutilmagan hodisalar uchun ajoyib zaxira bo'lishi kerak.

3 -qadam: NodeRED

NodeRED
NodeRED
NodeRED
NodeRED
NodeRED
NodeRED

E'tibor bering, videoda eski NodeRed havolalari bo'lishi mumkin, men dizaynni takomillashtirish ustida doimiy ishlayapman. Bu kichik o'zgarishlar va maqola fayllari yangilanadi

Men bu dizaynni Internetda uchratdim. Bu juda zo'r ko'rinadi, lekin vidjet NodeRED uchun mos emas. O'rnatish uchun 5 ta yuk kerak bo'ladi, bu tugun dizayni bilan bir xil emas. Vidjetni yangilash va uning ishlashini ta'minlash uchun barcha ma'lumotlarni uzatishning eng yaxshi usulini aniqlash uchun menga biroz vaqt kerak bo'ldi. Ishonchim komilki, vaqt o'tishi bilan men dizaynga ko'proq vaqt sarflayman, shuning uchun barcha kerakli yangilanishlarni bitta msg obyekti bilan bosishim mumkin. Hozircha, bu shunday.

Harorat oqimi

DHT11 har X soniyada NodeRED serveriga xabar beradi. Men bu chastotani Tasmota konsoli orqali oshirdim. Chastotani soniyada o'rnatish uchun buyruqni bajaring:

TelePeriod Telemetriya davrini 10 dan 3600 sekundgacha belgilang

Bu asosan testlar uchun amalga oshiriladi, chunki men xatolarni tuzatish ishlaganmi yoki yo'qligini bilish uchun bir necha daqiqa kutishni xohlamayman. Chastotani yuqori darajada ushlab turish isitishning qisqa vaqt ichida tez -tez yonib ketishiga olib keladi, shuning uchun uni sinovdan tashqari 10 sekundga qo'yishdan saqlaning. MQTT tuguni ma'lumotlarni quyidagilardan oladi:

sonoff/tele/SENSOR

va eng foydali ma'lumotlarni quyidagi ob'ektlarda saqlaydi:

msg.payload. DHT11. Harorat msg.payload. DHT11. Havlik

Xatolarni cheklash uchun men natijalarni o'rtacha qilish uchun silliq tugunni qo'shdim va oqim o'zgaruvchisini yangiladim: NodeRED:

Funktsiya tuguni - "TempAmbient" ni yangilang

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

Vidjetni yangilash

Men 5 soniya - bu yaxshi yangilanish tezligi deb qaror qildim, shuning uchun men kerakli chastotani shu chastotada bosaman. Faqat istisno - bu aniq sabablarga ko'ra darhol javob beradigan slayder.

Har bir mos keladigan tugun belgilangan yuklangan yukni uyga o'xshash vidjetga yuboradi.

  • rang (isitish | sovutish*| o'chirilgan va hvac_state)
  • barg (rost | noto'g'ri va has_leaf)
  • uzoqda (rost | yolg'on va uzoq)
  • Atrof muhit harorati (raqam va muhit harorati)
  • Nishon harorati (raqam va maqsad_temperaturasi)

*ishlatilmayapti

NodeRED: funktsiya tuguni - vidjetni yangilash

rang

x = flow.get ('TempTarget'); // targetz = flow.get ('TempAmbient'); // atrof -muhit

agar (z = x) {

flow.set ("isitishState", "o'chirilgan"); flow.set ('isitishSwitch', "O'chirilgan"); } msg.to'lov = z; msg.topic = "muhit_temperaturasi"; xabarni qaytarish;

barg

x = flow.get ('TempAmbient'); if (x> 17 && x <23) {flow.set ('barg', true); msg.payload = rost; msg.topic = "has_leaf"; xabarni qaytarish; } else {flow.set ('barg', false); msg.payload = noto'g'ri; msg.topic = "has_leaf"; xabarni qaytarish; }

Rangni bekor qilish

x = flow.get ("uzoqda"); agar (x === rost) {msg.topic = "hvac_state"; msg.payload = "o'chirilgan"; xabarni qaytarish; }

msg.topic = "hvac_state";

msg.payload = flow.get ('isitishState');

xabarni qaytarish;

Uzoqda

x = flow.get ("uzoqda"); if (x === rost) {flow.set ('heatSwitch', "OFF"); flow.set ("isitishState", "o'chirilgan"); }

msg.topic = "uzoqda";

msg.payload = flow.get ("uzoqda"); xabarni qaytarish;

Maqsad harorati

agar (msg.topic === "yangilash") {msg.topic = "target_temperature"; msg.payload = flow.get ('TempTarget'); xabarni qaytarish; }

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

flow.set ("uzoqda", noto'g'ri); msg.topic = "target_temperature"; flow.set ('TempTarget', xabarlar to'lovi); }

agar (msg.topic === "slayder") {

flow.set ("uzoqda", noto'g'ri); msg.topic = "target_temperature"; flow.set ('TempTarget', xabarlar to'lovi); }

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

xabarni qaytarish;

Ko'rib turganingizdek, men oqim o'zgaruvchilarini tanladim, shuning uchun har qanday vaqtda qiymatni eslab qolishim mumkin edi. Menda barcha saqlangan qiymatlarni o'qiy oladigan disk raskadrovka oqimi bor.

  • "TempAmbinet" - joriy haroratni saqlaydi
  • "TempTarget" - maqsadli maqsad qiymatini ushlab turadi
  • "Barg" - agar kerak bo'lsa, bargni ko'rsatadi
  • "Uzoqda" - agar kerak bo'lsa, chiqish holatini ko'rsatadi
  • 'IsitishState' - displey rangini o'zgartiradi
  • 'HeatSwitch' - o'rni holatini nazorat qiladi.

Ma'lumotni "yangilash" va boshqa vositalar orqali so'ralganda (Alexa va boshqalar) yangilanganligiga ishonch hosil qilish qiyin edi. Shuning uchun siz JavaScript -da turli xil shartlarni ko'rasiz. Har safar qiymatlar yangilanib, oqim o'zgaruvchisiga yuboriladi va vidjet yangilanadi.

Slayder

Sinov shuni ko'rsatdiki, qo'shimcha slayderni yangilash kerak (slayder maqsadli haroratni oshiradi). Slayder yukni (raqamni) "slayder" bilan bog'liq mavzu bilan, u ko'chirilganda yuboradi. Buning ustiga, agar bir nechta veb -interfeyslar mavjud bo'lsa, slayder to'g'ri holatga o'tishini xohlayman. Buning uchun har 5 soniyada men slayder o'rnini joriy maqsadli haroratga yangilayman.

NodeRED: funktsional tugun - slayderni yangilash

msg.payload = flow.get ('TempTarget'); xabarni qaytarish;

O'rnimizni boshqarish

O'rnimizni boshqaruvchisi oddiy, unga ikkita kirish kerak (hozircha). Alexa rost | yolg'on va "isitish tugmasi" oqim o'zgaruvchisining yangilanishidan keyingi o'zaro ta'sir. Zudlik bilan harakat qilishning hojati yo'q, shuning uchun soddaligi uchun u qolgan 5 sekundlik yangilanish chastotasida ishlaydi.

O'rnimizni MQTT orqali ulanadi. Tugun mavzuga ON | OFF buyruqlarini joylashtirmoqda:

sonoff/cmnd/POWER1

Funktsiya tuguni Alexa -dan true | false -ni qabul qiladi, shuningdek, "heatSwitch" oqim o'zgaruvchisiga ko'ra kirish holatini o'zgartiradi.

NodeRED: Funktsional tugun - boshqaruv rölesi

if (msg.command === "TurnOffRequest") {msg.payload = "O'chirilgan"; xabarni qaytarish; }

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

msg.payload = "ON"; flow.set ('TempTarget', 21); xabarni qaytarish; } agar (msg.topic === "yangilash") {msg.payload = flow.get ('isitishSwitch'); } xabarni qaytarish;

Alexa integratsiyasi

Bu men "avtomatik aniqlash" ni o'chirib qo'ygan birinchi qurilma. Javobni avtomatik ravishda qabul qilishning o'rniga, men belgilangan haroratni so'rash imkoniyatiga ega bo'lishni xohlayman. Asosan, msg.payload = true | false so'rov muvaffaqiyatli bajarilganligini ko'rsatadi, qolganini esa shu erda topilgan andozalar bajaradi. Agar siz Alexa va NodeRed -da yangi bo'lsangiz, buni albatta o'qing.

Hammasini biroz yaxshiroq nazorat qilish uchun, men bu bildirishnomalarni alohida topshirishga qaror qildim (bu eng yaxshi usul emas). To'g'ri, har bir javob buyruq zanjiri oxirida berilishi kerak. Meniki, agar bu sodir bo'lsa, xatolarni qaytarmaslik xavfi bor. E'tibor bering, izchil bo'lishi uchun men faqat o'zgaruvchilarni yangilayman, yangilash tsikli esa yangi qiymatlarni vidjetga o'tkazadi.

NodeRED: funktsional tugun - Alexa javoblarini qayta ishlash

// Termostatni maqsadli harorati nima (msg.command === "GetTemperatureReadingRequest") {x = flow.get ('TempTarget'); msg.extra = {"temperatureReading": {"qiymati": x}, "applianceResponseTimestamp": yangi sana (). toISOString ()}; msg.payload = rost; xabarni qaytarish; } // Haroratni (10 dan past bo'lmagan yoki 30 dan oshmagan) qilib belgilang, agar (msg.command === "SetTargetTemperatureRequest") {if (msg.payload 30) {var range = {min: 10.0, max: 30.0} msg.payload = noto'g'ri; msg.extra = diapazon; } boshqa {msg.extra = {targetTemperature: {qiymat: msg.payload}}; msg.payload = rost; } xabarni qaytarish; } // Uni yoqing, agar (msg.command === "TurnOnRequest") {msg.payload = true; flow.set ("uzoqda", noto'g'ri); flow.set ('TempTarget', 21); xabarni qaytarish; } // Uni o'chiring, agar (msg.command === "TurnOffRequest") {msg.payload = true; flow.set ("uzoqda", rost); xabarni qaytarish;

4 -qadam: Xulosa

Xulosa
Xulosa

Agar siz NodeRED boshqaruv panelini WAN -ga qo'yib qo'ysangiz, butun isitish tizimini masofadan boshqarish mumkin. NodeRED va NodeRED xavfsizligi bilan ishlashni tezlashtirish uchun quyidagi maqolalarni o'qishni tavsiya qilaman.

  • Yangi boshlanuvchilar uchun NodeRED
  • NodeRED xavfsizligi

Bundan tashqari, agar siz ushbu loyihaning yangilanishlari haqida ma'lumotga ega bo'lishni istasangiz - meni tanlagan platformada kuzatib boring:

  • Facebo ok
  • Ikki marta
  • Instagram
  • Siz bo'lasiz

Va agar siz menga qahva sotib olmoqchi bo'lsangiz yoki meni doimiy ravishda qo'llab -quvvatlamoqchi bo'lsangiz:

  • Paypal
  • Patreon

Umid qilamanki, sizga loyiha yoqdi!

Tavsiya: