WiFi -aktiverad temperaturkontrollerad smart kontakt: 4 steg
WiFi -aktiverad temperaturkontrollerad smart kontakt: 4 steg
Anonim
WiFi -aktiverad temperaturkontrollerad smart kontakt
WiFi -aktiverad temperaturkontrollerad smart kontakt

I denna instruktionssats kommer vi att titta på hur man bygger en WiFi -aktiverad temperatursond med hjälp av en enkel ESP8266 för tunga lyft och en DHT11 temperatur/fuktighetssensor. Vi kommer också att använda kretskortet som jag har skapat och säljs också i kanalens tindie -butik om du vill köpa.

Låt oss börja med den faktura du kommer att behöva:

ESP8266 WiFi -modul

amzn.to/2pkGPoa

DHT11 -sensor

amzn.to/2phwfhO

TP-Link Smart Plug

amzn.to/2GElQUz

Du kan också hämta hela modulen i tindie -butiken för kanalen:

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

Kolla också in JLCPCB för PCB Fabriction. Det är de jag använde för att göra kretskortet:

Fri frakt på första order och $ 2 PCB -prototyper på

Steg 1: Lägga till koden till ESP8266

Vi kommer nu att behöva blinka följande kod på ESP8266. Den här koden finns på följande github -arkiv:

I koden nedan behöver du bara ställa in några få definitionsavsnitt:

MQTT -server:

MQTT -användare:

MQTT -lösenord:

MQTT_sensor_topic:

-WiFi

Said: sagt om wifi -nätverket du ansluter till

Lösenord: WiFi -lösenordet.

När du har fyllt i detta i nedanstående kod kan du sedan kompilera och kontrollera om det finns fel och om det finns 0 fel kan du blinka det på ESP8266.

/ * * Filnamn: TempHumSensor.ino * * Applikation: HomeAssistant Space Heater Thermostat * * Beskrivning: Denna kod är för ESP8266 WiFi -aktiverad arduino * -kompatibel enhet. Detta vidarebefordrar temperaturinformationen * för DHT11 -enheten till HASS -frontänden för bearbetning. * * Författare: M. Sperry - https://www.youtube.com/misperry * Datum: 03/ * Omarbetning: 1.0 * * */

#omfatta

#include #include #include #include #include

#define CON_TIME_OUT 20 // Timeout för ingen anslutning till wifi

#define MQTT_TIME_OUT 10 // Timeout för ingen anslutning till MQTT -server

#define DHTPIN 0 // Pin som är ansluten till DHT -sensorn

#define DHTTYPE DHT11 // Typ av sensor är DHT11, du kan ändra den till DHT22 (AM2302), DHT21 (AM2301)

#define mqtt_server "" // Ange dina MQTT -serveradders eller IP. Jag använder min DuckDNS -adddress (ditt namn.duckdns.org) i det här fältet

#define mqtt_user "" // ange ditt MQTT -användarnamn #define mqtt_password "" // ange ditt lösenord #define MQTT_SENSOR_TOPIC "ha/bedroom_temp" // Ange ämne för ditt MQTT

// Wifi: SSID och lösenord

const char* ssid = ""; const char* lösenord = "";

// DHT SEtup

DHT_Unified dht (DHTPIN, DHTTYPE); uint32_t delayMS;

WiFiClient wifiClient;

PubSubClient -klient (wifiClient);

// funktion kallas för att publicera temperaturen och luftfuktigheten

void publishData (float p_temperature) {// skapa ett JSON -objekt // doc: https://github.com/bblanchon/ArduinoJson/wiki/API%20Reference StaticJsonBuffer jsonBuffer; JsonObject & root = jsonBuffer.createObject (); // INFO: data måste konverteras till en sträng; ett problem uppstår när du använder flottörer … // konvertera till fahrenheit p_temperature = (p_temperature * 1.8) + 32; // konvertera till fahrenheit root ["temperatur"] = (sträng) p_temperatur; root.prettyPrintTo (serie); Serial.println ("");

rödingdata [200];

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

// funktion kallas när ett MQTT -meddelande kom

ogiltig återuppringning (char* p_topic, byte* p_payload, osignerad int p_length) {}

void reconnect () {

// Slinga tills vi återansluts medan (! Client.connected ()) {Serial.print ("INFO: Försöker MQTT -anslutning …"); // Försök att ansluta om (client.connect ("ESPBlindstl", mqtt_user, mqtt_password)) {Serial.println ("INFO: ansluten"); } annat {Serial.print ("ERROR: failed, rc ="); Serial.print (client.state ()); Serial.println ("DEBUG: försök igen om 5 sekunder"); // Vänta 5 sekunder innan försöket försöker igen (5000); }}}

void setup (void) {

Serial.begin (9600);

// Vi börjar med att ansluta till ett WiFi -nätverk

Serial.println (); Serial.println (); Serial.print ("Ansluter till"); Serial.println (ssid);

WiFi.begin (ssid, lösenord);

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

fördröjning (800); Serial.print ("."); }

Serial.println ("");

Serial.println ("WiFi ansluten"); Serial.println ("IP -adress:"); Serial.println (WiFi.localIP ()); // init MQTT -anslutningsklienten.setServer (mqtt_server, 1883); client.setCallback (återuppringning);

// Initiera DHT -sensorn

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

// Skriv ut temp sensor detaljer

sensor_t sensor; dht.temperature (). getSensor (& sensor); Serial.println ("------------------------------------"); Serial.println ("Temperatur"); Serial.print ("Sensor:"); Serial.println (sensor.name); Serial.print ("Driver Ver:"); Serial.println (sensor.version); Serial.print ("Unikt ID:"); Serial.println (sensor.sensor_id); Serial.print ("Max värde:"); Serial.print (sensor.max_value); Serial.println (" *C"); Serial.print ("Min. Värde:"); Serial.print (sensor.min_value); Serial.println (" *C"); Serial.print ("Upplösning:"); Serial.print (sensor.resolution); Serial.println (" *C"); Serial.println ("------------------------------------"); // Skriv ut detaljer om fuktighetssensor. dht.humidity (). getSensor (& sensor); Serial.println ("------------------------------------"); Serial.println ("Luftfuktighet"); Serial.print ("Sensor:"); Serial.println (sensor.name); Serial.print ("Driver Ver:"); Serial.println (sensor.version); Serial.print ("Unikt ID:"); Serial.println (sensor.sensor_id); Serial.print ("Maxvärde:"); Serial.print (sensor.max_value); Serial.println ("%"); Serial.print ("Min. Värde:"); Serial.print (sensor.min_value); Serial.println ("%"); Serial.print ("Upplösning:"); Serial.print (sensor.resolution); Serial.println ("%"); Serial.println ("------------------------------------");

// Ställ in fördröjning mellan sensoravläsningar baserat på sensordetaljer

delayMS = sensor.min_delay / 1000; }

void loop (void) {

flottörtemperatur;

om (! client.connected ())

{återanslut (); }

fördröjning (delayMS);

// Få temperaturhändelse och skriv ut dess värde.

sensorer_event_t händelse; dht.temperature (). getEvent (& event); if (isnan (händelse.temperatur)) {Serial.println ("Fel vid läsning av temperatur!"); temperatur = 0,00; } annat {temperatur = händelse.temperatur; Serial.print ("Temperatur:"); Seriellt tryck (temperatur); Serial.println (" *C"); } // publicera till MQTT publishData (temperatur); }

Steg 2: Installera din TP-LINK Smart Plug

Konfigurera din TP-LINK Smart Plug
Konfigurera din TP-LINK Smart Plug

Du måste ställa in din TP-LINK-smartkontakt, eller vilken smartkontakt som helst, på det sätt som tillverkaren rekommenderar.

Var noga med att notera MAC -adressen på enheten. Om din enhet är som min TP-LINK-enhet kan du inte st en statisk IP-adress. Således måste du konfigurera din router för DHCP -bokning. Detta tar din enhets MAC -adress och när enheten begär en adress kommer routern att ge den samma adress varje gång.

Här är en länk till hur du konfigurerar detta med Linksys

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

Steg 3: Konfigurera Home Assistant

Nu för att konfigurera Home Assistant. För detta måste du lägga till följande konfigurationer till filen configuration.yaml som finns i mappen /home/homeassistant/.homeassistant på enheten du installerade den på.

När du har lagt till detta i din hemassistentkonfiguration måste du starta om ditt hemassistentprogram för att ändringarna ska påverka.

Jag kommer också att använda TP-LINK smart plug för switch-enheten och definitionen finns nedan i konfigurationsfilen. IP -adressen som används för enheten är den som du ställde in för DHCP -bokningen i föregående steg.

Denna konfiguration finns också på följande github -repo:

mqtt: switch: - plattform: tplink namn: Sovrum Värmare värd: 192.168.2.11

sensor 1:

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

automatisering:

- alias: _Temp Sovrum Temp Hög utlösare: - plattform: numeric_state entity_id: sensor. Bedroom_Temp ovan: 73

handling:

service: homeassistant.turn_off entity_id: switch. Bedroom_Heater

- alias: _Temp Sovrum Temp Låg

trigger: - plattform: numeric_state entity_id: sensor. Bedroom_Temp nedan: 73 action: service: homeassistant.turn_on entity_id: switch. Bedroom_Heater

Steg 4: Slutsteg

Image
Image
Sista stegen
Sista stegen
Sista stegen
Sista stegen

Nu med din hemassistentkonfiguration och din Arduino -kod konfigurerad är du redo att aktivera hela systemet. Placera alltså din värmare/fläkt/kylare -kontakt i smartkontakten och sätt i den smarta kontakten. När den är klar måste du ansluta en liten USB -laddare och sedan den WiFi -aktiverade temperatursonden. När allt är online bör du kunna titta i din hemassistent -instrumentpanel och se den nya temperaturen som rapporteras.

Tack så mycket för all hjälp och stöd. se till att lämna ett gilla och kom och besök kanalen på https://www.youbue.com/misperry och se vad vi har där för dig. Se till att du prenumererar och delar med dina vänner för att hjälpa kanalen.

Rekommenderad: