Indholdsfortegnelse:

WiFi -aktiveret temperaturstyret smartstik: 4 trin
WiFi -aktiveret temperaturstyret smartstik: 4 trin

Video: WiFi -aktiveret temperaturstyret smartstik: 4 trin

Video: WiFi -aktiveret temperaturstyret smartstik: 4 trin
Video: wifi пульт для IR и RF кодов Broadlink RM4C Pro, работа в Home Assistant - управляем кондиционером 2024, Juli
Anonim
WiFi aktiveret temperaturstyret smart stik
WiFi aktiveret temperaturstyret smart stik

I dette instruktionssæt vil vi se på, hvordan man bygger en WiFi -aktiveret temperatursonde ved hjælp af en simpel ESP8266 til tunge løft og en DHT11 temperatur/fugtighedsføler. Vi vil også bruge det printkort, som jeg har oprettet og er også til salg nu i kanalens tindie -butik, hvis du gerne vil købe.

Lad os komme i gang med den stykliste, du får brug for:

ESP8266 WiFi -modul

amzn.to/2pkGPoa

DHT11 sensor

amzn.to/2phwfhO

TP-Link Smart-stik

amzn.to/2GElQUz

Du kan også afhente hele modulet i tindie -butikken til kanalen:

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

Tjek også JLCPCB for PCB Fabriction. Det er dem, jeg plejede at lave PCB:

Gratis forsendelse ved første ordre og $ 2 PCB -prototyper på

Trin 1: Tilføjelse af koden til ESP8266

Vi skal nu blinke følgende kode på ESP8266. Denne kode findes på følgende github -lager:

I nedenstående kode skal du kun konfigurere de øverste få definitionafsnit:

MQTT -server:

MQTT -bruger:

MQTT -adgangskode:

MQTT_sensor_topic:

-Trådløst internet

Sagde: det sagde om det wifi -netværk, du opretter forbindelse til

Adgangskode: WiFi -adgangskoden.

Når du har dette udfyldt i nedenstående kode, kan du derefter kompilere og kontrollere for fejl, og hvis der er 0 fejl, kan du blinke det på ESP8266.

/ * * Filnavn: TempHumSensor.ino * * Ansøgning: HomeAssistant rumvarmertermostat * * Beskrivelse: Denne kode er til ESP8266 WiFi -aktiveret arduino * -kompatibel enhed. Dette videresender temperaturinformationen * for DHT11 -enheden til HASS -frontenden til behandling. * * Forfatter: M. Sperry - https://www.youtube.com/misperry * Dato: 03/ * Revision: 1.0 * * */

#omfatte

#include #include #include #include #include

#define CON_TIME_OUT 20 // Timeout af ingen forbindelse til wifi

#define MQTT_TIME_OUT 10 // Timeout af ingen forbindelse til MQTT -server

#define DHTPIN 0 // Pin, der er forbundet til DHT -sensoren

#define DHTTYPE DHT11 // Sensortype er DHT11, du kan ændre den til DHT22 (AM2302), DHT21 (AM2301)

#define mqtt_server "" // Indtast dine MQTT -server tilføjere eller IP. Jeg bruger min DuckDNS adddress (dit navn.duckdns.org) i dette felt

#define mqtt_user "" // indtast dit MQTT brugernavn #define mqtt_password "" // indtast din adgangskode #define MQTT_SENSOR_TOPIC "ha/bedroom_temp" // Indtast emne for din MQTT

// Wifi: SSID og adgangskode

const char* ssid = ""; const char* password = "";

// DHT SEtup

DHT_Unified dht (DHTPIN, DHTTYPE); uint32_t delayMS;

WiFiClient wifiClient;

PubSubClient -klient (wifiClient);

// funktion kaldet til at offentliggøre temperaturen og luftfugtigheden

void publishData (float p_temperature) {// opret et JSON -objekt // doc: https://github.com/bblanchon/ArduinoJson/wiki/API%20Reference StaticJsonBuffer jsonBuffer; JsonObject & root = jsonBuffer.createObject (); // INFO: dataene skal konverteres til en streng; der opstår et problem, når du bruger floats … // konverter til fahrenheit p_temperature = (p_temperature * 1.8) + 32; // konvertere til fahrenheit root ["temperatur"] = (streng) p_temperatur; root.prettyPrintTo (seriel); Serial.println ("");

kuldata [200];

root.printTo (data, root.measureLength () + 1); client.publish (MQTT_SENSOR_TOPIC, data, true); }

// funktion kaldet, da der kom en MQTT -meddelelse

ugyldig tilbagekald (char* p_topic, byte* p_payload, usigneret int p_length) {}

ugyldig forbindelse igen () {

// Sløjfe, indtil vi genopretter forbindelse, mens (! Client.connected ()) {Serial.print ("INFO: Forsøger MQTT -forbindelse …"); // Forsøg at oprette forbindelse, hvis (client.connect ("ESPBlindstl", mqtt_user, mqtt_password)) {Serial.println ("INFO: tilsluttet"); } ellers {Serial.print ("FEJL: mislykkedes, rc ="); Serial.print (client.state ()); Serial.println ("DEBUG: prøv igen om 5 sekunder"); // Vent 5 sekunder, før forsinkelsen forsøger igen (5000); }}}

void setup (void) {

Serial.begin (9600);

// Vi starter med at oprette forbindelse til et WiFi -netværk

Serial.println (); Serial.println (); Serial.print ("Opretter forbindelse til"); Serial.println (ssid);

WiFi.begin (ssid, adgangskode);

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

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

Serial.println ("");

Serial.println ("WiFi tilsluttet"); Serial.println ("IP -adresse:"); Serial.println (WiFi.localIP ()); // init MQTT forbindelse client.setServer (mqtt_server, 1883); client.setCallback (tilbagekald);

// Initialiser DHT -sensor

dht.begin (); Serial.println ("DHT11 Unified Sensordata");

// Udskriv temp sensor detaljer

sensor_t sensor; dht.temperature (). getSensor (& sensor); Serial.println ("------------------------------------"); Serial.println ("Temperatur"); Serial.print ("Sensor:"); Serial.println (sensor.navn); Serial.print ("Driver Ver:"); Serial.println (sensor.version); Serial.print ("Entydigt ID:"); Serial.println (sensor.sensor_id); Serial.print ("Maksimal værdi:"); Serial.print (sensor.max_value); Serial.println (" *C"); Serial.print ("Min værdi:"); Seriel.print (sensor.min_værdi); Serial.println (" *C"); Serial.print ("Opløsning:"); Seriel.print (sensor.opløsning); Serial.println (" *C"); Serial.println ("------------------------------------"); // Udskriv detaljer om fugtighedssensor. dht.fugtighed (). getSensor (& sensor); Serial.println ("------------------------------------"); Serial.println ("Fugtighed"); Serial.print ("Sensor:"); Serial.println (sensor.navn); Serial.print ("Driver Ver:"); Serial.println (sensor.version); Serial.print ("Entydigt ID:"); Serial.println (sensor.sensor_id); Serial.print ("Maksimal værdi:"); Serial.print (sensor.max_value); Serial.println ("%"); Serial.print ("Min værdi:"); Seriel.print (sensor.min_værdi); Serial.println ("%"); Serial.print ("Opløsning:"); Seriel.print (sensor.opløsning); Serial.println ("%"); Serial.println ("------------------------------------");

// Indstil forsinkelse mellem sensoraflæsninger baseret på sensordetaljer

delayMS = sensor.min_delay / 1000; }

void loop (void) {

flyde temperatur;

hvis (! client.connected ())

{tilslut igen (); }

forsinkelse (forsinkelseMS);

// Hent temperaturbegivenhed, og udskriv dens værdi.

sensorer_event_t begivenhed; dht.temperature (). getEvent (& event); if (isnan (event.temperature)) {Serial.println ("Fejl ved læsning af temperatur!"); temperatur = 0,00; } ellers {temperatur = hændelse.temperatur; Serial.print ("Temperatur:"); Serielt tryk (temperatur); Serial.println (" *C"); } // publicer til MQTT publishData (temperatur); }

Trin 2: Opsætning af dit TP-LINK Smart-stik

Opsætning af dit TP-LINK Smart-stik
Opsætning af dit TP-LINK Smart-stik

Du bliver nødt til at indstille dit TP-LINK-smartstik eller et hvilket som helst smartstik til det materie, som producenten anbefaler.

Sørg for at notere MAC -adressen på enheden. Hvis din enhed ligner min TP-LINK-enhed, kan du ikke gemme en statisk IP-adresse. Således skal du konfigurere din router til DHCP -reservation. Dette vil tage din enheds MAC -adresse, og når enheden anmoder om en adresse, giver routeren den samme adresse hver gang.

Her er et link til, hvordan du konfigurerer dette med Linksys

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

Trin 3: Opsætning af Home Assistant

Nu til at konfigurere Home Assistant. Til dette skal du tilføje følgende konfigurationer til filen configuration.yaml, der er placeret i /home/homeassistant/.homeassistant -mappestrukturen på den enhed, du installerede den på.

Når du er færdig med at tilføje dette til din hjemmeassistent -konfiguration, skal du genstarte din hjemmeassistentsoftware, for at ændringerne kan påvirke.

Jeg vil også bruge TP-LINK smart-stik til switch-enheden, og definitionen er nedenfor i konfigurationsfilen. Den IP -adresse, der bruges til enheden, er den, du konfigurerede til DHCP -reservationen i det foregående trin.

Denne konfiguration kan også findes på følgende github -repo:

mqtt: switch: - platform: tplink navn: Soveværelsesvarmer vært: 192.168.2.11

sensor 1:

platform: mqtt state_topic: 'ha/bedroom_temp' navn: Bedroom Temp unit_of_measurement: '° F' value_template: '{{value_json.temperature}}'

automatisering:

- alias: _Temp Soveværelse Temp Høj trigger: - platform: numeric_state entity_id: sensor. Bedroom_Temp ovenfor: 73

handling:

service: homeassistant.turn_off entity_id: switch. Bedroom_Heater

- alias: _Temp Soveværelse Temp Lav

trigger: - platform: numeric_state entity_id: sensor. Bedroom_Temp herunder: 73 handling: service: homeassistant.turn_on entity_id: switch. Bedroom_Heater

Trin 4: Sidste trin

Image
Image
Sidste trin
Sidste trin
Sidste trin
Sidste trin

Nu med din hjemmeassistentkonfiguration og din Arduino -kode opsat, vil du være klar til at aktivere hele systemet. Placer således din varmelegeme/blæser/kølerstik i smartstikket, og sæt det i smartstikket. Når den er klar, skal du tilslutte en lille USB -oplader og derefter den WiFi -aktiverede temperatursonde. Når alt er online, skal du være i stand til at kigge i dit hjemmeassistent dashboard og se den nye temperatur blive rapporteret.

Mange tak for al din hjælp og støtte. sørg for at forlade et like og kom og besøg kanalen på https://www.youbue.com/misperry og se, hvad vi har der for dig. Sørg for at abonnere og dele med dine venner for at hjælpe kanalen.

Anbefalede: