Cuprins:

NEST Termostatul tău vechi: 4 pași (cu imagini)
NEST Termostatul tău vechi: 4 pași (cu imagini)

Video: NEST Termostatul tău vechi: 4 pași (cu imagini)

Video: NEST Termostatul tău vechi: 4 pași (cu imagini)
Video: TREND CU EVA 2024, Iulie
Anonim
Image
Image
Cum funcționează un termostat
Cum funcționează un termostat

Sistemul de încălzire din casa mea este probabil la fel de vechi ca și casa în sine. Are aproximativ 30 de ani, ceea ce este bine în ceea ce privește anii de casă, dar aproape blocat în epoca de gheață în ceea ce privește tehnologia. Există două probleme principale cu soluțiile comerciale:

  • prețuri prohibitive
  • produs ca serviciu

Ne amintim cu toții ce s-a întâmplat cu Revolv și nu sunt prea dornic să mi se întâmple asta în mijlocul iernii. Având în vedere acest lucru, vă prezint un controler NEST-Alike cu aspect incredibil de suspect, dar funcțional, pentru vechiul dvs. termostat. Nu vă faceți griji, intenționez să adăugați în curând o incintă mult mai bună!

Caracteristici:

  • abilitatea de a utiliza un termostat existent (în cazul în care soția geme despre asta)
  • acces de la distanță
  • Mod ÎNAPOI
  • indicator de temperatură optimă
  • Funcționează cu Alexa

În curând (verificați aici pentru actualizări)

  • Google Home
  • Google Calendar
  • Senzori multipli
  • Comenzi radiatoare
  • Integrări IFTT
  • Suport pentru Tasker
  • Solicitări
  • O incintă mult mai frumoasă

Pasul 1: Cum funcționează un termostat

Cum funcționează un termostat
Cum funcționează un termostat
Cum funcționează un termostat
Cum funcționează un termostat

Termostatul este probabil conectat la TENSIUNEA ÎNALTĂ! Nu încercați să faceți nimic decât dacă v-ați asigurat că circuitul este oprit. Vă puteți răni și provoca daune echipamentelor conectate. Luați în considerare consultarea unui electrician calificat pentru a vă asigura siguranța

Termostatul Honeywell este o unitate montată pe perete, alimentată de la rețeaua electrică (elementele de bază Sonoff necesită min 90V, circuitul meu are 230V). Cutia este conectată la unitatea principală de control (care este o cutie mai avansată) și trimite semnalul atunci când temperatura scade sub nivelul țintă. Deși unitatea dvs. poate fi diferită, principiul este cel mai probabil același. Dacă aveți 3 fire și nu aveți conexiune radio între unitatea montată pe perete - acesta este tutorialul pentru dvs.

Știu cum funcționează termostatele cu 3 fire într-un principiu, ceea ce nu m-a împiedicat să arunc o siguranță prin scurtcircuitarea a 2 fire accidental! Am 3 fire conectate la unitate (al 4-lea fiind pământul). Termostatul meu Honeywell nu este wireless, așa că pentru a comuta semnalul, pot folosi Sonoff Basic. Este timpul să îl desfaceți și să vedeți cum este trimis semnalul către unitate. La o inspecție mai atentă, terminalul este conectat în modul următor:

  1. (albastru) - Sol
  2. (galben) - semnal, când este ridicat, încălzirea este pornită
  3. neutilizat
  4. (roșu) - firul sub tensiune utilizat pentru a trage semnalul în sus

Pentru a-mi atinge obiectivul, trebuie să scurtcircuit cablul sub tensiune cu firul de semnal atunci când vreau să fie pornită încălzirea. Dacă aveți un termostat conectat în mod similar, aveți noroc, deoarece Sonoff Basic va fi suficient pentru a face trucul.

Pasul 2: Pregătirea Sonoff Basic

Pregătirea Sonoff Basic
Pregătirea Sonoff Basic
Pregătirea Sonoff Basic
Pregătirea Sonoff Basic
Pregătirea Sonoff Basic
Pregătirea Sonoff Basic

Înainte de a începe conectarea firelor, trebuie să adăugăm un senzor de temperatură (DHT11) la amestec. Asigurați-vă că firmware-ul Tasmota este afișat pe dispozitivul Sonoff (am un ghid intermitent excelent aici) și Sonoff activat Tasmota este configurat corect (de asemenea, deja acoperit de mine). Acum, nu vă mai rămâne decât să conectați senzorul DHT11 la Sonoff și să-l configurați pentru raportarea temperaturii.

DHT11 vine cu 3 pini cu fir: Semnal - GPIO14Vcc - 3.3VGND - GND

Am făcut o gaură, nu mă deranjează cum arată acum, tot ce am nevoie este dovada conceptului și validarea. Voi face o incintă frumoasă și strălucitoare odată ce sosește imprimanta 3D. Am acordat o atenție suplimentară modului în care conectez Sonoff, deoarece trebuie să mă asigur că firul sub tensiune se conectează la firul de semnal de pe celălalt capăt al dispozitivului Sonoff. Unitatea Honeywell are construit în interior rezistența de sarcină (R) care limitează curentul. În timp ce circuitul este protejat de siguranța 3A, este inteligent să se potrivească cu aceeași rezistență pentru o protecție suplimentară. Odată ce am pregătit firele, a venit timpul să opriți alimentarea principală și să conectați Sonoff înapoi.

Sonoff Tasmota - termostat Honeywell

INPUT Live - terminalul 4 Live

INPUT GND - primul terminal GND

Semnal OUTPUT - Semnalul 2 al terminalului

Am menționat acest lucru înainte, deocamdată, nu mă voi stresa cu privire la aspectul acestui lucru. Soția a fost convinsă și mă pot concentra pe funcționalitate și eliminarea eventualelor erori care se vor întâmpla. Lucrul bun este că termostatul original funcționează în continuare. Dacă îl întorc, acesta îl va suprascrie pe cel bazat pe Sonoff Tasmota. Aceasta ar trebui să fie o rezervă excelentă pentru orice eveniment neașteptat.

Pasul 3: NodeRED

NodeRED
NodeRED
NodeRED
NodeRED
NodeRED
NodeRED

Rețineți că videoclipul poate conține referințe NodeRed mai vechi, lucrez constant la îmbunătățirea designului. Acestea sunt mici modificări, iar fișierele articolelor sunt actualizate

Am dat peste acest design online. Arată grozav, cu toate acestea, la o inspecție atentă, widget-ul nu este potrivit pentru NodeRED. Este nevoie de 5 încărcături utile pentru a fi setate, ceea ce nu este modul în care funcționează designul de nod. Mi-a luat ceva timp să aflu cel mai bun mod de a transmite toate aceste informații pentru a actualiza widgetul și a-l menține funcțional. Sunt sigur că, cu timpul, voi petrece mai mult timp pe design, astfel încât să pot împinge toate actualizările necesare cu un singur obiect msg. Deocamdată este ceea ce este.

Flux de temperatură

DHT11 raportează la fiecare X secunde înapoi la serverul NodeRED. Am crescut această frecvență prin consola Tasmota. Doar executați comanda pentru a seta frecvența în sec:

TelePeriod Setați perioada de telemetrie între 10 și 3600 de secunde

Acest lucru se face mai ales pentru teste, deoarece nu vreau să aștept câteva minute pentru a vedea dacă remedierile mele de erori au funcționat. Menținerea frecvenței ridicate va face ca încălzirea să se declanșeze mai frecvent pentru perioade mai scurte de timp, așa că abțineți-vă de la setarea acesteia la 10 secunde în alte scopuri decât cele de testare. Nodul MQTT extrage datele din:

sonoff / tele / SENSOR

și păstrează cele mai utile date în următoarele obiecte:

msg.payload. DHT11. Temperature msg.payload. DHT11. Humidity

Pentru a limita erorile, am adăugat nodul neted pentru a medie rezultatele și am actualizat variabila de flux: NodeRED:

Funcție nod - Actualizați „TempAmbient”

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

Actualizare widget

Am decis că 5 secunde este o rată de reîmprospătare bună, prin urmare, împing toate valorile necesare cu această frecvență. Singura excepție este glisorul, care din motive evidente răspunde instantaneu.

Fiecare nod corespunzător trimite sarcina utilă cu subiectul atribuit către widgetul cuiburi.

  • culoare (încălzire | răcire * | oprit & hvac_state)
  • frunza (adevărat | fals și has_leaf)
  • departe (adevărat | fals și departe)
  • Temperatura ambientală (număr și temperatura_ambiantă)
  • Temperatura țintă (număr și temperatură_tintă)

* nu este utilizat

NodeRED: nod funcție - actualizare widget

culoare

x = flow.get ('TempTarget'); // targetz = flow.get ('TempAmbient'); //înconjurător

dacă (z = x) {

flow.set ('încălzireStat', "oprit"); flow.set ('încălzireSwitch', "OPRIT"); } msg.payload = z; msg.topic = "temperatura_ambient"; returnează msg;

frunze

x = flow.get ('TempAmbient'); if (x> 17 && x <23) {flow.set ('frunză', adevărat); msg.payload = adevărat; msg.topic = "has_leaf"; returnează msg; } else {flow.set ('frunză', fals); msg.payload = fals; msg.topic = "has_leaf"; returnează msg; }

Anulați culoarea

x = flow.get ('away'); if (x === true) {msg.topic = "hvac_state"; msg.payload = "dezactivat"; returnează msg; }

msg.topic = "stat_hvac";

msg.payload = flow.get ('încălzireStat');

returnează msg;

Departe

x = flow.get ('away'); if (x === true) {flow.set ('încălzireSwitch', "OPRIT"); flow.set ('încălzireStat', "oprit"); }

msg.topic = "departe";

msg.payload = flow.get ('away'); returnează msg;

Temp. Țintă

if (msg.topic === "update") {msg.topic = "target_temperature"; msg.payload = flow.get ('TempTarget'); returnează msg; }

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

flow.set („departe”, fals); msg.topic = "temperatura_tintă"; flow.set ('TempTarget', msg.payload); }

if (msg.topic === "glisor") {

flow.set („departe”, fals); msg.topic = "temperatura_tintă"; flow.set ('TempTarget', msg.payload); }

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

returnează msg;

După cum vedeți, am renunțat la variabilele de flux, astfel încât să pot aminti valoarea în orice moment. Am un flux de depanare care citește practic toate valorile stocate.

  • „TempAmbinet” - stochează temperatura curentă
  • „TempTarget” - deține valoarea țintă temp
  • ‘Frunză’ - afișează frunza, dacă este necesar
  • „Departe” - afișează starea departe dacă este necesar
  • „ÎncălzireStat” - schimbă culoarea afișajului
  • ‘ÎncălzireSwitch’ - controlează starea releului.

Provocarea a fost să ne asigurăm de fapt că informațiile sunt actualizate la „actualizare” și când sunt solicitate prin alte mijloace (Alexa etc.). Acesta este motivul pentru care veți vedea condiții diferite în JavaScript. De fiecare dată când valorile sunt actualizate, trimise variabilei de flux și widgetul este reîmprospătat.

Glisor

Testarea a arătat că este necesară o actualizare suplimentară a glisorului (glisorul împinge temperatura țintă). Glisorul trimite sarcina utilă (numărul) cu subiectul asociat „glisor” atunci când este mutat. În plus, vreau ca glisorul să ajungă în poziția corectă dacă există mai multe interfețe web. Pentru a face acest lucru, la fiecare 5 sec, pur și simplu actualizez poziția glisorului la o temperatură țintă curentă.

NodeRED: Funcție nod - glisor actualizare '

msg.payload = flow.get ('TempTarget'); returnează msg;

Controlul releului

Controlerul de releu este simplu, necesită (deocamdată) două intrări. Alexa este adevărat | fals și interacțiunea care urmează unei actualizări a variabilei de flux „Întrerupător de încălzire”. Nu este nevoie de o acțiune instantanee, astfel încât, pentru simplitate, rulează pe aceeași frecvență de actualizare de 5 secunde ca și restul fluxului.

Releul este conectat prin MQTT. Nodul postează comenzi ON | OFF pe subiect:

sonoff / cmnd / POWER1

Nodul funcției acceptă adevăratul | fals de la Alexa și modifică, de asemenea, starea intrării în funcție de variabila de flux „încălzireSwitch”.

NodeRED: Nod funcțional - Releu de control '

if (msg.command === "TurnOffRequest") {msg.payload = "OFF"; returnează msg; }

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

msg.payload = "ACTIVAT"; flow.set („TempTarget”, 21); returnează msg; } if (msg.topic === "update") {msg.payload = flow.get ('încălzireSwitch'); } returnează msg;

Integrare Alexa

Acesta este primul dispozitiv pe care l-am avut pentru a dezactiva „recunoașterea automată”. În loc să-mi asum automat un răspuns, am generat unul, deoarece doresc capacitatea de a interoga temperatura setată. În principiu, msg.payload = true | false indică dacă solicitarea a avut succes, iar șabloanele găsite aici fac restul. Dacă sunteți nou în Alexa și NodeRed, asigurați-vă că citiți acest lucru.

Am decis să transmit confirmările separate (știu că aceasta nu este cea mai bună modalitate) pentru a putea controla totul un pic mai bine. În mod corespunzător, fiecare răspuns trebuie dat la sfârșitul lanțului de comandă. Al meu riscă să nu returneze erori în cazul în care acestea se întâmplă. Rețineți că, pentru a fi consecvent, actualizez numai variabilele, în timp ce bucla de reîmprospătare împinge noile valori pe widget.

NodeRED: Funcția Node - Procesează răspunsurile Alexa

// Care este temperatura țintă a termostatului dacă (msg.command === "GetTemperatureReadingRequest") {x = flow.get ('TempTarget'); msg.extra = {"temperatureReading": {"value": x}, "applianceResponseTimestamp": new Date (). toISOString ()}; msg.payload = adevărat; returnează msg; } // Setați temperatura la (nu mai mică de 10 sau mai mult de 30) dacă (msg.command === "SetTargetTemperatureRequest") {if (msg.payload 30) {var range = {min: 10.0, max: 30.0} msg.payload = fals; msg.extra = interval; } else {msg.extra = {targetTemperature: {value: msg.payload}}; msg.payload = adevărat; } returnează msg; } // Porniți-l dacă (msg.command === "TurnOnRequest") {msg.payload = true; flow.set („departe”, fals); flow.set („TempTarget”, 21); returnează msg; } // Opriți-l dacă (msg.command === "TurnOffRequest") {msg.payload = true; flow.set („departe”, adevărat); returnează msg;

Pasul 4: Concluzie

Concluzie
Concluzie

Dacă expuneți tabloul de bord NodeRED la WAN, întregul sistem de încălzire poate fi controlat de la distanță. Vă recomandăm să citiți următoarele articole pentru a vă pune la curent cu securitatea NodeRED și NodeRED.

  • NodeRED pentru începători
  • Securitate NodeRED

În plus, dacă doriți să vă informați despre actualizările acestui proiect - vă recomandăm să mă urmați pe platforma la alegere:

  • Twi tter
  • Instagram
  • Tu trebuie să fii

Și dacă vrei să îmi cumperi o cafea sau să mă sprijini într-un mod mai continuu:

  • Paypal
  • Patreon

Sper că v-a plăcut proiectul!

Recomandat: