Sadržaj:
Video: NEST Vaš stari termostat: 4 koraka (sa slikama)
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
Sustav grijanja u mojoj kući je vjerovatno star koliko i sama kuća. Star je oko 30 godina, što je u redu s obzirom na kućne godine, ali prilično je zaglavljeno u ledenom dobu što se tehnologije tiče. Postoje 2 glavna problema s komercijalnim rješenjima:
- zabranjene cijene
- proizvod kao uslugu
Svi se sjećamo šta se dogodilo s Revolvom i nisam baš željan da mi se to dogodi usred zime. S tim na umu, predstavljam vam nevjerojatno sumnjiv, ali funkcionalan NEST-Alike kontroler za vaš stari termostat. Ne brinite, planiram uskoro dodati mnogo bolje kućište!
Karakteristike:
- mogućnost korištenja postojećeg termostata (u slučaju da supruga stenje zbog toga)
- daljinski pristup
- AWAY način rada
- indikator optimalne temperature
- Radi sa Alexa
Uskoro (ažuriranja provjerite ovdje)
- Google Home
- Google kalendar
- Više senzora
- Komande radijatora
- IFTT integracije
- Podrška za Tasker
- HTTP zahtevi
- Mnogo bolje izgleda kućište
Korak 1: Kako funkcionira termostat
Termostat je vjerojatno povezan na VISOKI NAPON! Ne pokušavajte ništa učiniti ako se niste uvjerili da je krug isključen. Možete se ozlijediti i oštetiti priključenu opremu. Posavjetujte se s kvalificiranim električarom kako biste osigurali svoju sigurnost
Honeywell termostat je zidna jedinica koja se napaja iz mreže (za osnove Sonoffa potrebno je minimalno 90 V, moj krug ima 230 V). Kutija je spojena na glavnu upravljačku jedinicu (koja je naprednija kutija) i šalje signal kada temperatura padne ispod ciljnog nivoa. Iako se vaša jedinica može razlikovati, princip je najvjerojatnije isti. Ako imate 3 žice i nemate radio vezu između zidne jedinice-ovo je vodič za vas.
Znam kako trožilni termostati rade u principu, što me nije spriječilo da puknem osigurač tako što sam slučajno spojio 2 žice! Imam 3 žice spojene na jedinicu (od kojih je četvrta uzemljenje). Moj Honeywell termostat nije bežičan, pa za promjenu signala mogu koristiti Sonoff Basic. Vrijeme je da ga rastavite i vidite kako se signal šalje u jedinicu. Nakon pomnijeg pregleda, terminal je povezan na sljedeći način:
- (plavo) - Uzemljenje
- (žuto) - signal, kada je grijanje visoko uključeno
- nije u upotrebi
- (crveno) - žica pod naponom koja se koristi za visoko podizanje signala
Da bih postigao svoj cilj, moram spojiti žicu pod naponom sa signalnom žicom kada želim da mi se uključi grijanje. Ako imate slično povezan termostat, imate sreće jer će Sonoff Basic biti dovoljan za trik.
Korak 2: Priprema Sonoff Basic -a
Prije nego što počnemo spajati žice, moramo mješavini dodati temperaturni senzor (DHT11). Uvjerite se da je Tasmota firmver postavljen na vaš Sonoff uređaj (ovdje imam odličan vodič za treperenje) i da je vaš Sonoff s omogućenim Tasmotom ispravno konfiguriran (također već pokrivam). Sada vam preostaje samo spojiti DHT11 senzor na Sonoff i konfigurirati ga za izvještavanje o temperaturi.
DHT11 dolazi sa 3 ožičena pina: Signal - GPIO14Vcc - 3,3VGND - GND
Probio sam rupu, ne muči me kako to sada izgleda, sve što mi treba je dokaz koncepta i potvrda. Napravit ću lijepo i sjajno kućište čim mi 3D štampač stigne. Obratio sam dodatnu pažnju na to kako povezujem Sonoff, jer moram paziti da se žica pod naponom poveže sa signalnom žicom na drugom kraju Sonoff uređaja. Honeywell jedinica ima otpornik opterećenja (R) ugrađen unutra koji ograničava struju. Iako je krug zaštićen 3A osiguračem, pametno je uskladiti isti otpor za dodatnu zaštitu. Kad sam pripremio žice, došlo je vrijeme da isključim glavno napajanje i povežem Sonoff.
Sonoff Tasmota - Honeywell termostat
INPUT Live - četvrti terminal uživo
INPUT GND - prvi terminal GND
OUTPUT signal - signal drugog terminala
Već sam spomenuo da za sada neću naglašavati kako ovo izgleda. Supruga je bila uvjerena i mogu se usredotočiti na funkcionalnost i uklanjanje svih grešaka koje će se dogoditi. Dobra stvar je što originalni termostat i dalje radi. Ako ga pojačam, on će nadjačati onaj baziran na Sonoff Tasmoti. Ovo bi trebao biti odličan backup za sve neočekivane događaje.
Korak 3: NodeRED
Imajte na umu da videozapis može sadržavati starije NodeRed reference, stalno radim na poboljšanju dizajna. Ovo su male izmjene i datoteke članaka se ažuriraju
Na ovaj dizajn sam naišao na internetu. Izgleda odlično, međutim nakon pomnog pregleda widget nije baš pogodan za NodeRED. Za postavljanje mu je potrebno 5 korisnih podataka, ali dizajn čvorova na sličan način ne funkcionira. Trebalo mi je neko vrijeme da smislim najbolji način prenošenja svih tih informacija radi ažuriranja widgeta i održavanja njegove funkcionalnosti. Siguran sam da ću s vremenom potrošiti više vremena na dizajn kako bih mogao progurati sva potrebna ažuriranja jednim objektom poruke. Za sada je to što jeste.
Temperaturni tok
DHT11 izvještava svakih X sekundi natrag na NodeRED poslužitelj. Povećao sam ovu frekvenciju putem Tasmotine konzole. Samo pokrenite naredbu za postavljanje frekvencije u sekundama:
TelePeriod Podesite period telemetrije između 10 i 3600 sekundi
To se uglavnom radi za testove, jer ne želim čekati minute da vidim da li su mi ispravci grešaka uspjeli. Održavanje visoke frekvencije uzrokovat će zagrijavanje češće na kraće vremenske periode, pa se suzdržite od postavljanja na 10 sekundi za druge svrhe osim za testiranje. Čvor MQTT izvlači podatke iz:
sonoff/tele/SENSOR
i čuva najkorisnije podatke u sljedećim objektima:
msg.payload. DHT11. Temperatura msg.payload. DHT11. Humidity
Da bih ograničio greške, dodao sam glatki čvor u prosjek rezultata i ažurirao varijablu toka: NodeRED:
Funkcijski čvor - ažurirajte 'TempAmbient'
flow.set ('TempAmbient', msg.payload. DHT11. Temperature); return msg;
Ažuriranje widgeta
Odlučio sam da je 5 sekundi dobra brzina osvježavanja, stoga guram sve potrebne vrijednosti ovom frekvencijom. Jedini izuzetak je klizač, koji iz očiglednog razloga reagira trenutno.
Svaki odgovarajući čvor šalje korisni teret s dodijeljenom temom na widget sličan gnijezdu.
- boja (grijanje | hlađenje*| isključeno & hvac_state)
- list (istinito | lažno i has_leaf)
- daleko (istina | lažno i odsutno)
- Temperatura okoline (broj i temperatura okoline)
- Ciljna temperatura (broj i ciljna_temperatura)
*nije u upotrebi
NodeRED: Čvor funkcije - Ažuriranje widgeta
boja
x = flow.get ('TempTarget'); // targetz = flow.get ('TempAmbient'); // ambijent
ako je (z = x) {
flow.set ('heatState', "off"); flow.set ('grijanjeprekidač', "ISKLJUČENO"); } msg.payload = z; msg.topic = "ambijentalna_temperatura"; return msg;
list
x = flow.get ('TempAmbient'); if (x> 17 && x <23) {flow.set ('list', tačno); msg.payload = true; msg.topic = "has_leaf"; return msg; } else {flow.set ('list', lažno); msg.payload = false; msg.topic = "has_leaf"; return msg; }
Poništavanje boje
x = flow.get ('away'); if (x === true) {msg.topic = "hvac_state"; msg.payload = "isključeno"; return msg; }
msg.topic = "hvac_state";
msg.payload = flow.get ('heatState');
return msg;
Away
x = flow.get ('away'); if (x === true) {flow.set ('heatSwitch', "OFF"); flow.set ('heatState', "off"); }
msg.topic = "daleko";
msg.payload = flow.get ('away'); return msg;
Target Temp
if (msg.topic === "update") {msg.topic = "target_temperature"; msg.payload = flow.get ('TempTarget'); return msg; }
if (msg.command === "SetTargetTemperatureRequest") {
flow.set ('away', false); msg.topic = "target_temperature"; flow.set ('TempTarget', msg.payload); }
if (msg.topic === "klizač") {
flow.set ('away', false); msg.topic = "target_temperature"; flow.set ('TempTarget', msg.payload); }
if (msg.command === "GetTemperatureReadingRequest") {}
return msg;
Kao što vidite, odlučio sam se za varijable protoka, tako da sam se mogao sjetiti vrijednosti u bilo kojem trenutku. Imam tok ispravljanja grešaka koji u osnovi čita sve uskladištene vrijednosti.
- 'TempAmbinet' - pohranjuje trenutnu temp
- „TempTarget“- sadrži vrijednost cilja temp
- ‘List’ - prikazuje list ako je potrebno
- ‘Daleko’ - prikazuje stanje odsutnosti ako je potrebno
- ‘HeatState’ - mijenja boju ekrana
- ‘HeatSwitch’ - kontrolira stanje releja.
Izazov je bio osigurati da se informacije ažuriraju nakon „ažuriranja“i kada se to zatraži na druge načine (Alexa, itd.). Zbog toga ćete u JavaScript -u vidjeti različite uslove. Svaki put kada se vrijednosti ažuriraju, šalju se varijabli protoka i widget se osvježava.
Slider
Testiranje je otkrilo da je potrebno dodatno ažuriranje klizača (klizač pomiče ciljnu temperaturu). Klizač šalje korisni teret (broj) sa pridruženom temom „klizač“kada se premjesti. Povrh svega, želim da klizač dođe u pravilan položaj ako je postavljeno više web sučelja. Da biste to učinili, svakih 5 sekundi jednostavno ažuriram položaj klizača na trenutnu ciljnu temperaturu.
NodeRED: Čvor funkcije - klizač za ažuriranje '
msg.payload = flow.get ('TempTarget'); return msg;
Upravljanje relejem
Relejni regulator je jednostavan, zauzima (za sada) dva ulaza. Alexa je istina | lažno i interakcija koja slijedi nakon ažuriranja varijable protoka "prekidač grijanja". Nema potrebe za trenutnom radnjom, pa zbog jednostavnosti radi na istoj frekvenciji ažuriranja od 5 sekundi kao i ostatak toka.
Relej je povezan preko MQTT -a. Node postavlja naredbe ON | OFF na temu:
sonoff/cmnd/POWER1
Čvor funkcije prihvaća true | false od Alexa, a također mijenja stanje ulaza prema varijabli protoka ‘heatSwitch’.
NodeRED: Funkcijski čvor - kontrolni relej '
if (msg.command === "TurnOffRequest") {msg.payload = "OFF"; return msg; }
if (msg.command === "TurnOnRequest") {
msg.payload = "ON"; flow.set ('TempTarget', 21); return msg; } if (msg.topic === "update") {msg.payload = flow.get ('heatSwitch'); } return msg;
Integracija Alexa
Ovo je prvi uređaj na kojem sam morao isključiti „automatsko potvrđivanje“. Umjesto automatskog pretpostavljanja odgovora, generirao sam odgovor jer želim mogućnost upita postavljene temperature. U principu, msg.payload = true | false označava je li zahtjev bio uspješan, a preostali predlošci rade ovdje. Ako ste tek počeli koristiti Alexa i NodeRed, svakako ovo pročitajte.
Odlučio sam proslijediti priznanja odvojeno (znam da to nije najbolji način) kako bih sve to mogao malo bolje kontrolirati. Pravilno svaki odgovor treba dati na kraju komandnog lanca. Moj riskira da ne vrati greške ako se to dogodi. Imajte na umu da ja, radi dosljednosti, ažuriram samo varijable, dok petlja osvježavanja gura nove vrijednosti u widget.
NodeRED: Funkcijski čvor - Obradi Alexa odgovore '
// Koja je ciljana temperatura termostataif (msg.command === "GetTemperatureReadingRequest") {x = flow.get ('TempTarget'); msg.extra = {"temperatureReading": {"value": x}, "deviceResponseTimestamp": novi datum (). toISOString ()}; msg.payload = true; return msg; } // Podesite temperaturu na (ne nižu od 10 ili više od 30) if (msg.command === "SetTargetTemperatureRequest") {if (msg.payload 30) {var range = {min: 10.0, max: 30.0} msg.payload = false; msg.extra = raspon; } else {msg.extra = {targetTemperature: {value: msg.payload}}; msg.payload = true; } return msg; } // Uključite ako (msg.command === "TurnOnRequest") {msg.payload = true; flow.set ('away', false); flow.set ('TempTarget', 21); return msg; } // Isključite ako (msg.command === "TurnOffRequest") {msg.payload = true; flow.set ('away', true); return msg;
Korak 4: Zaključak
Ako NodeRED nadzornu ploču izložite WAN -u, cijeli sustav grijanja može se kontrolirati daljinski. Preporučio bih vam da pročitate sljedeće članke kako biste ubrzali rad sa NodeRED i NodeRED sigurnošću.
- NodeRED za početnike
- NodeRED sigurnost
Osim toga, ako želite biti informirani o ažuriranjima ovog projekta - slijedite me na platformi po vašem izboru:
- Facebo ok
- Twi tter
- YouTu be
A ako želite kupiti mi kavu ili me podržati na stalniji način:
- Paypal
- Patreon
Nadam se da ste uživali u projektu!