Innehållsförteckning:

NEST Din gamla termostat: 4 steg (med bilder)
NEST Din gamla termostat: 4 steg (med bilder)

Video: NEST Din gamla termostat: 4 steg (med bilder)

Video: NEST Din gamla termostat: 4 steg (med bilder)
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, Juli
Anonim
Image
Image
Hur en termostat fungerar
Hur en termostat fungerar

Värmesystemet i mitt hus är förmodligen lika gammalt som själva huset. Den är cirka 30 år gammal, vilket är bra när det gäller husår, men ganska mycket fast i istiden vad tekniken angår. Det finns två huvudproblem med kommersiella lösningar:

  • oöverkomliga priser
  • produkt som tjänst

Vi kommer alla ihåg vad som hände med Revolv och jag är inte så angelägen om att detta ska hända mig mitt i vintern. Med det i åtanke presenterar jag dig för en otroligt misstänkt men funktionell NEST-Like-kontroller för din gamla termostat. Oroa dig inte, jag planerar att lägga till ett mycket bättre hölje snart!

Funktioner:

  • möjligheten att använda en befintlig termostat (om hustrun stönar om det)
  • Fjärranslutning
  • BORT läge
  • optimal temperaturindikator
  • Fungerar med Alexa

Snart (kolla här för uppdateringar)

  • Google Home
  • Google Kalender
  • Flera sensorer
  • Kylare kontroller
  • IFTT -integrationer
  • Tasker -stöd
  • HTTP -förfrågningar
  • Ett mycket snyggare hölje

Steg 1: Hur en termostat fungerar

Hur en termostat fungerar
Hur en termostat fungerar
Hur en termostat fungerar
Hur en termostat fungerar

Termostaten är sannolikt ansluten till HIGH VOLTAGE! Försök inte göra någonting om du inte ser till att kretsen är avstängd. Du kan skada dig själv och orsaka skada på den anslutna utrustningen. Överväg att rådfråga en behörig elektriker för att garantera din säkerhet

Honeywell -termostaten är en väggmonterad enhet, som drivs av elnätet (Sonoff basics behöver min 90V, min krets har 230V). Lådan är ansluten till huvudstyrenheten (som är en mer avancerad låda) och den skickar signalen när temperaturen sjunker under målnivån. Även om din enhet kan vara annorlunda, är principen troligen densamma. Om du har tre ledningar och ingen radioanslutning mellan den väggmonterade enheten-det här är handledning för dig.

Jag vet hur 3-tråds termostater fungerar i princip, vilket inte hindrade mig från att blåsa en säkring genom att kortsluta 2 ledningar av misstag! Jag har 3 ledningar anslutna till enheten (med fjärde som jorden). Min Honeywell -termostat är inte trådlös, så för att byta signal kan jag använda Sonoff Basic. Det är dags att ta isär den och se hur signalen skickas till enheten. Vid närmare inspektion är terminalen ansluten på följande sätt:

  1. (blå) - Mark
  2. (gul) - signal, när den dras högt är värmen på
  3. används inte
  4. (röd) - den levande kabeln som används för att dra signalen högt

För att uppnå mitt mål måste jag korta strömledningen med signalkabeln när jag vill att min uppvärmning ska slås på. Om du har en liknande ansluten termostat har du tur eftersom Sonoff Basic räcker för att göra susen.

Steg 2: Gör Sonoff Basic redo

Gör Sonoff Basic redo
Gör Sonoff Basic redo
Gör Sonoff Basic redo
Gör Sonoff Basic redo
Gör Sonoff Basic redo
Gör Sonoff Basic redo

Innan vi börjar ansluta ledningarna måste vi lägga till en temperatursensor (DHT11) till blandningen. Se till att Tasmota-firmware har blinkat till din Sonoff-enhet (jag har en utmärkt blinkande guide här) och att din Tasmota-aktiverade Sonoff är korrekt konfigurerad (ingår också redan av mig). Nu återstår bara att ansluta DHT11 -sensorn till Sonoff och konfigurera den för temperaturrapportering.

DHT11 levereras med tre stift trådbundna: Signal - GPIO14Vcc - 3.3VGND - GND

Jag petade ett hål igenom, jag stör mig inte på hur det ser ut nu, allt jag behöver är bevis på koncept och validering. Jag kommer att göra ett fint och glänsande hölje när min 3D -skrivare kommer. Jag ägnade extra uppmärksamhet åt hur jag kopplar Sonoff, eftersom jag måste se till att den spänningsförande kabeln ansluter till signalkabeln i andra änden av Sonoff -enheten. Honeywell -enheten har lastmotståndet (R) inbyggt som begränsar strömmen. Medan kretsen är skyddad av 3A -säkringen är det smart att matcha samma motstånd för extra skydd. När jag väl hade kablarna klara var det dags att slå av strömmen och koppla tillbaka Sonoff.

Sonoff Tasmota - Honeywell termostat

INPUT Live - fjärde terminal Live

INGÅNG GND - första terminal GND

OUTPUT -signal - andra terminalens signal

Jag nämnde det förut för tillfället, jag kommer inte att stressa över utseendet på detta. Hustrun har övertygats och jag kan fokusera på funktionaliteten och rensa eventuella buggar som kommer att hända. Det som är bra är att den ursprungliga termostaten fortfarande fungerar. Om jag slår upp det kommer det att åsidosätta den Sonoff Tasmota -baserade. Detta bör vara en bra backup för eventuella oväntade händelser.

Steg 3: NodeRED

NodeRED
NodeRED
NodeRED
NodeRED
NodeRED
NodeRED

Observera att videon kan innehålla äldre NodeRed -referenser, jag arbetar hela tiden med att förbättra designen. Det här är små ändringar och artikelfilerna hålls uppdaterade

Jag stötte på denna design online. Det ser bra ut, men vid noggrann inspektion är widgeten inte riktigt lämplig för NodeRED. Det behöver 5 nyttolaster för att ställas in, vilket är helt enkelt inte hur noddesign fungerar. Det tog mig lite tid att ta reda på det bästa sättet att överföra all information till för att uppdatera widgeten och hålla den funktionell. Jag är säker på att jag med tiden kommer att lägga mer tid på designen så att jag kan driva alla nödvändiga uppdateringar med ett enda meddelandeobjekt. För tillfället är det vad det är.

Temperaturström

DHT11 rapporterar var X sekund tillbaka till NodeRED -servern. Jag ökade denna frekvens via Tasmotas konsol. Kör bara kommandot för att ställa in frekvensen i sekunder:

TelePeriod Ställ in telemetri mellan 10 och 3600 sekunder

Detta görs mest för tester, eftersom jag inte vill vänta i minuter för att se om mina buggfixar fungerade. Att hålla frekvensen hög kommer att göra att uppvärmningen avfyras oftare under kortare perioder, så avstå från att ställa in den på 10 sekunder för andra än teständamål. MQTT -noden hämtar data från:

sonoff/tele/SENSOR

och behåller de mest användbara uppgifterna i följande objekt:

msg.payload. DHT11. Temperatur msg.payload. DHT11. Fuktighet

För att begränsa felen lade jag till den släta noden för att genomsnittliga resultaten och uppdaterade flödesvariabeln: NodeRED:

Funktionsnod - Uppdatera 'TempAmbient'

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

Widget -uppdatering

Jag bestämde att 5 sekunder är en bra uppdateringsfrekvens, därför driver jag alla nödvändiga värden med denna frekvens. Det enda undantaget är reglaget, som av uppenbara skäl svarar direkt.

Varje motsvarande nod skickar nyttolasten med det tilldelade ämnet till nest-like-widgeten.

  • färg (värme | kyla*| av & hvac_state)
  • leaf (true | false & has_leaf)
  • bort (sant | falskt & bort)
  • Omgivningstemperatur (antal och omgivningstemperatur)
  • Måltemp (antal och måltemperatur)

*används inte

NodeRED: Funktionsnod - widgetuppdatering

Färg

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

om (z = x) {

flow.set ('heatingState', "off"); flow.set ('heatingSwitch', "OFF"); } msg.payload = z; msg.topic = "omgivningstemperatur"; returmeddelande;

blad

x = flow.get ('TempAmbient'); if (x> 17 && x <23) {flow.set ('leaf', true); msg.payload = true; msg.topic = "has_leaf"; returmeddelande; } annat {flow.set ('leaf', false); msg.payload = false; msg.topic = "has_leaf"; returmeddelande; }

Färg bort åsidosätt

x = flow.get ('bort'); if (x === true) {msg.topic = "hvac_state"; msg.payload = "av"; returmeddelande; }

msg.topic = "hvac_state";

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

returmeddelande;

Bort

x = flow.get ('bort'); if (x === true) {flow.set ('heatingSwitch', "OFF"); flow.set ('heatingState', "off"); }

msg.topic = "bort";

msg.payload = flow.get ('bort'); returmeddelande;

Måltemp

if (msg.topic === "uppdatering") {msg.topic = "target_temperature"; msg.payload = flow.get ('TempTarget'); returmeddelande; }

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

flow.set ('bort', falskt); msg.topic = "target_temperature"; flow.set ('TempTarget', msg.payload); }

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

flow.set ('bort', falskt); msg.topic = "target_temperature"; flow.set ('TempTarget', msg.payload); }

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

returmeddelande;

Som du ser valde jag bort flödesvariablerna, så jag kunde komma ihåg värdet när som helst. Jag har ett felsökningsflöde som i princip läser alla lagrade värden.

  • ‘TempAmbinet’ - lagrar aktuell temperatur
  • 'TempTarget' - håller tempets målvärde
  • "Blad" - visar blad om det behövs
  • "Borta" - visar bortastatus vid behov
  • ‘HeatingState’ - ändrar färg på displayen
  • 'HeatingSwitch' - styr reläets tillstånd.

Utmaningen var att faktiskt se till att informationen uppdateras vid "uppdatering" och när den begärs via andra sätt (Alexa, etc). Det är därför du kommer att se olika villkor i JavaScript. Varje gång värdena uppdateras skickas de till flödesvariabeln och widgeten uppdateras.

Reglage

Testning visade att en ytterligare reglageuppdatering (skjutreglaget skjuter måltemperaturen) behövs. Slider skickar nyttolast (nummer) med det tillhörande ämnet "reglage" när det flyttas. Utöver detta vill jag att reglaget kommer till rätt position om flera webbgränssnitt finns på plats. För att göra detta uppdaterar jag var femte sekund helt enkelt reglaget till en aktuell måltemperatur.

NodeRED: Function Node - Uppdateringsreglaget '

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

Reläkontroll

Relästyrenheten är enkel, det tar (för tillfället) två ingångar. Alexa är sant | falskt och interaktionen som följer efter en uppdatering av flödesvariabeln "värmebrytare". Det finns inget behov av en omedelbar åtgärd, så för enkelhetens skull körs den på samma 5sek -uppdateringsfrekvens som resten av flödet.

Reläet är anslutet via MQTT. Noden lägger ut ON | OFF -kommandon till ämnet:

sonoff/cmnd/POWER1

Funktionsnoden accepterar den sanna | falska från Alexa och ändrar också ingångens tillstånd enligt flödesvariabeln ‘heatingSwitch’.

NodeRED: Funktionsnod - Kontrollrelä '

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

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

msg.payload = "PÅ"; flow.set ('TempTarget', 21); returmeddelande; } if (msg.topic === "uppdatering") {msg.payload = flow.get ('heatingSwitch'); } returmeddelande;

Alexa -integration

Detta är den första enheten jag var tvungen att stänga av "automatisk kvittering". Istället för att automatiskt anta ett svar har jag genererat ett eftersom jag vill ha möjlighet att fråga den inställda temperaturen. I princip anger msg.payload = true | false om begäran har lyckats och mallarna som finns här gör resten. Om du är ny på Alexa och NodeRed, var noga med att läsa detta.

Jag bestämde mig för att lämna bekräftelserna åtskilda (jag vet att detta inte är det bästa sättet) för att kunna styra det hela lite bättre. Varje svar ska ges korrekt i slutet av kommandokedjan. Mitt riskerar att inte returnera fel om dessa skulle hända. Observera att för att vara konsekvent uppdaterar jag bara variablerna medan uppdateringsslingan driver de nya värdena till widgeten.

NodeRED: Function Node - Process Alexa Responses '

// Vad är termostatens måltemperatur if (msg.command === "GetTemperatureReadingRequest") {x = flow.get ('TempTarget'); msg.extra = {"temperatureReading": {"värde": x}, "deviceResponseTimestamp": nytt datum (). toISOString ()}; msg.payload = true; returmeddelande; } // Ställ in temperaturen till (inte lägre än 10 eller mer än 30) om (msg.command === "SetTargetTemperatureRequest") {if (msg.payload 30) {var range = {min: 10.0, max: 30.0} msg.payload = false; msg.extra = intervall; } annat {msg.extra = {targetTemperature: {värde: msg.payload}}; msg.payload = true; } returmeddelande; } // Slå på den om (msg.command === "TurnOnRequest") {msg.payload = true; flow.set ('bort', falskt); flow.set ('TempTarget', 21); returmeddelande; } // Stäng av den om (msg.command === "TurnOffRequest") {msg.payload = true; flow.set ('bort', sant); returmeddelande;

Steg 4: Slutsats

Slutsats
Slutsats

Om du utsätter NodeRED -instrumentpanelen för WAN kan hela värmesystemet fjärrstyras. Jag rekommenderar dig att läsa följande artiklar för att komma igång med NodeRED och NodeRED -säkerhet.

  • NodeRED för nybörjare
  • NodeRED säkerhet

Dessutom, om du vill få information om uppdateringarna till detta projekt - överväg att följa mig på den plattform du väljer:

  • Instagram
  • Youtube

Och om du känner för att köpa en kaffe eller stödja mig på ett mer kontinuerligt sätt:

  • Paypal
  • Patreon

Jag hoppas att du har tyckt om projektet!

Rekommenderad: