Sadržaj:

Pametni utikač s kontroliranom temperaturom i Wi -Fi funkcijom: 4 koraka
Pametni utikač s kontroliranom temperaturom i Wi -Fi funkcijom: 4 koraka

Video: Pametni utikač s kontroliranom temperaturom i Wi -Fi funkcijom: 4 koraka

Video: Pametni utikač s kontroliranom temperaturom i Wi -Fi funkcijom: 4 koraka
Video: OnePlus Open Durability Test - You guessed wrong... 2024, Novembar
Anonim
Pametni utikač sa kontroliranom temperaturom i WiFi funkcijom
Pametni utikač sa kontroliranom temperaturom i WiFi funkcijom

U ovom setu uputa ćemo pogledati kako izgraditi temperaturnu sondu s omogućenim WiFi -om pomoću jednostavnog ESP8266 za teške terete i DHT11 osjetnika temperature/vlažnosti. Koristit ćemo i tiskanu ploču koju sam stvorio i koja se sada prodaje u prodavaonici tindie na kanalu ako želite kupiti.

Započnimo s popisom materijala koji će vam trebati:

ESP8266 WiFi modul

amzn.to/2pkGPoa

Senzor DHT11

amzn.to/2phwfhO

Pametni utikač TP-Link

amzn.to/2GElQUz

Također možete preuzeti cijeli modul u trgovini tindie za kanal:

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

Također provjerite JLCPCB za izradu PCB -a. Oni su oni koje sam koristio za izradu PCB -a:

Besplatna dostava za prvu narudžbu i 2 dolara za izradu prototipa PCB -a na

Korak 1: Dodavanje koda u ESP8266

Sada ćemo morati prenijeti sljedeći kod na ESP8266. Ovaj kod možete pronaći na sljedećem spremištu github -a:

U donjem kodu samo ćete morati postaviti prvih nekoliko odjeljaka definicija:

MQTT server:

MQTT korisnik:

MQTT lozinka:

MQTT_senzor_topic:

-WiFi

Rečeno: rečeno o WiFi mreži na koju se povezujete

Lozinka: lozinka za WiFi.

Nakon što ovo popunite u donjem kodu, tada možete kompajlirati i provjeriti ima li grešaka, a ako ima 0 grešaka, možete ih prenijeti na ESP8266.

/ * * Naziv datoteke: TempHumSensor.ino * * Primjena: Termostat grijača prostora za pomoć sa kućnim pomoćnikom * * Opis: Ovaj kôd je za arduino * kompatibilan uređaj sa ESP8266 WiFi -jem. Ovo će prenijeti informacije o temperaturi * uređaja DHT11 na HASS sučelje za obradu. * * Autor: M. Sperry - https://www.youtube.com/misperry * Datum: 03/ * Revizija: 1.0 * * */

#include

#include #include #include #include #include

#define CON_TIME_OUT 20 // Vremensko ograničenje bez veze s WiFi mrežom

#define MQTT_TIME_OUT 10 // Istek vremena bez veze s MQTT poslužiteljem

#define DHTPIN 0 // Pin koji je spojen na DHT senzor

#define DHTTYPE DHT11 // Tip senzora je DHT11, možete ga promijeniti u DHT22 (AM2302), DHT21 (AM2301)

#define mqtt_server "" // Unesite sabirnik ili IP adresu vašeg MQTT servera. Ja koristim svoju DuckDNS adresu (vaše ime.duckdns.org) u ovom polju

#define mqtt_user "" // unesite svoje korisničko ime za MQTT #define mqtt_password "" // unesite svoju lozinku #define MQTT_SENSOR_TOPIC "ha/bedroom_temp" // Unesite temu za svoj MQTT

// Wifi: SSID i lozinka

const char* ssid = ""; const char* lozinka = "";

// DHT POSTAVLJANJE

DHT_Unified dht (DHTPIN, DHTTYPE); uint32_t delayMS;

WiFiClient wifiClient;

PubSubClient klijent (wifiClient);

// funkcija pozvana za objavljivanje temperature i vlažnosti

void publishedData (float p_temperature) {// kreiranje JSON objekta // doc: https://github.com/bblanchon/ArduinoJson/wiki/API%20Reference StaticJsonBuffer jsonBuffer; JsonObject & root = jsonBuffer.createObject (); // INFO: podaci se moraju pretvoriti u niz; problem nastaje pri korištenju plovki … // pretvori u fahrenheit p_temperature = (p_temperature * 1.8) + 32; // pretvara se u fahrenheit root ["temperature"] = (String) p_temperature; root.prettyPrintTo (serijski); Serial.println ("");

char podaci [200];

root.printTo (podaci, root.measureLength () + 1); client.publish (MQTT_SENSOR_TOPIC, podaci, tačno); }

// funkcija pozvana kada je stigla MQTT poruka

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

void reconnect () {

// Ponavljamo sve dok se ponovo ne povežemo while (! Client.connected ()) {Serial.print ("INFO: Pokušaj MQTT veze …"); // Pokušaj povezivanja if (client.connect ("ESPBlindstl", mqtt_user, mqtt_password)) {Serial.println ("INFO: povezano"); } else {Serial.print ("GREŠKA: neuspjelo, rc ="); Serial.print (client.state ()); Serial.println ("DEBUG: pokušajte ponovo za 5 sekundi"); // Pričekajte 5 sekundi prije ponovnog pokušaja odgode (5000); }}}

void setup (void) {

Serial.begin (9600);

// Počinjemo povezivanjem na WiFi mrežu

Serial.println (); Serial.println (); Serial.print ("Povezivanje sa"); Serial.println (ssid);

WiFi.begin (ssid, lozinka);

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

kašnjenje (800); Serial.print ("."); }

Serial.println ("");

Serial.println ("WiFi povezan"); Serial.println ("IP adresa:"); Serial.println (WiFi.localIP ()); // iniciranje MQTT veze client.setServer (mqtt_server, 1883); client.setCallback (povratni poziv);

// Inicijalizacija DHT senzora

dht.begin (); Serial.println ("DHT11 Unified Sensor Data");

// Ispis detalja senzora temperature

sensor_t senzor; dht.temperature (). getSensor (& senzor); Serial.println ("------------------------------------"); Serial.println ("Temperatura"); Serial.print ("Senzor:"); Serial.println (ime senzora); Serial.print ("Verzija upravljačkog programa:"); Serial.println (sensor.version); Serial.print ("Jedinstveni ID:"); Serial.println (sensor.sensor_id); Serial.print ("Maksimalna vrijednost:"); Serial.print (sensor.max_value); Serial.println (" *C"); Serial.print ("Minimalna vrijednost:"); Serial.print (sensor.min_value); Serial.println (" *C"); Serial.print ("Rezolucija:"); Serial.print (senzorsko razrješenje); Serial.println (" *C"); Serial.println ("------------------------------------"); // Ispis detalja senzora vlažnosti. dht.humidity (). getSensor (& senzor); Serial.println ("------------------------------------"); Serial.println ("Vlažnost"); Serial.print ("Senzor:"); Serial.println (ime senzora); Serial.print ("Verzija upravljačkog programa:"); Serial.println (sensor.version); Serial.print ("Jedinstveni ID:"); Serial.println (sensor.sensor_id); Serial.print ("Maksimalna vrijednost:"); Serial.print (sensor.max_value); Serial.println ("%"); Serial.print ("Minimalna vrijednost:"); Serial.print (sensor.min_value); Serial.println ("%"); Serial.print ("Rezolucija:"); Serial.print (senzorsko razrješenje); Serial.println ("%"); Serial.println ("------------------------------------");

// Podesite kašnjenje između očitanja senzora na osnovu detalja senzora

delayMS = sensor.min_delay / 1000; }

void loop (void) {

temperatura plovka;

if (! client.connected ())

{ponovo spojiti (); }

kašnjenje (delayMS);

// Dobijanje temperaturnog događaja i ispis njegove vrijednosti.

sensors_event_t događaj; dht.temperature (). getEvent (& event); if (isnan (event.temperature)) {Serial.println ("Greška pri očitavanju temperature!"); temperatura = 0,00; } else {temperatura = događaj.temperatura; Serial.print ("Temperatura:"); Serial.print (temperatura); Serial.println (" *C"); } // objavi u MQTT publishedData (temperatura); }

Korak 2: Postavljanje vašeg TP-LINK pametnog priključka

Postavljanje vašeg TP-LINK pametnog utikača
Postavljanje vašeg TP-LINK pametnog utikača

Morat ćete postaviti svoj TP-LINK pametni utikač ili bilo koji pametni utikač za tu materiju, na način koji proizvođač preporučuje.

Vodite računa o MAC adresi na uređaju. Ako je vaš uređaj poput mog TP-LINK uređaja, ne možete postaviti statičku IP adresu. Stoga ćete morati konfigurirati usmjerivač za DHCP rezervaciju. Ovo će uzeti MAC adresu vašeg uređaja i kada taj uređaj zatraži adresu, usmjerivač će mu svaki put dati istu adresu.

Evo veze kako to postaviti s Linksysom

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

Korak 3: Postavljanje kućnog pomoćnika

Sada za postavljanje kućnog pomoćnika. Za to ćete morati dodati sljedeće konfiguracije u datoteku configuration.yaml koja se nalazi u /home/homeassistant/.homeassistant strukturi mapa na uređaju na koji ste je instalirali.

Kada završite s dodavanjem ovoga u konfiguraciju kućnog pomoćnika, morat ćete ponovo pokrenuti softver kućnog pomoćnika da bi promjene stupile na snagu.

Također ću koristiti TP-LINK pametni utikač za preklopni uređaj, a definicija je dolje u konfiguracijskoj datoteci. IP adresa koja se koristi za uređaj je ona koju ste postavili za DHCP rezervaciju u prethodnom koraku.

Ova se konfiguracija može pronaći i na sljedećem github repo:

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

senzor 1:

platforma: mqtt state_topic: 'ha/bedroom_temp' naziv: Temp. spavaće sobe_mjera_mjerenja: '° F' value_template: '{{value_json.temperature}}'

automatizacija:

- alias: _Temp Temp. spavaće sobe Visoki okidač: - platforma: numeric_state entity_id: sensor. Bedroom_Temp iznad: 73

akcija:

usluga: homeassistant.turn_off entity_id: switch. Bedroom_Heater

- alias: _Temp Temp. spavaće sobe niska

okidač: - platforma: numeric_state entity_id: sensor. Bedroom_Temp ispod: 73 akcija: service: homeassistant.turn_on entity_id: switch. Bedroom_Heater

Korak 4: Završni koraci

Image
Image
Završni koraci
Završni koraci
Završni koraci
Završni koraci

Sada s konfiguracijom kućnog pomoćnika i postavljenim Arduino kodom bit ćete spremni za aktiviranje cijelog sistema. Stoga, utikač grijača/ventilatora/hladnjaka umetnite u pametni utikač i uključite pametni utikač. Kad bude spreman, morat ćete priključiti mali USB punjač, a zatim i temperaturnu sondu s omogućenim WiFi -jem. Kad sve bude na mreži, trebali biste moći pogledati na nadzornoj ploči kućnog pomoćnika i vidjeti novu temperaturu koja se izvještava.

Hvala vam puno na vašoj pomoći i podršci. ostavite lajk i posjetite kanal na https://www.youbue.com/misperry i pogledajte šta sve imamo za vas. Pretplatite se i podijelite sa svojim prijateljima kako biste pomogli kanalu.

Preporučuje se: