Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-23 15:11
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
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
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:
ICSP -kontakt för Arduino Nano Utan lödad stifthuvud men Pogo -stift: 7 steg
ICSP -kontakt för Arduino Nano Utan lödad stifthuvud men Pogo -stift: Gör en ICSP -kontakt för Arduino Nano utan lödad stifthuvud på brädet men Pogo Pin. Delar3 × 2 stiftuttag x1 - APitch 2,54 mm Dupont Line Wire hona stiftkontakt höljeterminaler x6 -BP75-E2 (1,3 mm koniskt huvud) fjäderprovsond Pogo-stift
DIY temperaturkontrollerad kammarlåda med Peltier TEC -modul: 4 steg (med bilder)
DIY temperaturstyrd kammarlåda med Peltier TEC -modul: Jag har monterat temperaturstyrd kammarlåda för att testa små elektroniska kort. I denna handledning har jag delat mitt projekt inklusive källfiler och länk till Gerbers -filer för att göra kretskortet. Jag har bara använt billigt allmänt tillgängligt material
Temperaturkontrollerad vaccin och insulinkylare: 9 steg (med bilder)
Temperaturkontrollerat vaccin och insulinkylare: Att hålla sig sval räddar liv I utvecklingsländerna är vacciner frontlinjen för försvar mot farliga sjukdomar som ebola, influensa, kolera, tuberkulos och dengue för att nämna några. Transport av vacciner och andra livräddande material som
Flash Programmering av Joinrun Smart Socket (EU -kontakt): 6 steg
Flash Programmering av Joinrun Smart Socket (EU -kontakt): " Joinrun Smart Wifi " uttag med USB är en annan ESP8266 -baserad wifi -kontrollerbar eluttag.Den kommer med en tilltalande design, en liten formfaktor och med en extra USB -laddningsport. Den behöver smartlife -appen för att styra den via en
Tempy -En söt temperaturkontrollerad smiley: 6 steg
Tempy -En söt temperaturkontrollerad smiley: ****************************************** ************************************************** ******************* Först och främst hade denna instruktion skrivits av en 17 år gammal kille …… Inte en engelsk professor, så informera gärna grammatik