Innholdsfortegnelse:
- Trinn 1: Legge til koden i ESP8266
- Trinn 2: Konfigurere din TP-LINK Smart Plug
- Trinn 3: Konfigurere Home Assistant
- Trinn 4: Siste trinn
Video: WiFi -aktivert temperaturkontrollert smartplugg: 4 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
I dette instruksjonssettet skal vi se på hvordan du bygger en WiFi -aktivert temperatursonde ved hjelp av en enkel ESP8266 for tunge løft og en DHT11 temperatur-/fuktighetssensor. Vi vil også bruke kretskortet som jeg har opprettet, og er også til salgs nå i kanalens tindie -butikk hvis du vil kjøpe.
La oss komme i gang med materialregningen du trenger:
ESP8266 WiFi -modul
amzn.to/2pkGPoa
DHT11 -sensor
amzn.to/2phwfhO
TP-Link Smart Plug
amzn.to/2GElQUz
Du kan også hente hele modulen i tindie -butikken for kanalen:
www.tindie.com/products/misperry/wifi-enab…
Sjekk også JLCPCB for PCB Fabriction. Det er de jeg pleide å lage PCB:
Gratis frakt på første ordre og $ 2 PCB -prototyper på
Trinn 1: Legge til koden i ESP8266
Vi må nå blinke følgende kode på ESP8266. Denne koden finnes på følgende github -depot:
I koden nedenfor trenger du bare å sette opp noen få definisjonsdeler:
MQTT -server:
MQTT -bruker:
MQTT -passord:
MQTT_sensor_topic:
-WiFi
Said: sagt om wifi -nettverket du kobler til
Passord: WiFi -passordet.
Når du har fylt ut denne koden, kan du kompilere og se etter feil, og hvis det er 0 feil, kan du blinke den på ESP8266.
/ * * Filnavn: TempHumSensor.ino * * Søknad: HomeAssistant Space Heater Thermostat * * Beskrivelse: Denne koden er for ESP8266 WiFi -aktivert arduino * -kompatibel enhet. Dette vil overføre temperaturinformasjonen * til DHT11 -enheten til HASS -frontenden for behandling. * * Forfatter: M. Sperry - https://www.youtube.com/misperry * Dato: 03/ * Revisjon: 1.0 * * */
#inkludere
#include #include #include #include #include
#define CON_TIME_OUT 20 // Tidsavbrudd for ingen tilkobling til wifi
#define MQTT_TIME_OUT 10 // Tidsavbrudd for ingen tilkobling til MQTT -server
#define DHTPIN 0 // Pin som er koblet til DHT -sensoren
#define DHTTYPE DHT11 // Sensortype er DHT11, du kan endre den til DHT22 (AM2302), DHT21 (AM2301)
#define mqtt_server "" // Angi tilleggene til MQTT -serveren eller IP -adressen din. Jeg bruker min DuckDNS adddress (dittnavn.duckdns.org) i dette feltet
#define mqtt_user "" // skriv inn MQTT -brukernavnet ditt #define mqtt_password "" // skriv inn passordet ditt #define MQTT_SENSOR_TOPIC "ha/bedroom_temp" // Skriv inn emne for MQTT
// Wifi: SSID og passord
const char* ssid = ""; const char* passord = "";
// DHT SEtup
DHT_Unified dht (DHTPIN, DHTTYPE); uint32_t delayMS;
WiFiClient wifiClient;
PubSubClient -klient (wifiClient);
// funksjon kalt for å publisere temperaturen og fuktigheten
void publishData (float p_temperature) {// opprett et JSON -objekt // doc: https://github.com/bblanchon/ArduinoJson/wiki/API%20Reference StaticJsonBuffer jsonBuffer; JsonObject & root = jsonBuffer.createObject (); // INFO: dataene må konverteres til en streng; et problem oppstår når du bruker flyter … // konverter til fahrenheit p_temperature = (p_temperature * 1.8) + 32; // konvertere til fahrenheit root ["temperatur"] = (streng) p_temperatur; root.prettyPrintTo (seriell); Serial.println ("");
røyedata [200];
root.printTo (data, root.measureLength () + 1); client.publish (MQTT_SENSOR_TOPIC, data, true); }
// funksjon ringte da en MQTT -melding kom
ugyldig tilbakeringing (char* p_topic, byte* p_payload, usignert int p_length) {}
ugyldig tilkobling () {
// Sløyfe til vi blir koblet til igjen mens (! Client.connected ()) {Serial.print ("INFO: Forsøk på MQTT -tilkobling …"); // Prøv å koble til hvis (client.connect ("ESPBlindstl", mqtt_user, mqtt_password)) {Serial.println ("INFO: tilkoblet"); } annet {Serial.print ("FEIL: mislyktes, rc ="); Serial.print (client.state ()); Serial.println ("DEBUG: prøv igjen om 5 sekunder"); // Vent 5 sekunder før forsøk på nytt (5000); }}}
ugyldig oppsett (void) {
Serial.begin (9600);
// Vi starter med å koble til et WiFi -nettverk
Serial.println (); Serial.println (); Serial.print ("Koble til"); Serial.println (ssid);
WiFi.begin (ssid, passord);
mens (WiFi.status ()! = WL_CONNECTED) {
forsinkelse (800); Serial.print ("."); }
Serial.println ("");
Serial.println ("WiFi tilkoblet"); Serial.println ("IP -adresse:"); Serial.println (WiFi.localIP ()); // init MQTT -tilkoblingen client.setServer (mqtt_server, 1883); client.setCallback (tilbakeringing);
// Initialiser DHT -sensor
dht.begin (); Serial.println ("DHT11 Unified Sensor Data");
// Skriv ut detaljer om temp. Sensor
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.versjon); Serial.print ("Unik ID:"); Serial.println (sensor.sensor_id); Serial.print ("Maks verdi:"); Serial.print (sensor.max_value); Serial.println (" *C"); Serial.print ("Min verdi:"); Serial.print (sensor.min_verdi); Serial.println (" *C"); Serial.print ("Oppløsning:"); Serial.print (sensor.resolution); Serial.println (" *C"); Serial.println ("------------------------------------"); // Skriv ut detaljer om fuktighetssensor. dht.fuktighet (). getSensor (& sensor); Serial.println ("------------------------------------"); Serial.println ("Fuktighet"); Serial.print ("Sensor:"); Serial.println (sensor.navn); Serial.print ("Driver Ver:"); Serial.println (sensor.versjon); Serial.print ("Unik ID:"); Serial.println (sensor.sensor_id); Serial.print ("Maks verdi:"); Serial.print (sensor.max_value); Serial.println ("%"); Serial.print ("Min verdi:"); Serial.print (sensor.min_verdi); Serial.println ("%"); Serial.print ("Oppløsning:"); Serial.print (sensor.resolution); Serial.println ("%"); Serial.println ("------------------------------------");
// Angi forsinkelse mellom sensoravlesninger basert på sensordetaljer
delayMS = sensor.min_delay / 1000; }
void loop (void) {
flyte temperatur;
hvis (! client.connected ())
{koble til på nytt (); }
forsinkelse (delayMS);
// Få temperaturhendelse og skriv ut verdien.
hendelser sensor_event_t; dht.temperature (). getEvent (& event); if (isnan (hendelse.temperatur)) {Serial.println ("Feil ved lesing av temperatur!"); temperatur = 0,00; } annet {temperatur = hendelse.temperatur; Serial.print ("Temperatur:"); Serial.print (temperatur); Serial.println (" *C"); } // publiser til MQTT publishData (temperatur); }
Trinn 2: Konfigurere din TP-LINK Smart Plug
Du må sette opp TP-LINK-smartpluggen din, eller hvilken som helst smartplugg for den materien, slik produsenten anbefaler.
Sørg for å notere MAC -adressen på enheten. Hvis enheten din er som min TP-LINK-enhet, kan du ikke st en statisk IP-adresse. Dermed må du konfigurere ruteren din for DHCP -reservasjon. Dette vil ta MAC -adressen til enheten din, og når enheten ber om en adresse, vil ruteren gi den samme adressen hver gang.
Her er en lenke til hvordan du konfigurerer dette med Linksys
www.linksys.com/us/support-article?article…
Trinn 3: Konfigurere Home Assistant
Nå for å sette opp Home Assistant. For dette må du legge til følgende konfigurasjoner i filen configuration.yaml som ligger i /home/homeassistant/.homeassistant -mappestrukturen på enheten du installerte den på.
Når du er ferdig med å legge dette til i hjemmeassistentkonfigurasjonen, må du starte hjemmeassistentprogramvaren på nytt for at endringene skal påvirke.
Jeg kommer også til å bruke TP-LINK smart plug for å bytte enhet, og definisjonen er nedenfor i konfigurasjonsfilen. IP -adressen som brukes for enheten er den du konfigurerte for DHCP -reservasjonen i forrige trinn.
Denne konfigurasjonen finnes også på følgende github -repo:
mqtt: switch: - plattform: tplink navn: Bedroom Heater host: 192.168.2.11
sensor 1:
plattform: mqtt state_topic: 'ha/bedroom_temp' navn: Bedroom Temp unit_of_measurement: '° F' value_template: '{{value_json.temperature}}'
automasjon:
- alias: _Temp Soverom Temp Høy utløser: - plattform: numeric_state entity_id: sensor. Bedroom_Temp ovenfor: 73
handling:
service: homeassistant.turn_off entity_id: switch. Bedroom_Heater
- alias: _Temp Soverom Temp Lav
trigger: - plattform: numeric_state entity_id: sensor. Bedroom_Temp nedenfor: 73 handling: service: homeassistant.turn_on entity_id: switch. Bedroom_Heater
Trinn 4: Siste trinn
Med konfigurasjonen av din hjemmeassistent og din Arduino -kode er du klar til å aktivere hele systemet. Plasser således varmeapparatet/viften/kjølerpluggen i smartpluggen og sett inn smartpluggen. Når den er klar, må du koble til en liten USB -lader og deretter den WiFi -aktiverte temperatursonden. Når alt er pålogget, bør du kunne se på dashbordet til hjemmeassistenten og se den nye temperaturen som rapporteres.
Tusen takk for all hjelp og støtte. Sørg for å legge igjen en like og kom til kanalen på https://www.youbue.com/misperry og se hva vi har for deg. Sørg for å abonnere og dele med vennene dine for å hjelpe kanalen.
Anbefalt:
DIY temperaturkontrollert kammerboks med Peltier TEC -modul: 4 trinn (med bilder)
DIY temperaturkontrollert kammerboks med Peltier TEC -modul: Jeg har satt sammen temperaturkontrollert kammerboks for testing av små elektroniske kort. I denne opplæringen har jeg delt prosjektet mitt, inkludert kildefiler og lenke til Gerbers -filer for å lage PCB. Jeg har bare brukt billige, vanlige materialer
Temperaturkontrollert Tupperware: 4 trinn
Temperaturkontrollert Tupperware: Vi ønsket å ha en nedkjølt beholder for lagring av forskjellige varer. Vi bestemte oss for å bruke en MSP432 for å drive og kontrollere systemet, på grunn av sin allsidighet. Vi brukte en transistor for å tillate oss å bruke PWM for å drive viften. Hvis du har en 3-leder PWM-vifte
Temperaturkontrollert vaksine og insulinkjøler: 9 trinn (med bilder)
Temperaturkontrollert vaksine og insulinkjøler: Å holde seg kjølig redder liv I utviklingsland er vaksiner frontlinjen i forsvaret mot farlige sykdommer som ebola, influensa, kolera, tuberkulose og dengue for å nevne noen. Transport av vaksiner og andre livreddende materialer som
ESP8266 temperaturkontrollert relé: 9 trinn (med bilder)
ESP8266 Temperaturstyrt relé: En venn av meg er en forsker som gjør eksperimenter som er veldig følsomme for lufttemperatur og fuktighet. Inkubatorrommet har en liten keramisk varmeapparat, men varmeapparatets termostat var ikke nær nøyaktig nok, bare i stand til å opprettholde temperaturen
Tempy -En søt temperaturkontrollert smiley: 6 trinn
Tempy -En søt temperaturkontrollert smiley: ***************************************** ************************************************* *******************+Først og fremst var denne instruksen skrevet av en 17 år gammel fyr …… Ikke en engelsk professor, så vennligst informer grammatikk