Spisu treści:

Inteligentna wtyczka z kontrolą temperatury z obsługą Wi-Fi: 4 kroki
Inteligentna wtyczka z kontrolą temperatury z obsługą Wi-Fi: 4 kroki

Wideo: Inteligentna wtyczka z kontrolą temperatury z obsługą Wi-Fi: 4 kroki

Wideo: Inteligentna wtyczka z kontrolą temperatury z obsługą Wi-Fi: 4 kroki
Wideo: TUYA WIFI CZUJNIK TEMPERATURY I WILGOTNOŚCI konfiguracja z aplikacją + automatyzacja z żarówką 2024, Lipiec
Anonim
Inteligentna wtyczka z kontrolą temperatury z obsługą Wi-Fi
Inteligentna wtyczka z kontrolą temperatury z obsługą Wi-Fi

W tym zestawie instrukcji przyjrzymy się, jak zbudować sondę temperatury obsługującą WiFi za pomocą prostego ESP8266 do podnoszenia ciężkich przedmiotów i czujnika temperatury/wilgotności DHT11. Będziemy również używać płytki drukowanej, którą stworzyłem i jest teraz w sprzedaży w sklepie z bielizną kanału, jeśli chcesz kupić.

Zacznijmy od zestawienia materiałów, które będą potrzebne w:

Moduł Wi-Fi ESP8266

amzn.to/2pkGPoa

Czujnik DHT11

amzn.to/2phwfhO

Inteligentna wtyczka TP-Link

amzn.to/2GElQUz

Możesz również odebrać cały moduł w sklepie Tindie dla kanału:

www.tindie.com/products/misperry/wifi-enab…

Sprawdź również JLCPCB do produkcji PCB. Oni są tymi, których użyłem do wykonania PCB:

Bezpłatna dostawa przy pierwszym zamówieniu i prototypowanie PCB o wartości 2 USD na

Krok 1: Dodawanie kodu do ESP8266

Teraz będziemy musieli sflashować następujący kod na ESP8266. Ten kod można znaleźć w następującym repozytorium github:

W poniższym kodzie będziesz musiał ustawić tylko kilka najlepszych sekcji definicji:

Serwer MQTT:

Użytkownik MQTT:

Hasło MQTT:

MQTT_sensor_topic:

-WiFi

Powiedział: powiedział o sieci Wi-Fi, z którą się łączysz

Hasło: hasło WiFi.

Po wypełnieniu poniższego kodu możesz skompilować i sprawdzić błędy, a jeśli 0 błędów, możesz sflashować je na ESP8266.

/* * Nazwa pliku: TempHumSensor.ino * * Zastosowanie: HomeAssistant Space Heater Thermostat * * Opis: Ten kod jest przeznaczony dla urządzenia zgodnego z ESP8266 WiFi arduino *. Spowoduje to przekazanie informacji o temperaturze * urządzenia DHT11 do interfejsu HASS w celu przetworzenia. * * Autor: M. Sperry - https://www.youtube.com/misperry * Data: 03/* Rewizja: 1.0 * * */

#włączać

#include #include #include #include #include

#define CON_TIME_OUT 20 //Limit czasu braku połączenia z Wi-Fi

#define MQTT_TIME_OUT 10 //Limit czasu braku połączenia z serwerem MQTT

#define DHTPIN 0 //Pin, który jest podłączony do czujnika DHT

#define DHTTYPE DHT11 //Typ czujnika to DHT11, można go zmienić na DHT22 (AM2302), DHT21 (AM2301)

#define mqtt_server "" // Wprowadź adresy lub adres IP serwera MQTT. W tym polu używam mojego adresu DuckDNS (twoje imię.duckdns.org)

#define mqtt_user "" //wprowadź swoją nazwę użytkownika MQTT #define mqtt_password "" //wprowadź swoje hasło #define MQTT_SENSOR_TOPIC "ha/bedroom_temp" //wprowadź temat swojego MQTT

// Wifi: SSID i hasło

const char* ssid = ""; const char* hasło = "";

//Konfiguracja DHT

DHT_Ujednolicony dht(DHTPIN, DHTTYPE); uint32_t delayMS;

WiFiKlient wifiKlient;

Klient PubSubClient (wifiClient);

// funkcja wywoływana do publikacji temperatury i wilgotności

void publishData(float p_temperature) { // utwórz obiekt JSON // doc: https://github.com/bblanchon/ArduinoJson/wiki/API%20Reference StaticJsonBuffer jsonBuffer; JsonObject& root = jsonBuffer.createObject(); // INFO: dane muszą zostać przekonwertowane na ciąg; problem występuje podczas używania pływaków… //konwertuj na stopnie Fahrenheita p_temperature = (p_temperature * 1.8) + 32; // konwertuj na stopnie Fahrenheita ["temperatura"] = (String)p_temperature; root.prettyPrintTo(Serial); Serial.println("");

dane znakowe[200];

root.printTo(dane, root.measureLength() + 1); klient.publish(MQTT_SENSOR_TOPIC, dane, prawda); }

// funkcja wywoływana po nadejściu wiadomości MQTT

void callback(char* p_topic, byte* p_payload, unsigned int p_length) { }

nieważne ponowne połączenie () {

// Pętla do ponownego połączenia while (!client.connected()) { Serial.print("INFO: Próba połączenia MQTT…"); // Próba połączenia if (client.connect("ESPBlindstl", mqtt_user, mqtt_password)) { Serial.println("INFO: podłączony"); } else { Serial.print("BŁĄD: nie powiodło się, rc="); Serial.print(klient.stan()); Serial.println("DEBUGOWANIE: spróbuj ponownie za 5 sekund"); // Poczekaj 5 sekund przed ponowną próbą delay(5000); } } }

nieważne ustawienia (unieważnione) {

Serial.początek(9600);

// Zaczynamy od połączenia z siecią Wi-Fi

Serial.println(); Serial.println(); Serial.print("Łączenie z"); Serial.println(ssid);

WiFi.begin(SSid, hasło);

while (WiFi.status() != WL_CONNECTED) {

opóźnienie (800); Serial.print("."); }

Serial.println("");

Serial.println("Połączenie WiFi"); Serial.println("adres IP: "); Serial.println(WiFi.localIP()); // zainicjuj połączenie MQTT client.setServer(mqtt_server, 1883); klient.setCallback(oddzwanianie);

// Zainicjuj czujnik DHT

dht.początek(); Serial.println("Ujednolicone dane czujnika DHT11");

//Drukuj szczegóły czujnika temperatury

czujnik_t czujnik; dht.temperatura().getSensor(&czujnik); Serial.println("-------------------------------------"); Serial.println("Temperatura"); Serial.print ("Czujnik: "); Serial.println(nazwa.czujnika); Serial.print ("Wer. sterownika: "); Serial.println(wersja.czujnika); Serial.print („Unikalny identyfikator:”); Serial.println(sensor.sensor_id); Serial.print ("Wartość maksymalna: "); Serial.print(sensor.max_value); Serial.println("*C"); Serial.print ("Wartość minimalna: "); Serial.print(czujnik.min_value); Serial.println("*C"); Serial.print ("Rozdzielczość: "); druk.seryjny(rozdzielczość.czujnika); Serial.println("*C"); Serial.println("-------------------------------------"); // Drukuj szczegóły czujnika wilgotności. dht.wilgotność().getSensor(&czujnik); Serial.println("-------------------------------------"); Serial.println("Wilgotność"); Serial.print ("Czujnik: "); Serial.println(nazwa.czujnika); Serial.print ("Wer. sterownika: "); Serial.println(wersja.czujnika); Serial.print („Unikalny identyfikator:”); Serial.println(sensor.sensor_id); Serial.print ("Wartość maksymalna: "); Serial.print(sensor.max_value); Serial.println("%"); Serial.print ("Wartość minimalna: "); Serial.print(czujnik.min_value); Serial.println("%"); Serial.print ("Rozdzielczość: "); druk.seryjny(rozdzielczość.czujnika); Serial.println("%"); Serial.println("-------------------------------------");

//Ustaw opóźnienie między odczytami czujnika na podstawie szczegółów czujnika

delayMS = czujnik.min_delay / 1000; }

pusta pętla (pusta) {

temperatura pływaka;

jeśli (!klient.podłączony())

{ połącz ponownie(); }

opóźnienie (opóźnienieMS);

// Pobierz zdarzenie temperatury i wydrukuj jego wartość.

sensor_event_t zdarzenie; dht.temperatura().getEvent(&event); if (isnan(event.temperature)) { Serial.println("Błąd odczytu temperatury!"); temperatura = 0,00; } else { temperatura = zdarzenie.temperatura; Serial.print("Temperatura: "); druk.seryjny(temperatura); Serial.println("*C"); } // publikuj do MQTT publishData(temperature); }

Krok 2: Konfiguracja inteligentnej wtyczki TP-LINK

Konfigurowanie inteligentnej wtyczki TP-LINK
Konfigurowanie inteligentnej wtyczki TP-LINK

Musisz skonfigurować inteligentną wtyczkę TP-LINK lub dowolną inteligentną wtyczkę w tym zakresie, w sposób zalecany przez producenta.

Pamiętaj, aby zanotować adres MAC na urządzeniu. Jeśli Twoje urządzenie jest podobne do mojego urządzenia TP-LINK, nie możesz uzyskać statycznego adresu IP. W związku z tym będziesz musiał skonfigurować router do rezerwacji DHCP. Spowoduje to pobranie adresu MAC twojego urządzenia, a gdy to urządzenie zażąda adresu, router poda mu za każdym razem ten sam adres.

Oto link do tego, jak skonfigurować to za pomocą Linksys

www.linksys.com/us/support-article?article…

Krok 3: Konfigurowanie Asystenta Domowego

Teraz skonfiguruj Home Assistant. W tym celu musisz dodać następujące konfiguracje do pliku configuration.yaml, który znajduje się w strukturze folderów /home/homeassistant/.homeassistant na urządzeniu, na którym go zainstalowałeś.

Po zakończeniu dodawania tego do konfiguracji asystenta domowego będziesz musiał ponownie uruchomić oprogramowanie asystenta domowego, aby zmiany zaczęły obowiązywać.

Będę również używał inteligentnej wtyczki TP-LINK dla urządzenia przełączającego, a definicja znajduje się poniżej w pliku konfiguracyjnym. Adres IP używany dla urządzenia to ten, który został skonfigurowany dla rezerwacji DHCP w poprzednim kroku.

Tę konfigurację można również znaleźć w następującym repozytorium github:

mqtt:switch: - platforma: tplink nazwa: Bedroom Heater host: 192.168.2.11

czujnik 1:

platforma: mqtt state_topic: 'ha/bedroom_temp' name: Sypialnia Temp jednostka_miary: '°F' value_template: '{{ value_json.temperature }}'

automatyzacja:

- alias: _Temp Bedroom Temp High trigger: - platforma: numeric_state entity_id: sensor. Bedroom_Temp powyżej: 73

akcja:

usługa: homeassistant.turn_off entity_id: switch. Bedroom_Heater

- alias: _Temp Sypialnia Temp Niska

wyzwalacz: - platforma: numeric_state entity_id: sensor. Bedroom_Temp poniżej: 73 action: service: homeassistant.turn_on entity_id: switch. Bedroom_Heater

Krok 4: Ostatnie kroki

Image
Image
Ostatnie kroki
Ostatnie kroki
Ostatnie kroki
Ostatnie kroki

Teraz z konfiguracją asystenta domowego i ustawionym kodem Arduino będziesz gotowy do aktywacji całego systemu. Dlatego umieść wtyczkę grzejnika/wentylatora/chłodnicy w inteligentnej wtyczce i podłącz inteligentną wtyczkę. Gdy będzie gotowy, musisz podłączyć małą ładowarkę USB, a następnie sondę temperatury obsługującą WiFi. Gdy wszystko będzie w trybie online, powinieneś być w stanie zajrzeć na pulpit asystenta domowego i zobaczyć raportowaną nową temperaturę.

Bardzo dziękuję za wszelką pomoc i wsparcie. upewnij się, że zostawiłeś polubienie i wejdź na kanał https://www.youbue.com/misperry i zobacz, co mamy tam dla Ciebie. Upewnij się, że subskrybujesz i udostępniasz znajomym, aby pomóc kanałowi.

Zalecana: