Sommario:

NEST Il tuo vecchio termostato: 4 passaggi (con immagini)
NEST Il tuo vecchio termostato: 4 passaggi (con immagini)

Video: NEST Il tuo vecchio termostato: 4 passaggi (con immagini)

Video: NEST Il tuo vecchio termostato: 4 passaggi (con immagini)
Video: Recensione Google Nest Smart Learning Thermostat, il top per la Smart Home 2024, Luglio
Anonim
Image
Image
Come funziona un termostato
Come funziona un termostato

L'impianto di riscaldamento di casa mia è probabilmente vecchio quanto la casa stessa. Ha circa 30 anni, il che va bene in termini di anni domestici, ma praticamente bloccato nell'era glaciale per quanto riguarda la tecnologia. Ci sono 2 problemi principali con le soluzioni commerciali:

  • prezzi proibitivi
  • prodotto come servizio

Tutti ricordiamo cosa è successo a Revolv e non sono molto entusiasta che mi succeda nel bel mezzo dell'inverno. Con questo in mente, ti presento un controller NEST-Alike dall'aspetto incredibilmente sospetto ma funzionale per il tuo vecchio termostato. Non preoccuparti, sto progettando di aggiungere presto un recinto molto migliore!

Caratteristiche:

  • possibilità di utilizzare un termostato esistente (nel caso in cui la moglie si lamenti)
  • accesso remoto
  • Modalità ASSENTE
  • indicatore della temperatura ottimale
  • Funziona con Alexa

Presto (controlla qui per gli aggiornamenti)

  • Google Home
  • Google Calendar
  • Sensori multipli
  • Comandi del radiatore
  • Integrazioni IFTT
  • Supporto Tasker
  • Richieste
  • Un recinto molto più bello

Passaggio 1: come funziona un termostato

Come funziona un termostato
Come funziona un termostato
Come funziona un termostato
Come funziona un termostato

Il termostato è probabilmente collegato all'ALTA TENSIONE! Non tentare di fare nulla se non ti sei assicurato che il circuito sia spento. Puoi farti del male e causare danni all'apparecchiatura collegata. Considera la possibilità di consultare un elettricista qualificato per garantire la tua sicurezza

Il termostato Honeywell è un'unità montata a parete, alimentata dalla rete elettrica (le basi Sonoff richiedono almeno 90 V, il mio circuito ha 230 V). La scatola è collegata all'unità di controllo principale (che è una scatola più avanzata) e invia il segnale quando la temperatura scende al di sotto del livello target. Sebbene la tua unità possa essere diversa, il principio è molto probabilmente lo stesso. Se hai 3 fili e nessuna connessione radio tra l'unità a parete, questo è il tutorial che fa per te.

So come funzionano i termostati a 3 fili secondo un principio, che non mi ha impedito di far saltare un fusibile cortocircuitando 2 fili per sbaglio! Ho 3 fili collegati all'unità (il 4° è la terra). Il mio termostato Honeywell non è wireless, quindi per cambiare il segnale posso usare Sonoff Basic. È ora di smontarlo e vedere come viene inviato il segnale all'unità. A un'ispezione più attenta, il terminale è collegato nel modo seguente:

  1. (blu) – Terra
  2. (giallo) – segnale, quando tirato in alto il riscaldamento è acceso
  3. non in uso
  4. (rosso) – il cavo sotto tensione utilizzato per portare il segnale alto

Per raggiungere il mio obiettivo, devo cortocircuitare il cavo in tensione con il cavo del segnale quando voglio che il mio riscaldamento si accenda. Se hai un termostato collegato in modo simile, sei fortunato perché Sonoff Basic sarà sufficiente per fare il trucco.

Passaggio 2: Preparare Sonoff Basic

Preparare Sonoff Basic
Preparare Sonoff Basic
Preparare Sonoff Basic
Preparare Sonoff Basic
Preparare Sonoff Basic
Preparare Sonoff Basic

Prima di iniziare a collegare i fili, dobbiamo aggiungere un sensore di temperatura (DHT11) al mix. Assicurati di avere il firmware Tasmota flashato sul tuo dispositivo Sonoff (ho un'eccellente guida al flashing qui) e che il tuo Sonoff abilitato per Tasmota sia configurato correttamente (anch'esso già coperto da me). Ora non ti resta che collegare il sensore DHT11 al Sonoff e configurarlo per la segnalazione della temperatura.

DHT11 viene fornito con 3 pin cablati: Segnale - GPIO14Vcc - 3.3VGND - GND

Ho fatto un buco, non mi interessa come sembra ora, tutto ciò di cui ho bisogno è la prova del concetto e la convalida. Farò una custodia bella e lucida una volta arrivata la mia stampante 3D. Ho prestato particolare attenzione a come collego il Sonoff, poiché devo assicurarmi che il cavo in tensione si colleghi al cavo del segnale all'altra estremità del dispositivo Sonoff. L'unità Honeywell ha al suo interno la resistenza di carico (R) che limita la corrente. Mentre il circuito è protetto dal fusibile 3A, è intelligente abbinare la stessa resistenza per una protezione extra. Una volta pronti i cavi, è arrivato il momento di spegnere l'alimentazione principale e ricollegare il Sonoff.

Sonoff Tasmota - Termostato Honeywell

INGRESSO Live - 4° terminale Live

INGRESSO GND - 1° terminale GND

Segnale di USCITA - Segnale del 2° terminale

L'ho menzionato prima per ora, non ho intenzione di sottolineare l'aspetto di questo. La moglie è stata convinta e posso concentrarmi sulla funzionalità e sull'eliminazione di eventuali bug che accadranno. La cosa buona è che il termostato originale funziona ancora. Se lo alzo, sovrascriverà quello basato su Sonoff Tasmota. Questo dovrebbe essere un ottimo backup per eventuali eventi imprevisti.

Passaggio 3: NodeRED

NodeRED
NodeRED
NodeRED
NodeRED
NodeRED
NodeRED

Tieni presente che il video potrebbe contenere riferimenti a NodeRed precedenti, lavoro costantemente per migliorare il design. Queste sono piccole modifiche e i file degli articoli vengono mantenuti aggiornati

Mi sono imbattuto in questo disegno online. Sembra fantastico, tuttavia, a un'attenta ispezione, il widget non è proprio adatto per NodeRED. Ha bisogno di 5 payload da impostare, che non è semplicemente il modo in cui funziona il design del nodo. Mi ci è voluto del tempo per capire il modo migliore per passare tutte quelle informazioni per aggiornare il widget e mantenerlo funzionante. Sono sicuro che con il tempo dedicherò più tempo al design in modo da poter inviare tutti gli aggiornamenti necessari con un singolo oggetto msg. Per ora è quello che è.

Flusso di temperatura

DHT11 riporta ogni X secondi al server NodeRED. Ho aumentato questa frequenza attraverso la console del Tasmota. Basta eseguire il comando per impostare la frequenza in secondi:

TelePeriod Imposta il periodo di telemetria tra 10 e 3600 secondi

Questo viene fatto principalmente per i test, poiché non voglio aspettare minuti per vedere se le mie correzioni di bug hanno funzionato. Mantenendo alta la frequenza, il riscaldamento si accenderà più frequentemente per periodi di tempo più brevi, quindi evita di impostarlo su 10 secondi per scopi diversi dai test. Il nodo MQTT estrae i dati da:

sonoff/tele/SENSOR

e conserva i dati più utili nei seguenti oggetti:

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

Per limitare gli errori, ho aggiunto il nodo smooth per fare la media dei risultati e aggiornato la variabile di flusso: NodeRED:

Nodo funzione - Aggiorna 'TempAmbient'

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

Aggiornamento widget

Ho deciso che 5 secondi sono una buona frequenza di aggiornamento, quindi sto spingendo tutti i valori necessari con questa frequenza. L'unica eccezione è lo slider, che per ovvi motivi risponde istantaneamente.

Ciascun nodo corrispondente invia il payload con l'argomento assegnato al widget simile al nido.

  • colore (riscaldamento|raffreddamento*|off & hvac_state)
  • foglia (vero|falso & ha_foglia)
  • lontano (vero|falso & lontano)
  • Temperatura ambiente (numero e temperatura_ambiente)
  • Temperatura target (numero e temperatura_obiettivo)

*non in uso

NodeRED: Function Node - Widget Update

colore

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

se (z = x){

flow.set('heatingState', "off"); flow.set('riscaldamento', "OFF"); } msg.payload = z; msg.topic = "temperatura_ambiente"; messaggio di ritorno;

foglia

x = flusso.get('TempAmbient'); if (x > 17 && x < 23){ flow.set('leaf', true); msg.payload = vero; msg.topic = "has_leaf"; messaggio di ritorno; } else{flow.set('foglia', false); msg.payload = falso; msg.topic = "has_leaf"; messaggio di ritorno; }

Esclusione del colore away

x = flusso.get('via'); if (x === true){ msg.topic = "hvac_state"; msg.payload = "spento"; messaggio di ritorno; }

msg.topic = "hvac_state";

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

messaggio di ritorno;

Via

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

msg.topic = "via";

msg.payload = flow.get('away'); messaggio di ritorno;

Temp. obiettivo

if (msg.topic === "aggiorna"){ msg.topic = "target_temperature"; msg.payload = flow.get('TempTarget'); messaggio di ritorno; }

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

flow.set('via', falso); msg.topic = "temperatura_target"; flow.set('TempTarget', msg.payload); }

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

flow.set('via', falso); msg.topic = "temperatura_target"; flow.set('TempTarget', msg.payload); }

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

messaggio di ritorno;

Come vedi, ho scelto di non utilizzare le variabili di flusso, in modo da poter richiamare il valore in qualsiasi momento. Ho un flusso di debug che in pratica legge tutti i valori memorizzati.

  • 'TempAmbinet' – memorizza la temperatura attuale
  • 'TempTarget': mantiene il valore target temporaneo
  • 'leaf' – visualizza la foglia se necessario
  • 'away': visualizza lo stato di assenza se necessario
  • ‘heatingState‘– cambia il colore del display
  • 'heatingSwitch' – controlla lo stato del relè.

La sfida era quella di assicurarsi effettivamente che le informazioni fossero aggiornate su "aggiornamento" e quando richiesto tramite altri mezzi (Alexa, ecc.). Questo è il motivo per cui vedrai condizioni diverse nel JavaScript. Ogni volta che i valori vengono aggiornati, inviati alla variabile di flusso e il widget viene aggiornato.

dispositivo di scorrimento

I test hanno rivelato che è necessario un ulteriore aggiornamento del dispositivo di scorrimento (il dispositivo di scorrimento spinge la temperatura target). Slider invia il payload (numero) con l'argomento associato slider) quando viene spostato. Inoltre, voglio che il dispositivo di scorrimento si inserisca nella posizione corretta se sono presenti più interfacce Web. Per fare ciò, ogni 5 secondi aggiorno semplicemente la posizione del cursore a una temperatura target corrente.

NodeRED: Function Node - Update slider'

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

Controllo relè

Il controller del relè è semplice, richiede (per ora) due ingressi. Vero|falso di Alexa e l'interazione che segue un aggiornamento alla variabile di flusso "interruttore di riscaldamento". Non è necessaria un'azione istantanea, quindi, per semplicità, viene eseguito con la stessa frequenza di aggiornamento di 5 secondi del resto del flusso.

Il relè è collegato tramite MQTT. Il nodo sta inviando comandi ON|OFF all'argomento:

sonoff/cmnd/POWER1

Il nodo della funzione accetta il true|false da Alexa e cambia anche lo stato dell'input in base alla variabile di flusso "heatingSwitch".

NodeRED: Nodo funzione - Relè di controllo'

if (msg.command === "TurnOffRequest"){ msg.payload = "OFF"; messaggio di ritorno; }

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

msg.payload = "ON"; flow.set('TempTarget', 21); messaggio di ritorno; } if (msg.topic === "update"){ msg.payload = flow.get('heatingSwitch'); } restituisce il messaggio;

Integrazione con Alexa

Questo è il primo dispositivo che ho dovuto disattivare il "riconoscimento automatico". Invece di assumere automaticamente una risposta, ne ho generata una poiché desidero la possibilità di interrogare la temperatura impostata. In linea di principio, msg.payload = true|false indica se la richiesta è andata a buon fine, ei modelli qui trovati fanno il resto. Se non conosci Alexa e NodeRed, assicurati di leggere questo.

Ho deciso di passare i riconoscimenti a parte (so che questo non è il modo migliore) per poter controllare tutto un po' meglio. Correttamente ogni risposta dovrebbe essere data alla fine della catena di comando. Il mio rischia di non restituire errori nel caso si verificassero. Nota che per essere coerente, aggiorno solo le variabili, mentre il ciclo di aggiornamento invia i nuovi valori al widget.

NodeRED: Function Node - Elabora le risposte di Alexa'

// Qual è la temperatura target del termostatoif (msg.command === "GetTemperatureReadingRequest"){ x =flow.get('TempTarget'); msg.extra = { "temperatureReading": { "value": x}, "applianceResponseTimestamp": new Date().toISOString()}; msg.payload = vero; messaggio di ritorno; } // Imposta la temperatura su (non inferiore a 10 o superiore a 30) if (msg.command === "SetTargetTemperatureRequest"){ if (msg.payload 30) { var range = { min: 10.0, max: 30.0 } msg.payload = falso; msg.extra = intervallo; } else { msg.extra = { targetTemperature: { valore: msg.payload } }; msg.payload = vero; } restituisce il messaggio; } // Attivalo if (msg.command === "TurnOnRequest"){ msg.payload = true; flow.set('via', falso); flow.set('TempTarget', 21); messaggio di ritorno; } // Disattivalo if (msg.command === "TurnOffRequest"){ msg.payload = true; flow.set('via', vero); messaggio di ritorno;

Passaggio 4: conclusione

Conclusione
Conclusione

Se esponi la dashboard di NodeRED alla WAN, l'intero sistema di riscaldamento può essere controllato da remoto. Ti consiglio di leggere i seguenti articoli per essere al passo con la sicurezza di NodeRED e NodeRED.

  • NodeRED per principianti
  • Sicurezza NodeRED

Inoltre, se vuoi essere informato sugli aggiornamenti di questo progetto, considera di seguirmi sulla piattaforma che preferisci:

  • Instagram
  • Youtube

E se hai voglia di offrirmi un caffè o di sostenermi in modo più continuo:

  • Paypal
  • Patreon

Spero che il progetto vi sia piaciuto!

Consigliato: