Spisu treści:
- Krok 1: Dodawanie kodu do ESP8266
- Krok 2: Konfiguracja inteligentnej wtyczki TP-LINK
- Krok 3: Konfigurowanie Asystenta Domowego
- Krok 4: Ostatnie kroki
Wideo: Inteligentna wtyczka z kontrolą temperatury z obsługą Wi-Fi: 4 kroki
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:32
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
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
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:
Sprzęt i oprogramowanie Hack Smart Devices, Tuya i Broadlink LEDbulb, Sonoff, inteligentna wtyczka BSD33: 7 kroków
Sprzęt i oprogramowanie Hack Smart Devices, Tuya i Broadlink LEDbulb, Sonoff, BSD33 Smart Plug: W tej instrukcji pokazuję, jak sflashowałem kilka inteligentnych urządzeń z własnym oprogramowaniem, abym mógł sterować nimi przez MQTT za pomocą mojej konfiguracji Openhab. Dodam nowe urządzenia, gdy je zhakowałem. Oczywiście istnieją inne metody programowe do flashowania niestandardowych f
Odczyt temperatury za pomocą czujnika temperatury LM35 z Arduino Uno: 4 kroki
Odczytywanie temperatury za pomocą czujnika temperatury LM35 z Arduino Uno: Cześć, w tej instrukcji dowiemy się, jak używać LM35 z Arduino. Lm35 to czujnik temperatury, który może odczytywać wartości temperatury od -55°C do 150°C. Jest to 3-zaciskowe urządzenie, które dostarcza napięcie analogowe proporcjonalne do temperatury. Cześć G
Inteligentna wtyczka ESP8266: 6 kroków
Smart Plug ESP8266: Bienvenue sur cet article qui a pour but de vous montrer un projet de domotique que j'ai réalisé. Ayant toujours adoré les chooses automatiques et optimisees, j'ai décidé de creer moi-même mes prises connectées. Komendy Celles-ci sont przez WiFi. La
Wtyczka RCA DIY Audio (męska/żeńska) - Wykonane z aluminium: 3 kroki
Wtyczka RCA DIY Audio (męska/żeńska) | Wykonane z aluminium: Obejrzyj wideo: Jest to niestandardowa wtyczka RCA wykonana z blachy aluminiowej, zarówno męska, jak i żeńska. Więc dowiesz się, jak je zrobić, gdy nie masz wtyczek lub głośnik jest zepsuty. Teraz z łatwością zrób jeden w domu i wymień uszkodzony lub po prostu użyj jako c
Alexa Echo + ESP 8266 = Inteligentna wtyczka zasilania: 4 kroki (ze zdjęciami)
Alexa Echo + ESP 8266 = Inteligentna wtyczka zasilania: Ta instrukcja używa bezpośredniej kontroli ALEXA ECHO ESP8266.Mój serwer obsługuje tylko autoryzację ESP8266 na serwerze Amazon.Mój serwer nie tworzy kopii zapasowych twoich danych.Głosuj na mnie:D Dziękuję