Spisu treści:

NEST Twój stary termostat: 4 kroki (ze zdjęciami)
NEST Twój stary termostat: 4 kroki (ze zdjęciami)

Wideo: NEST Twój stary termostat: 4 kroki (ze zdjęciami)

Wideo: NEST Twój stary termostat: 4 kroki (ze zdjęciami)
Wideo: Jak odblokować zawór termostatyczny w grzejniku? Grzejnik nie grzeje. Zablokowany zawór grzejnika CO 2024, Lipiec
Anonim
Image
Image
Jak działa termostat
Jak działa termostat

System ogrzewania w moim domu jest prawdopodobnie tak stary jak sam dom. Ma około 30 lat, co jest w porządku pod względem lat domowych, ale jeśli chodzi o technologię, utknął w epoce lodowcowej. Istnieją 2 główne problemy z rozwiązaniami komercyjnymi:

  • zaporowe ceny
  • produkt jako usługa

Wszyscy pamiętamy, co stało się z Revolvem i nie jestem zbyt chętny, aby to przydarzyło mi się w środku zimy. Mając to na uwadze, przedstawiam Ci niesamowicie podejrzanie wyglądający, ale funkcjonalny kontroler NEST-Alike do Twojego starego termostatu. Nie martw się, planuję wkrótce dodać znacznie lepszą obudowę!

Cechy:

  • możliwość korzystania z istniejącego termostatu (na wypadek, gdyby żona na to narzekała)
  • zdalny dostęp
  • Tryb AWAY
  • optymalny wskaźnik temperatury
  • Współpracuje z Alexa

Wkrótce (sprawdź tutaj aktualizacje)

  • Strona główna Google
  • kalendarz Google
  • Wiele czujników
  • Sterowanie grzejnikami
  • Integracje IFTT
  • Wsparcie Taskera
  • Żądania
  • O wiele lepiej wyglądająca obudowa

Krok 1: Jak działa termostat

Jak działa termostat
Jak działa termostat
Jak działa termostat
Jak działa termostat

Termostat jest prawdopodobnie podłączony do WYSOKIEGO NAPIĘCIA! Nie próbuj nic robić, chyba że upewniłeś się, że obwód jest wyłączony. Możesz zranić się i spowodować uszkodzenie podłączonego sprzętu. Rozważ skonsultowanie się z wykwalifikowanym elektrykiem, aby zapewnić sobie bezpieczeństwo

Termostat Honeywell to urządzenie naścienne, zasilane z sieci (podstawy Sonoffa wymagają min 90V, mój obwód ma 230V). Skrzynka jest podłączona do głównej jednostki sterującej (która jest bardziej zaawansowaną skrzynką) i wysyła sygnał, gdy temperatura spadnie poniżej poziomu docelowego. Chociaż twoja jednostka może być inna, zasada jest najprawdopodobniej taka sama. Jeśli masz 3 przewody i nie masz połączenia radiowego między jednostką naścienną – to jest samouczek dla Ciebie.

Wiem, jak działają termostaty 3-przewodowe w zasadzie, co nie powstrzymało mnie przed przepaleniem bezpiecznika przez przypadkowe zwarcie 2 przewodów! Mam 3 przewody podłączone do urządzenia (czwarty to uziemienie). Mój termostat Honeywell nie jest bezprzewodowy, więc do przełączania sygnału mogę użyć Sonoff Basic. Czas go rozebrać i zobaczyć, jak sygnał jest przesyłany do urządzenia. Po bliższym przyjrzeniu się, terminal jest podłączony w następujący sposób:

  1. (niebieski) – Uziemienie
  2. (żółty) – sygnał, gdy zaciągnięty wysoko ogrzewanie jest włączone
  3. nie w użyciu
  4. (czerwony) – przewód pod napięciem służący do podciągania sygnału w górę

Aby osiągnąć swój cel, muszę zewrzeć przewód pod napięciem z przewodem sygnałowym, gdy chcę, aby moje ogrzewanie było włączone. Jeśli masz podobnie podłączony termostat, masz szczęście, ponieważ Sonoff Basic wystarczy, aby załatwić sprawę.

Krok 2: Przygotowanie do Sonoff Basic

Przygotowanie do Sonoff Basic
Przygotowanie do Sonoff Basic
Przygotowanie do Sonoff Basic
Przygotowanie do Sonoff Basic
Przygotowanie Sonoff Basic
Przygotowanie Sonoff Basic

Zanim zaczniemy podłączać przewody, musimy dodać do miksera czujnik temperatury (DHT11). Upewnij się, że masz oprogramowanie Tasmota sflashowane do urządzenia Sonoff (mam tutaj doskonały przewodnik po flashowaniu), a twój Sonoff z obsługą Tasmota jest poprawnie skonfigurowany (również już przeze mnie). Teraz pozostaje Ci już tylko podłączyć czujnik DHT11 do Sonoffa i skonfigurować go do raportowania temperatury.

DHT11 jest wyposażony w 3 piny przewodowe: Sygnał - GPIO14Vcc - 3.3VGND - GND

Przebiłem dziurę, nie przejmuję się tym, jak to teraz wygląda, wszystko, czego potrzebuję, to dowód koncepcji i walidacja. Wykonam ładną i błyszczącą obudowę po przybyciu mojej drukarki 3D. Zwróciłem szczególną uwagę na sposób podłączenia Sonoffa, ponieważ muszę się upewnić, że przewód pod napięciem łączy się z przewodem sygnałowym na drugim końcu urządzenia Sonoff. Jednostka Honeywell ma wbudowany rezystor obciążenia (R), który ogranicza prąd. Chociaż obwód jest chroniony bezpiecznikiem 3A, mądrze jest dopasować tę samą rezystancję, aby uzyskać dodatkową ochronę. Kiedy już miałem gotowe przewody, nadszedł czas, aby wyłączyć główne zasilanie i podłączyć Sonoff z powrotem.

Sonoff Tasmota - termostat Honeywell

INPUT Live - 4. terminal na żywo

WEJŚCIE GND - 1. zacisk GND

WYJŚCIE Sygnał - 2. zacisk Sygnał

Wspomniałem wcześniej, że na razie nie będę się stresował wyglądem tego. Żona została przekonana i mogę skupić się na funkcjonalności i usuwaniu wszelkich błędów, które się pojawią. Dobrą rzeczą jest to, że oryginalny termostat nadal działa. Jeśli go podkręcę, zastąpi ten oparty na Sonoff Tasmota. Powinno to być świetną kopią zapasową na wszelkie nieoczekiwane zdarzenia.

Krok 3: NodeRED

WęzełRED
WęzełRED
WęzełRED
WęzełRED
WęzełRED
WęzełRED

Pamiętaj, że wideo może zawierać starsze referencje NodeRed, stale pracuję nad poprawą projektu. Są to drobne zmiany, a pliki artykułów są aktualizowane

Natknąłem się na ten projekt w Internecie. Wygląda świetnie, jednak po bliższym przyjrzeniu się, widżet nie jest odpowiedni dla NodeRED. Wymaga ustawienia 5 ładunków, co po prostu nie jest sposobem działania projektu podobnego do węzła. Zajęło mi trochę czasu, zanim wymyśliłem najlepszy sposób przekazania wszystkich tych informacji, aby zaktualizować widżet i zachować jego funkcjonalność. Jestem pewien, że z czasem spędzę więcej czasu nad projektem, abym mógł przesłać wszystkie potrzebne aktualizacje za pomocą jednego obiektu msg. Na razie tak jest.

Strumień temperatury

DHT11 raportuje co X sekund z powrotem do serwera NodeRED. Zwiększyłem tę częstotliwość za pomocą konsoli Tasmoty. Wystarczy uruchomić polecenie, aby ustawić częstotliwość w sekundach:

TelePeriod Ustaw okres telemetrii od 10 do 3600 sekund

Odbywa się to głównie w przypadku testów, ponieważ nie chcę czekać minut, aby sprawdzić, czy moje poprawki błędów zadziałały. Utrzymywanie wysokiej częstotliwości spowoduje, że ogrzewanie będzie uruchamiane częściej przez krótsze okresy czasu, więc nie ustawiaj jej na 10 sekund w celach innych niż testowe. Węzeł MQTT pobiera dane z:

sonoff/tele/czujnik

i przechowuje najbardziej przydatne dane w następujących obiektach:

msg.payload. DHT11. Temperatura msg.payload. DHT11. Wilgotność

Aby ograniczyć błędy, dodałem gładki węzeł do uśredniania wyników i zaktualizowałem zmienną przepływu: NodeRED:

Węzeł funkcji - aktualizacja „TempAmbient”

flow.set('TempAmbient', msg.payload. DHT11. Temperature);wiadomość zwrotna;

Aktualizacja widżetu

Uznałem, że 5 sekund to dobra częstotliwość odświeżania, dlatego wciskam wszystkie potrzebne wartości z tą częstotliwością. Jedynym wyjątkiem jest suwak, który z oczywistych względów reaguje błyskawicznie.

Każdy odpowiadający węzeł wysyła ładunek z przypisanym tematem do widgetu podobnego do gniazda.

  • kolor (ogrzewanie|chłodzenie*|wyłączone i hvac_state)
  • liść (prawda|fałsz i has_leaf)
  • z dala (prawda | fałsz i nieobecność)
  • Temperatura otoczenia (liczba i temperatura otoczenia)
  • Temperatura docelowa (liczba i temperatura_docelowa)

*nie w użyciu

NodeRED: Węzeł funkcji - Aktualizacja widżetu

kolor

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

jeśli (z = x){

flow.set('ogrzewanie', "off"); flow.set('heatingSwitch', "OFF"); } msg.payload = z; msg.topic = "temperatura_otoczenia"; wiadomość zwrotna;

liść

x = flow.get('TempAmbient'); if (x > 17 && x < 23){ flow.set('leaf', true); msg.payload = prawda; msg.topic = "ma_liść"; wiadomość zwrotna; } else{flow.set('liść', fałsz); msg.payload = fałsz; msg.topic = "ma_liść"; wiadomość zwrotna; }

Nadpisanie koloru

x = flow.get('away'); if (x === true){ msg.topic = "hvac_state"; msg.payload = "wyłączone"; wiadomość zwrotna; }

msg.topic = "hvac_state";

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

wiadomość zwrotna;

Z dala

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

msg.topic = "z dala";

msg.payload = flow.get('away'); wiadomość zwrotna;

Temperatura docelowa

if (msg.topic === "aktualizacja"){ msg.topic = "temperatura_docelowa"; msg.payload = flow.get('TempTarget'); wiadomość zwrotna; }

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

flow.set('z dala', fałsz); msg.topic = "temperatura_docelowa"; flow.set('TempTarget', msg.payload); }

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

flow.set('z dala', fałsz); msg.topic = "temperatura_docelowa"; flow.set('TempTarget', msg.payload); }

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

wiadomość zwrotna;

Jak widzisz, zrezygnowałem ze zmiennych przepływu, aby móc w dowolnym momencie przywołać wartość. Mam przepływ debugowania, który zasadniczo odczytuje wszystkie zapisane wartości.

  • „TempAmbinet” – przechowuje aktualną temperaturę
  • „TempTarget” – przechowuje docelową wartość temp
  • ‘liść’ – wyświetla liść w razie potrzeby
  • „z dala” – wyświetla status nieobecności w razie potrzeby
  • ‘heatingState’ – zmienia kolor wyświetlacza
  • „heatingSwitch” – kontroluje stan przekaźnika.

Wyzwaniem było upewnienie się, że informacje są aktualizowane podczas „aktualizacji” i na żądanie w inny sposób (Alexa itp.). Dlatego w JavaScript zobaczysz różne warunki. Za każdym razem, gdy wartości są aktualizowane, wysyłane do zmiennej przepływu i odświeżany widżet.

Suwak

Testy wykazały, że potrzebna jest dodatkowa aktualizacja suwaka (suwak przesuwa docelową temperaturę). Suwak wysyła ładunek (liczbę) z powiązanym tematem „suwakiem”, gdy jest przenoszony. Poza tym chcę, aby suwak znalazł się we właściwej pozycji, jeśli istnieje wiele interfejsów internetowych. Aby to zrobić, co 5 sekund po prostu aktualizuję pozycję suwaka do aktualnej temperatury docelowej.

NodeRED: Węzeł funkcyjny - suwak aktualizacji'

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

Sterowanie przekaźnikiem

Sterownik przekaźnika jest prosty, zajmuje (na razie) dwa wejścia. True|false Alexy i interakcja następująca po aktualizacji zmiennej przepływu „przełącznik ogrzewania”. Nie ma potrzeby natychmiastowego działania, więc dla uproszczenia działa z taką samą częstotliwością aktualizacji 5 sekund, jak reszta przepływu.

Przekaźnik jest podłączony przez MQTT. Węzeł publikuje komendy ON|OFF w temacie:

sonoff/cmnd/POWER1

Węzeł funkcji akceptuje prawdę|fałsz od Alexy, a także zmienia stan wejścia zgodnie ze zmienną przepływu „heatingSwitch”.

NodeRED: węzeł funkcyjny - przekaźnik sterujący'

if (msg.command === "TurnOffRequest"){ msg.payload = "OFF"; wiadomość zwrotna; }

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

msg.payload = "WŁ"; flow.set('TempTarget', 21); wiadomość zwrotna; } if (msg.topic === "update"){ msg.payload = flow.get('heatingSwitch'); } zwróć wiadomość;

Integracja Alexa

To pierwsze urządzenie, w którym musiałem wyłączyć „automatyczne potwierdzanie”. Zamiast automatycznie zakładać odpowiedź, wygenerowałem ją, ponieważ chcę mieć możliwość zapytania o zadaną temperaturę. Zasadniczo msg.payload = true|false wskazuje, czy żądanie powiodło się, a szablony znalezione tutaj zajmują się resztą. Jeśli jesteś nowy w Alexa i NodeRed, koniecznie przeczytaj to.

Postanowiłem przekazać podziękowania osobno (wiem, że to nie jest najlepszy sposób), aby móc trochę lepiej to wszystko kontrolować. Prawidłowo każda odpowiedź powinna być podana na końcu łańcucha poleceń. Mój ryzykuje, że nie zwróci błędów, jeśli tak się stanie. Zauważ, że aby zachować spójność, aktualizuję tylko zmienne, podczas gdy pętla odświeżania wypycha nowe wartości do widżetu.

NodeRED: Węzeł funkcyjny - Przetwarzaj odpowiedzi Alexa

// Jaka jest temperatura docelowa termostatuif (msg.command === "GetTemperatureReadingRequest"){ x =flow.get('TempTarget'); msg.extra = { "temperatureReading": { "value": x}, "applianceResponseTimestamp": new Date().toISOString()}; msg.payload = prawda; wiadomość zwrotna; } // Ustaw temperaturę na (nie niższą niż 10 lub wyższą niż 30) if (msg.command === "SetTargetTemperatureRequest"){ if (msg.payload 30) { var range = { min: 10,0, max: 30,0 } msg.payload = fałsz; msg.extra = zakres; } else { msg.extra = { targetTemperature: { value: msg.payload } }; msg.payload = prawda; } zwróć wiadomość; } // Włącz jeśli (msg.command === "TurnOnRequest"){ msg.payload = true; flow.set('z dala', fałsz); flow.set('TempTarget', 21); wiadomość zwrotna; } // Wyłącz jeśli (msg.command === "TurnOffRequest"){ msg.payload = true; flow.set('z dala', prawda); wiadomość zwrotna;

Krok 4: Wniosek

Wniosek
Wniosek

Jeśli udostępnisz pulpit NodeRED w sieci WAN, cały system ogrzewania może być sterowany zdalnie. Polecam zapoznać się z poniższymi artykułami, aby zapoznać się z bezpieczeństwem NodeRED i NodeRED.

  • NodeRED dla początkujących
  • Bezpieczeństwo NodeRED

Dodatkowo, jeśli chcesz być informowany o aktualizacjach tego projektu - rozważ śledzenie mnie na wybranej przez siebie platformie:

  • Instagram
  • Youtube

A jeśli masz ochotę postawić mi kawę lub wspierać mnie w sposób bardziej ciągły:

  • Paypal
  • Patreon

Mam nadzieję, że podobał Ci się projekt!

Zalecana: