Kazalo:

Pametni vtič s temperaturno nadzorovano funkcijo WiFi: 4 koraki
Pametni vtič s temperaturno nadzorovano funkcijo WiFi: 4 koraki

Video: Pametni vtič s temperaturno nadzorovano funkcijo WiFi: 4 koraki

Video: Pametni vtič s temperaturno nadzorovano funkcijo WiFi: 4 koraki
Video: Лучшие часы Casio G Shock Master of G-Топ 5 лучших часов Casio G Shock дл... 2024, Julij
Anonim
Pametni vtič s temperaturno nadzorovano funkcijo WiFi
Pametni vtič s temperaturno nadzorovano funkcijo WiFi

V tem nizu navodil bomo pogledali, kako z uporabo preprostega ESP8266 za dvigovanje težkih delov in senzorja temperature/vlažnosti DHT11 sestaviti temperaturno sondo, ki podpira WiFi. Uporabili bomo tudi tiskano vezje, ki sem ga ustvaril, in je zdaj naprodaj tudi v trgovini tindie kanala, če ga želite kupiti.

Začnimo z gradivom, ki ga boste potrebovali:

ESP8266 WiFi modul

amzn.to/2pkGPoa

Senzor DHT11

amzn.to/2phwfhO

Pametni vtič TP-Link

amzn.to/2GElQUz

Celoten modul lahko prevzamete tudi v trgovini tindie za kanal:

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

Oglejte si tudi JLCPCB za izdelavo PCB. To so tisti, ki sem jih uporabljal za izdelavo tiskane plošče:

Brezplačna dostava pri prvem naročilu in izdelava PCB v vrednosti 2 USD na

1. korak: Dodajanje kode v ESP8266

Zdaj bomo morali naslednjo kodo utripati na ESP8266. To kodo lahko najdete v naslednjem skladišču github:

V spodnji kodi boste morali nastaviti le nekaj zgornjih razdelkov definicij:

Strežnik MQTT:

Uporabnik MQTT:

Geslo MQTT:

MQTT_sensor_topic:

-Wifi

Rečeno: omenjeno omrežje WiFi, s katerim se povezujete

Geslo: geslo za WiFi.

Ko to izpolnite v spodnji kodi, jo lahko sestavite in preverite, ali so napake, če pa je napaka 0, jo lahko vstavite v ESP8266.

/ * * Ime datoteke: TempHumSensor.ino * * Aplikacija: Termostat grelnika prostora z domačim pomočnikom * * Opis: Ta koda je za napravo, združljivo z arduino *, ki podpira ESP8266 WiFi. To bo posredovalo podatke o temperaturi * naprave DHT11 na vmesnik HASS za obdelavo. * * Avtor: M. Sperry - https://www.youtube.com/misperry * Datum: 03/ * Revizija: 1.0 * * */

#vključi

#include #include #include #include #include

#define CON_TIME_OUT 20 // Časovna omejitev brez povezave z wifi

#define MQTT_TIME_OUT 10 // Časovna omejitev brez povezave s strežnikom MQTT

#define DHTPIN 0 // Pin, ki je povezan s tipalom DHT

#define DHTTYPE DHT11 // Tip senzorja je DHT11, lahko ga spremenite v DHT22 (AM2302), DHT21 (AM2301)

#define mqtt_server "" // Vnesite dodatek ali IP strežnika MQTT. V tem polju uporabljam svoj naslov DuckDNS (vaše ime.duckdns.org)

#define mqtt_user "" // vnesite uporabniško ime za MQTT #define mqtt_password "" // vnesite geslo #define MQTT_SENSOR_TOPIC "ha/bedroom_temp" // Vnesite temo za vaš MQTT

// Wifi: SSID in geslo

const char* ssid = ""; const char* geslo = "";

// Nastavitev DHT

DHT_Unified dht (DHTPIN, DHTTYPE); uint32_t zakasnitevMS;

WiFiClient wifiClient;

Odjemalec PubSubClient (wifiClient);

// funkcija za objavo temperature in vlažnosti

void publishedData (float p_temperature) {// ustvarite objekt JSON // doc: https://github.com/bblanchon/ArduinoJson/wiki/API%20Reference StaticJsonBuffer jsonBuffer; JsonObject & root = jsonBuffer.createObject (); // INFO: podatke je treba pretvoriti v niz; pride do težave pri uporabi plovcev … // pretvori v fahrenheitovo p_temperature = (p_temperature * 1.8) + 32; // pretvori v fahrenheit root ["temperature"] = (niz) p_temperature; root.prettyPrintTo (serijski); Serial.println ("");

podatki char [200];

root.printTo (podatki, root.measureLength () + 1); client.publish (MQTT_SENSOR_TOPIC, podatki, res); }

// funkcija poklicana, ko je prispelo sporočilo MQTT

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

void reconnect () {

// Zanka, dokler se znova ne povežemo while (! Client.connected ()) {Serial.print ("INFO: Poskus povezave MQTT …"); // Poskus povezave if (client.connect ("ESPBlindstl", mqtt_user, mqtt_password)) {Serial.println ("INFO: povezan"); } else {Serial.print ("NAPAKA: neuspešna, rc ="); Serial.print (client.state ()); Serial.println ("DEBUG: poskusite znova čez 5 sekund"); // Počakajte 5 sekund, preden zamudite ponovni poskus (5000); }}}

void setup (void) {

Serial.begin (9600);

// Začnemo s povezavo v omrežje WiFi

Serial.println (); Serial.println (); Serial.print ("Povezovanje z"); Serial.println (ssid);

WiFi.begin (ssid, geslo);

medtem ko (WiFi.status ()! = WL_CONNECTED) {

zamuda (800); Serial.print ("."); }

Serial.println ("");

Serial.println ("WiFi povezan"); Serial.println ("naslov IP:"); Serial.println (WiFi.localIP ()); // init za povezavo odjemalca MQTT client.setServer (mqtt_server, 1883); client.setCallback (povratni klic);

// Inicializirajte senzor DHT

dht.begin (); Serial.println ("Podatki o enotnem senzorju DHT11");

// Natisni podrobnosti senzorja temp

senzor_t senzor; dht.temperature (). getSensor (& sensor); Serial.println ("------------------------------------"); Serial.println ("Temperatura"); Serial.print ("Senzor:"); Serial.println (ime senzorja); Serial.print ("Driver Ver:"); Serial.println (senzorska.verzija); Serial.print ("Enolični ID:"); Serial.println (sensor.sensor_id); Serial.print ("Največja vrednost:"); Serial.print (sensor.max_value); Serial.println (" *C"); Serial.print ("Najnižja vrednost:"); Serial.print (sensor.min_value); Serial.println (" *C"); Serial.print ("Ločljivost:"); Serial.print (ločljivost senzorja); Serial.println (" *C"); Serial.println ("------------------------------------"); // Natisnite podrobnosti senzorja vlažnosti. dht.humidity (). getSensor (& sensor); Serial.println ("------------------------------------"); Serial.println ("Vlažnost"); Serial.print ("Senzor:"); Serial.println (ime senzorja); Serial.print ("Driver Ver:"); Serial.println (senzorska.verzija); Serial.print ("Enolični ID:"); Serial.println (sensor.sensor_id); Serial.print ("Največja vrednost:"); Serial.print (sensor.max_value); Serial.println ("%"); Serial.print ("Najnižja vrednost:"); Serial.print (sensor.min_value); Serial.println ("%"); Serial.print ("Ločljivost:"); Serial.print (ločljivost senzorja); Serial.println ("%"); Serial.println ("------------------------------------");

// Nastavitev zakasnitve med odčitki senzorja glede na podrobnosti senzorja

zakasnitevMS = senzor.min_delay / 1000; }

void loop (void) {

plavajoča temperatura;

if (! client.connected ())

{ponovno povežite (); }

zamuda (delayMS);

// Pridobite temperaturni dogodek in natisnite njegovo vrednost.

sensors_event_t dogodek; dht.temperature (). getEvent (& event); if (isnan (event.temperature)) {Serial.println ("Napaka pri branju temperature!"); temperatura = 0,00; } else {temperatura = dogodek.temperatura; Serial.print ("Temperatura:"); Serijski.tisk (temperatura); Serial.println (" *C"); } // objavi v MQTT publishedData (temperatura); }

2. korak: Nastavitev pametnega vtiča TP-LINK

Nastavitev pametnega vtiča TP-LINK
Nastavitev pametnega vtiča TP-LINK

Pametni vtič TP-LINK ali kateri koli pametni vtič za to napravo boste morali nastaviti tako, kot priporoča proizvajalec.

Bodite pozorni na naslov MAC v napravi. Če je vaša naprava podobna moji napravi TP-LINK, ne morete vzpostaviti statičnega naslova IP. Tako boste morali usmerjevalnik konfigurirati za rezervacijo DHCP. To bo vzelo naslov MAC vaše naprave in ko bo naprava zahtevala naslov, bo usmerjevalnik vsakič dal isti naslov.

Tukaj je povezava, kako to nastaviti s programom Linksys

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

3. korak: Nastavitev domačega pomočnika

Zdaj nastavite pomočnika za dom. Za to boste morali datoteki configuration.yaml, ki se nahaja v /home/homeassistant/.homeassistant strukturi map v napravi, v katero ste jo namestili, dodati naslednje konfiguracije.

Ko to dodate v konfiguracijo domačega pomočnika, boste morali znova zagnati programsko opremo domačega pomočnika, da bodo spremembe vplivale.

Uporabil bom tudi pametni vtič TP-LINK za stikalno napravo, definicija pa je spodaj v konfiguracijski datoteki. Naslov IP, ki se uporablja za napravo, je tisti, ki ste ga nastavili za rezervacijo DHCP v prejšnjem koraku.

To konfiguracijo lahko najdete tudi na naslednjem github repo:

mqtt: stikalo: - platforma: ime tplink: Grelec spalnice gostitelj: 192.168.2.11

senzor 1:

platforma: mqtt state_topic: 'ha/bedroom_temp' ime: Temp. spalnice Temp_mere: '° F' value_template: '{{value_json.temperature}}'

avtomatizacija:

- vzdevek: _Temp Spalnica Temp Visoki sprožilec: - platforma: numeric_state entity_id: sensor. Bedroom_Temp zgoraj: 73

dejanje:

storitev: homeassistant.turn_off entity_id: switch. Bedroom_Heater

- vzdevek: _Temp Spalnica Temp

sprožilec: - platforma: numeric_state entity_id: sensor. Bedroom_Temp spodaj: 73 action: service: homeassistant.turn_on entity_id: switch. Bedroom_Heater

4. korak: Zadnji koraki

Image
Image
Zadnji koraki
Zadnji koraki
Zadnji koraki
Zadnji koraki

S konfiguracijo domačega pomočnika in nastavljeno kodo Arduino boste pripravljeni aktivirati celoten sistem. Tako vtič grelnika/ventilatorja/hladilnika vstavite v pametni vtič in vtaknite v pametni vtič. Ko bo pripravljen, boste morali priključiti majhen polnilnik USB in nato temperaturno sondo, ki podpira WiFi. Ko je vse na spletu, bi morali pogledati na nadzorno ploščo domačega pomočnika in videti, kako se poroča o novi temperaturi.

Najlepša hvala za vso vašo pomoč in podporo. pustite like in obiščite kanal na naslovu https://www.youbue.com/misperry in poglejte, kaj vse imamo za vas. Če želite pomagati kanalu, se naročite in delite s prijatelji.

Priporočena: