Turinys:

NEST jūsų senas termostatas: 4 žingsniai (su nuotraukomis)
NEST jūsų senas termostatas: 4 žingsniai (su nuotraukomis)

Video: NEST jūsų senas termostatas: 4 žingsniai (su nuotraukomis)

Video: NEST jūsų senas termostatas: 4 žingsniai (su nuotraukomis)
Video: Orijaus kelionės. 4 sezonas, 51 laida. Karlovi Varai, 1 dalis - populiariausias Čekijos kurortas 2024, Liepa
Anonim
Image
Image
Kaip veikia termostatas
Kaip veikia termostatas

Šildymo sistema mano namuose tikriausiai tokia pat sena kaip ir pats namas. Jam yra apie 30 metų, o tai yra gerai, kalbant apie namų metus, tačiau, kalbant apie technologiją, jis beveik įstrigo ledynmetyje. Yra 2 pagrindinės komercinių sprendimų problemos:

  • draudžiamos kainos
  • produktas kaip paslauga

Mes visi prisimename, kas nutiko Revolvui, ir aš nelabai noriu, kad tai nutiktų man vidury žiemos. Turėdamas tai omenyje, pristatau jums neįtikėtinai įtartinai atrodantį, bet funkcionalų NEST-Alike valdiklį, skirtą jūsų senam termostatui. Nesijaudinkite, planuoju netrukus pridėti daug geresnį korpusą!

Funkcijos:

  • galimybė naudoti esamą termostatą (jei žmona dėl to dejuoja)
  • Nuotolinis prisijungimas
  • AWAY režimas
  • optimalus temperatūros indikatorius
  • Veikia su Alexa

Netrukus (atnaujinimų ieškokite čia)

  • „Google“pagrindinis puslapis
  • „Google“kalendorius
  • Keli jutikliai
  • Radiatoriaus valdikliai
  • IFTT integracijos
  • „Tasker“palaikymas
  • HTTP užklausos
  • Daug geriau atrodantis korpusas

1 žingsnis: kaip veikia termostatas

Kaip veikia termostatas
Kaip veikia termostatas
Kaip veikia termostatas
Kaip veikia termostatas

Tikėtina, kad termostatas prijungtas prie AUKŠTOS ĮTAMPOS! Nemėginkite nieko daryti, nebent įsitikinote, kad grandinė išjungta. Galite pakenkti sau ir sugadinti prijungtą įrangą. Norėdami užtikrinti savo saugumą, pasitarkite su kvalifikuotu elektriku

„Honeywell“termostatas yra sieninis įrenginys, maitinamas iš elektros tinklo („Sonoff“pagrindams reikia mažiausiai 90 V įtampos, mano grandinė turi 230 V įtampą). Dėžutė prijungta prie pagrindinio valdymo bloko (kuris yra labiau pažengęs) ir siunčia signalą, kai temperatūra nukrenta žemiau tikslinio lygio. Nors jūsų įrenginys gali būti skirtingas, veikiausiai principas yra tas pats. Jei turite 3 laidus ir nėra radijo ryšio tarp sieninio įrenginio-tai pamoka jums.

Aš žinau, kaip iš principo veikia 3 laidų termostatai, kurie man netrukdė perdegti saugiklį, netyčia sutrumpinus 2 laidus! Aš turiu 3 laidus, prijungtus prie įrenginio (4 -asis yra žemė). Mano „Honeywell“termostatas nėra belaidis, todėl norėdamas perjungti signalą galiu naudoti „Sonoff Basic“. Atėjo laikas jį išardyti ir pamatyti, kaip signalas siunčiamas į įrenginį. Atidžiau apžiūrėjus, terminalas prijungiamas taip:

  1. (mėlyna) - žemė
  2. (geltona) - signalas, aukštai patraukus, šildymas įjungtas
  3. nenaudojama
  4. (raudona) - laidas, naudojamas įtempti signalą

Kad pasiekčiau savo tikslą, turiu įjungti trumpą laidą su signaliniu laidu, kai noriu, kad mano šildymas būtų įjungtas. Jei turite panašiai prijungtą termostatą, jums pasisekė, nes „Sonoff Basic“pakaks.

2 žingsnis: „Sonoff Basic“paruošimas

„Sonoff Basic“paruošimas
„Sonoff Basic“paruošimas
„Sonoff Basic“paruošimas
„Sonoff Basic“paruošimas
„Sonoff Basic“paruošimas
„Sonoff Basic“paruošimas

Prieš pradėdami prijungti laidus, prie mišinio turime pridėti temperatūros jutiklį (DHT11). Įsitikinkite, kad „Sonoff“įrenginyje įdiegta „Tasmota“programinė įranga (čia yra puikus mirksėjimo vadovas) ir „Tasmota“palaikantis „Sonoff“yra tinkamai sukonfigūruotas (taip pat jau aprašytas). Dabar lieka tik prijungti DHT11 jutiklį prie „Sonoff“ir sukonfigūruoti jį temperatūros ataskaitoms.

DHT11 komplektuojamas su 3 laidų kaiščiais: signalas - GPIO14Vcc - 3.3VGND - GND

Aš prakiuriau skylę, man nerūpi, kaip ji atrodo dabar, man reikia tik koncepcijos įrodymo ir patvirtinimo. Kai atvyks mano 3D spausdintuvas, padarysiu gražų ir blizgantį korpusą. Aš atkreipiau ypatingą dėmesį į tai, kaip aš prijungiu „Sonoff“, nes turiu įsitikinti, kad įtampos laidas jungiasi prie signalo laido kitame „Sonoff“įrenginio gale. „Honeywell“įrenginyje yra įmontuotas apkrovos rezistorius (R), kuris riboja srovę. Nors grandinė yra apsaugota 3A saugikliu, protinga papildomai apsaugoti tą patį pasipriešinimą. Kai jau buvau paruošęs laidus, atėjo laikas išjungti pagrindinį maitinimą ir prijungti „Sonoff“atgal.

Sonoff Tasmota - Honeywell termostatas

„INPUT Live“- 4 -asis terminalas „Live“

INPUT GND - 1 -asis GND terminalas

OUTPUT Signal - 2 terminalo signalas

Anksčiau minėjau, kad kol kas nesiruošiu pabrėžti dėl to išvaizdos. Žmona buvo įsitikinusi, ir aš galiu sutelkti dėmesį į funkcionalumą ir pašalinti bet kokias klaidas. Gerai tai, kad originalus termostatas vis dar veikia. Jei įjungsiu, jis pakeis „Sonoff Tasmota“pagrįstą. Tai turėtų būti puiki atsarga bet kokiems netikėtiems įvykiams.

3 žingsnis: „NodeRED“

NodeRED
NodeRED
NodeRED
NodeRED
NodeRED
NodeRED

Atminkite, kad vaizdo įraše gali būti senesnių „NodeRed“nuorodų, aš nuolat dirbu tobulindamas dizainą. Tai nedideli pakeitimai, o straipsnių failai nuolat atnaujinami

Su šiuo dizainu susipažinau internete. Atrodo puikiai, tačiau atidžiai apžiūrėjus valdiklis tikrai netinka „NodeRED“. Tam reikia nustatyti 5 naudingąsias apkrovas, o tai ne taip, kaip veikia mazgų dizainas. Prireikė šiek tiek laiko, kol išsiaiškinau, kaip geriausiai perduoti visą šią informaciją, kad atnaujinčiau valdiklį ir išlaikyčiau jo veikimą. Esu tikras, kad laikui bėgant daugiau laiko skirsiu dizainui, kad galėčiau visus reikiamus atnaujinimus perkelti su vienu žinutės objektu. Kol kas yra taip, kaip yra.

Temperatūros srautas

DHT11 kas X sekundes praneša „NodeRED“serveriui. Padidinau šį dažnį per „Tasmota“konsolę. Tiesiog paleiskite komandą, kad nustatytumėte dažnį sekundėmis:

„TelePeriod“Nustatykite telemetrijos laikotarpį nuo 10 iki 3600 sekundžių

Tai dažniausiai daroma bandymams, nes nenoriu laukti minučių, kad pamatyčiau, ar mano klaidų pataisymai veikė. Jei dažnis bus aukštas, šildymas dažniau įsijungs trumpesnį laiką, todėl nenustatykite jo iki 10 sekundžių kitais nei bandymo tikslais. MQTT mazgas renka duomenis iš:

sonoff/tele/JUTIKLIS

ir saugo naudingiausius duomenis šiuose objektuose:

msg.payload. DHT11. Temperatūra msg.payload. DHT11. Drėgmė

Norėdami apriboti klaidas, pridėjau sklandų mazgą, kad rezultatai būtų vidutiniai, ir atnaujinau srauto kintamąjį: NodeRED:

Funkcijos mazgas - atnaujinkite „TempAmbient“

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

Valdiklio atnaujinimas

Aš nusprendžiau, kad 5 sekundės yra geras atnaujinimo dažnis, todėl šiuo dažniu stumiu visas reikalingas vertes. Vienintelė išimtis yra slankiklis, kuris dėl akivaizdžių priežasčių reaguoja akimirksniu.

Kiekvienas atitinkamas mazgas siunčia naudingąją apkrovą su priskirta tema į lizdą panašų valdiklį.

  • spalva (šildymas | aušinimas*| išjungta ir hvac_state)
  • lapas (tiesa | klaidinga ir turi_lapą)
  • toli (tiesa | klaidinga ir toli)
  • Aplinkos temperatūra (skaičius ir aplinkos temperatūra)
  • Tikslinė temperatūra (skaičius ir tikslinė temperatūra)

*nenaudojama

NodeRED: Funkcijos mazgas - valdiklio atnaujinimas

spalva

x = srautas.get ('TempTarget'); // targetz = flow.get ('TempAmbient'); // aplinkos

jei (z = x) {

flow.set ('šildymo būsena', "išjungta"); flow.set ('šildymo jungiklis', "IŠJUNGTA"); } msg.payload = z; msg.topic = "aplinkos temperatūra"; grąžinti pranešimą;

lapas

x = srautas.get ('TempAmbient'); if (x> 17 && x <23) {flow.set ('lapas', tiesa); msg.payload = tiesa; msg.topic = "has_leaf"; grąžinti pranešimą; } else {flow.set ('leaf', false); msg.payload = false; msg.topic = "has_leaf"; grąžinti pranešimą; }

Spalvos panaikinimas

x = flow.get ('toli'); jei (x === tiesa) {msg.topic = "hvac_state"; msg.payload = "išjungta"; grąžinti pranešimą; }

msg.topic = "hvac_state";

msg.payload = flow.get ('šildymo būsena');

grąžinti pranešimą;

Toli

x = flow.get ('toli'); if (x === tiesa) {flow.set ('šildymo jungiklis', "IŠJUNGTA"); flow.set ('šildymo būsena', "išjungta"); }

msg.topic = "toli";

msg.payload = flow.get ('toli'); grąžinti pranešimą;

Tikslinė temp

if (msg.topic === "atnaujinimas") {msg.topic = "tikslinė_temperatūra"; msg.payload = flow.get ('TempTarget'); grąžinti pranešimą; }

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

flow.set ('toli', klaidinga); msg.topic = "tikslinė_temperatūra"; flow.set ('TempTarget', msg.payload); }

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

flow.set ('toli', klaidinga); msg.topic = "tikslinė_temperatūra"; flow.set ('TempTarget', msg.payload); }

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

grąžinti pranešimą;

Kaip matote, aš atsisakiau srauto kintamųjų, todėl bet kuriuo metu galėjau prisiminti vertę. Turiu derinimo srautą, kuris iš esmės nuskaito visas išsaugotas vertes.

  • „TempAmbinet“- išsaugo esamą temp
  • „TempTarget“- turi temp tikslo vertę
  • „Lapas“- rodomas lapas, jei reikia
  • „Toli“- jei reikia, rodo būseną toli
  • „Šildymo būsena“- keičia ekrano spalvą
  • „HeatSwitch“- valdo relės būseną.

Iššūkis buvo iš tikrųjų įsitikinti, kad informacija atnaujinama „atnaujinant“ir paprašius kitomis priemonėmis („Alexa“ir kt.). Štai kodėl „JavaScript“matysite skirtingas sąlygas. Kiekvieną kartą, kai vertės atnaujinamos, siunčiamos į srauto kintamąjį ir atnaujinamas valdiklis.

Slankiklis

Bandymas atskleidė, kad reikia papildomai atnaujinti slankiklį (slankiklis stumia tikslinę temperatūrą). Slankiklis siunčia naudingąją apkrovą (skaičių) su susijusia tema „slankiklis“, kai ji perkeliama. Be to, noriu, kad slankiklis atsidurtų teisingoje padėtyje, jei yra kelios žiniatinklio sąsajos. Norėdami tai padaryti, kas 5 sekundes aš tiesiog atnaujinu slankiklio padėtį iki esamos tikslinės temperatūros.

NodeRED: Funkcijos mazgas - atnaujinti slankiklį '

msg.payload = flow.get ('TempTarget'); return msg;

Relės valdymas

Relės valdiklis yra paprastas, jam reikia (kol kas) dviejų įėjimų. „Alexa“tiesa | klaidinga ir sąveika, kuri atsiranda po „šildymo jungiklio“srauto kintamojo atnaujinimo. Nereikia skubių veiksmų, todėl dėl paprastumo jis veikia tuo pačiu 5 sekundžių atnaujinimo dažniu, kaip ir visa kita srauto dalis.

Relė prijungta per MQTT. Mazgas siunčia komandas ĮJUNGTI | IŠJUNGTI į temą:

sonoff/cmnd/POWER1

Funkcijos mazgas priima tikrąjį | false iš „Alexa“ir taip pat keičia įvesties būseną pagal „HeatSwitch“srauto kintamąjį.

NODRED: Funkcijos mazgas - valdymo relė"

if (msg.command === "TurnOffRequest") {msg.payload = "IŠJUNGTA"; grąžinti pranešimą; }

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

msg.payload = "ĮJUNGTA"; flow.set ('TempTarget', 21); grąžinti pranešimą; } if (msg.topic === "update") {msg.payload = flow.get ('šildymo perjungimas'); } grąžinti pranešimą;

„Alexa“integracija

Tai pirmas įrenginys, kurį turėjau išjungti „automatinį patvirtinimą“. Vietoj to, kad automatiškai prisiimčiau atsakymą, aš sugeneravau tokį, nes noriu, kad būtų galima užklausti nustatytą temperatūrą. Iš esmės, msg.payload = true | false nurodo, ar užklausa buvo sėkminga, o štai esantys šablonai - visa kita. Jei esate naujokas „Alexa“ir „NodeRed“, būtinai perskaitykite tai.

Aš nusprendžiau patvirtinimus perduoti atskirai (žinau, kad tai nėra geriausias būdas), kad galėčiau visa tai šiek tiek geriau valdyti. Tinkamai kiekvienas atsakymas turėtų būti pateiktas komandų grandinės pabaigoje. Manasis rizikuoja negrąžinti klaidų, jei jos įvyktų. Atminkite, kad norėdami būti nuoseklūs, atnaujinu tik kintamuosius, o atnaujinimo ciklas perkelia naujas reikšmes į valdiklį.

NodeRED: Funkcijos mazgas - apdorokite „Alexa“atsakymus “

// Kokia yra tikslinė termostato temperatūraif (msg.command === "GetTemperatureReadingRequest") {x = flow.get ('TempTarget'); msg.extra = {"temperatureReading": {"value": x}, "deviceResponseTimestamp": nauja data (). toISOString ()}; msg.payload = tiesa; grąžinti pranešimą; } // Nustatykite temperatūrą į (ne žemesnę kaip 10 ar daugiau nei 30), jei (msg.command === "SetTargetTemperatureRequest") {if (msg.payload 30) {var range = {min: 10,0, max: 30,0} msg.payload = false; msg.extra = diapazonas; } else {msg.extra = {targetTemperature: {value: msg.payload}}; msg.payload = tiesa; } grąžinti pranešimą; } // Įjunkite, jei (msg.command === "TurnOnRequest") {msg.payload = true; flow.set ('toli', klaidinga); flow.set ('TempTarget', 21); grąžinti pranešimą; } // Išjunkite, jei (msg.command === "TurnOffRequest") {msg.payload = true; flow.set ('toli', tiesa); grąžinti pranešimą;

4 žingsnis: Išvada

Išvada
Išvada

Jei „NodeRED“prietaisų skydelį veikia WAN, visą šildymo sistemą galima valdyti nuotoliniu būdu. Rekomenduočiau perskaityti šiuos straipsnius, kad galėtumėte greičiau naudotis „NodeRED“ir „NodeRED“sauga.

  • NodeRED pradedantiesiems
  • „NodeRED“saugumas

Be to, jei norite gauti informaciją apie šio projekto atnaujinimus - apsvarstykite galimybę sekti mane pasirinktoje platformoje:

  • Dvigubas
  • Instagram
  • Būkit

O jei norite nusipirkti man kavos ar nuolat palaikyti:

  • Paypal
  • Patreonas

Tikiuosi, kad jums patiko projektas!

Rekomenduojamas: