INHOUDSOPGAWE:

WiFi -geaktiveerde temperatuurbeheerde slimprop: 4 stappe
WiFi -geaktiveerde temperatuurbeheerde slimprop: 4 stappe

Video: WiFi -geaktiveerde temperatuurbeheerde slimprop: 4 stappe

Video: WiFi -geaktiveerde temperatuurbeheerde slimprop: 4 stappe
Video: 14 coole technische gadgets voor u gevonden 2024, November
Anonim
WiFi -geaktiveerde temperatuurbeheerde slimprop
WiFi -geaktiveerde temperatuurbeheerde slimprop

In hierdie instruksieset gaan ons kyk hoe u 'n WiFi -temperatuursonde kan bou met behulp van 'n eenvoudige ESP8266 vir swaar opheffing en 'n DHT11 temperatuur-/humiditeitsensor. Ons sal ook die printplaat wat ek gemaak het, gebruik en is nou ook te koop in die tindie -winkel van die kanaal as u wil koop.

Kom ons begin met die stuk materiaal wat u benodig:

ESP8266 WiFi -module

amzn.to/2pkGPoa

DHT11 sensor

amzn.to/2phwfhO

TP-Link Smart Plug

amzn.to/2GElQUz

U kan ook die hele module by die tindie -winkel vir die kanaal afhaal:

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

Kyk ook na JLCPCB vir PCB Fabriction. Dit is wie ek die PCB gemaak het:

Gratis aflewering op eerste bestelling en $ 2 PCB -prototipering op

Stap 1: Voeg die kode by ESP8266

Ons sal nou die volgende kode op die ESP8266 moet flits. Hierdie kode kan gevind word in die volgende github -bewaarplek:

In die onderstaande kode hoef u slegs die boonste paar definisie -afdelings op te stel:

MQTT -bediener:

MQTT -gebruiker:

MQTT wagwoord:

MQTT_sensor_topic:

-WiFi

Gesê: die gesê van die wifi -netwerk waarmee u verbinding maak

Wagwoord: die WiFi -wagwoord.

Sodra u die onderstaande kode ingevul het, kan u die foute saamstel en kyk of daar 0 foute is, kan u dit op die ESP8266 flits.

/ * * Lêernaam: TempHumSensor.ino * * Toepassing: HomeAssistant Ruimteverwarmer Termostaat * * Beskrywing: Hierdie kode is vir die ESP8266 WiFi -aangeskakel arduino * -versoenbare toestel. Dit sal die temperatuurinligting * van die DHT11 -toestel na die HASS -voorkant stuur vir verwerking. * * Skrywer: M. Sperry - https://www.youtube.com/misperry * Datum: 03/ * Hersiening: 1.0 * * */

#insluit

#include #include #include #include #include

#defineer CON_TIME_OUT 20 // Time -out van geen verbinding met wifi

#defineer MQTT_TIME_OUT 10 // Time -out van geen verbinding met MQTT -bediener nie

#define DHTPIN 0 // Speld wat aan die DHT -sensor gekoppel is

#define DHTTYPE DHT11 // Soort sensor is die DHT11, u kan dit verander na DHT22 (AM2302), DHT21 (AM2301)

#define mqtt_server "" // Voer u MQTT -bediener -adders of IP in. Ek gebruik my DuckDNS adddress (yourname.duckdns.org) in hierdie veld

#define mqtt_user "" // voer u MQTT -gebruikersnaam in #define mqtt_password "" // voer u wagwoord in #define MQTT_SENSOR_TOPIC "ha/bedroom_temp" // Tik onderwerp vir u MQTT in

// Wifi: SSID en wagwoord

const char* ssid = ""; const char* wagwoord = "";

// DHT SEtup

DHT_Unified dht (DHTPIN, DHTTYPE); uint32_t vertragingMS;

WiFiClient wifiClient;

PubSubClient -kliënt (wifiClient);

// funksie genoem om die temperatuur en die humiditeit te publiseer

void publishData (float p_temperature) {// skep 'n JSON -voorwerp // doc: https://github.com/bblanchon/ArduinoJson/wiki/API%20Reference StaticJsonBuffer jsonBuffer; JsonObject & root = jsonBuffer.createObject (); // INFO: die data moet in 'n string omgeskakel word; 'n probleem ontstaan wanneer floats gebruik word … // omskakel na fahrenheit p_temperature = (p_temperature * 1.8) + 32; // omskakel na fahrenheit root ["temperatuur"] = (string) p_temperatuur; root.prettyPrintTo (reeks); Serial.println ("");

char data [200];

root.printTo (data, root.measureLength () + 1); kliënt.publiseer (MQTT_SENSOR_TOPIC, data, waar); }

// funksie gebel toe 'n MQTT -boodskap opgedaag het

nietige terugbel (char* p_topic, byte* p_payload, ongetekende int p_length) {}

leemte herkoppel () {

// Herhaal totdat ons weer verbind is terwyl (! Client.connected ()) {Serial.print ("INFO: Poging tot MQTT -verbinding …"); // Probeer om aan te sluit as (client.connect ("ESPBlindstl", mqtt_user, mqtt_password)) {Serial.println ("INFO: connected"); } anders {Serial.print ("ERROR: misluk, rc ="); Serial.print (client.state ()); Serial.println ("DEBUG: probeer weer oor 5 sekondes"); // Wag 5 sekondes voordat die vertraging weer probeer (5000); }}}

ongeldige opstelling (ongeldig) {

Serial.begin (9600);

// Ons begin deur aan te sluit op 'n WiFi -netwerk

Serial.println (); Serial.println (); Serial.print ("Koppel aan"); Serial.println (ssid);

WiFi.begin (ssid, wagwoord);

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

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

Serial.println ("");

Serial.println ("WiFi gekoppel"); Serial.println ("IP -adres:"); Serial.println (WiFi.localIP ()); // begin die MQTT -verbinding client.setServer (mqtt_server, 1883); client.setCallback (terugbel);

// Initialiseer DHT -sensor

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

// Druk besonderhede oor temp sensor af

sensor_t sensor; temperatuur (). getSensor (& sensor); Serial.println ("------------------------------------"); Serial.println ("temperatuur"); Serial.print ("Sensor:"); Serial.println (sensor.name); Serial.print ("Driver Ver:"); Serial.println (sensor.versie); Serial.print ("Unieke ID:"); Serial.println (sensor.sensor_id); Serial.print ("maksimum waarde:"); Reeks.afdruk (sensor.max_waarde); Serial.println (" *C"); Serial.print ("Min waarde:"); Reeks.afdruk (sensor.min_waarde); Serial.println (" *C"); Serial.print ("Resolusie:"); Serial.print (sensor.resolution); Serial.println (" *C"); Serial.println ("------------------------------------"); // Druk die besonderhede van die humiditeitssensor af. dht.vochtigheid (). getSensor (& sensor); Serial.println ("------------------------------------"); Serial.println ("Humiditeit"); Serial.print ("Sensor:"); Serial.println (sensor.name); Serial.print ("Driver Ver:"); Serial.println (sensor.versie); Serial.print ("Unieke ID:"); Serial.println (sensor.sensor_id); Serial.print ("maksimum waarde:"); Reeks.afdruk (sensor.max_waarde); Serial.println ("%"); Serial.print ("Min waarde:"); Reeks.afdruk (sensor.min_waarde); Serial.println ("%"); Serial.print ("Resolusie:"); Serial.print (sensor.resolution); Serial.println ("%"); Serial.println ("------------------------------------");

// Stel vertraging in tussen sensorlesings gebaseer op sensorbesonderhede

vertragingMS = sensor.min_vertraging / 1000; }

leegte -lus (leegte) {

vlottemperatuur;

as (! client.connected ())

{herkoppel (); }

vertraging (delayMS);

// Kry temperatuurgebeurtenis en druk die waarde daarvan af.

sensors_event_t gebeurtenis; dht.temperatuur (). getEvent (& event); if (isnan (gebeurtenis.temperatuur)) {Serial.println ("Fout tydens die lees van temperatuur!"); temperatuur = 0,00; } anders {temperatuur = gebeurtenis.temperatuur; Serial.print ("Temperatuur:"); Reeks.afdruk (temperatuur); Serial.println (" *C"); } // publiseer aan MQTT publishData (temperatuur); }

Stap 2: Stel u TP-LINK-slimprop op

Stel u TP-LINK-slimprop op
Stel u TP-LINK-slimprop op

U moet u TP-LINK-slimprop of 'n slimstekker vir die materiaal instel, soos die vervaardiger aanbeveel.

Let op die MAC -adres op die toestel. As u toestel soos my TP-LINK-toestel lyk, kan u nie 'n statiese IP-adres kry nie. U moet u router dus instel vir DHCP -bespreking. Dit neem die MAC -adres van u toestel op, en as die toestel 'n adres versoek, gee die router elke keer dieselfde adres.

Hier is 'n skakel na hoe u dit met Linksys kan instel

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

Stap 3: Die opstel van Home Assistant

Nou om die huisassistent op te stel. Hiervoor moet u die volgende konfigurasies byvoeg by die konfigurasie.yaml -lêer wat in die /home/homeassistant/.homeassistant -vouerstruktuur is op die toestel waarop u dit geïnstalleer het.

Nadat u dit by die konfigurasie van u huisassistent gevoeg het, moet u u tuisassistent -sagteware herlaai sodat die veranderinge van krag kan wees.

Ek sal ook die TP-LINK-slimprop vir die skakelaar gebruik, en die definisie is hieronder in die konfigurasielêer. Die IP -adres wat vir die toestel gebruik word, is die adres wat u in die vorige stap vir die DHCP -bespreking opgestel het.

Hierdie opset kan ook gevind word op die volgende github -repo:

mqtt: switch: - platform: tplink naam: Slaapkamer verwarmer gasheer: 192.168.2.11

sensor 1:

platform: mqtt state_topic: 'ha/bedroom_temp' naam: Slaapkamer temperatuur eenheid_van_meting: '° F' value_template: '{{value_json.temperature}}'

outomatisering:

- alias: _Temp Slaapkamer Temp Hoë sneller: - platform: numeriese_staat entiteit_id: sensor. Slaapkamer_Temp hierbo: 73

aksie:

diens: homeassistant.turn_off entity_id: switch. Bedroom_Heater

- alias: _Temp Slaapkamer Temp Laag

sneller: - platform: numeric_state entity_id: sensor. Bedroom_Temp hieronder: 73 aksie: diens: homeassistant.turn_on entity_id: switch. Bedroom_Heater

Stap 4: Laaste stappe

Image
Image
Laaste stappe
Laaste stappe
Laaste stappe
Laaste stappe

Met die konfigurasie van u huisassistent en u Arduino -kode, is u gereed om die hele stelsel te aktiveer. Plaas dus u verwarmer/waaier/koeler -prop in die slimprop en steek die slimprop in. Sodra dit gereed is, moet u 'n klein USB -laaier aansluit en dan die WiFi -geaktiveerde temperatuursonde. Sodra alles aanlyn is, moet u in die dashboard van u huisassistent kan kyk en die nuwe temperatuur kan sien.

Baie dankie vir al u hulp en ondersteuning. maak seker dat u 'n like gee en besoek die kanaal op https://www.youbue.com/misperry en kyk wat ons alles vir u het. Maak seker dat u inteken en met u vriende deel om die kanaal te help.

Aanbeveel: