Turinys:

„WiFi“įgalintas išmanusis kištukas su temperatūros valdymu: 4 žingsniai
„WiFi“įgalintas išmanusis kištukas su temperatūros valdymu: 4 žingsniai

Video: „WiFi“įgalintas išmanusis kištukas su temperatūros valdymu: 4 žingsniai

Video: „WiFi“įgalintas išmanusis kištukas su temperatūros valdymu: 4 žingsniai
Video: Умный WiFi проектор звездных галактик с лазером и светомузыкой TUYA SMART 2024, Liepa
Anonim
„WiFi“įgalintas išmanusis kištukas su temperatūros valdymu
„WiFi“įgalintas išmanusis kištukas su temperatūros valdymu

Šiame instrukcijų rinkinyje apžvelgsime, kaip sukurti „WiFi“palaikantį temperatūros zondą naudojant paprastą ESP8266 sunkiam kėlimui ir DHT11 temperatūros/drėgmės jutiklį. Mes taip pat naudosime mano sukurtą plokštę, kuri dabar taip pat parduodama kanalo tindie parduotuvėje, jei norite įsigyti.

Pradėkime nuo medžiagų, kurių jums reikės:

ESP8266 „WiFi“modulis

amzn.to/2pkGPoa

DHT11 jutiklis

amzn.to/2phwfhO

„TP-Link“išmanusis kištukas

amzn.to/2GElQUz

Taip pat galite pasiimti visą kanalo „Tindie“parduotuvės modulį:

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

Taip pat patikrinkite JLCPCB, skirtą PCB gamybai. Jie yra tie, kuriuos naudojau PCB gamybai:

Nemokamas pristatymas pirmam užsakymui ir 2 USD PCB prototipų kūrimas

1 veiksmas: pridėkite kodą prie ESP8266

Dabar turėsime į ESP8266 įjungti šį kodą. Šį kodą galite rasti šioje „github“saugykloje:

Žemiau esančiame kode turėsite nustatyti tik keletą geriausių apibrėžimų sekcijų:

MQTT serveris:

MQTT vartotojas:

MQTT slaptažodis:

MQTT_sensor_topic:

-Bevielis internetas

Sakė: pasakyta apie „Wi -Fi“tinklą, prie kurio jungiatės

Slaptažodis: „WiFi“slaptažodis.

Užpildę šį kodą, galite sudaryti ir patikrinti, ar nėra klaidų, ir jei nėra klaidų, galite jį įvesti į ESP8266.

/ * * Failo pavadinimas: TempHumSensor.ino * * Programa: „HomeAssistant Space Heater Thermostat“* * Aprašymas: Šis kodas skirtas įrenginiui, palaikančiam „ESP8266 WiFi“, suderinamą su arduino *. Tai perduos DHT11 įrenginio temperatūros informaciją * į HASS priekinę dalį apdorojimui. * * Autorius: M. Sperry - https://www.youtube.com/misperry * Data: 03/ * Peržiūra: 1.0 * * */

#įtraukti

#įtraukimas #įtraukimas #įtraukimas #įtraukimas #įtraukimas

#define CON_TIME_OUT 20 // Baigėsi skirtasis laikas, kai nėra ryšio su „Wi -Fi“

#define MQTT_TIME_OUT 10 // Negaliu prisijungti prie MQTT serverio

#define DHTPIN 0 // Kaištis, prijungtas prie DHT jutiklio

#define DHTTYPE DHT11 // Jutiklio tipas yra DHT11, galite jį pakeisti į DHT22 (AM2302), DHT21 (AM2301)

#define mqtt_server "" // Įveskite savo MQTT serverio priedus arba IP. Šiame lauke naudoju savo „DuckDNS“adresą (jūsų vardas.duckdns.org)

#define mqtt_user "" // įveskite savo MQTT vartotojo vardą #define mqtt_password "" // įveskite slaptažodį #define MQTT_SENSOR_TOPIC "ha/bedroom_temp" // Įveskite savo MQTT temą

// „Wifi“: SSID ir slaptažodis

const char* ssid = ""; const char* slaptažodis = "";

// DHT SEtup

DHT_Unified dht (DHTPIN, DHTTYPE); uint32_t delayMS;

WiFiClient wifiClient;

„PubSubClient“klientas („wifiClient“);

// funkcija, skirta paskelbti temperatūrą ir drėgmę

void publisData (float p_temperature) {// sukurti JSON objektą // doc: https://github.com/bblanchon/ArduinoJson/wiki/API%20Reference StaticJsonBuffer jsonBuffer; JsonObject & root = jsonBuffer.createObject (); // INFO: duomenys turi būti paversti eilute; problema kyla naudojant plūdes… // konvertuoti į farenheitą p_temperatūra = (p_temperatūra * 1.8) + 32; // konvertuoti į farenheito šaknį ["temperatūra"] = (Styga) p_temperatūra; root.prettyPrintTo (Serial); Serial.println ("");

char duomenys [200];

root.printTo (duomenys, root.measureLength () + 1); client.publish (MQTT_SENSOR_TOPIC, duomenys, tiesa); }

// funkcija iškvietė, kai atvyko MQTT pranešimas

negaliojantis atgalinis skambutis (char* p_topic, byte* p_payload, unsigned int p_length) {}

void reconnect () {

// Ciklas, kol vėl prisijungsime, kol (! Client.connected ()) {Serial.print ("INFO: Bandomas MQTT ryšys …"); // Bandymas prisijungti, jei (client.connect ("ESPBlindstl", mqtt_user, mqtt_password)) {Serial.println ("INFO: connected"); } else {Serial.print ("KLAIDA: nepavyko, rc ="); Serial.print (client.state ()); Serial.println ("DEBUG: bandykite dar kartą po 5 sekundžių"); // Palaukite 5 sekundes prieš vėl bandydami uždelsti (5000); }}}

void setup (void) {

Serial.begin (9600);

// Pradedame prisijungdami prie „WiFi“tinklo

Serial.println (); Serial.println (); Serial.print („Prisijungimas prie“); Serial.println (ssid);

WiFi.begin (ssid, slaptažodis);

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

vėlavimas (800); Serijinis atspaudas ("."); }

Serial.println ("");

Serial.println („WiFi prijungtas“); Serial.println ("IP adresas:"); Serial.println (WiFi.localIP ()); // inicijuokite MQTT ryšio klientą.setServer (mqtt_server, 1883); client.setCallback (atšaukimas);

// Inicijuoti DHT jutiklį

dht.begin (); Serial.println („DHT11 vieningi jutiklių duomenys“);

// Išsami spausdinimo temperatūros jutiklio informacija

sensor_t jutiklis; dht.temperatūra (). getSensor (& sensor); Serial.println ("------------------------------------"); Serial.println ("Temperatūra"); Serial.print („Jutiklis:“); Serial.println (jutiklio pavadinimas); Serial.print („Driver Ver:“); Serial.println (sensor.version); Serial.print („Unikalus ID:“); Serial.println (sensor.sensor_id); Serial.print („Maksimali vertė:“); Serial.print (sensor.max_value); Serial.println (" *C"); Serial.print („Min. Vertė:“); Serijinis atspaudas (sensor.min_value); Serial.println (" *C"); Serial.print („Rezoliucija:“); Serial.print (sensor.resolution); Serial.println (" *C"); Serial.println ("------------------------------------"); // Spausdinti drėgmės jutiklio informaciją. dht.humidity (). getSensor (& sensor); Serial.println ("------------------------------------"); Serial.println („Drėgmė“); Serial.print („Jutiklis:“); Serial.println (jutiklio pavadinimas); Serial.print („Driver Ver:“); Serial.println (sensor.version); Serial.print („Unikalus ID:“); Serial.println (sensor.sensor_id); Serial.print („Maksimali vertė:“); Serial.print (sensor.max_value); Serial.println ("%"); Serial.print („Min. Vertė:“); Serijinis atspaudas (sensor.min_value); Serial.println ("%"); Serial.print ("Rezoliucija:"); Serial.print (sensor.resolution); Serial.println ("%"); Serial.println ("------------------------------------");

// Nustatykite delsą tarp jutiklių rodmenų, remiantis jutiklio informacija

delayMS = sensor.min_delay / 1000; }

void loop (void) {

plūdės temperatūra;

jei (! client.connected ())

{reconnect (); }

uždelsimas (delayMS);

// Gaukite temperatūros įvykį ir atspausdinkite jo vertę.

sensor_event_t įvykis; dht.temperature (). getEvent (& event); if (isnan (event.temperature)) {Serial.println ("Klaida skaitant temperatūrą!"); temperatūra = 0,00; } else {temperatūra = įvykis.temperatūra; Serial.print ("Temperatūra:"); Serijinis atspaudas (temperatūra); Serial.println (" *C"); } // publikuoti MQTT skelbtiData (temperatūra); }

2 veiksmas: „TP-LINK Smart Plug“nustatymas

„TP-LINK Smart Plug“nustatymas
„TP-LINK Smart Plug“nustatymas

Turėsite nustatyti savo TP-LINK išmanųjį kištuką arba bet kurį išmanųjį kištuką, kaip rekomenduoja gamintojas.

Būtinai atkreipkite dėmesį į įrenginio MAC adresą. Jei jūsų įrenginys panašus į mano TP-LINK įrenginį, negalite įrašyti statinio IP adreso. Taigi turėsite sukonfigūruoti maršrutizatorių DHCP rezervavimui. Tai paims jūsų įrenginio MAC adresą ir kai tas įrenginys paprašys adreso, maršrutizatorius kiekvieną kartą suteiks jam tą patį adresą.

Čia yra nuoroda, kaip tai nustatyti naudojant „Linksys“

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

3 veiksmas: nustatykite namų asistentą

Dabar nustatykite namų asistentą. Norėdami tai padaryti, prie konfigūracijos.yaml failo, esančio aparato /home/homeassistant/.homeassistant struktūroje įrenginyje, kuriame jį įdiegėte, turite pridėti šias konfigūracijas.

Baigę tai pridėti prie namų asistento konfigūracijos, turėsite iš naujo paleisti namų asistento programinę įrangą, kad pakeitimai įsigaliotų.

Taip pat perjungimo įrenginiui naudosiu išmanųjį kištuką TP-LINK, o apibrėžimas pateiktas žemiau esančiame konfigūracijos faile. Įrenginiui naudojamas IP adresas yra tas, kurį nustatėte DHCP rezervavimui atlikdami ankstesnį veiksmą.

Šią konfigūraciją taip pat galima rasti šioje „Github“repoje:

mqtt: jungiklis: - platforma: tplink pavadinimas: Miegamojo šildytuvo šeimininkas: 192.168.2.11

1 jutiklis:

platforma: mqtt state_topic: 'ha/bedroom_temp' pavadinimas: Miegamojo temperatūros matavimo vienetas: '° F' value_template: '{{value_json.temperature}}'

automatika:

- Pseudonimas: _ Temperatūros miegamojo temperatūra Didelis trigeris: - platforma: skaitinis_ būsenos subjekto_id: jutiklis. „Bedroom_Temp“aukščiau: 73

veiksmas:

service: homeassistant.turn_off entity_id: switch. Bedroom_Heater

- slapyvardis: _Temp miegamojo temperatūra žema

trigeris: - platforma: skaitinių būsenų objekto_id: jutiklis. „Bedroom_Temp“žemiau: 73 veiksmas: paslauga: „homeassistant.turn_on entity_id“: switch. Bedroom_Heater

4 žingsnis: paskutiniai žingsniai

Image
Image
Paskutiniai žingsniai
Paskutiniai žingsniai
Paskutiniai žingsniai
Paskutiniai žingsniai

Dabar, sukūrę namų asistento konfigūraciją ir nustatę „Arduino“kodą, būsite pasiruošę aktyvuoti visą sistemą. Taigi, įjunkite šildytuvo/ventiliatoriaus/aušintuvo kištuką į išmanųjį kištuką ir prijunkite išmanųjį kištuką. Kai jis bus paruoštas, turėsite prijungti nedidelį USB įkroviklį ir tada „WiFi“įgalintą temperatūros zondą. Kai viskas bus prijungta prie interneto, turėtumėte pažvelgti į namų asistento prietaisų skydelį ir pamatyti naują temperatūrą.

Labai ačiū už visą jūsų pagalbą ir paramą. būtinai palikite like ir ateikite apsilankyti kanale adresu https://www.youbue.com/misperry ir pažiūrėti, ką mes jums turime. Būtinai užsiprenumeruokite ir pasidalykite su draugais, kad padėtumėte kanalui.

Rekomenduojamas: